Fail2ban 服务教程
1. 什么是 Fail2ban? 🛡️
Fail2ban 是一个用于保护 Linux 系统免受暴力破解攻击的安全工具。它监视系统日志,检测多次失败的登录尝试,并根据设定的规则自动封锁攻击者的 IP 地址。Fail2ban 可以与防火墙(如 iptables
或 firewalld
)配合使用,提供强大的安全防护。🔐
特点 | 描述 |
---|---|
自动封锁 IP | 在失败的登录尝试超过阈值时,自动封锁攻击者的 IP 地址。 |
自定义规则 | 用户可以根据需求自定义监控和封锁规则。 |
支持多种服务 | 支持 SSH、Apache、Nginx 等常见服务。 |
日志分析 | 监控系统日志,及时发现可疑行为。 |
2. 安装 Fail2ban 📥
2.1 安装 Fail2ban
在大多数 Linux 发行版中,Fail2ban 可以通过包管理工具进行安装。在 Ubuntu 或 Debian 系统上,使用以下命令安装:
sudo apt update
sudo apt install fail2ban
在 CentOS 或 RHEL 系统上:
sudo yum install epel-release
sudo yum install fail2ban
2.2 启动 Fail2ban 服务
安装完成后,启动 Fail2ban 服务:
sudo systemctl start fail2ban
如果希望在系统启动时自动启动 Fail2ban,可以使用以下命令:
sudo systemctl enable fail2ban
2.3 检查 Fail2ban 服务状态
要检查 Fail2ban 服务是否正常运行,可以使用以下命令:
sudo systemctl status fail2ban
3. 配置 Fail2ban 服务 ⚙️
3.1 配置 Fail2ban 主配置文件
Fail2ban 的主要配置文件位于 /etc/fail2ban/jail.conf
。但是,强烈建议不要直接编辑该文件,而是复制一份并修改复制文件 /etc/fail2ban/jail.local
。这样做可以确保你在软件更新时不会丢失配置。
首先,复制配置文件:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
然后,编辑 jail.local
文件以进行自定义配置:
sudo nano /etc/fail2ban/jail.local
主要配置选项如下:
- bantime: 封锁时间,设置失败登录尝试后封锁 IP 的时间。默认为 10 分钟,可以修改为更长的时间。
- findtime: 指定检查失败登录尝试的时间窗口。例如,设置为 600 秒(10 分钟),则 Fail2ban 会在过去 10 分钟内查看是否有多次失败的登录尝试。
- maxretry: 设置在
findtime
时间窗口内允许的最大失败尝试次数。超过该次数后,Fail2ban 会封锁 IP 地址。
[DEFAULT]
bantime = 600 # 封锁时间,单位为秒
findtime = 600 # 查找失败 尝试的时间窗口,单位为秒
maxretry = 3 # 最大失败次数,超过后封锁 IP
[sshd]
enabled = true # 启用 SSH 保护
port = ssh # SSH 默认端口
logpath = /var/log/auth.log # SSH 日志路径
maxretry = 5 # 最大失败次数为 5
3.2 配置特定服务保护
Fail2ban 支持对多个服务进行保护,最常见的服务是 SSH。你可以在配置文件中启用对 SSH 的保护。检查以下配置:
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 5
如果你想保护 Nginx 或 Apache 等 Web 服务,只需找到对应的 [nginx]
或 [apache]
部分,并启用它们:
[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/*error.log
maxretry = 3