
核心要点(TL;DR)
- 云主机上线前先收敛安全组,只放行必要端口,默认拒绝入站。
- SSH 禁用密码登录与 root 直连,改用密钥+普通账号+sudo。
- 基线加固含补丁、账号权限、内核参数与审计日志四件套。
- 上线前必须验证备份可恢复,否则加固等于放大故障风险。
很多云主机事故不是被高级漏洞打穿,而是上线时图省事:安全组开着 0.0.0.0/0 的 22 端口、root 用弱密码直连、系统补丁半年没打。本文给出一份可直接照着执行的云主机安全部署 checklist,从安全组到 Linux 基线加固共 10 步,每步都有命令与验收标准,适合运维和站长在上线前逐项打勾。
第 1 步:收敛安全组,先砍掉公网管理端口
安全组是云上第一道门,原则是默认拒绝入站、按需放行、限制来源。先列出当前规则,删除 0.0.0.0/0 的 22、3389、3306、6379 等管理端口。
- Web 业务仅放行 80/443,来源可先 0.0.0.0/0。
- SSH 改为跳板机或公司出口 IP 网段,如
203.0.113.0/24。 - 数据库、缓存只放行同 VPC 应用子网。
验收:用外部端口扫描从公网探测,除业务端口外应全部 filtered。
第 2 步:开启主机防火墙,做第二层过滤
安全组防外网,主机防火墙还能挡同 VPC 横向流量与误配。以 firewalld 为例:
systemctl enable --now firewalld firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=203.0.113.0/24 service name=ssh accept' firewall-cmd --reload firewall-cmd --list-all
验收:重启一次确认规则自动生效,再从非白名单 IP 测试 SSH 应超时。
第 3 步:SSH 加固,禁用密码与 root 直连
编辑 /etc/ssh/sshd_config,至少包含:
PermitRootLogin no PasswordAuthentication no MaxAuthTries 3 AllowUsers deploy ops ClientAliveInterval 300
先 sshd -t 校验语法,再 systemctl reload sshd。务必另开一个会话验证新账号能登录后再关闭旧连接,否则可能把自己锁在门外。
第 4 步:账号与权限最小化
检查空口令、UID 0 异常账号与 sudo 授权:
awk -F: '(==""){print }' /etc/shadow
awk -F: '(==0){print }' /etc/passwd
grep -r . /etc/sudoers.d/删除无用账号,业务用普通账号登录,通过 sudo 授权具体命令而非 ALL。禁止共享账号,一人一号便于审计。
第 5 步:补丁与内核参数基线
先更新系统:yum update -y 或 apt upgrade -y,再重启一次确认可正常引导。内核参数建议写入 /etc/sysctl.d/99-hardening.conf:
net.ipv4.tcp_syncookies = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.all.accept_redirects = 0 kernel.randomize_va_space = 2
执行 sysctl --system 生效。可用 OpenSCAP 做一次基线扫描并留存报告。
第 6 步:日志审计与备份回滚
开启 auditd 记录关键文件变更,日志外送或至少保留 30 天;上线前创建系统盘快照,确认云控制台 VNC 可登录,并做一次恢复演练。加固前先能回滚,再谈安全。
第 7 到 10 步:服务暴露面、Web 防护、监控与上线验收
- 第 7 步:
ss -lntp核对监听端口,关闭不必要的本地服务。 - 第 8 步:Web 层部署 WAF 或反向代理,隐藏版本号,关闭目录浏览。
- 第 9 步:接入主机监控与告警,覆盖 CPU、磁盘、登录失败次数与关键进程。
- 第 10 步:按清单逐项打勾签字,留存配置变更记录,形成上线前安全验收单。
| 检查项 | 合格标准 |
|---|---|
| 安全组 | 无 0.0.0.0/0 管理端口 |
| SSH | 禁密码、禁 root、限用户 |
| 补丁 | 系统与软件包已更新并重启验证 |
| 备份 | 快照存在且恢复演练通过 |
在防护建议上,若团队人力有限,可借助 AegisX 的主机安全基线核查与入侵检测能力,把上述检查项固化为周期性巡检任务,减少人工漏项。
行动建议:把这份 checklist 复制到工单系统,每台云主机上线前必须走完 10 步并附扫描截图;对存量主机做一次批量复核,优先处理公网暴露的 SSH 与数据库端口。
常见问题(FAQ)
云主机刚买来,安全组应该怎么配才不算裸奔?
结论:默认拒绝所有入站,只按业务放行必要端口,并限制来源 IP。做法是先删除 0.0.0.0/0 的 22、3389、3306 等管理端口规则,Web 业务仅放行 80/443,管理入口改为跳板机或 VPN 网段。出站默认放行但按需收敛。配完用外部端口扫描工具从公网验证,确认除业务端口外全部 filtered。
SSH 已经用密钥登录了,还需要做哪些加固?
结论:密钥登录只是第一步,还要禁用 root 直连与密码认证。建议在 /etc/ssh/sshd_config 设置 PermitRootLogin no、PasswordAuthentication no、MaxAuthTries 3,并限制 AllowUsers。改完先 sshd -t 校验语法再 reload,另开一个会话验证能登录后再关闭旧连接,避免把自己锁在门外。
Linux 基线加固具体要检查哪些项?
结论:重点查补丁、账号、权限、内核参数与审计五类。包括系统与软件包是否最新、是否存在空口令与 UID 0 异常账号、sudo 是否最小授权、关键目录权限是否合规、sysctl 是否开启 SYN cookie 与禁 IP 转发、auditd 是否记录关键文件变更。可用 OpenSCAP 或自写脚本做基线扫描并留存报告。
上线前要不要装主机防火墙,和安全组重复吗?
结论:不重复,两者是纵深防御的两层。安全组在云平台侧过滤,主机防火墙在系统内过滤,可防同 VPC 内横向流量与安全组误配。推荐 firewalld 或 nftables 默认拒绝入站,仅放行已确认端口,并持久化规则。上线前重启一次验证规则自动生效。
加固过程中最容易被忽略、后果最严重的是什么?
结论:是备份与回滚验证。很多人改完 sshd、防火墙或内核参数后重启失联,又没有快照与控制台密码,只能重装。上线前应创建系统盘快照、确认云控制台 VNC 可登录、记录关键配置变更,并在低峰期分批重启验证。加固前先能回滚,再谈安全。