Fail2ban安装以及配置
Fail2ban安装以及配置
Fail2ban 扫描系统日志文件,例如 /var/log/pwdfail or /var/log/apache/error_log 并从中找出多次尝试登录失败的IP地址,并将该IP地址加入防火墙的拒绝访问列表中。
安装以及启动
$ yum install fail2ban
$ systemctl enable fail2ban # 开机启动
$ systemctl start fail2ban # 启动
$ systemct restart fail2ban # 重启
$ fail2ban-client reload # 重新加载配置
$ fail2ban-client status # 查看状态
配置
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]
# 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 = <HOST> -.*- .*HTTP/1.* .* .*$
ignoreregex =
添加nginx-cc配置到jail.local中
检查20秒之内访问次数达到200次就拦截该IP
[nginx-cc]
enabled = true
port = http,https
filter = nginx-cc
action = %(action_mwl)s
maxretry = 200
findtime = 10
bantime = 86400
# 说明注释
logpath = /var/log/nginx/access.log
配置说明
enabled :是否开启检测
port:检查的端口
maxretry:最大失败次数, 在检查时间内达到次数就拦截
bantime:拦截后禁止访问的时间,单位:秒
findtime:检查的时间访问,单位:秒
logpath: 扫描的日志文件,fail2ban按行扫描此文件,根据filter规则匹配失败的项目并统计
注意: 配置文件文件可以换行添加注释,但是不能在配置项后面跟注释,例如以下的注释是不允许的,failban会检查配置无效,将 bantime设置成None。
正则规则检查
$ fail2ban-regex /var/log/nginx/access.log "<HOST> -.*- .*HTTP/1.* .* .*$"
根据配置文件检查
$ fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/nginx-cc.conf