11
安全加固基础
Security Hardening
公网上的服务器,开机五分钟就会被全网扫一遍。安全不是玄学,是把"坏人最常走的门"一扇扇锁上。这章给你一份最小必要加固清单。
SSH 加固:第一道门
| 做法 | 为什么 |
|---|---|
| 禁用密码登录,只用密钥 | 暴力破解一万次也没用,是性价比最高的一条。 |
| 禁止 root 直接登录 | PermitRootLogin no。先用普通用户登录,需要再 sudo。 |
| 改默认 SSH 端口 | 把 22 改成别的端口,能挡掉 99% 的自动扫描脚本。 |
| fail2ban | 登录失败 N 次自动封 IP 半小时,专治暴力破解。sudo apt install fail2ban。 |
强制访问控制:SELinux 与 AppArmor
SELinux → Rocky/RHEL 默认
比文件权限更细的一层限制:哪怕你是 root,没被授权也干不了某些事。
日常命令:
getenforce 看状态(Enforcing/Permissive/Disabled)、sudo setenforce 0 临时切宽容模式排障。新手别一上来就关 SELinux,那是企业环境的标准配置。AppArmor → Ubuntu 默认
思路类似,按"程序"逐个配置它能碰哪些文件。
sudo aa-status 看状态。记住:两者二选一,别纠结概念,知道"系统里还有这么一层",出权限怪问题时往这想。
加固清单:照做就超过 90% 的人
护最小权限原则
① 用户权限最小化:能不给 sudo 就不给,服务用专门的低权账号跑(nginx 用 www-data)。② 文件权限收紧:私钥必须 600,别 777。③ 系统及时更新:sudo apt update && sudo apt upgrade 定期跑,安全补丁不打等于裸奔。④ 防火墙只开必要端口(第 8 章)。
入侵检测入门:sudo rkhunter --check、sudo chkrootkit 扫一遍有没有后门和 rootkit。怀疑被入侵时先看 /var/log/auth.log 里有没有陌生登录。
证TLS 证书:让网站变 https
公网网站现在必须上 HTTPS,否则浏览器标"不安全"。Let's Encrypt 提供免费证书,用 certbot 一键申请、自动续期:sudo certbot --nginx(Ubuntu)或 sudo certbot --apache。它会自动改好 web 服务器配置,证书每 90 天自动续,零维护。
申请与续期一条龙
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
# 按提示填邮箱、同意条款,它自动改 nginx 配置并 reload
sudo certbot renew --dry-run # 测试自动续期会不会成功
记
本章小结
① SSH 四件套:密钥登录 / 禁 root / 改端口 / fail2ban。
② SELinux(Rocky)/ AppArmor(Ubuntu)是系统内置的第二道锁,别图省事直接关。
③ 最小权限 + 及时更新 + 防火墙收口 + certbot 免费 HTTPS,这套做完,你的服务器已经比大多数"随手买的云主机"安全得多。