云服务器的安全性直接影响业务稳定性和数据防护。SSH密钥登录和防火墙规则优化是最基础、最有效的安全加固措施。本指南提供详细操作步骤,适用于Linux云服务器(Ubuntu/CentOS),帮助您降低被暴力破解和恶意扫描的风险。
一、SSH密钥登录(彻底禁用密码登录)
1. 生成SSH密钥对(本地操作)
在本地计算机(Windows/macOS/Linux)生成密钥对:
ssh-keygen -t ed25519 -C "your_email@example.com"
-
-t ed25519
:使用更安全的Ed25519算法(比RSA更高效) -
默认保存路径:
-
公钥:
~/.ssh/id_ed25519.pub
-
私钥:
~/.ssh/id_ed25519
(需妥善保管,勿泄露)
-
2. 上传公钥到云服务器
将公钥上传至服务器的authorized_keys
文件:
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@your_server_ip
(若未安装ssh-copy-id
,可手动追加公钥到~/.ssh/authorized_keys
)
3. 禁用SSH密码登录(服务器操作)
编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config
修改以下参数:
PasswordAuthentication no # 禁用密码登录 PubkeyAuthentication yes # 启用密钥登录 PermitRootLogin prohibit-password # 禁止root密码登录(可选)
重启SSH服务生效:
sudo systemctl restart sshd
4. 测试密钥登录
新开终端尝试登录:
ssh -i ~/.ssh/id_ed25519 root@your_server_ip
确认无需输入密码即可登录后,再关闭当前SSH会话。
二、防火墙配置(UFW/IPtables)
1. 基本防火墙规则(UFW版)
安装并启用UFW(Uncomplicated Firewall):
sudo apt install ufw -y # Ubuntu/Debian sudo yum install ufw -y # CentOS(需EPEL仓库)
开放必要端口:
sudo ufw allow 22/tcp # SSH端口(建议先改后删,见下文) sudo ufw allow 80,443/tcp # HTTP/HTTPS sudo ufw enable # 启用防火墙
2. 高级防护策略
(1)修改默认SSH端口(可选但推荐)
编辑/etc/ssh/sshd_config
:
Port 2222 # 改为非标准端口(如2222)
更新防火墙规则:
sudo ufw allow 2222/tcp sudo ufw deny 22/tcp # 屏蔽原SSH端口
(2)限制SSH访问IP(企业必做)
仅允许特定IP连接SSH:
sudo ufw allow from 123.45.67.89 to any port 22 proto tcp
或使用IPtables(CentOS推荐):
sudo iptables -A INPUT -p tcp -s 123.45.67.89 --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 22 -j DROP
(3)防御暴力破解
安装fail2ban
自动封禁恶意IP:
sudo apt install fail2ban -y # Ubuntu/Debian sudo yum install fail2ban -y # CentOS
配置规则(编辑/etc/fail2ban/jail.local
):
[sshd] enabled = true maxretry = 3 # 3次失败后封禁 bantime = 1h # 封禁1小时
三、安全加固检查清单
-
验证SSH密钥登录
ssh -i ~/.ssh/id_ed25519 user@server -v
确认无密码提示且日志显示
Authenticated with public key
。 -
测试防火墙规则
-
尝试从非授权IP连接SSH,应被拒绝
-
使用
telnet your_server_ip 80
测试HTTP端口开放
-
-
监控入侵尝试
sudo tail -f /var/log/auth.log # Ubuntu/Debian sudo tail -f /var/log/secure # CentOS
四、应急恢复措施
1. 锁定后如何恢复访问?
-
通过云平台控制台的VNC终端登录
-
临时开放IP(若误封):
sudo ufw delete deny 22/tcp
2. 密钥丢失怎么办?
-
通过控制台重置密码
-
临时启用密码登录:
sudo sed -i 's/PasswordAuthentication no/yes/g' /etc/ssh/sshd_config sudo systemctl restart sshd
五、2025年进阶安全趋势
-
量子安全SSH:
-
OpenSSH 9.8+支持抗量子计算的
ssh-ed448
密钥
-
-
AI防火墙:
-
基于机器学习的动态规则(如Cloudflare Magic Firewall)
-
-
零信任架构:
-
每次SSH访问需二次验证(如Google Authenticator)
-
总结:通过SSH密钥登录
+严格防火墙规则
,可阻止99%的自动化攻击。建议每月审查日志,并配合VPC网络隔离、定期备份构建完整防护体系。
(操作前务必在测试环境验证,避免误锁服务器!)