检查网口流量与前名流量大

检查网口流量与前名流量大,第1张

检查网口流量与前10名流量大IP


该脚本中包含的函数有:

  • 1.实时监控任何网卡的流量。

  • 2。计算10秒内的平均流量。

    3。根据客户端和服务器端口的统计数据,计算10秒钟内每个端口的平均流量。您可以看到哪些端口的流量很大。对于web服务器,一般是80个端口。当其他端口受到***,也有可能其他端口流量比较大。所以这个功能可以帮助我们判断端口流量是否正常。

    4。10s内统计带宽最大的前10个ip。这个功能可以帮助我们发现是否存在恶意占用带宽的ip。

    5。计算连接状态。这个函数可以让我们看到哪些连接状态比较大。如果有很多SYN-RECV状态,有些可以是半连通***。如果建立的很大,但是通过日志发现的请求没有那么多,或者大量的ip只是建立连接而没有通过tcpdump请求数据,那么可能都是连接***。此时,如果使用的是nginx服务器,可以在配置文件中添加listen80deferred来防止。

    6。统计每个端口的连接状态。这个功能可以帮助我们在哪个端口可能受到***影响的时候,发现哪个端口受到了***的影响。

    7。统计端口为80,ESTAB连接最多的前10个IP处于状态。这个功能可以帮助我们找出创建过多连接的Ip,然后进行屏蔽。

    8。统计端口为80的SYN-RECV连接数最多的前10个IP。这个功能可以帮助我们在半连接***的情况下发现恶意ip。


    使用的网络分析工具:

  • 1.tcpdump:这个脚本使用tcpdump来计算基于ip或基于端口的流量。

  • 2。这个脚本使用ss命令来计算连接状态。在实际使用中发现ss比netstat效率高得多。

    3、/proc/net/dev,用于统计指定网卡的流量。

    #!/bin/bash #displaymenu(单项选择) display_menu(){ localsoft=$1 localprompt="while${${soft}_arr[@]}) whiletrue do echo-e"#######################${soft}设置##########################################我<=${#arr[@]};i++));doecho-e"$I)${arr[$I-1]}";done echo read-p"${prompt}"$soft evallocalselect=\$$soft if["$select"==""]||["${arr[$soft-1]}"==""];然后 prompt="输入错误,请输入一个数字:" else eval$soft=${arr[$soft-1]} evalecho"您的选择:\$$soft"/h/]break fi done ] #将带宽比特单位转换为人可读单位 bit_to_human_readable(){[/hh/]localtrafficvalue=$1 *}-gt922]];然后 #conv到Kb trafficvalue=`awk-vvalue=$trafficvalue'BEGIN{printf"%0.1f",value/1024}'` if[${trafficvalue%。*}-gt922]];然后 #conv到Mb trafficvalue=`awk-vvalue=$trafficvalue'BEGIN{printf"%0.1f",value/1024}'` Echo"${trafficvalue}Mb" else Echo"${trafficvalue}Kb" fi else Echo"${trafficvalue}b" } ] ]然后 systempackage='apt' elifcat/etc/issue|grep-q-E-I"centos|redhat|redhat";然后 systempackage='yum' elifcat/proc/version|grep-q-E-I"Ubuntu|debian";然后 systempackage='apt' elifcat/proc/version|grep-q-E-I"centos|redhat|redhat";然后 systempackage='yum' else echo"unkonw" fi if["$manager"="$systempackage"];然后 return0 else return1 fi #实时流量 实时流量(){[/]localNIC_arr=(`ifconfig|grep-e-o"^[a-z0-9]+"|grep-v"lo"|uniq`) localNIClen=${#NIC_arr[@]}[$NIClen-eq0]];然后 回应“对不起,我检测不到任何网络设备,请向作者报告此问题。" 出口1 elif[[$NIClen-eq1]];然后 eth=$NIC_arr else display_menuNIC eth=$NIC fi localclear=true localeth_in_peak=0 localeth_out_peak=0 localeth_in=0 localeth_out=0 whiletrue;Do #将光标移动到0:0位置 printf"\033[0;0H" #清除屏幕并立即打印峰值 [[$Clear==true]]&&;printf"\033[2J"&;&echo"$eth-Now-Peak-" traffic_be=(`awk-veth=$eth-F'[:]+''{if($0~eth){print$3,$11}}'/proc/net/dev`) sleep2 traffic_af=(`awk-veth=$eth-F'[:]+''{if($0~eth){print$3,}}'/proc/net/dev`) #eth_in_peak=$eth_in [[$eth_out-gt$eth_out_peak]]&;&Eth_out_peak=$eth_out #将光标移动到2:1 printf"\033[2;1H" #清除当前行 printf"\033[K"/h/]printf"%-20s%-20s\N""接收:$(bit_to_human_readable$eth_in)""$(bit_to_human_readable$eth_in_peak)" #清除当前行 printf"\033[K"/h/]printf"%-20s%-20s\N""发送:$(bit_to_human_in&clear=false done } #流量和连接概述 trafficandconnectionview(){ if!哪个tcpdump>/dev/null;然后 回显“找不到tcpdump,准备安装。" ifcheck_package_managerapt;然后 apt-get-y安装tcpdump elifcheck_package_manageryum;然后 yum-y安装tcpdump fi fi localreg="" localeth="" localNIC_arr=(`ifconfig|grep-e-o"^[a-z0-9]+"|grep-v"lo"|uniq`) localNIClen=${#NIC_arr[@]} if[$NIClen-eq0]];然后 回应“对不起,我检测不到任何网络设备,请向作者报告此问题。" 出口1 elif[[$NIClen-eq1]];然后 eth=$NIC_arr else display_menuNIC eth=$NIC fi Echo"请等待10s生成网络数据..." echo #当前流量值 localtraffic_be=(`awk-veth=$eth-f'[:]+''{if($0~eth){print$3,$11}}'/proc/net/dev`) #tcpdump监听网 tcpdump-v-I$eth-tnn>;/tmp/tcpdump_temp2>;&1& sleep10 clear kill`psaux|greptcpdump|grep-vgrep|awk'{print$2}'` #处理tcpdump文件 awk'/IPgetline;print}'/tmp/TCPdump_temp>;/tmp/tcpdump_temp2 awk“{len=$NF;sub(/\)/,"",len);getlineprint[16],len}'/tmp/tcpdump_temp2>;/tmp/tcpdump #10s后期流量值 localtraffic_af=(`awk-veth=$eth-f'[:]+''{if($0~eth){print$3,$11}}'/proc/net/dev`) #10s平均打印速率 localeth_in=$(${traffic_af[0]}-${traffic_be[0]})*8/10)localeth_out033[0m"/h/]echo"$ethreceive:$(bit_to_human_readable$eth_in)/s"$ethtransmit:$(bit_to_human_readable$eth_out)/s"/h/]echo #统计10s内每个端口的平均流量 regtcpdump=$(ifconfig|grep-a1$eth|awk-f'[:]+''$0~/inetaddr:/{printf$4".[0-9]+:/') echo-e"\033[32m基于服务器端口的10秒平均流量:\033[0m"/h/]awk-F'[。:]+'-vregTcpdump=$regTcpdump“{if($0~regTcpdump){line="clients>;""."".""."":"}else{line="。"".""."":"">客户端"};sum[line]+=$NF*8/10}END{for(lineinsum){printf"%s%d\n",line,sum[line]}'/tmp/TCPdump|\ sort-k4-NR|head-n10|whilereadabcd;do echo"$a$b$c$(bit_to_human_readable$d)/s" done echo echo-e"\033[32m基于客户端端口的10秒平均流量:\033[0m"/h/]awk-F'[。:]+'-vregTcpdump=$regTcpdump“{if($0~regTcpdump){line=$2”。"".""."":"">server"}else{line="server>""."".""."":"};sum[line]+=$NF*8/10}END{for(lineinsum){printf"%s%d\n",line,sum[line]}'/tmp/TCPdump|\ sort-k4-NR|head-n10|whilereadabcd;do echo"$a$b$c$(bit_to_human_readable$d)/s"/h/]done echo #统计10s内带宽最大的前10个ip 。echo-e"\033[32m10s内top10ip平均流量:\033[0m"/h/]awk-F'[。:]+'-vregTcpdump=$regTcpdump“{if($0~regTcpdump){line=$2”。"".""."$5">;""."".""."":"}else{line="。"".""."":"">""."".""."};sum[line]+=$NF*8/10}END{for(lineinsum){printf"%s%d\n",line,sum[line]}'/tmp/TCPdump|\ sort-k4-NR|head-n10|whilereadabcd;do echo"$a$b$c$(bit_to_human_readable$d)/s"/h/]done echo #统计连接状态 regSS=$(ifconfig|awk-F'[:]+''$0~/inetaddr:/{printf$4"|"}'|sed-E's/|$/') ss-an|grep-v-E"LISTEN|UNCONN"|grep/tmp/ss echo-e"\033[32m连接状态计数:\033[0m"/h/]awk'NR>;1{sum[$(NF-4)]+=1}end{for(stateinsum){printstate,sum[state]}'/tmp/ss|sort-K2-NR echo #统计每个端口的连接状态 。033[32m端口连接状态计数:\033[0m"/h/]awk'NR>;1{sum[$(NF-4),$(NF-1)]+=1}END{for(keyinsum){split(key,subkey,SUBSEP);printsubkey[1],subkey[2],sum[subkey[1],Subkey[2]]}'/tmp/ss|Sort-k3-NR|Head-N10 echo #Counttop10IP echo-e"\033[32mtop10IPESTAB状态在端口80的计数:\033[0m"/h/]cat/tmp/ss|grepESTAB|awk-F'[:]+''{Sum[$(NF-2033[0m"/h/]cat/tmp/ss|grep-E"$regSS"|grepSYN-RECV|awk-F'[:]+''{sum[$(NF-2)]+=1}END{for(IPinsum){printIP,sum[IP]}'|sort-k2-NR|head-n10 } main(){ whiletrue;做 echo-e"1)实时交通。\n2)流量和连接概述。\n" read-p"请输入您的select(ie1):"select case$selectin 1)realTimeTraffic;打破;; 2)trafficAndConnectionOverview;打破;; *)echo“输入错误,请输入一个数字。";; esac done } main

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zz/784139.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-04
    下一篇 2022-05-04

    发表评论

    登录后才能评论

    评论列表(0条)

    保存