我有以下命令来连接当前 IP:
netstat -ntu | awk '{print $5}' | egrep -o -e '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' | sort | uniq -c | awk '{if ($1 > 50) print $2" # "$1" times."}' | sort -n
当我运行上面的命令时会得到如下结果:
68.4.90.74 # 185 times. 77.42.241.230 # 258 times. 78.40.177.38 # 658 times. 79.171.81.237 # 798 times. 79.172.252.26 # 435 times.
运行此命令以获取上述 IP 的详细信息
netstat -noap | grep 68.4.90.74
会给你(简单的):
tcp 0 0 xxx.xxx.xxx.xxx:80 68.4.90.74:56484 ESTABLISHED 10561/httpd keepalive (6398.07/0/0) tcp 0 0 xxx.xxx.xxx.xxx:53 68.4.90.74:56480 ESTABLISHED 10519/httpd keepalive (6379.57/0/0) tcp 0 0 xxx.xxx.xxx.xxx:53 68.4.90.74:56481 ESTABLISHED 9817/httpd keepalive (6379.56/0/0) tcp 0 0 xxx.xxx.xxx.xxx:53 68.4.90.74:56483 ESTABLISHED 9838/httpd keepalive (6379.56/0/0) tcp 0 0 xxx.xxx.xxx.xxx:80 68.4.90.74:56482 ESTABLISHED 10505/httpd keepalive (6379.34/0/0)
我的问题是如何更新第一个代码以通过非端口 80 连接 IP 尽管以下代码可以通过特定端口连接 IP:
netstat -ntu | awk '/\:80\ / {print $5}' | egrep -o -e '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' | sort | uniq -c | awk '{if ($1 > 50) print $2" # "$1" times."}' | sort -n
最佳答案
此 awk 脚本为您完成大部分工作:
netstat -ntu | awk '/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ && !($5 ~ /:80$/){split($5,a,":");++seen[a[1]]}END{for(i in seen)print i, "#", seen[i], "times."}'
第一个模式与您的相似,但我使用 +
而不是 *
来匹配一个或多个数字。第二种模式确保第 5 个字段不以 :80
结尾。只处理匹配第一个模式但不匹配第二个模式的线。
将第 5 个字段拆分到数组 a
中,并保留数组中所有 IP 地址的计数 seen
。最后,遍历 seen
中的所有元素并打印输出。
关于linux - 使用 CentOS 6 对 WHM 进行 DDOS 攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27892793/