原则:缩小攻击面
加固不是装越多软件越好,而是少开端口、少给权限、可审计、可回滚。下面清单按优先级排序,适合新机器上线前过一遍。
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 兜底。
结语
安全是持续过程。把本清单做成上线检查表,比临时抱佛脚有效得多。