云服务器购买后第一件事不是部署业务,而是做安全加固。很多攻击来自扫描器对默认端口、弱口令、未配置防火墙的服务器进行自动化入侵。本文给出一份可以直接照着执行的加固清单。
一、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 会被自动封禁,极大降低爆破风险。还可以配合云厂商的流量告警,第一时间发现异常。
七、数据备份
安全加固也包括数据保障:
- 数据库每日自动备份,异地保存至少一份
- 备份文件加密,防止泄露敏感数据
- 定期演练恢复流程,确保备份可用
小结
安全是持续的过程,不是一次配置就一劳永逸。建议把上面的清单做成初始化脚本,每次新服务器上线自动执行,并定期巡检。守住入口、及时更新、做好备份,服务器安全就成功了一大半。