介紹一個強大的分析網絡的shell腳本,此腳本是從EZHTTP拆分出來的,覺得有必要單獨介紹下。
腳本運行效果截圖:


此腳本包含的功能有:
1、實時監控任意網卡的流量
2、統計10秒內平均流量
3、統計每個端口在10秒內的平均流量,基于客戶端和服務端端口統計。可以看出哪些端口占流量比較大,對于web服務器,一般是80端口。其它端口受到攻擊時,也有可能其它端口流量比較大。所以此功能可以幫助我們端口流量是否正常。
4、統計在10s內占用帶寬最大的前10個ip。此項功能可以幫助我們來查出是否有惡意占用帶寬的ip。
5、統計連接狀態。此項功能可以讓我們看出哪些連接狀態比較大。如果SYN-RECV狀態比較多的話,有可以受到半連接攻擊。如果ESTABLISED非常大,但通過日志發現沒有那么多請求,或者通過tcpdump發現大量ip只建立連接不請求數據的話,可能是受到了全連接攻擊,這時候如果你使用的是nginx服務器,可以在配置文件增加listen 80 deferred來防止。
6、統計各端口連接狀態。當可能受到攻擊時,此項功能可以幫助我們發現是哪個端口受到攻擊。
7、統計端口為80且狀態為ESTAB連接數最多的前10個IP。此項功能可以幫助我們來找出創建連接過多的Ip,進而屏蔽。
8、統計端口為80且狀態為SYN-RECV連接數最多的前10個IP。當受到半連接攻擊時,此項功能可以幫助我們找到惡意ip。
用到的網絡分析工具:
1、tcpdump:此腳本用tcpdump來統計基于ip或基于端口的流量。
2、ss: 此腳本用ss命令來統計連接狀態,實際使用發現ss比netstat高效得多。
3、/proc/net/dev,用來統計指定網卡的流量。
腳本下載地址:https://www.centos.bz/wp-content/uploads/2014/06/network-analysis.sh
下面貼出完整的腳本:
代碼如下:
#!/bin/bash
#write by zhumaohai(admin#centos.bz)
#顯示菜單(單選)
display_menu(){
local soft=$1
local prompt="which ${soft} you'd select: "
eval local arr=(/${${soft}_arr[@]})
while true
do
echo -e "#################### ${soft} setting ####################/n/n"
for ((i=1;i<=${#arr[@]};i++ )); do echo -e "$i) ${arr[$i-1]}"; done
echo
read -p "${prompt}" $soft
eval local select=/$$soft
if [ "$select" == "" ] || [ "${arr[$soft-1]}" == "" ];then
prompt="input errors,please input a number: "
else
eval $soft=${arr[$soft-1]}
新聞熱點
疑難解答