1. 典型企业 Linux 内网画像

身份与访问:本地账号 + LDAP/AD/FreeIPA/SSSD;SSH(跳板/Bastion)为主,少量 VNC/xRDP。

业务与中间件:Nginx/Envoy、Tomcat/Java、Node/Python、Redis/MQ、MySQL/PostgreSQL、Samba/NFS、Rsync。

平台与容器:Docker/Containerd/CRI-O、Kubernetes(API/Kubelet/etcd/Ingress/ServiceMesh)、CI/CD(GitLab/Jenkins)。

可观测性:journald/rsyslog、auditd、Prometheus、ELK/SIEM。

常见脆弱面:弱 SSH 配置、SUID/Capabilities 配置不当、NFS 导出、CI/CD 凭证泄露、K8s RBAC 宽松、云实例元数据滥用。

2. 攻击链视图(仅用于防守建模)

初始进入:暴露服务漏洞、钓鱼、供应链、误配的跳板/代理。

内网侦察:主机信息、网络与域/目录服务、资产指纹、端口/服务映射。

凭证获取:SSH 私钥与 Agent、目录服务票据/缓存、应用配置中的密钥、CI/CD 令牌。

权限提升:SUID/Capabilities、sudo/sudoers、计划任务/服务、内核/Polkit 等。

横向移动:SSH、Rsync、Samba/NFS、K8s 凭证、数据库链路、跳板与代理。

域/平台控制:目录服务、Kubernetes 控制面、CI/CD、制品仓库。

持久化与隐匿:服务/定时任务/容器镜像持久化、日志与痕迹对抗。

蓝队要点:每一环都对应检测信号与阻断点,后文逐一展开。

3. 侦察与资产建模(蓝队如何“看”自己的网)
3.1 主机与系统基线

版本/补丁、启动服务、登录历史、管理员组成员、Listening 端口、计划任务/计时器、内核安全特性(ASLR/SELinux/AppArmor)。
检测建议:建立 CMDB + 基线对比;对“新增监听/新增 SUID/新启动服务/异常登录来源”建立告警。

3.2 身份与目录

本地账户、sudoers 关系;是否接入 LDAP/AD/FreeIPA(Kerberos 票据缓存、SSSD 策略)。
检测建议:域侧审计(登录失败峰值、异常 TGT/TGS 请求)、本地侧 sudo 审计、跳板统一审计与强制录屏/命令记录。

3.3 网络与分段

网段划分/VPC/VLAN、南北向与东西向策略、出口 NAT/DNS/代理。
检测建议:未知横向通信、对等机暴增、非常规协议(FTP/Telnet/SMBv1)流量告警。

4. 凭证生态地图(攻击者“最爱”,防守者“必管”)

只讨论存放位置/形态与防守,不给出窃取操作。

SSH:~/.ssh/(私钥、已知主机)、SSH-Agent 套接字(转发/劫持风险)。

防守:密钥强度 + Passphrase;禁用 Agent 转发或结合 ForwardAgent 细粒度;跳板机强制公钥 + MFA;TrustedUserCAKeys 统一签发。

目录服务/Kerberos:票据缓存(如 krb5cc_*)、SSSD 缓存策略。

防守:缩短 TGT 生命周期;限制离线缓存;机密服务使用独立 SPN 与最小权限。

应用与中间件:配置文件中的数据库密码/API Token;环境变量中的 Secrets;本地配置管理客户端缓存(Ansible/Puppet)。

防守:集中化 Secret 管理(Vault/云 Secret Manager);最小权限 DB 账号;配置文件权限最小化。

CI/CD 与制品仓:Runner Token、个人 Access Token、Docker Registry 凭据。

防守:只读 Token、短期有效、最小作用域;构建机与生产机隔离;镜像签名与拉取策略。

5. 权限提升“地图”(原理 & 检测信号 & 加固)

仅讲类别与原理 + 防御建议,用作蓝队排查清单。

5.1 SUID/SGID 与不安全继承

原理:带 SUID 的二进制在执行时拥有文件属主权限(常为 root)。

