麒麟OS可通过Fail2Ban自动封禁暴力破解SSH的异常IP,步骤包括:验证Python3与systemd、APT安装并启用服务、配置sshd jail规则、设置firewalld为封禁后端、测试并验证日志与封禁效果。

如果您在麒麟OS系统中面临SSH或其他服务遭受暴力破解攻击的风险,则可以通过安装并配置Fail2Ban来自动封禁异常IP。以下是完成该防护部署的具体步骤:
一、确认系统环境与依赖
Fail2Ban依赖Python 3及systemd服务管理器,麒麟OS V10(SP1及以上)默认已满足运行条件。需先验证Python版本与systemd状态,确保基础环境可用。
1、打开终端,执行python3 --version,确认输出为Python 3.7或更高版本。
2、执行systemctl --version,确认返回包含systemd版本号且无报错。
3、执行sudo apt update更新软件包索引列表。
二、通过APT源安装Fail2Ban
麒麟OS基于Debian/Ubuntu体系,官方源中已收录fail2ban软件包,使用APT安装可确保兼容性与签名验证。
1、执行sudo apt install fail2ban -y,等待安装完成。
2、安装完毕后,执行sudo systemctl is-enabled fail2ban,确认返回enabled;若非启用状态,执行sudo systemctl enable fail2ban。
3、执行sudo systemctl start fail2ban启动服务,并用sudo systemctl status fail2ban检查运行状态是否为active (running)。
三、配置SSH防护规则
Fail2Ban默认不启用任何jail,需手动启用SSH防护模块,并设定触发阈值与封禁时长,防止合法用户被误封。
1、执行sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local创建本地配置副本。
2、执行sudo nano /etc/fail2ban/jail.local编辑文件,在[sshd]段落下取消注释并修改以下三行:
enabled = true
maxretry = 3
bantime = 3600
3、保存退出后,执行sudo fail2ban-client reload重载配置,使SSH防护立即生效。
四、使用firewalld作为后端封禁工具
麒麟OS默认启用firewalld而非iptables,Fail2Ban需指定firewalld作为action backend,否则封禁指令将无法执行。
1、执行sudo nano /etc/fail2ban/jail.local,在文件末尾新增以下内容:
[DEFAULT]
banaction = firewallcmd-ipset
action = %(action_mwl)s
2、执行sudo systemctl restart firewalld确保防火墙服务运行正常。
3、执行sudo fail2ban-client set sshd banip 192.168.1.100测试手动封禁功能,再运行sudo firewall-cmd --list-rich-rules | grep 192.168.1.100验证规则已写入。
五、验证防护效果与日志监控
Fail2Ban通过解析认证日志(如/var/log/auth.log)识别失败登录行为,必须确保日志路径与格式匹配,且服务具备读取权限。
1、执行sudo tail -f /var/log/auth.log | grep "Failed password",尝试从另一终端对本机SSH发起两次错误密码登录。
2、切换回原终端,观察是否出现fail2ban.actions相关日志,提示Running ban jail sshd。
3、执行sudo fail2ban-client status sshd,确认Number of currently banned IP addresses大于0,且被封IP出现在列表中。
4、执行sudo iptables -L -n | grep f2b-sshd,确认存在对应链及DROP规则,说明firewalld后端已成功接管封禁动作。

















