内网暴露面是什么
内网暴露面指的是只在内部网络可达、却同样缺少访问控制的资产与服务:数据库、缓存、消息队列、管理后台、Kubernetes 节点端口等。边界收敛之后,攻击者仍可能经由钓鱼终端、供应商通道或供应链组件进入内网,横向移动的首批目标往往就是这些『外面看不见、里面全放行』的服务。治理对象是监听地址、主机防火墙、网段间策略与会话来源四层。
基本信息
| 适用环境 | 数据中心内网、混合云 VPC、Kubernetes 集群 |
|---|---|
| 核心问题 | 服务监听 0.0.0.0 且主机防火墙全放行 |
| 治理层次 | 监听收敛 → 主机防火墙 → 网段隔离 → 应用鉴权 |
| 验证方式 | 从非授权网段抽样访问,预期被拒绝 |
典型使用场景
- 数据库只应被应用网段访问,实际却对全部内网开放 3306/5432
- Redis、Memcached、RabbitMQ 等中间件默认无认证且内网任意可达
- Kubernetes 节点 kubelet 10250、Dashboard、etcd 2379 未做来源限制
- 办公终端与生产服务器混在同一网段,任意终端可直接连生产端口
- 开发测试用的调试端口(Actuator、phpMyAdmin 等)随内网连通暴露出去
监听与防火墙核查
监听与防火墙核查
ss -lntp | grep '0.0.0.0' # 列出所有全接口监听的服务,逐个确认是否必要
firewall-cmd --list-all # 查看放行规则是否过宽
# 应仅本机访问的组件改为监听回环:
# redis.conf: bind 127.0.0.1 mysql: bind-address = 127.0.0.1
iptables -S | grep -vE 'loopback|ESTABLISHED' | head -20 # 看是否有默认放行
kubectl get svc -A -o wide | grep -E 'NodePort|LoadBalancer' # 排查绕开 Ingress 的服务
# Windows 侧对照:netstat -ano | findstr LISTENING常见内网暴露形态
| 形态 | 典型表现 | 处置方向 |
|---|---|---|
| 监听地址 | 服务绑定 0.0.0.0 或 :: 全接口 | 改为回环或指定内网网卡地址 |
| 主机防火墙 | iptables/防火墙未启用或全放行 | 默认拒绝,按来源网段逐条放行 |
| 网段隔离 | 生产、测试、办公互访无限制 | 跨段默认拒绝,按业务流开通 |
| 中间件 | Redis/ES/MQ 无认证或默认口令 | 启用认证、限制来源、收敛管理端口 |
内网核查不必每次全量:先按资产清单抽样验证『不该通的通没通』,再对新上线系统做定向核对,投入更低且结论更可用。
把内网服务直接映射到公网等于把问题前移一层:缺少认证与最小权限时,边界设备挡不住合法协议被正常调用。