
核心要点(TL;DR)
刚购买的云主机默认配置往往存在安全隐患:root 直接登录、密码认证开启、防火墙宽松、日志缺失。攻击者可在几分钟内利用这些弱点入侵。本文提供 12 个必做加固项,每项附带具体命令和检查步骤,帮助运维和站长快速提升服务器安全基线,降低被入侵风险。
1. 创建普通用户并禁用 root 登录
直接使用 root 登录风险极高,一旦密码泄露或遭遇暴力破解,系统将完全失控。应先创建具有 sudo 权限的普通用户,再禁用 root 的 SSH 登录。
# 创建用户并设置密码
useradd -m -s /bin/bash deploy
passwd deploy
# 加入sudo组(CentOS: wheel)
usermod -aG sudo deploy
# 测试新用户SSH登录和sudo提权
ssh deploy@server_ip
sudo -i确认无误后,编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no,然后重启 sshd:systemctl restart sshd。务必保留一个活跃会话以防配置错误。
2. 禁用密码认证,强制使用 SSH 密钥
密码认证易受暴力破解,密钥认证更安全。生成密钥对并将公钥上传至服务器。
# 本地生成密钥(如果已有可跳过)
ssh-keygen -t ed25519
# 上传公钥
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@server_ip修改 sshd_config:PasswordAuthentication no,PubkeyAuthentication yes,重启 sshd。测试密钥登录成功后再关闭密码登录。
3. 修改 SSH 默认端口并限制访问来源
将 SSH 端口改为非标准端口可减少自动化扫描,同时结合防火墙限制源 IP。
# 修改/etc/ssh/sshd_config
Port 2222
# 防火墙放行新端口(以ufw为例)
ufw allow from 你的办公IP to any port 2222 proto tcp
ufw delete allow 22/tcp
ufw enable修改后重启 sshd,并使用新端口测试连接。
4. 配置防火墙,仅开放必要端口
使用 firewalld 或 ufw 设置默认拒绝,按需放行。例如仅开放 SSH(2222)、HTTP(80)、HTTPS(443)。
# firewalld示例
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload
firewall-cmd --list-all定期审查规则,移除过期条目。
5. 安装并配置审计日志(auditd)
auditd 可监控关键文件和系统调用,帮助发现异常行为。安装并添加规则:
# 安装
yum install audit -y # 或 apt install auditd
# 监控/etc/passwd和/etc/shadow
cat >> /etc/audit/rules.d/audit.rules 常见问题(FAQ)
如何关闭root登录并确保不影响现有操作?
先创建具有sudo权限的普通用户,测试SSH登录和sudo提权正常后,再修改/etc/ssh/sshd_config中PermitRootLogin为no,并重启sshd服务。建议保留一个活跃会话以防配置错误。
云主机安全加固必须做哪些基础项?
至少包括:关闭root登录、禁用密码认证改用密钥、配置防火墙、更新补丁、启用审计日志、设置登录失败锁定、限制su命令、定期检查文件权限。这些是构建安全基线的核心。
如何配置审计日志来监控异常登录?
使用auditd服务,添加规则监控关键文件(如/etc/passwd)和系统调用,并配置日志轮转。结合fail2ban实时封禁暴力破解IP,定期分析/var/log/secure和audit日志。
防火墙应该开放哪些端口?
仅开放业务必需端口,如SSH(建议改非标准端口)、HTTP/HTTPS。使用firewalld或ufw设置默认拒绝,按需放行。定期审查规则,移除过期条目。
如何检查云主机是否存在弱口令?
使用工具如John the Ripper或Hydra对本地账户进行弱口令扫描,或手动检查/etc/shadow中密码哈希强度。建议强制密码复杂度策略,并定期更换。