四步ssh防护策略可阻挡95%自动化攻击:改端口(如22222)、禁root登录并建普通管理员账户、强制密钥认证禁密码登录、部署fail2ban自动封禁异常ip。

Linux 服务器暴露在公网时,SSH 是最常被暴力破解的目标。防护不是靠某一项措施,而是多层策略协同生效:改端口降低扫描量、禁用高危账户、强制密钥认证、自动封禁异常IP——这四步能挡住超过95%的自动化攻击。
修改默认 SSH 端口(避开常见扫描)
默认端口 22 是所有扫描器的起点。改成高位端口(如 22222、31891)虽不能防定向攻击,但能大幅减少无效连接和日志噪音。
- 编辑 /etc/ssh/sshd_config,取消注释并修改:
Port 22222 - 若使用防火墙(如 firewalld 或 ufw),必须同步放行新端口:
sudo firewall-cmd --add-port=22222/tcp --permanent && sudo firewall-cmd --reload - 重启服务前,务必新开一个终端窗口,用新端口测试登录成功后再关闭原会话,避免锁死
禁用 root 登录 + 创建普通管理员账户
root 是攻击者首要目标。禁止其远程登录,同时创建一个有 sudo 权限的普通用户,既能日常管理,又大幅提高攻击门槛。
- 添加用户并设强密码:
sudo useradd -m -s /bin/bash adminuser && sudo passwd adminuser - 赋予管理员权限:
sudo usermod -aG sudo adminuser(Ubuntu/Debian)或 sudo usermod -aG wheel adminuser(CentOS/RHEL) - 在 /etc/ssh/sshd_config 中设置:
PermitRootLogin no
AllowUsers adminuser
强制 SSH 密钥认证,彻底关闭密码登录
密码再复杂也扛不住离线字典爆破;而私钥本地保管、加密码保护,安全性高出几个数量级。
- 在客户端生成密钥对(推荐 ed25519):
ssh-keygen -t ed25519 -C "your_email@example.com" - 上传公钥到服务器:
ssh-copy-id -p 22222 adminuser@your-server-ip - 在 /etc/ssh/sshd_config 中确认以下配置启用且未被注释:
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
部署 fail2ban 自动封禁失败尝试 IP
即使做了前面三步,仍可能遇到试探性攻击。fail2ban 能实时分析日志,在连续失败后自动调用防火墙规则封禁源 IP,是最后一道动态防线。
- 安装(Ubuntu/Debian):
sudo apt install fail2ban
(CentOS/RHEL):
sudo yum install epel-release && sudo yum install fail2ban - 新建 /etc/fail2ban/jail.local,写入基本配置:
[DEFAULT]
ignoreip = 127.0.0.1/8 your_trusted_ip/32
bantime = 86400
findtime = 600
maxretry = 3
[sshd]
enabled = true
filter = sshd
logpath = /var/log/auth.log # Ubuntu/Debian
# logpath = /var/log/secure # CentOS/RHEL
port = 22222 - 启动并启用开机自启:
sudo systemctl enable fail2ban && sudo systemctl start fail2ban










