如何通过BASH命令把频繁访问服务器的IP找出来?


不知不觉建了好多网站, 也维护多个VPS服务器好多年了, 经常会碰到服务器被多种不良爬虫攻击, 不管是否恶意, 每次并发访问大的时候, 服务器的CPU使用率就飙升.

这时候我一般都会分析APACHE日志来找出在同一时间并发访问的IP. 然后找到IP后就很简单了, 通过CLOUDFLARE的防火墙添加一条IP规则永久禁止该IP的访问. CLOUDFLARE是个很不错的保护, 因为你服务器的IP地址永远不会被泄露, 而CLOUDFLARE会在你的服务器和访问者之间过滤掉恶意的访问.

通过在LINUX下BASH的几个命令, cat, awk, sort, uniq, head 可以用管道把这几个命令用起来, 分析APACHE的日志脚本, 找出访问最多的几个IP地址.

1
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | awk '{printf "%-8s ==> %s\n", $2, $1}' | head -10 
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | awk '{printf "%-8s ==> %s\n", $2, $1}' | head -10 

显示如下:

200.167.184.130 ==> 54487
189.11.199.82 ==> 30796
169.57.142.70 ==> 22209
187.7.215.35 ==> 21290
201.49.164.75 ==> 11104
200.167.184.168 ==> 10838
93.158.239.25 ==> 2747
2804:7f3:6980:4e90:4d67:871c:a75b:f5e4 ==> 1588
156.67.242.53 ==> 1407
198.71.230.54 ==> 1078

第一部分的命令 cat access.log | awk ‘{print $1}’ 是把日志中的第一列, 也就是访问者的IP给找出来, 然后后面七七八八的命令就是分组, 排序, 然后打印出来. 非常的好用.

bash-shellshock 如何通过BASH命令把频繁访问服务器的IP找出来?  I.T. LINUX 服务器 运维

bash-shellshock

GD Star Rating
loading...
本文一共 266 个汉字, 你数一下对不对.
如何通过BASH命令把频繁访问服务器的IP找出来?. (AMP 移动加速版本)
上一篇: Steem 终于升到 72级
下一篇: 参加 2018 Hacktoberfest 活动, 收到一件衣服和几个小玩意

扫描二维码,分享本文到微信朋友圈
406e890c3fa663f3cbb76e15b21a3705 如何通过BASH命令把频繁访问服务器的IP找出来?  I.T. LINUX 服务器 运维

2 条评论

评论