风险:可被环境变量/动态库/路径搜索劫持;老旧辅助工具(备份/压缩/网络工具)留有提权链。

检测:周期性快照对比“新增/权限变化的 SUID 文件”;监控非常规用户执行 SUID 二进制。

加固:最小化 SUID;noexec,nodev,nosuid 挂载;对高风险二进制应用 fs.protected_* 与 LSM 策略。

5.2 sudo/sudoers 配置不当

原理:错误的 NOPASSWD、通配过宽、允许编辑/执行器可逃逸。

检测:集中收集 sudo 日志;比对策略与黄金基线。

加固:只白名单具体命令;禁止编辑器/解释器;引入 sudoers.d 变更审计与双人审批。

5.3 计划任务、systemd 服务与计时器

原理:低权用户可写入由 root 执行的任务/脚本路径。

检测:对系统级与用户级定时/服务做完整性校验;监控“服务/计时器新增”。

加固:锁定关键目录权限;systemd 单元服务使用 ProtectSystem/PrivateTmp/NoNewPrivileges 等硬化。

5.4 Linux capabilities 配置不当

原理:二进制或进程授予特定能力(如 cap_setuid/cap_net_raw)。

风险:少量能力组合即可间接提权或横向。

检测:定期清点拥有能力的文件与进程,新增即告警。

加固:最小能力;容器内用 drop;生产环境禁用 cap_sys_admin 这类“大而全”。

5.5 内核/Polkit/驱动类历史漏洞

原理:本地提权 CVE(如脏牛、OverlayFS 家族、Polkit 解析缺陷等)屡见不鲜。

检测:资产分组 + 漏洞情报匹配;对“短时权限激增/uid 切换异常”告警。

加固:内核与关键组件跟随 LTS;生产禁用不必要模块;最小攻击面(禁用未用文件系统/网络模块)。

5.6 容器与虚拟化

原理:宿主加入 docker 组几乎等同 root;容器逃逸面包括 runC/OverlayFS/设备映射等。

检测:监控新容器、特权容器、挂载宿主敏感目录;审计对 /var/run/docker.sock 的访问。

加固:不要把普通用户加入 docker 组;镜像最小化并签名;K8s Pod 安全上下文与 PSP/PSA/OPA 限制特权。

6. 横向移动与边界绕行(原理 & 防守)

关注协议链路与“谁能到哪里”的策略。

SSH 生态:密钥重用、Agent 转发链、跳板机复用。

防守:跳板集中化;强制 ProxyJump/MFA;禁止 ForwardAgent 或结合 AllowAgentForwarding 白名单;细粒度 Match 规则。

文件与共享:Rsync/Samba/NFS 导出(no_root_squash 危险)、SFTP Chroot 配置不当。

防守:导出只读/子路径隔离;NFS 强制 root_squash;对内共享统一经网关。

数据库/中间件:从应用侧“跳”到 DB,再“跳”到消息队列/缓存。

防守:库侧网络白名单、账号最小权限、审计 SQL 来源 IP 与客户端指纹。

Kubernetes:泄露的 kubeconfig/ServiceAccount Token、Kubelet 访问没做鉴权(历史问题)。

防守:RBAC 最小化;Kubelet 只监听内网 + mTLS;关闭匿名;API 审计与异常 exec/port-forward 告警。

云环境:IMDS/Metadata 滥用从容器/服务 SSRF 到云凭证。

防守:IMDSv2(AWS)强制;出口 egress 控制;应用侧 SSRF 防护与内网名单。

7. 持久化与痕迹(蓝队监控重点)

服务/计时器/启动脚本:关注“新增/改写”。

SSH 相关:新增公钥、authorized_keys 异常注入、sshd_config 放宽。

容器与镜像:篡改基础镜像、在镜像生命周期里植入后门。

日志对抗:选择性清除/停用审计,或将输出指向黑洞。
防守:

配置 不可篡改日志链路(远程 syslog + WORM 存储);

auditd 针对关键文件/目录(sudoers、sshd、crontab、systemd 单元、敏感配置)做 WATCH;

重要主机强制 SELinux/AppArmor Enforce 模式;

