linux/centos使用fail2ban实现计次登录失败封禁其ip
问题背景
使用命令 cat /var/log/secure 查询服务器登录记录,发现有ip在进行暴力破解
所以使用fail2ban进行ip限制,如果登录失败五次,则永久封禁其ip。
安装并配置fail2ban(来自ChatGPT)
下面是一份完整的Fail2Ban安装和配置,用于监视SSH服务并在登录失败5次时永久封锁相关IP的配置。
-
安装Fail2Ban:
sudo yum install epel-release sudo yum install fail2ban
-
配置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
表示永久封锁。
-
启动并启用Fail2Ban服务:
sudo systemctl start fail2ban sudo systemctl enable fail2ban
-
检查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
,你可以确保你的自定义配置不会轻易丢失,因为它们存在于单独的文件中。
总的来说,复制配置文件的做法是为了更好地管理配置,避免在软件升级时出现问题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通