Fail2ban 是一款基于日志监控的安全工具,可通过实时监控系统日志,对多次失败的登录尝试进行阻止,有效防止暴力破解攻击。以下是详细的使用教程:
不同的操作系统安装方式不同,以下为你列举常见系统的安装方法:
sudo apt-get update
sudo apt-get install fail2ban
sudo yum install epel-release
sudo yum install fail2ban
sudo dnf install fail2ban
Fail2ban 的主要配置文件位于 /etc/fail2ban
目录下,其中 jail.conf
是默认配置文件,但不建议直接修改它,而是创建一个 jail.local
文件来覆盖默认配置。
jail.local
文件sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
在 jail.local
文件中,你可以对以下参数进行配置:
[DEFAULT]
部分:
ignoreip
:指定不受 Fail2ban 限制的 IP 地址,多个 IP 地址用空格分隔。例如:ignoreip = 127.0.0.1/8 192.168.1.0/24
bantime
:设置封禁 IP 的时间,单位为秒。可以使用 m
(分钟)、h
(小时)、d
(天)等单位。例如:bantime = 600 # 封禁 10 分钟
findtime
:在该时间段内,如果某个 IP 地址的失败尝试次数达到 maxretry
,则会被封禁。例如:findtime = 3600 # 1 小时内
maxretry
:允许的最大失败尝试次数。例如:maxretry = 3 # 允许 3 次失败尝试
在 jail.local
文件中,你可以为不同的服务添加监控规则。以下是一些常见服务的配置示例:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log # Debian/Ubuntu 系统
# logpath = /var/log/secure # CentOS/RHEL 系统
maxretry = 3
bantime = 3600
enabled
:设置为 true
表示启用该监控规则。port
:指定要监控的端口,ssh
表示默认的 SSH 端口 22。filter
:指定使用的过滤规则,sshd
是 Fail2ban 内置的 SSH 过滤规则。logpath
:指定 SSH 服务的日志文件路径。[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log # Debian/Ubuntu 系统
# logpath = /var/log/httpd/error_log # CentOS/RHEL 系统
maxretry = 6
bantime = 3600
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
sudo systemctl status fail2ban
当你修改了 jail.local
文件后,需要重新加载配置文件使更改生效:
sudo systemctl reload fail2ban
sudo fail2ban-client status ssh # 查看 SSH 服务的封禁列表
sudo fail2ban-client set ssh unbanip 192.168.1.100
如果你需要监控一些特殊的服务或日志格式,可以自定义过滤规则。过滤规则文件位于 /etc/fail2ban/filter.d
目录下。以下是一个简单的自定义过滤规则示例:
sudo nano /etc/fail2ban/filter.d/custom-filter.conf
[Definition]
failregex = ^Your custom log pattern here$
ignoreregex =
failregex
:指定匹配失败登录尝试的正则表达式。ignoreregex
:指定需要忽略的日志模式。jail.local
文件中使用自定义过滤规则[custom-service]
enabled = true
port = 8080
filter = custom-filter
logpath = /var/log/custom-service.log
maxretry = 3
bantime = 3600
通过以上步骤,你可以完成 Fail2ban 的安装、配置和使用,有效保护系统免受暴力破解攻击。