任务总览
- 屏蔽占用大量带宽的discuz灌水机器人
- 屏蔽尝试扫描网站上传文件的机器人
- 重启后自动重新配置屏蔽条件,不会丢失
开始任务
安装 ipset
yum install ipset
配置规则
ipset create discuz_rebort hash:net
ipset create scan_upload_package hash:net
# CIDR
ipset add scan_upload_package 180.97.106.0/24
# IP
ipset add discuz_rebort 46.118.158.40
ipset add discuz_rebort 46.118.125.133
ipset add discuz_rebort 134.249.55.141
ipset add discuz_rebort 178.137.161.254
ipset add discuz_rebort 185.234.216.41
ipset add discuz_rebort 173.239.236.63
# 保存规则
iptables -I INPUT -m set --match-set discuz_rebort src -p tcp -j DROP
iptables -I INPUT -m set --match-set scan_upload_package src -p tcp -j DROP
# 删除单个规则
iptables -D INPUT -m set --match-set discuz_rebort src -p tcp -j DROP
论坛屏蔽IP列表参考:http://www.stopforumspam.com/stats
保存配置
yum install iptables-services
# 创建文件夹
mkdir /etc/iptables.d
mkdir /etc/ipset.d
# 保存 iptables 规则
service iptables save
service iptables restart
# 保存 ipset 规则
ipset save -f /etc/ipset.d/forbiden.sh
重启自动配置
重新配置 ipset 需要的脚本
vim /etc/ipset.d/onboot.sh
/etc/ipset.d/onboot.sh 写入如下内容
ipset restore -f /etc/ipset.d/forbiden.sh
重新配置 iptables 需要的脚本
# 重新 ipset 配置需要的脚本
vim /etc/iptables.d/onboot.sh
/etc/ipset.d/onboot.sh 写入如下内容
/etc/ipset.d/./onboot.sh
service iptables restart
配置系统启动自动运行
vim /etc/rc.d/rc.local
/etc/rc.d/rc.local 追加如下内容
/etc/iptables.d/./onboot.sh
赋予运行权限
chmod +x /etc/ipset.d/onboot.sh
chmod +x /etc/iptables.d/onboot.sh
chmod +x /etc/rc.d/rc.local
备注
CentOS 7 后新增firewalld
,性能在iptables
之上,有待进一步学习。可能的学习资料:
4.5. 使用防火墙 - Red Hat Customer Portal