SSH端口改了就安全?服务器防爆破的真实做法
上周有个客户找到我们,说服务器又被爆破登录了,这已经是三个月内第二次。他的运维人员很委屈:“明明把SSH端口从22改到了59821,怎么还被扫到?”
改端口为什么挡不住攻击
现在的端口扫描工具不像几年前那样只扫常见端口。nmap的-sS参数配合全端口扫描,一台服务器65535个端口跑完也就几分钟。你改的端口号再偏门,在自动化扫描面前跟没改差不多。
真正的问题不在于端口是多少,而在于你的SSH是否具备多层防御。只改端口就等于只换了门牌号,锁还是那把破锁。
三步把SSH加固做到位
第一步:禁用密码登录,强制密钥认证。这是最关键的一步。生成ED25519密钥对,把公钥放到服务器的~/.ssh/authorized_keys里,然后在sshd_config里设置PasswordAuthentication no。做完这步,爆破攻击基本就失效了——密钥破解在当前算力下不现实。
第二步:配置fail2ban自动封禁。这个工具会监控SSH登录日志,发现某个IP在短时间内连续失败就自动用iptables封掉。建议设置maxretry=3,findtime=600秒,bantime=86400秒。也就是说10分钟内失败3次就封24小时,足够让攻击者放弃。
第三步:限制SSH来源IP。如果你的运维团队都在固定办公网络工作,在防火墙层面只允许这些IP段访问SSH端口。云服务器的话,用安全组规则做最省事。对于需要移动办公的场景,走VPN跳板机再连SSH。
别忘记检查这些细节
禁用root直接登录,用普通用户登上去再sudo提权。检查sshd_config里PermitRootLogin设为no还是prohibit-password,建议直接no。另外协议版本强制Protocol 2,虽然现在OpenSSH默认就是2,但老系统可能还留着Protocol 1的配置。
加固做完后用ssh-audit这个工具跑一遍检测,能帮你发现还有哪些弱加密算法没关掉。这些细节看着小,但在真实攻防中就是最后一道防线。