可达面积怎么算
一台主机的对外可达面积取决于两点:有哪些进程在监听,以及这些监听能被谁访问。ss -tulnp 给出第一手清单,但要判断风险还得多看一列——监听地址:0.0.0.0 表示所有网卡都可访问,127.0.0.1 只有本机可访问,差异巨大。真正的收敛是两层同时做:应用侧改监听地址,网络侧用防火墙限制来源。
基本信息
| 清单命令 | ss -tulnp(TCP/UDP 监听与进程) |
|---|---|
| 辅助定位 | lsof -iTCP:端口 -sTCP:LISTEN、netstat -tulnp |
| 监听地址含义 | 0.0.0.0 全网卡、127.0.0.1 仅本机、具体 IP 仅该网卡 |
| 收敛手段一 | 改应用配置绑定地址(如只绑 127.0.0.1) |
| 收敛手段二 | 防火墙按来源放行端口 |
| 权限要求 | 查看他进程的监听信息需 root |
典型使用场景
- 新系统上线前核查是否有非必要服务在监听
- 排查扫描报告中的开放端口来自哪个进程
- 数据库与缓存服务确认是否被错误地绑定到所有网卡
- 整改后复核端口清单,确认没有残留服务
- 交付验收时提供端口清单作为基线证据
盘点与定位
盘点与定位
ss -tulnp # 全部 TCP/UDP 监听与对应进程
ss -tlnp | grep -E '6379|3306|8080' # 按端口过滤,定位具体服务
ss -tlnp | awk '{print $4}' | sort | uniq -c | head # 统计监听地址分布,找出 0.0.0.0 的条目
lsof -iTCP:8080 -sTCP:LISTEN 2>/dev/null # 辅助定位进程(ss 看不到时)
systemctl list-units --type=service --state=running | head # 结合运行中的服务交叉核对收敛(两层)
收敛(两层)
# 应用层:数据库、缓存类服务只需本机访问时改绑 127.0.0.1(改配置后重启并复核)
ss -tlnp | grep 6379 # 改前记录监听地址
# 网络层:确实需要对外提供服务的,按来源限制
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.10.0.0/16" port port="3306" protocol="tcp" accept' --permanent
firewall-cmd --reload
ss -tulnp # 改完复核
ss -tlnp > /opt/baseline/ports-$(date +%F).txt # 落盘基线,便于后续比对监听地址判读
| 监听地址 | 含义 | 风险与建议 |
|---|---|---|
| 0.0.0.0:端口 | 所有网卡可访问 | 风险最高,需确认业务确实需要对外 |
| 127.0.0.1:端口 | 仅本机可访问 | 仅本机通信的场景首选 |
| :::端口 | IPv6 全地址,通常兼容 IPv4 | 作用等同 0.0.0.0,别误判为安全 |
| 具体网卡 IP | 仅该网卡可访问 | 多网卡环境按业务面绑定 |
| *:端口(UDP) | 无连接协议同样需要收敛 | UDP 也要核查,容易只盯 TCP |
| 进程名缺失 | 权限不足看不到 | 用 sudo 重跑 ss |
典型的风险组合是『服务绑定 0.0.0.0 + 防火墙全放行』:两层各收一次才叫收敛,只做一层等于留了后门。
普通用户看不到他人进程的 socket 信息,ss -p 没有显示进程名时用 sudo 重跑,别误以为查不到归属。