VPS 一上线,自动化的扫描机器人就开始探测它:扫端口、猜 SSH 密码、找过期软件。大部分被攻破的服务器并不是被黑客盯上了,而是连最基本的安全卫生都没做。好消息是,花半小时做一遍加固,就能挡住绝大多数自动化攻击。下面这份清单可以直接复制执行。
VPS 安全加固清单
| 层级 | 措施 | 优先级 |
|---|---|---|
| 网络层 | UFW 防火墙只开必要端口 | 高 |
| SSH 层 | 改端口+禁root+密钥登录 | 高 |
| 系统层 | 自动安全更新 unattended-upgrades | 中 |
| 应用层 | Fail2ban 防暴力破解 | 高 |
| 监控层 | 配置日志轮转+告警 | 中 |
| 备份层 | 每日自动备份+异地存储 | 高 |
1. 更新系统并开启自动安全补丁
未打补丁的软件是最容易突破的入口。先完整升级:
sudo apt update && sudo apt upgrade -y
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
CentOS/RHEL 系列用 dnf upgrade -y 配合 dnf-automatic。
2. 创建普通用户,停止使用 root
所有操作都用 root,意味着一次失误或一次凭证泄漏就会交出全部控制权:
adduser deploy
usermod -aG sudo deploy
以后用这个用户登录,需要管理员权限时再用 sudo。
3. 加固 SSH:用密钥代替密码
在本地生成密钥对,然后复制到服务器:
ssh-keygen -t ed25519
ssh-copy-id deploy@your-server-ip
编辑 /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
也可以把 SSH 端口改到高位(比如 2222)减少日志噪音。改完用 sudo systemctl restart sshd 重启。注意保留当前会话,先在新终端确认能登录再关旧窗口。
4. 配置 UFW 防火墙
默认拒绝一切入站,只放行必要的端口:
ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp # 你的 SSH 端口
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
UFW 的详细配置方法参考 VPS 防火墙配置指南:UFW 完整教程。
5. 安装 Fail2ban 防暴力破解
Fail2ban 读日志,自动封禁多次登录失败的 IP:
apt install fail2ban
cat > /etc/fail2ban/jail.local << 'EOF'
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
findtime = 600
EOF
systemctl restart fail2ban
Fail2ban 的完整配置参考 Fail2ban 暴力破解防护完整配置指南。
6. 配置自动备份
加固做得再好也可能翻车。数据库和重要配置文件必须自动备份到异地:
# 数据库示例
mysqldump -u root -p --all-databases > /backup/db_$(date +%F).sql
# 文件示例
tar czf /backup/www_$(date +%F).tar.gz /var/www/
把备份脚本放进 crontab,每天跑一次。详细的备份脚本参考 VPS 自动备份配置完整指南。
7. 其他安全习惯
- 删除不用的软件和服务,减少攻击面
- 定期检查用户账号:
cat /etc/passwd - 查看登录记录:
last -20和lastb -20 - 安装并配置 logwatch 或类似的日志汇总工具
- 敏感目录设置严格权限:
chmod 700 /home/*/.ssh
8. 一份快速加固清单
| 检查项 | 期望状态 |
|---|---|
| 系统更新 | apt upgrade 已执行并启用自动更新 |
| root 登录 | PermitRootLogin no |
| 密码登录 | PasswordAuthentication no |
| 防火墙 | UFW 已启用,只放行必要端口 |
| Fail2ban | 已运行并监控 SSH |
| 备份 | 数据库 + 文件定时备份到异地 |
| 日志 | 定期 review last / fail2ban 日志 |
更多服务器安全教程,请访问 fenij.com。
常见问题
问:改了 SSH 端口会不会更安全?
答:改端口不能阻止定向攻击,但能挡住 90% 的自动化扫描,日志会干净很多。安全的关键还是禁用密码登录、用密钥。
问:UFW 和 iptables 用哪个?
答:UFW 是 iptables 的简化前端,适合新手。如果你要配复杂规则,直接写 iptables 或 nftables 更灵活。
问:自动更新会不会把系统搞坏?
答:unattended-upgrades 默认只安装安全更新,不升级大版本。生产环境可以先把更新策略设为只下载不安装,手动 review 后再装。
给服务器账户设置强密码,可以用在线随机密码生成器。