fail2ban 是一个用于防止暴力破解攻击的工具,它可以监控系统日志文件,当检测到异常的登录尝试时,会自动封禁对应的 IP 地址。以下是使用 fail2ban 的基本步骤和示例:
1. 安装 fail2ban
在不同的 Linux 发行版上,安装 fail2ban 的命令有所不同。
在 Ubuntu/Debian 上
1 2
| sudo apt-get update sudo apt-get install fail2ban
|
在 CentOS/RHEL 上
1 2
| sudo yum install epel-release sudo yum install fail2ban
|
2. 配置 fail2ban
fail2ban 的配置文件通常位于 /etc/fail2ban 目录下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| sudo systemctl enable --now fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo vim /etc/fail2ban/jail.local ```ini [DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log
|
复制配置文件
为了避免在更新 fail2ban 时覆盖你的配置,通常会复制默认配置文件来进行修改。
1
| sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
|
编辑 jail.local 文件
你可以使用任何文本编辑器打开 jail.local 文件进行编辑。以下是一个简单的示例,用于封禁多次 SSH 登录失败的 IP 地址:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| [DEFAULT]
bantime = 1d
findtime = 600
maxretry = 5
ignoreip = 127.0.0.1/8 ::1
backend = auto
注意:新版本(如v0.11.2)上面配置位于根节点下(非[DEFAULT])
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log
maxretry = 3
|
3. 启动和管理 fail2ban
启动 fail2ban 服务
1
| sudo systemctl start fail2ban
|
设置开机自启
1
| sudo systemctl enable fail2ban
|
查看 fail2ban 状态
1
| sudo systemctl status fail2ban
|
4. 查看和管理封禁列表
查看当前封禁的 IP 地址
1
| sudo fail2ban-client status sshd
|
解封某个 IP 地址
1
| sudo fail2ban-client set sshd unbanip 192.168.1.100
|
解释
bantime:指定封禁 IP 地址的时长,单位为秒。
findtime:指定在多长时间内检测登录失败次数,单位为秒。
maxretry:指定允许的最大登录失败次数。
[sshd]:表示针对 SSH 服务进行配置。
enabled:是否启用该配置。
port:指定监控的端口。
filter:指定使用的过滤规则。
logpath:指定监控的日志文件路径。
5. 手动触发检查
若你想即刻检查 /var/log/auth.log 并依据配置进行封禁操作,可使用如下命令:
1
| sudo fail2ban-client reload
|
此命令会重新加载 fail2ban 的配置,让其马上检查日志文件并按照配置规则对符合条件的 IP 进行封禁。
6. 主动封禁
1
| sudo fail2ban-client set sshd banip 218.92.0.247
|