13.5 系统基线加固

一句话

基线加固不是 “打补丁” 一件事,而是把 “安全的默认值”固化下来:关掉不需要的服务、收紧账号与权限、限制内核暴露面、记录审计——然后用脚本持续检查,而不是靠人记。

基线项(按收益排序)

类别 关键项 判据
账号 禁用 root 远程登录、强制密钥、最小 sudo /etc/ssh/sshd_config、visudo
服务 只开必要端口、关掉 telnet/ftp ss -tlnp 对照白名单
内核 randomize_va_space=2、kptr_restrict=2、禁 IP 转发 sysctl -a
文件 关键目录权限(600/700)、noexec 挂载 find / -perm -o+w
日志 auditd/集中日志、留存 ≥6 个月 见 3.5 审计与取证
容器 非 root 运行、只读根文件系统、禁特权 securityContext

脚本:一次检查、输出得分

#!/usr/bin/env bash
# 最小基线检查:每项 0/1 分,最后给百分比
score=0; total=0
check(){ total=$((total+1)); if eval "$2" >/dev/null 2>&1; then score=$((score+1)); printf "✓ %s\n" "$1"; else printf "✗ %s\n" "$1"; fi; }

check "禁止 root 远程登录" "! grep -qiE '^PermitRootLogin\s+yes' /etc/ssh/sshd_config"
check "禁止密码登录"       "grep -qiE '^PasswordAuthentication\s+no' /etc/ssh/sshd_config"
check "关闭 IP 转发"       "[ \"\$(sysctl -n net.ipv4.ip_forward)\" = 0 ]"
check "地址随机化开启"     "[ \"\$(sysctl -n kernel.randomize_va_space)\" = 2 ]"
check "无全局可写目录"     "! find /etc /usr /bin -xdev -perm -o+w 2>/dev/null | grep -q ."
echo "基线得分: $score/$total"

(脚本为通用写法,未在本机对生产机执行;不同发行版路径略有差异。)

反模式

反模式 后果
只做一次加固,之后不复测 新装机/新镜像又回到默认值
用 “手工 checklist” 检查 人一换就忘,无法持续
为了排障方便开 root 登录 暴露面回到解放前
基线不考虑业务(一刀切) 关掉必要服务,业务受损后被回滚
加固不做变更记录 出问题无法回滚到 “加固前”
只加固主机、不管镜像 容器里仍是宽松默认值

三条铁律

🔑 基线要脚本化、可复测;手工 checklist 不算基线。

🔑 加固必须可回滚(记录变更、保留旧配置)。

🔑 镜像基线 = 主机基线;容器不是法外之地。

自检

Q1 为什么 “加固一次” 没用?

▸ 答案:因为环境会持续产生新的默认配置:新装机、新镜像、新扩缩容节点都会回到 “发行版默认”。只有把基线写进镜像/启动脚本 + 定期复测,才能保持在 “加固后” 的状态。

Q2 “禁 root 远程登录” 为什么是收益最高的一项?

▸ 答案:因为互联网上的暴力破解主要打 root:禁用后攻击面立即缩小,且强制使用普通账号 + sudo 后,操作可审计、权限可细分。成本很低(配置一行),收益很高(阻断大部分自动化爆破)。

Q3 内核参数加固的常见项有哪些?

▸ 答案:randomize_va_space=2(ASLR)、kptr_restrict=2(隐藏内核符号)、net.ipv4.ip_forward=0(非路由器不转发)、net.ipv4.conf.all.accept_redirects=0(禁 ICMP 重定向)、kernel.dmesg_restrict=1(限制 dmesg 读取)。

Q4 容器基线要额外注意什么?

▸ 答案:四条:非 root 运行(runAsNonRoot)、只读根文件系统(readOnlyRootFilesystem)、禁止特权/提权(allowPrivilegeEscalation: false、privileged: false)、能力最小化(drop: [ALL])。容器默认的宽松配置和主机一样危险。

Q5 一刀切基线会带来什么问题?

▸ 答案:会误伤业务:比如关掉 IP 转发导致容器网络不通、限制文件权限导致应用起不来。正确做法是 “基线分层”:所有主机共用的最小集 + 按角色(数据库/网关/容器节点)的额外项,并允许 “有评审的例外”。

Q6 加固后如何验证 “真的生效”?

▸ 答案:三条:脚本复测得分(应接近 100%)、外部扫描(端口/漏洞扫描对照)、攻击面复核(从外网能否访问管理端口)。只看 “配置文件改了” 不够,要看 “实际行为”。

Q7 基线与等保/合规是什么关系?

▸ 答案:基线是合规的技术落地:等保的 “身份鉴别、访问控制、入侵防范” 等控制项,最终都要落到具体配置。先把基线做扎实,测评时 “技术项” 才有证据;反之,只写制度不改配置,测评过不了(见 3.1 等级保护与网络安全法)。

关联