当前位置:首页> 正文

CentOS7自动禁止当前连接数量过多的IP

CentOS7自动禁止当前连接数量过多的IP

服务器最讨厌的是有人恶意攻击,这不是我在阿里申请了一个ECS,用于个人使用,也没几个人访问竟然老是受攻击,动不动就上来几千个连接占用服务器的资源。

无奈网上找了些方法,发现总是不是很理想,最后我根据攻击的规律,发现每次都有几个不一样的IP,每个IP几百个连接,想起了前面文章 linux统计每个ip的连接数 刚好可以用上场。

于是建立了一个脚本: auto_block.sh

#!/bin/bash# 自动禁止连接数大于50的IPnetstat -ntu | awk ‘{print $5}‘ | cut -d: -f1 | sort | uniq -c | sort -n | awk  ‘{ if ( 50 < $1 ) cmd="firewall-cmd --add-rich-rule="rule family=ipv4 source address="$2" drop""; system(cmd) }‘

然后执行了一下,果然很有效果,然后就添加crontab去,定时1分钟一次。

可恨的是改善不是很大,访问我的网站时还是偶尔一下卡,登陆上去看,原来是因为受对方攻击的太频繁了(怎么老是跟我这小站过意不去呢),看来不能使用crontab了,于是改善下脚本。

#!/bin/bash# 用个死循环while truedo# 自动禁止连接数大于50的IPnetstat -ntu | awk ‘{print $5}‘ | cut -d: -f1 | sort | uniq -c | sort -n | awk  ‘{ if ( 50 < $1 ) cmd="firewall-cmd --add-rich-rule="rule family=ipv4 source address="$2" drop""; system(cmd) }‘# 检测间隔,这里是1秒钟sleep 1done

执行这脚本后感觉世界从此清静了...

展开全文阅读

相关内容