指导思想

安全投入应遵循"先收敛暴露面,再做纵深防御"。一台只开 22 与 443 的服务器,比一台开了 20 个服务却装了三层 IDS 的服务器更安全。

SSH 加固

  • 禁用密码登录,仅允许 ed25519 密钥:PubkeyAuthentication yesPasswordAuthentication no
  • 改非标准端口可显著降低扫描噪声,但不能替代密钥
  • AllowUsers 限定可登录账号,禁止 root 直登:PermitRootLogin no

防火墙

用 nftables/ufw 做默认拒绝:

ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80,443/tcp
ufw enable

对外只暴露必要端口;管理面(如 13080、19527)只监听 127.0.0.1,通过已认证的隧道访问。

最小暴露面

  • 每个监听端口都要能回答"为什么必须对外"
  • 数据库、缓存、内部 API 一律绑定内网或回环
  • 反向代理层做统一的 TLS 终止与安全头

审计与更新

  • sudo 审计特权操作,保留历史
  • 自动安全更新需谨慎:生产机建议只自动装 -security,其余人工评审
  • 定期 ss -tlnp 核对实际监听端口与预期一致

失败模式

最常见的事故不是被攻破,而是配置漂移:某人临时开了一个端口忘记关。把防火墙规则纳入版本管理(如 Ansible/脚本),每次变更可追溯,是从根上避免漂移的办法。