SSH是服务器运维的第一道门,默认配置下root密码登录、22端口直连、无失败锁定,等于把钥匙挂在门口。服务器被爆破的日志几乎每天都在产生,SSH安全加固是服务器上线前的必做项。本文给出可执行的加固步骤,覆盖密钥认证、登录限制与防暴力破解,适用于云服务器与物理机。
加固前先排查当前风险点
先摸清现状再动手,用几条命令检查SSH配置与登录情况:
ss -tlnp | grep sshd
grep -E 'PermitRootLogin|PasswordAuthentication|Port' /etc/ssh/sshd_config
lastb | head -20
重点确认三件事:是否允许root直接登录、是否开启密码认证、是否有大量失败尝试记录。lastb输出的失败登录记录是暴力破解的直观证据,若数量上千,说明服务器已在被扫描攻击。
配置密钥认证并关闭密码登录
密钥认证比密码安全得多。先在客户端生成Ed25519密钥对:
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/server_key
然后把公钥推送到服务器,修改sshd_config:
ssh-copy-id -i ~/.ssh/server_key.pub user@server_ip
# /etc/ssh/sshd_config 修改
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password
PermitRootLogin prohibit-password表示root只能通过密钥登录,密码被禁止。修改后不要立刻重启服务,先另开一个终端验证密钥能登录,再执行systemctl restart sshd,避免把自己锁在外面。公钥文件权限严格设置:authorized_keys为600,.ssh目录为700,私钥在客户端为600。
修改SSH端口并限制登录来源IP
修改默认端口能过滤掉大部分扫描流量。将Port改为高位端口,同时用防火墙限制来源:
# /etc/ssh/sshd_config
Port 22222
# ufw防火墙规则:仅白名单IP段可访问
ufw allow from 61.140.0.0/16 to any port 22222 proto tcp
ufw deny 22222/tcp
多台服务器统一通过堡垒机入口,服务器只对堡垒机IP开放SSH。堡垒机本身再做密钥管理与操作审计,登录来源收敛到单一可信点。
防暴力破解:fail2ban配置与验证
fail2ban监听认证日志,连续失败自动封禁来源IP。配置jail.local覆盖默认参数:
[sshd]
enabled = true
maxretry = 5
bantime = 3600
findtime = 600
systemctl enable --now fail2ban
fail2ban-client status sshd
参数含义:10分钟内失败5次封禁1小时。日志通过journalctl -u fail2ban查看。对高权限账号可叠加TOTP双因素认证,即使密钥泄露也难以登录。
加固后的验证清单
加固完成后逐项验证,把检查项固化为脚本:
ss -tlnp | grep -q ':22222' && echo 'port ok'
grep -q '^PasswordAuthentication no' /etc/ssh/sshd_config && echo 'pwd auth closed'
ssh -p 22222 user@server_ip 'echo login ok'
再从外部尝试密码登录应失败,非白名单IP访问应超时。运维人员离职后及时从authorized_keys删除对应公钥。按季度复查配置与日志,SSH加固的配置项没有变化才是持续有效。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/fu-wu-qi-ssh-an-quan-jia-gu-shi-zhan-mi-yao-ren-zheng-xian/