ip連接統計

對連接的IP按連接數量進行排序  
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n  

查看TCP連接狀態  
  
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn  
netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}'  
netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}'  
netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}'  
netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn  
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c  

查看80端口連接數最多的20個IP    
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20  
 
查找較多time_wait連接  
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20  
查找較多的SYN連接  
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more 

查看當前併發訪問數:
netstat -an | grep ESTABLISHED | wc -l

查看所有連接請求
netstat -tn 2>/dev/null 
但是隻要established的,則grep  "ESTABLISHED" 
netstat -tn | grep ESTABLISHED 2>/dev/null

查看訪問某一ip的所有外部連接IP(數量從多到少)
netstat -nt | grep 121.41.30.149:80 | awk '{print $5}' | awk -F: '{print ($1>$4?$1:$4)}' | sort | uniq -c | sort -nr | head

根據端口查找進程
netstat -ntlp | grep 80 | awk '{print $7}' | cut -d/ -f1

下面未驗證
防範DDOS×××腳本  
#防止SYN××× 輕量級預防  
iptables -N syn-flood  
iptables -A INPUT -p tcp –syn -j syn-flood  
iptables -I syn-flood -p tcp -m limit –limit 3/s –limit-burst 6 -j RETURN  
iptables -A syn-flood -j REJECT  

#防止DOS太多連接進來,可以允許外網網卡每個IP最多15個初始連接,超過的丟棄  
iptables -A INPUT -i eth0 -p tcp –syn -m connlimit –connlimit-above 15 -j DROP  
iptables -A INPUT -p tcp -m state –state ESTABLISHED,RELATED -j ACCEPT  

#用Iptables抵禦DDOS (參數與上相同)  
iptables -A INPUT  -p tcp --syn -m limit --limit 12/s --limit-burst 24 -j ACCEPT  
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT   

根據nginx的訪問日誌判斷
查看訪問記錄
1.從1000行開始到3000
cat access.log |head -n 3000|tail -n 1000
2.從1000行開始,顯示200行
cat access.log |tail -n +1000 |head -n 200
3.通過查詢日誌記錄進行分析(如果沒有單獨配置,access.log一般放在nginx/logs下)
awk '{print $1}' 日誌地址 | sort | uniq -c | sort -n -k 1 -r | head -n 100
tail -n 1000:顯示最後1000行
tail -n +1000:從1000行開始顯示,顯示1000行以後的
head -n 1000:顯示前面1000行

1.根據訪問IP統計UV
awk '{print $1}'  access.log|sort | uniq -c |wc -l

2.統計訪問URL統計PV
awk '{print $7}' access.log|wc -l

3.查詢訪問最頻繁的URL
awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more

4.查詢訪問最頻繁的IP
awk '{print $1}' access.log|sort | uniq -c |sort -n -k 1 -r|more

5.根據時間段統計查看日誌
 cat  access.log| sed -n '/14\/Mar\/2015:21/,/14\/Mar\/2015:22/p'|more

6.通過日誌查看含有send的url,統計ip地址的總連接數
cat access.log | grep "send" | awk '{print $1}' | sort | uniq -c | sort -nr

7.通過日誌查看當天訪問次數最多的時間段
awk '{print $4}' access.log | grep "24/Mar/2011" |cut -c 14-18|sort|uniq -c|sort -nr|head

8.通過日誌查看當天指定ip訪問次數過的url和訪問次數
cat access.log | grep "222.132.90.94" | awk '{print $7}' | sort | uniq -c | sort -nr

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章