SSH 是攻击者的头号目标
公网上 22 端口每分钟都被扫——不做加固,密码弱一点点几天内就被暴破。
下面 6 条措施做完,SSH 入侵风险降 99%。
🚨 操作 SSH 配置的铁律:保留当前 SSH 会话别关,另开一个新窗口验证改完后能登。如果新窗口登不上,旧会话还能救命。每一步
systemctl restart sshd之前都先想一下这条。
1. 禁用 root 直接登录
/etc/ssh/sshd_config:
PermitRootLogin no
理由:
- root 用户名是公知的,攻击者只需要密码
- 改成普通用户登录后用 sudo,多一道防线
2. 禁用密码认证,只用密钥
PasswordAuthentication no
PubkeyAuthentication yes
⚠ 配置前确认你的 SSH key 已加到目标账户的 authorized_keys——否则你下次登不上。
确认流程:
# 在客户端
ssh-copy-id user@host
# 在服务器
ls -l ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
# 测试用 key 能登
ssh user@host # 不应该提示输密码
# 确认 OK 后再改 sshd_config 禁用密码
3. 改默认端口
Port 22022
减少机器人扫描流量——不是真正的安全(高级攻击者会扫所有端口),但少 95% 噪声。
改端口后:
# 防火墙开新端口
sudo ufw allow 22022/tcp
# 国内云服务器:安全组也要改
# SELinux(CentOS)也要改:
sudo semanage port -a -t ssh_port_t -p tcp 22022
# 重启 sshd
sudo systemctl restart sshd
# 测试新端口
ssh -p 22022 user@host
# 都 OK 后关 22
sudo ufw delete allow 22/tcp
4. 限制可登录用户
AllowUsers wadely alice
# 或按组
AllowGroups sshusers
只列出能 SSH 的人——新建系统账号不会意外能登录。
5. 启用 fail2ban
自动封暴破 IP:
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
默认配置就够用——监控 sshd 日志,5 次失败封禁 10 分钟。
自定义:
sudo vim /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 22022
maxretry = 3
findtime = 600
bantime = 86400 # 1 天
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
6. 其他细节
/etc/ssh/sshd_config 推荐配置:
# 安全协议
Protocol 2
# 限制 idle
ClientAliveInterval 300
ClientAliveCountMax 2
# 限制最大连接
MaxAuthTries 3
MaxSessions 5
LoginGraceTime 30
# 禁用不安全 / 不需要的特性
X11Forwarding no
AllowAgentForwarding no # 除非你需要
AllowTcpForwarding no # 除非你需要
PermitEmptyPasswords no
PermitUserEnvironment no
# 算法白名单(禁用老算法)
KexAlgorithms curve25519-sha256@libssh.org,curve25519-sha256
HostKeyAlgorithms ssh-ed25519,rsa-sha2-512,rsa-sha2-256
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
# 日志
LogLevel VERBOSE
改完:
sudo sshd -t # 语法检查
sudo systemctl restart sshd
测试加固成果
# 用 ssh-audit 工具(推荐)
pip install ssh-audit
ssh-audit your-server.com
# 看报告:弱算法、过时配置都会标红
或:
nmap -sV -p 22022 your-server.com
跳板机(堡垒机)模式
生产环境强烈推荐:
互联网 → 堡垒机(只它有公网 IP)→ 内网机器(不开公网)
客户端配 ProxyJump:
Host inner-app
HostName 10.0.0.5
User wadely
ProxyJump bastion
好处:
- 所有 SSH 经过堡垒机,审计一处搞定
- 内网机器不暴露公网
- 多人共用堡垒机 + 个人 key
进阶:硬件密钥 + 2FA
- U2F / FIDO2 key(YubiKey 等):插上才能 SSH
pam_google_authenticator:登录时要输 TOTP 验证码
下一篇:审计与日志。