Fail2ban 使用教程
- 1. 安装 Fail2ban
- 2. 配置 Fail2ban
- 2.1 创建 `jail.local` 文件
- 2.2 基本配置参数说明
- 2.3 配置具体服务的监控规则
- 2.3.1 SSH 服务
- 2.3.2 Apache 服务
- 3. 启动和管理 Fail2ban
- 3.1 启动 Fail2ban 服务
- 3.2 设置 Fail2ban 开机自启
- 3.3 检查 Fail2ban 服务状态
- 3.4 重新加载配置文件
- 4. 查看和管理封禁列表
- 4.1 查看当前封禁的 IP 地址
- 4.2 解除封禁某个 IP 地址
- 5. 自定义过滤规则
- 5.1 创建自定义过滤规则文件
- 5.2 编写过滤规则
- 5.3 在 `jail.local` 文件中使用自定义过滤规则
Fail2ban 是一款基于日志监控的安全工具,可通过实时监控系统日志,对多次失败的登录尝试进行阻止,有效防止暴力破解攻击。以下是详细的使用教程:
1. 安装 Fail2ban
不同的操作系统安装方式不同,以下为你列举常见系统的安装方法:
- Debian 或 Ubuntu:
sudo apt-get update
sudo apt-get install fail2ban
- CentOS 或 RHEL:
sudo yum install epel-release
sudo yum install fail2ban
- Fedora:
sudo dnf install fail2ban
2. 配置 Fail2ban
Fail2ban 的主要配置文件位于 /etc/fail2ban
目录下,其中 jail.conf
是默认配置文件,但不建议直接修改它,而是创建一个 jail.local
文件来覆盖默认配置。
2.1 创建 jail.local
文件
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
2.2 基本配置参数说明
在 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 次失败尝试
2.3 配置具体服务的监控规则
在 jail.local
文件中,你可以为不同的服务添加监控规则。以下是一些常见服务的配置示例:
2.3.1 SSH 服务
[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 服务的日志文件路径。
2.3.2 Apache 服务
[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
3. 启动和管理 Fail2ban
3.1 启动 Fail2ban 服务
sudo systemctl start fail2ban
3.2 设置 Fail2ban 开机自启
sudo systemctl enable fail2ban
3.3 检查 Fail2ban 服务状态
sudo systemctl status fail2ban
3.4 重新加载配置文件
当你修改了 jail.local
文件后,需要重新加载配置文件使更改生效:
sudo systemctl reload fail2ban
4. 查看和管理封禁列表
4.1 查看当前封禁的 IP 地址
sudo fail2ban-client status ssh # 查看 SSH 服务的封禁列表
4.2 解除封禁某个 IP 地址
sudo fail2ban-client set ssh unbanip 192.168.1.100
5. 自定义过滤规则
如果你需要监控一些特殊的服务或日志格式,可以自定义过滤规则。过滤规则文件位于 /etc/fail2ban/filter.d
目录下。以下是一个简单的自定义过滤规则示例:
5.1 创建自定义过滤规则文件
sudo nano /etc/fail2ban/filter.d/custom-filter.conf
5.2 编写过滤规则
[Definition]
failregex = ^Your custom log pattern here$
ignoreregex =
failregex
:指定匹配失败登录尝试的正则表达式。ignoreregex
:指定需要忽略的日志模式。
5.3 在 jail.local
文件中使用自定义过滤规则
[custom-service]
enabled = true
port = 8080
filter = custom-filter
logpath = /var/log/custom-service.log
maxretry = 3
bantime = 3600
通过以上步骤,你可以完成 Fail2ban 的安装、配置和使用,有效保护系统免受暴力破解攻击。