将服务器暴露在公网环境下,SSH端口被脚本小子探测到几乎是必然的结果。每天成千上万次的自动扫描,只要密码强度稍有不足,服务器几乎等同于裸奔。下面分享几条真正有效的SSH安全加固思路,逐一吃透就能大幅提升防护能力。
1. 更改默认SSH端口
将默认的22端口修改为其他数值,比如2222或更高的端口号。这一步看似简单,却能有效拦截绝大多数自动化扫描——那些脚本只针对22端口发起攻击,修改后它们直接被挡在门外,这是最基础的SSH安全防护措施。
2. 禁止root用户直接登录
编辑 /etc/ssh/sshd_config,将 PermitRootLogin 设置为 no。root是黑客最优先尝试的账户名,直接禁用其远程登录,攻击面就能减少一大半。建议先创建一个普通用户,日常操作通过 sudo 提权完成,同样高效且安全。
3. 采用密钥认证替代密码
密码认证始终存在被暴力破解的风险。将 PasswordAuthentication 设为 no,改用SSH密钥对验证。密钥相当于一把物理锁,攻击者即使猜对密码,没有对应的私钥文件也无法进入系统,这是SSH防暴力破解的核心手段。
4. 限制允许登录的用户
在 AllowUsers 配置项后面只列出需要登录的用户名,其他用户一律禁止访问SSH。假设服务器上只有 admin 和 deploy 两个用户,那就只允许他们通过SSH连接,其他用户连尝试的机会都没有,有效缩小攻击入口。
5. 部署Fail2ban自动封禁
Fail2ban是SSH安全防护的神器。它会监控登录失败的次数,例如连续5次失败后自动封禁该IP一段时间。合理配置后,攻击者会被自动屏蔽,而合法用户使用密钥登录几乎不受影响,极大降低暴力破解风险。
6. 及时更新系统与SSH服务
这不是一句空话。SSH协议本身也会出现漏洞,比如之前曝出的CVE-2024-6387,是OpenSSH的远程代码执行漏洞。只要官方发布安全更新,务必第一时间打上补丁,这是防止漏洞被利用的根本措施。
7. 配置防火墙限制来源IP
使用firewalld或iptables限制SSH端口的访问来源:只允许公司或家庭固定IP地址连接。这样即使脚本扫到了正确的端口、猜对了密码,只要IP不在白名单内也无法进入,极大增强了服务器安全防护能力。
8. 定期检查登录日志
每周翻看 /var/log/secure 日志,关注异常登录尝试,比如连续几小时的爆破记录或某个IP反复尝试root登录。配合 logwatch 等工具自动生成报告,能更省心地监控SSH攻击行为。
9. 配置公钥认证并禁用密码
将客户端生成的公钥添加到服务器 ~/.ssh/authorized_keys 文件中,之后SSH连接只需私钥。结合第3条措施,完全关闭密码认证后,整个系统就完全依赖密钥存活,安全性大幅提升。
10. 限制连接速率与会话数
在 /etc/ssh/sshd_config 中调整 MaxAuthTries 和 MaxSessions 参数。前者限制单次连接允许的认证尝试次数(建议设为3次以内),后者限制并发会话数(例如最大2个)。这样攻击者即使扫到端口,也无法同时发起大量连接尝试密码,有效遏制暴力破解。
这几条措施全部落实后,SSH攻击风险可降低90%以上。关键在于:不要等服务器被入侵后才想起加固,趁现在安全无虞,立刻动手修改配置。
