
核心要点(TL;DR)
- SSH暴力破解可通过Fail2ban自动封禁IP,结合防火墙规则实现联动防护。
- 修改默认SSH端口并启用密钥登录,能大幅降低被扫描风险。
- 使用Linux面板(如宝塔)可图形化配置防火墙与Fail2ban,简化操作。
- 定期检查日志并设置告警,是持续防护的关键。
深夜收到服务器告警,SSH端口每秒都有数十次失败登录尝试?这不仅是资源消耗,更意味着你的服务器正暴露在暴力破解的风险中。本文将手把手教你通过Linux面板与防火墙联动,构建自动防御体系,让攻击者无从下手。
一、确认攻击:你的SSH正在被暴力破解吗?
首先检查日志,确认是否遭受攻击。执行以下命令查看最近失败登录:
grep "Failed password" /var/log/secure | tail -20若输出中同一IP反复出现,即遭暴力破解。也可用lastb查看失败记录。攻击特征包括:高频尝试、常见用户名(root、admin)、固定时间间隔。
二、基础加固:修改SSH配置降低风险
修改默认端口和禁用密码登录能大幅减少自动化扫描。编辑/etc/ssh/sshd_config:
Port 22222 # 改为非标准端口
PermitRootLogin no # 禁止root直接登录
PasswordAuthentication no # 禁用密码认证
PubkeyAuthentication yes # 启用密钥登录重启SSH服务:systemctl restart sshd。注意:修改端口后需更新防火墙规则,并确保密钥已配置。
三、自动封禁:Fail2ban与防火墙联动
Fail2ban监控日志并自动调用iptables封禁IP。安装:
yum install fail2ban -y # CentOS
apt install fail2ban -y # Ubuntu创建本地配置/etc/fail2ban/jail.local:
[sshd]
enabled = true
port = 22222
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600
findtime = 600
ignoreip = 127.0.0.1 你的管理IP启动并设置开机自启:systemctl enable --now fail2ban。查看封禁状态:fail2ban-client status sshd。
四、面板联动:图形化配置更高效
若使用宝塔面板,可在「软件商店」安装Fail2ban插件,图形化设置封禁阈值。同时,面板防火墙可添加规则,仅允许特定IP访问SSH端口。注意:面板防火墙与系统防火墙可能冲突,建议统一使用一种。对于AegisX用户,其内置的入侵检测模块可自动识别暴力破解并联动防火墙封禁,无需手动配置。
五、检查清单与持续监控
完成配置后,逐项检查:
- SSH端口已改为非标准端口
- 已禁用密码登录,仅允许密钥
- Fail2ban已运行并配置白名单
- 防火墙规则已放行新端口
- 日志监控与告警已设置(如logwatch)
定期查看/var/log/fail2ban.log,确认封禁生效。建议每周审查一次失败登录趋势。
行动建议
立即登录服务器,按上述步骤配置Fail2ban与防火墙联动。若使用面板,优先启用其安全插件。记住:安全是持续过程,定期更新规则和检查日志至关重要。
常见问题(FAQ)
如何查看SSH是否正在被暴力破解?
查看/var/log/secure或/var/log/auth.log,搜索“Failed password”记录。若同一IP频繁出现,即遭暴力破解。也可用lastb命令查看失败登录列表。
Fail2ban和防火墙如何联动?
Fail2ban监控日志,匹配到多次失败登录后,自动调用iptables或firewalld添加封禁规则,实现动态防护。需确保Fail2ban有权限操作防火墙。
修改SSH端口后还需要其他防护吗?
需要。改端口仅减少扫描,不能阻止针对性攻击。建议同时启用密钥登录、禁用密码认证,并配置Fail2ban,形成多层防御。
Linux面板能管理Fail2ban吗?
部分面板如宝塔提供Fail2ban插件,可图形化配置封禁策略。也可通过面板的防火墙模块添加规则,但需确保与系统防火墙兼容。
如何避免封禁自己的IP?
在Fail2ban配置中设置ignoreip白名单,加入自己的管理IP。同时谨慎测试规则,避免误封。建议先使用非生产环境验证。