firewalld禁用IP总是忘记,这里记录一下
用于云服务器dos攻击的防御脚本。
当某个IP连接数超过指定数后,屏蔽到此IP,我的脚本设置的连接数超过100,请根据自己情况而定,循环10秒执行一次。你也可以删除我的循环,定义计划任务。
后期措施:禁止IP访问后,建议禁止一段时间后再删除禁止的IP,可以再根据情况而定。
#!/bin/bash
#允许一个IP最大连接数,超过则禁止访问
NUM=100
#判断是否安装netstat
netstat --help > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "开始安装net-tools"
yum -y install net-tools
fi
while true
do
#获取最大连接数
IPGITNUM=`netstat -nt |awk -F " +|:" '{print $6}'|sort|uniq -c|sort -r|head -n1|awk '{print $1}'`
if [ $IPGITNUM -gt $NUM ];then
#获取连接数大于连接数的第一个IP
IPDENY=`netstat -nt |awk -F " +|:" '{print $6}'|sort|uniq -c|sort -r|awk '$1>$NUM'|head -n1|awk '{print $2}'`
sed -i "/<\/zone>/i <rule family="ipv4"> <source address="$IPDENY"/> <reject/> </rule>" /etc/firewalld/zones/public.xml
firewall-cmd --reload
fi
sleep 10
done
发表评论