【Linux】Fail2ban 自动封禁异常SSH登陆IP

在 CentOS 上启用 Fail2Ban 的完整步骤如下:


一、安装 Fail2Ban

  1. 安装 EPEL 源(如已安装可跳过):
   sudo yum install epel-release -y
  1. 安装 Fail2Ban
   sudo yum install fail2ban -y

二、配置 Fail2Ban(推荐方式)

Fail2Ban 默认配置文件为 /etc/fail2ban/jail.conf不建议直接修改,应使用 jail.localjail.d/*.local 进行覆盖配置。

方法一:创建 jail.local

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vi /etc/fail2ban/jail.local

添加或修改以下内容(以 SSH 为例):

[DEFAULT]
ignoreip = 127.0.0.1/8 ::1
bantime = 3600
findtime = 600
maxretry = 3
banaction = firewallcmd-ipset
action = %(action_mwl)s

[sshd]

enabled = true port = ssh filter = sshd logpath = /var/log/secure

说明:

  • bantime:封禁时间(秒)
  • findtime:检测时间段(秒)
  • maxretry:最大失败次数
  • banaction:使用 firewalld 封禁 IP

三、启动并启用服务

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

检查状态:

sudo systemctl status fail2ban

四、验证配置

查看 SSH 防护状态:

sudo fail2ban-client status sshd

手动测试封禁/解封:

sudo fail2ban-client set sshd banip 192.168.1.100
sudo fail2ban-client set sshd unbanip 192.168.1.100

五、与 Firewalld 集成(CentOS 7+ 默认)

Fail2Ban 会自动使用 firewallcmd-ipset 与 Firewalld 集成。你可以查看封禁规则:

sudo firewall-cmd --list-rich-rules

如需进一步自定义规则(如 Nginx、WordPress 等),可在 /etc/fail2ban/filter.d//etc/fail2ban/jail.d/ 中添加配置文件。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注