云服务器购买后第一件事不是部署业务,而是做安全加固。很多攻击来自扫描器对默认端口、弱口令、未配置防火墙的服务器进行自动化入侵。本文给出一份可以直接照着执行的加固清单。

一、SSH 安全

SSH 是最常被攻击的入口,重点加固:

# 1. 优先使用密钥登录
ssh-keygen -t ed25519
ssh-copy-id user@server

# 2. 修改 SSH 配置 /etc/ssh/sshd_config
PermitRootLogin no            # 禁止 root 直接登录
PasswordAuthentication no     # 禁用密码登录(密钥配置好后再关)
MaxAuthTries 3                # 限制认证尝试次数
Protocol 2

# 3. 重启 SSH
sudo systemctl restart sshd
务必先确认密钥登录可用,再关闭密码登录,否则可能把自己锁在外面。

二、防火墙配置

只放行必要的端口,其余一律拒绝:

# UFW 示例
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp     # SSH
sudo ufw allow 80/tcp     # HTTP
sudo ufw allow 443/tcp    # HTTPS
sudo ufw enable

应用层端口(如数据库 3306、Redis 6379)不要暴露到公网,只监听内网或 127.0.0.1,由应用通过反向代理访问。

三、账号与权限

  • 不使用 root 作为日常操作账号,创建普通用户并加入 sudo
  • 弱口令账号一律修改为强密码,或用密钥替代
  • 定期检查无 shell 的僵尸账号:awk -F: '$3>=1000 && $7!="nologin"{print $1,$3,$7}' /etc/passwd
  • 敏感文件权限收紧:chmod 600 ~/.ssh/authorized_keys

四、系统更新与自动补丁

# 定期更新
sudo apt update && sudo apt upgrade -y

# 启用自动安全更新
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

内核和系统库的已知漏洞是入侵的主要途径,保持系统更新是性价比最高的安全措施。

五、Web 与数据库安全

  • Web 应用全部走 HTTPS,配置 HSTS 与合理的 TLS 版本
  • 数据库服务只监听 127.0.0.1,禁止公网直连
  • Redis / Memcached 关闭公网访问并设置密码(如需)
  • 应用代码做好输入校验与参数化查询,防注入
  • 上传目录禁止执行脚本

六、监控与入侵检测

# 登录日志审计
tail -f /var/log/auth.log

# 查看登录失败记录(可疑爆破)
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr

# 安装 fail2ban 自动封禁
sudo apt install -y fail2ban

配置 fail2ban 后,多次登录失败的 IP 会被自动封禁,极大降低爆破风险。还可以配合云厂商的流量告警,第一时间发现异常。

七、数据备份

安全加固也包括数据保障:

  • 数据库每日自动备份,异地保存至少一份
  • 备份文件加密,防止泄露敏感数据
  • 定期演练恢复流程,确保备份可用

小结

安全是持续的过程,不是一次配置就一劳永逸。建议把上面的清单做成初始化脚本,每次新服务器上线自动执行,并定期巡检。守住入口、及时更新、做好备份,服务器安全就成功了一大半。