SSH 安全加固五步法:保护服务器免受暴力破解
SSH(Secure Shell)是远程管理 Linux 服务器的最常用工具,但也是攻击者最容易攻击的入口。每天成千上万的服务器遭受 SSH 暴力破解攻击。本文介绍五步 SSH 安全加固方法,让您的服务器固若金汤。
第一步:修改默认端口
默认的 22 端口是攻击者的首要目标。修改为非标准端口可以减少 99% 的自动扫描攻击。
# 编辑 SSH 配置文件 sudo vim /etc/ssh/sshd_config # 找到 Port 22,修改为 Port 22222 # 重启 SSH 服务 sudo systemctl restart sshd sudo systemctl restart ssh # 某些系统使用 sshd
第二步:禁用密码登录,启用密钥认证
密码登录容易被暴力破解,而密钥认证几乎不可能被破解。
# 在本地生成 SSH 密钥对 ssh-keygen -t ed25519 -C "your_email@example.com" # 将公钥复制到服务器 ssh-copy-id -p 22222 user@your-server-ip # 修改服务器配置 sudo vim /etc/ssh/sshd_config # 找到并修改以下选项 PasswordAuthentication no PubkeyAuthentication yes # 重启 SSH 服务 sudo systemctl restart sshd
第三步:禁用 root 登录
root 账号权限过大,一旦被攻破后果严重。应该使用普通用户登录,需要时通过 sudo 提权。
# 创建普通用户(如果还没有) sudo adduser opsuser sudo usermod -aG sudo opsuser # 修改 SSH 配置 sudo vim /etc/ssh/sshd_config # 找到并修改 PermitRootLogin no # 重启 SSH 服务 sudo systemctl restart sshd
第四步:配置防火墙
只允许必要的 IP 访问 SSH 端口,其他请求直接拒绝。
# 使用 UFW(Ubuntu/Debian) sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow from 1.2.3.4 to any port 22222 # 只允许您的 IP sudo ufw enable # 或使用 firewalld(CentOS/RHEL) sudo firewall-cmd --permanent --add-port=22222/tcp sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="1.2.3.4" port protocol="tcp" port="22222" accept' sudo firewall-cmd --reload
第五步:安装 fail2ban 防止暴力破解
fail2ban 可以自动检测失败登录尝试并临时封禁 IP。
# 安装 fail2ban sudo apt install fail2ban # Ubuntu/Debian sudo yum install fail2ban # CentOS/RHEL # 创建本地配置 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # 编辑配置 sudo vim /etc/fail2ban/jail.local [sshd] enabled = true port = 22222 maxretry = 5 findtime = 600 bantime = 3600 # 重启 fail2ban sudo systemctl restart fail2ban sudo systemctl enable fail2ban
额外建议
- 定期更新 OpenSSH:保持最新版本以获得安全补丁
- 限制登录用户:使用 AllowUsers 指定哪些用户可以登录
- 启用 2FA:使用 Google Authenticator 增加双重认证
- 日志监控:定期检查 /var/log/auth.log 查看异常登录尝试
总结
SSH 安全加固是服务器安全的第一道防线。通过修改端口、使用密钥认证、禁用 root 登录、配置防火墙、安装 fail2ban 这五步,可以抵御绝大多数自动化攻击。安全无小事,每一步加固都可能是关键时刻的保护伞。
