fail2ban 是 Linux 上的一个著名的入侵保护的开源框架,它会监控多个系统的日志文件(例如: /var/log/secure )并根据检测到的任何可疑的行为自动触发不同的防御动作。事实上,fail2ban 在防御对SSH服务器的暴力密码破解上非常有用。
一、环境检查
本环境为centos6.8 final
1.Python版本必须大于2.4.3
2.防火墙iptables必须开启
二、安装Fail2ban
# yum install -y fail2ban
# chkconfig fail2ban 35 on
三、配置Fail2ban
1.配置jail.conf
# vi /etc/fail2ban/jail.conf
在配置文件尾部追加以下内容:
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
#系统日志目录
logpath = /var/log/secure
##忽略指定IP
#ignoreip = 192.168.99.1
##用于指定哪些地址可以忽略 fail2ban 防御
ignoreip = 192.168.99.0/24
##ssh客户端允许失败的次数
maxretry = 10
##主机被禁止的时长(秒)
bantime = 604800
2.修改iptables的规则
# vi /etc/fail2ban/action.d/iptables-multiport.conf
修改:blocktype = REJECT –reject-with icmp-port-unreachable (可以注释掉) blocktype = DROP
3.修改fail2ban日志循环
修改日志记录,增大保存时间
# vi /etc/logrotate.d/fail2ban
- 1
默认为1天对日志文件进行刷新一次:
/usr/bin/fail2ban-client flushlogs 1>/dev/null || true
- 1
更改为7天刷新一次:
/usr/bin/fail2ban-client flushlogs 7>/dev/null || true
- 1
4.重启fail2ban:
# /etc/init.d/fail2ban restart
- 1
根据上述配置,fail2ban会自动禁止在最近10分钟内有超过10次访问尝试失败的任意IP地址。一旦被禁,这个IP地址将会在一周内一直被禁止访问 SSH 服务。
四、检查fail2ban状态&解禁IP地址
1.检查fail2ban状态
使用参数’ping’来运行fail2ban-client 命令。 如果fail2ban服务正常运行,可以看到“Server replied:pong”作为响应。
# fail2ban-client ping
Server replied: pong
# fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: ssh-iptables
# fail2ban-client status ssh-iptables