linux/centos使用fail2ban实现计次登录失败封禁其ip

发布时间 2023-12-03 15:07:30作者: 梦里不分西东

问题背景

使用命令 cat /var/log/secure 查询服务器登录记录,发现有ip在进行暴力破解

所以使用fail2ban进行ip限制,如果登录失败五次,则永久封禁其ip。

安装并配置fail2ban(来自ChatGPT)

下面是一份完整的Fail2Ban安装和配置,用于监视SSH服务并在登录失败5次时永久封锁相关IP的配置。

  1. 安装Fail2Ban:

    sudo yum install epel-release
    sudo yum install fail2ban
    
  2. 配置Fail2Ban:

    复制Fail2Ban的主配置文件:

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

    编辑jail.local文件:

    sudo nano /etc/fail2ban/jail.local
    

    在文件末尾添加以下内容:

    [sshd]
    enabled = true
    port = ssh
    filter = sshd
    logpath = /var/log/secure
    maxretry = 5
    findtime = 86400
    bantime = -1
    

    这里的意思是:

    • enabled = true 启用这个规则。
    • port = ssh 监视SSH服务的端口。
    • filter = sshd 使用内置的sshd过滤器。
    • logpath = /var/log/secure 监视的日志文件路径。
    • maxretry = 5 登录失败的最大尝试次数。
    • findtime = 86400 封锁一个IP的时间窗口,单位是秒(这里是24小时)。
    • bantime = -1 表示永久封锁。
  3. 启动并启用Fail2Ban服务:

    sudo systemctl start fail2ban
    sudo systemctl enable fail2ban
    
  4. 检查Fail2Ban状态:

    sudo fail2ban-client status
    

封禁结果

或者查看Fail2Ban的日志文件:

sudo journalctl -u fail2ban

现在,Fail2Ban已经配置成在SSH登录失败5次时永久封锁相关的IP。请确保你的SSH服务监听的确切端口和日志路径与配置一致。配置文件中的参数根据实际需求进行调整。

为什么不能直接修改配置文件,而要复制一份

复制配置文件的目的是为了避免直接修改主配置文件,从而确保在将来系统或Fail2Ban软件包升级时不会覆盖你的自定义配置。当你升级软件包时,可能会替换掉默认的配置文件,但不会影响你自己创建的本地配置文件。

在Fail2Ban的配置中,主配置文件是jail.conf,而我们复制一份为jail.local,是因为jail.local中的配置会覆盖jail.conf中的相应配置。这就允许你在jail.local中定义自己的规则,而不必更改主配置文件。

如果直接在主配置文件上进行修改,那么在软件包升级时,你的修改可能会被覆盖,导致你的自定义配置丢失。通过使用jail.local,你可以确保你的自定义配置不会轻易丢失,因为它们存在于单独的文件中。

总的来说,复制配置文件的做法是为了更好地管理配置,避免在软件升级时出现问题。