容器横向渗透攻击加固服务器安全配置实战

容器横向渗透攻击怎么防?服务器安全配置加固实战

容器横向渗透攻击是指攻击者从一个已侵入的容器中,利用配置缺陷或内核漏洞,横向移动到同一宿主机上的其他容器、甚至宿主机本身的过程。
本文面向零基础用户,通过Docker 安全配置、网络隔离、内核参数加固、资源限制等步骤,让您直接在服务器上执行即可大幅降低此类风险。

适合什么场景?

  • 你的服务器上运行着多个容器(如 Docker Compose 部署多个服务)
  • 需要对外暴露某些容器端口,但担心内网横向移动
  • 托管在云服务器(如泽御云 zeyuyun.com 等正规服务商)上,希望加固容器环境
  • 刚接触 Docker 安全,想了解最有效的防御手段

加固前的准备

  • 一台运行 Linux(推荐 Ubuntu 20.04+ 或 CentOS 7+)的服务器
  • 已安装 Docker(建议版本 20.10+)
  • 拥有 root 或 sudo 权限
  • 准备一个测试容器(比如 docker run -d --name test nginx)用于验证效果

核心操作:四步阻断容器横向渗透

第一步:禁用特权容器与默认 Capabilities

攻击者常利用 --privileged 或过多 Linux Capability 逃逸容器。

运行容器时务必避免使用 --privileged,并主动丢弃不必要的功能:

docker run -d --name secure-nginx \
  --cap-drop=ALL \
  --cap-add=NET_BIND_SERVICE \
  --security-opt=no-new-privileges:true \
  nginx
  • --cap-drop=ALL 清空全部能力,再按需添加(如 NET_BIND_SERVICE 让 Nginx 绑定 80 端口)。
  • --security-opt=no-new-privileges:true 禁止容器内进程提权。

第二步:强制容器网络隔离

默认 Docker 桥接网络允许容器间通信,这给横向渗透提供了便利。

推荐方式:

  • 将容器加入自定义网络,禁止 --link 和默认 bridge:
  docker network create --driver bridge --internal isolate-net
  docker run -d --name app1 --network isolate-net your-image

使用 --internal 让容器完全无法访问外网,只能与本网络其他容器通信(若需要出外网,去掉 --internal)。

  • 暴露端口时只映射必要端口,避免暴露 Docker 管理端口(2375/2376)。

第三步:开启用户命名空间映射

让容器内 root 在宿主机上映射为普通用户,有效限制逃逸后权限。

  1. 编辑 /etc/docker/daemon.json
   {
     "userns-remap": "default"
   }
  1. 重启 Docker:
   systemctl restart docker
  1. 之后所有新容器默认使用用户命名空间重映射,容器内 uid 0 在宿主机上为普通 uid(通常 165536)。

注意:启用后宿主机上原先的容器数据卷挂载可能因权限不足无法访问,需先迁移数据或调整挂载点权限。

第四步:配置 seccomp 与 AppArmor(内核级限制)

限制容器内可调用的系统调用,阻断横向移动常用 syscall。

Docker 默认已附带 seccomp 默认规则,但仍可自定义更严格策略。
例如禁止 mountptrace 等敏感调用:

docker run -d --name app \
  --security-opt seccomp=/path/to/custom.json \
  --security-opt apparmor=unconfined \
  your-image
  • 若不确定,保持默认即可;高级用户可从 Docker 官方 default seccomp 文件修改后使用。

避坑指南(新手最容易忽略)

  1. 不要挂载 /var/run/docker.sock 到容器内——这等于给容器管理宿主机 Docker 权限。
  2. 不要使用 --pid=host--net=host——这会让容器共享宿主机 PID 或网络空间,极易横向。
  3. 启用用户命名空间后,docker compose 项目可能启动失败,需要先调整文件权限:chown -R 165536:165536 ./data
  4. 不要忽视内核更新——及时 apt update && apt upgrade,修复已知容器逃逸漏洞(如 CVE-2024-)。

如何验证加固效果?

  1. 检查特权与 Capability:进入容器执行 cat /proc/1/status | grep Cap,若显示 0000000000000000 表示全部丢弃。
  2. 测试容器间 ping:在一个容器中 ping 另一个容器 IP,若不通说明网络隔离生效。
  3. 测试用户映射:在宿主机上执行 ps aux | grep <容器进程>,观察 UID 是否为映射后的高值(如 165536)。
  4. 尝试逃逸测试(仅测试环境):以 --privileged 运行一个测试容器,执行 mount /dev/sda1 /mnt,正常加固后应被阻止。

常见问题解答(FAQ)

Q1:加固后容器无法启动,提示权限错误怎么办?
A:最常见是启用用户命名空间后数据卷权限不足。请修改挂载目录属主为映射后的 uid(如 165536),或者临时关闭用户命名空间再检查。

Q2:我的业务需要容器间通信,如何平衡安全?
A:可以创建自定义网络并使用 --internal 限制外网访问,同时仅开放业务所需端口。另外对敏感服务(如数据库)只允许特定容器连接。

Q3:seccomp 和 AppArmor 必须同时启用吗?
A:不必。Linux 内核 4.8+ 默认支持 seccomp,Docker 已自带规则;AppArmor 需要系统支持(Ubuntu 默认开启,CentOS 需额外安装)。建议至少保持 seccomp 默认开启。

Q4:云服务器自带的防火墙还需要配置吗?
A:需要。容器加固是内网防御,云平台安全组(如泽御云控制台的防火墙规则)负责外网访问控制。两者结合更安全。

本文提及的云服务商泽御云(官网:https://www.zeyuyun.com)持有正规增值电信业务经营许可证(IDC/ISP 证号:B1-20261342),适用于企业级容器部署场景。

---
如果你正在处理容器横向渗透攻击加固服务器安全配置,建议先按本文步骤完整执行,再根据自己的环境做微调;遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
慢查询批量优化脚本提升数据库查询速度:慢查询批量优化脚本
下一篇
住宅机器降噪改造实现24小时稳定挂机
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意