这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 傲来云 于 2025-5-15 14:03 编辑
网站频繁被扫端口、SSH 爆破?只靠防火墙规则太麻烦?那你一定要了解一下这个神器:
fail2ban + firewalld,自动检测日志、封禁恶意 IP,省心又高效!
什么是 fail2ban?fail2ban 是一个开源安全工具,能通过分析日志文件(如 SSH 登录日志)来发现异常行为,并自动调用防火墙(如 firewalld)将对应 IP 封禁。
环境准备
一、安装 fail2ban- # 安装 EPEL 源(如未安装)
- yum install epel-release -y
- # 安装 fail2ban
- yum install fail2ban -y
复制代码 安装完成后,服务位置:
二、配置 fail2ban
默认配置文件路径:/etc/fail2ban/ 我们需要做两个修改: 1. 编辑主配置文件:复制默认配置,避免升级时被覆盖: - cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
复制代码 然后编辑:
- nano /etc/fail2ban/jail.local
复制代码 找到 [sshd] 部分,修改如下:
- [sshd]
- enabled = true
- port = ssh
- logpath = /var/log/secure
- maxretry = 5
- bantime = 3600
- findtime = 600
- backend = systemd
复制代码含义解释: maxretry:最多失败次数(5次) findtime:在 600 秒内失败 5 次触发封禁 bantime:封禁时间(秒)
三、设置使用 firewalld 作为封禁后端
编辑 jail.local 中最上方 [DEFAULT] 区域,加上这行:- banaction = firewallcmd-ipset
复制代码 确保 firewalld 已启动并运行:- systemctl start firewalld
- systemctl enable firewalld
复制代码
四、启动并启用 fail2ban- systemctl start fail2ban
- systemctl enable fail2ban
复制代码 查看运行状态:- systemctl status fail2ban
复制代码
五、常用查看命令- # 查看 fail2ban 是否生效
- fail2ban-client status
- # 查看 sshd 的保护情况
- fail2ban-client status sshd
- # 手动封禁一个 IP(例如 1.2.3.4)
- fail2ban-client set sshd banip 1.2.3.4
- # 手动解封
- fail2ban-client set sshd unbanip 1.2.3.4
复制代码
六、结合宝塔面板使用
宝塔自带防火墙偏静态,而 fail2ban 属于动态实时检测,可以作为补充使用:
防 SSH 爆破 → 启用 fail2ban 的 sshd 规则 防 FTP 爆破 → 还可配置 [vsftpd] 模块(需开启日志)
总结
fail2ban + firewalld 是一个非常轻量但有效的自动防御方案,基本配置一次,自动保护服务器,特别适合:
VPS、小型网站服务器 没有硬件防火墙的场景 频繁遇到 SSH 爆破、FTP 登录异常的用户
|