CentOS VPS上SSH端口遭遇暴力破解是常见威胁,攻击者通过自动化脚本尝试海量用户名密码组合,一旦成功便完全控制你的服务器。最直接有效的防御策略是:立即修改默认SSH端口、禁用root用户直接登录、强制使用密钥认证,并部署Fail2ban实时封锁恶意IP。下面将分步详解这些核心操作及进阶加固方案。
一、立即修改SSH默认端口,避开自动化扫描
绝大多数暴力破解脚本针对默认的22端口,修改端口可避开大部分自动化攻击。使用vi或nano编辑SSH配置文件:
vi /etc/ssh/sshd_config
找到“#Port 22”这一行,删除注释符号“#”,并将22改为1024至65535之间的任意端口,例如“Port 58234”。保存文件后重启SSH服务:
systemctl restart sshd
关键提醒: 修改前务必确认新端口未被防火墙阻止,且已通过“firewall-cmd --add-port=58234/tcp --permanent”放行。建议保持当前SSH连接不关闭,新开一个终端测试新端口连接成功后再退出旧会话,防止配置错误导致无法远程登录。
二、禁用root用户SSH直接登录,切断高危攻击路径
Root账户是攻击的首要目标。禁止其直接通过SSH登录,可大幅提升安全性。在同一配置文件“/etc/ssh/sshd_config”中,找到“PermitRootLogin”参数,将其改为:
PermitRootLogin no
重启SSH服务后,攻击者即使猜到密码也无法以root身份登录。此后日常管理应使用普通用户登录,再通过“sudo”提权执行管理命令。请务必先创建一个具有sudo权限的普通用户,并测试无误后再禁用root登录。
三、强制使用SSH密钥认证,彻底抛弃密码登录
密码认证存在被暴力破解或嗅探的风险,而基于RSA或Ed25519算法的密钥认证几乎无法被暴力攻破。首先在本地客户端生成密钥对:
ssh-keygen -t ed25519 -C "your_email@example.com"
将生成的公钥(默认为~/.ssh/id_ed25519.pub)上传至VPS的相应用户目录:
ssh-copy-id -p 你的端口号 username@your_server_ip
然后在“/etc/ssh/sshd_config”中确认以下设置:
PubkeyAuthentication yes PasswordAuthentication no
禁用密码认证后,只有持有私钥的客户端才能连接。请务必将私钥妥善保存在安全位置,并考虑为密钥对再添加一道加密口令(passphrase)。
四、部署Fail2ban,动态智能封锁攻击IP
Fail2ban能监控系统日志(如/var/log/secure),当检测到同一IP在短时间内多次SSH登录失败后,自动将其IP加入防火墙规则(如iptables或firewalld)进行封锁。安装与配置步骤如下:
yum install epel-release -y yum install fail2ban -y
创建本地配置文件“/etc/fail2ban/jail.local”,覆盖默认设置:
[DEFAULT] bantime = 3600 findtime = 600 maxretry = 5 [sshd] enabled = true port = 你的SSH端口号 logpath = %(sshd_log)s backend = %(sshd_backend)s
此配置表示:10分钟(600秒)内同一IP有5次失败尝试,则封锁1小时。启动并设置开机自启:
systemctl start fail2ban systemctl enable fail2ban
可通过“fail2ban-client status sshd”查看当前被禁IP列表。Fail2ban是动态防御层,能与前述静态加固措施形成有效互补。
五、配置防火墙白名单,仅允许可信IP访问SSH
如果你的管理IP相对固定,使用防火墙白名单是最强硬的策略。通过firewalld(CentOS 7+默认)仅允许特定IP或IP段访问你的SSH端口:
firewall-cmd --permanent --remove-service=ssh firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="你的IP地址/32" port protocol="tcp" port="你的SSH端口" accept" firewall-cmd --reload
此操作将完全阻止其他任何IP连接你的SSH端口。请务必确保“你的IP地址”是稳定且正确的,否则可能导致自己无法访问。对于动态IP用户,可考虑结合DDNS服务,或使用VPN接入固定出口IP来实施此策略。
六、启用双因子认证(2FA)与监控审计
对于安全要求极高的生产环境,在密钥认证基础上增加双因子认证(如Google Authenticator)能提供额外安全保障。此外,必须启用并定期审查监控日志:
# 查看最近SSH登录成功记录 last # 查看失败登录尝试 grep "Failed password" /var/log/secure # 或使用更直观的工具如logwatch yum install logwatch -y
建议配置日志远程传输至独立的安全信息与事件管理(SIEM)系统,避免攻击者擦除本地日志痕迹。同时,保持系统和所有软件包更新至最新版本,以修补已知漏洞。
七、综合策略与定期安全评估
没有单一方案能提供绝对安全,必须采用纵深防御策略。最佳实践组合是:非默认端口 + 禁用root登录 + 密钥认证 + Fail2ban动态封锁 + 防火墙最小化放行。 定期使用安全扫描工具(如lynis)进行本地审计,检查配置是否松动。命令示例:
yum install lynis -y lynis audit system
关注其生成的强化建议。同时,考虑将SSH服务置于仅监听内网IP(通过修改“sshd_config”中的“ListenAddress”),并通过加密隧道或跳板机访问,这能进一步隐藏服务暴露面。
总结而言,保护CentOS VPS的SSH服务是一个从基础配置到动态监控的系统工程。核心在于减少暴露面、提升认证强度、实施动态防御。 立即执行上述步骤,并养成定期审查日志与更新策略的习惯,你的服务器将能有效抵御绝大多数自动化暴力破解攻击,为业务运行奠定坚实的安全基石。
