1. 项目介绍

Fail2Ban 是一个基于 Python 编写的安全工具,主要用于监视系统日志文件并防止恶意攻击者通过暴力破解等方式登录到你的服务器或者应用程序上。具体来说,Fail2Ban 会通过分析系统日志文件,提取出已经被禁止登录的 IP 地址,并将这些 IP 地址添加到特定的防火墙规则中,以防止这些 IP 地址再次登录你的系统。

Fail2Ban监视系统日志文件方面非常灵活,用户可以通过配置文件指定要监视的日志文件路径、需要监视的关键字等,在出现指定的错误或异常情况时,Fail2Ban 会将相应的 IP 地址添加到黑名单中。

除了监视登录日志以外,Fail2Ban 还支持监视其他类型的日志文件,例如 SSHFTPSMTPApacheNginx 等服务的日志文件。同时,Fail2Ban 还支持自定义脚本过滤规则,以实现更加精细化的监视和防范。

总之,Fail2Ban 是一款强大的安全工具,可以帮助你保障服务器应用程序系统的安全性,并有效地应对各种安全威胁攻击

2. 安装

2.1. 安装

1
sudo yum install fail2ban -y

2.2. 配置

1
2
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
vim /etc/fail2ban/jail.local

监视sshd服务

1
2
3
4
5
6
7
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 5
bantime = 300s
  1. sshd:表示监视SSH服务器的日志
  2. enabled:表示是否启用该监视规则,true 表示启用,false 表示禁用
  3. port:表示需要监视的端口,这里填写 ssh 表示监视 22 端口
  4. filter:表示使用的过滤规则,这里填写 sshd 表示使用 /etc/fail2ban/filter.d/sshd.conf 这个过滤规则
  5. logpath = /var/log/secure:表示监视 /var/log/secure 日志文件。
  6. maxretry = 5:当有5次失败的尝试时,将触发fail2ban的行为。(可以根据自己的需要进行调整)
  7. bantime = 300s:表示禁止登录的时间。也就是在攻击者登录失败后被禁止的时间长度,单位为秒。

其他配置项与sshd的配置差不多

3. 相关命令

1
2
3
4
5
6
7
8
# 启动服务
sudo systemctl start fail2ban
# 停止服务
sudo systemctl stop fail2ban
# 重启服务
sudo systemctl restart fail2ban
# 查看服务状态
sudo systemctl status fail2ban

Fail2Ban的常用命令如下:

1
2
3
4
5
6
7
8
1. fail2ban-client status #检查 Fail2Ban 的运行状态。
2. fail2ban-client status <jail> #查看指定 jail 的状态。
3. fail2ban-client start #启动 Fail2Ban。
4. fail2ban-client stop #停止 Fail2Ban。
5. fail2ban-client restart #重启 Fail2Ban。
6. fail2ban-client reload #重新加载当前 jail 的配置文件。
7. fail2ban-client set <jail> unbanip <ip> #对指定 IP 解除封禁。
8. fail2ban-client set <jail> banip <ip> #对指定 IP 进行封禁。

4. 参考资料

  1. Fail2Ban官网
  2. 相关配置文档