2016年12月8日星期四

网络分析shell脚本(实时流量+连接统计)

Linux运维日志

系统管理网络WWW安全监控Shell备份Email技术支持更多

网络分析shell脚本(实时流量+连接统计)

朱 茂海 发布于 2014-06-12 分类:Shell 阅读(5383)评论(31) 

有服务器方面的问题无法解决?点击这里寻求帮助。


介绍一个强大的分析网络的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
下面贴出完整的脚本:

https://github.com/hilllinux/conf/blob/master/network-analysis.sh

脚本中如有不明白的地方,可以留言咨询。

转载请保留原文链接:Linux运维日志 » 网络分析shell脚本(实时流量+连接统计)

打赏

如果此文对你有所帮助,请随意打赏鼓励作者^_^

相关推荐

借助tcpdump统计http请求使用shell脚本结合innobackupex自动备份mysql innodb数据库Bash Shell字符串操作小结使用sed对nginx配置文件进行删除和列出虚拟主机操作sed高级应用示例shell脚本制作俄罗斯方块游戏如何在Linux终端里用Shell和C输出带颜色的文字shell采集系统cpu 内存 磁盘 网络信息

评论 31

提交评论

情朗大神,我执行此脚本的2) traffic and connection overview.功能时,系统报错(167行), line 167: : command not found2年前 (2014-06-13)回复

朱 茂海@情朗 167是哪一行2年前 (2014-06-13)回复

情朗@朱 茂海 awk -F'[ .:]' -v regTcpdump=$regTcpdump '{if ($0 ~ regTcpdump){line="clients > "$8"."$9"."$10"."$11":"$12}else{line=$2"."$3"."$4"."$5":"$6" > clients"};sum[line]+=$NF*8/10}END{for (line in sum){printf "%s %d\n",line,sum[line]}}' /tmp/tcpdump | \2年前 (2014-06-14)回复

朱 茂海@情朗 不知道什么原因,你可以使用如下命令来运行下。 wget https://www.centos.bz/wp-content/uploads/2014/06/network-analysis.sh chmod +x network-analysis.sh ./network-analysis.sh2年前 (2014-06-14)回复

watchsky@朱 茂海 挺好的,收藏了,不过如果网卡做了bond呢?2年前 (2014-06-18)回复

朱 茂海@watchsky 这个没考虑到bond2年前 (2014-06-18)回复

cody如何查看 80 端口被占用的 ip 对应的 进程 呢?发现有些奇怪的ip,不知道是不是恶意的。2年前 (2014-06-19)回复

朱 茂海@cody 你这句话说得好绕,不明白你说什么2年前 (2014-06-19)回复

kkk@朱 茂海 用lsof -i:80 这样可以看到使用80端口的进程2年前 (2014-10-25)回复

学徒真是好东西尼。2年前 (2014-06-25)回复

Mallux:razz: 很强大的脚本,分析研究下~~2年前 (2014-07-11)回复

rocdk890大神,我想请问下为什么我执行脚本后,会出现下面的错误呢? please input your select(ie 1): 2 kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]2年前 (2014-07-24)回复

朱 茂海@rocdk890 编辑脚本,在第一行后面加-x,如#!/bin/bash -x,然后执行脚本,把输出贴出来才能找出问题。2年前 (2014-07-24)回复

ryan博主你好,运行时有错误。错误如下 11: network-analysis.sh: Syntax error: "(" unexpected (expecting "}") 有点疑惑2年前 (2014-12-09)回复

snom群主, #统计端口为80且状态为ESTAB连接数最多的前10个IP #统计端口为80且状态为SYN-RECV连接数最多的前10个IP 这里貌似没有用来判断是否是80端口,这里统计的是全部的端口2年前 (2014-12-23)回复

朱 茂海@snom 嗯,注释有错2年前 (2014-12-23)回复

心碎随风请教一下,怎么样把脚本的菜单的1 和2 分开?这样就可以直接用定时任务调了。另外关于top 10 统计出来的ip流量,能不能把公网和私网的ip分开列出,比较好观察。1年前 (2015-07-13)回复

朱 茂海@心碎随风 菜单1和2是根据机器网卡数量生成的,如果只有一个网卡,就不会有菜单;公网和私网ip统计分开,假如你这两种流量是分布在不同网卡,就可以分别统计不同网卡的流量1年前 (2015-07-13)回复

心碎随风问题是公网和私网的ip都是走同一块网卡。@朱 茂海1年前 (2015-07-14)回复

心碎随风脚本执行后的结果中,server 和client分别指的是什么?1年前 (2015-07-13)回复

朱 茂海server就是你运行脚本的机器,client是其它连接server的机器1年前 (2015-07-13)回复

2

© 2016 Linux运维日志   网站地图

没有评论:

发表评论