安装以及启动
直接安装
yum install fail2ban
systemctl enable fail2ban # 开机启动
systemctl start fail2ban # 启动
systemct restart fail2ban # 重启
fail2ban-client reload # 重新加载配置
fail2ban-client status # 查看状态
源码安装
wget https://github.com/fail2ban/fail2ban/archive/refs/tags/0.11.2.tar.gz
tar -zxvf fail2ban-0.11.2.tar.gz
cd fail2ban-0.11.2
python setup.py install
配置
fail2ban的.conf配置文件都是可以被.local覆盖,所以配置方式建议是添加.local文件,不修改原来的配置文件。
添加jail.local并写入配置
vi /etc/fail2ban/jail.local
添加默认配置
[DEFAULT]
ignoreip = 127.0.0.1
bantime = 86400
findtime = 86400
maxretry = 3
backend = auto
[ssh]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
#将port后面的ssh换成服务器的ssh端口号(若不是22)
# sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com, sendername="Fail2Ban"]
logpath = /var/log/secure
maxretry = 3
配置说明
[DEFAULT]
#忽略的IP列表,不受设置限制(白名单)
ignoreip = 127.0.0.1
#屏蔽时间,单位:秒
bantime = 86400
#这个时间段内超过规定次数会被ban掉
findtime = 86400
#最大尝试次数
maxretry = 3
#日志修改检测机制(gamin、polling和auto这三种)
backend = auto
#针对各服务的检查配置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置
[ssh]
#是否激活此项(true/false)
enabled = true
#过滤规则filter的名字,对应filter.d目录下的sshd.conf
filter = sshd
#动作的相关参数
action = iptables[name=SSH, port=ssh, protocol=tcp]
#触发报警的收件人
# sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com, sendername="Fail2Ban"]
#检测的系统的登陆日志文件
logpath = /var/log/secure
#最大尝试次数
maxretry = 3
添加nginx-cc拦截规则
vim /etc/fail2ban/filter.d/nginx-cc.conf
写入
[Definition]
failregex =
ignoreregex =
添加nginx-cc配置到jail.local中
[nginx-cc]
enabled = true
port = http,https
filter = nginx-cc
action = %(action_mwl)s
maxretry = 200
findtime = 10
bantime = 86400
# 说明注释 检查20秒之内访问次数达到200次就拦截该IP
logpath = /var/log/nginx/access.log
#如果运行英文报错路径没有文件,就在上面的路径建立access.log文件
重新载入文件或者启动(下面是源码安装命令)
fail2ban-client start #启动
fail2ban-client reload # 重新加载配置
fail2ban-client restart# 重新加载配置
fail2ban-client status # 查看状态