关键路径文件完整性(AIDE/Wazuh)+ 签名校验。

8. 应急响应与取证(遭遇可疑内网活动时)

快速止血:在边界/跳板强制 MFA;临时收紧内网 egress;下线暴露面大的共享/管理口。

连接打点:集中提取“会话/连接/新启动服务/新监听端口/新增 SUID/新增计划任务”的时间线。

账号与凭证:轮换可疑主机上所有密钥/Token/服务账号;禁用异常登录源涉及账号。

横向追踪:从疑似起点扩散到近邻主机(同网段、跳板、同一 SSH 指纹)。

复盘修复:补丁、配置基线、最小权限、监控规则;将本次事故纳入检测用例与 CI 审核清单。

9. 加固范式(可直接落地的做法)
9.1 SSH 加固(示例片段)

# /etc/ssh/sshd_config(示意)
Protocol 2
PasswordAuthentication no        # 强制公钥 + MFA(或跳板机二次认证)
PermitRootLogin no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
# 针对特定网段/用户的细粒度策略
Match Address 10.0.0.0/16
    AllowTcpForwarding yes

9.2 sudo/sudoers

仅授权明确命令,拒绝通配;禁用编辑器/解释器。

变更审计:sudoers.d 目录 + 版本控制 + 双人复核。

9.3 systemd 服务硬化(关键业务)

[Service]
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/var/app/data
CapabilityBoundingSet=~
RestrictAddressFamilies=AF_INET AF_INET6

9.4 容器与 K8s

禁止特权容器、Drop 多数 Capabilities;只读根文件系统;SELinux 强制;

K8s:最小 RBAC、Admission(OPA/Gatekeeper/PSA)、审计 kubectl exec/port-forward;

镜像签名(cosign/sigstore)、只允许可信仓库,生产拉取策略 IfNotPresent 配合内容信任。

9.5 日志与审计

主机:journald 永久化、rsyslog 远程;auditd 对关键路径与 syscall 建立规则;

网络:南北向/东西向流量的 eBPF 取样 + IDS(Zeek/Suricata);

身份:集中化跳板审计(命令级别),域侧登录与 Kerberos 票据异常阈值。

10. 蓝队自查清单(上线前/季度巡检)

SSH: 禁止口令登录;跳板集中化;禁止或白名单化 Agent 转发;sshd_config 基线。
账户:本地管理员最小化;sudo 白名单仅具体命令;NOPASSWD 必须评审。
SUID/Capabilities: 清单化、变更告警;关键挂载 nosuid,nodev,noexec 。
服务与计划任务:基线 + 完整性;新增即告警。
共享与传输: NFS 强制 root_squash ; Rsync 只读与白名单;禁 SMBv1/FTP。
容器 / K8s: 禁止特权;RBAC 最小;Admission 校验;镜像签名。
凭证管理:集中 Secret; 密钥强度 / 轮换;CI/CD Token 最小作用域与短期化。
漏洞管理:分层 SLAs; 内核 / Polkit / 容器运行时保持 LTS; 关键组件灰度测试。
监控日志:主机 / 身份 / 网络三线合一;不可篡改链路;异常登录 / 新监听 / 新 SUID 告警。
备份与演练:定期桌面演练与红蓝对抗;恢复流程验证。

11. 常见误区与纠偏

“有跳板就安全了”:若跳板不强制公钥+MFA、不做命令审计与隔离,仍可被绕过或滥用。

“容器里就隔离了”:缺省容器能力过大;docker.sock 即“本地 root”。

“只要合规就万无一失”:合规是下限,内网防守需持续监控 + 攻击模拟 + 配置即代码。

12. 总结

Linux 内网攻防的本质是身份与边界的博弈:凭证在哪里、谁能到哪里、能做什么、是否被看见。
构建“安全默认 + 最小权限 + 可观测 + 自动化基线”的体系,比堆叠工具更重要。把检测信号(新增监听、权限漂移、凭证使用异常、容器特权化、K8s 非预期操作)纳入日常运维与 CI/CD 审核,才能把风控变成流程的一部分。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