原则:缩小攻击面

加固不是装越多软件越好,而是少开端口、少给权限、可审计、可回滚。下面清单按优先级排序,适合新机器上线前过一遍。

1. 系统与账户

  • 禁用或锁定不用的本地用户;业务账号禁止直接 root 登录。
  • 密钥登录优先,密码登录仅作应急并限制来源 IP。
  • sudo 按需授权,避免所有人 ALL=(ALL) NOPASSWD:ALL。
grep -E '^(PermitRootLogin|PasswordAuthentication|PubkeyAuthentication)' /etc/ssh/sshd_config
sshd -t && systemctl reload sshd

2. SSH 服务

改端口只能防扫段脚本,不能替代密钥与 fail2ban。更重要的是:关闭空密码、限制用户、使用 AllowUsers。

3. 防火墙默认拒绝

# 只允许 22/80/443(示例)
# Ubuntu UFW
ufw default deny incoming
ufw allow 22/tcp
ufw allow 80,443/tcp
ufw enable

数据库端口(3306/6379)不要对公网开放,走内网或 SSH 隧道。

4. 自动安全更新与内核

开启发行版安全更新通道;内核漏洞修复后安排重启窗口。容器宿主机同样需要补丁。

5. 日志与登录审计

last -a | head
journalctl -u ssh -p err --since today
grep 'Failed password' /var/log/auth.log 2>/dev/null | tail

异常登录应能在分钟级被发现;可结合 fail2ban 自动封禁暴力破解源。

6. 文件权限与敏感配置

chmod 600 /etc/shadow ~/.ssh/id_*
chmod 700 ~/.ssh
# Web 目录避免 777

7. 备份与回滚

加固前备份 sshd_config、防火墙规则与关键业务配置。任何「锁死自己」的改动,都要保证有控制台/VNC 兜底。

结语

安全是持续过程。把本清单做成上线检查表,比临时抱佛脚有效得多。