ss是linux中比netstat更高效、现代的网络连接查看工具,直接读取内核socket数据,适用于高并发排查与安全审计;支持监听端口识别、外连行为分析、恶意进程溯源、raw/udp/time-wait异常检测及自动化审计。

SS(Socket Statistics)是Linux系统中比netstat更高效、更现代的网络连接状态查看工具,它直接从内核的socket信息中读取数据,响应快、资源占用低,特别适合高并发场景下的连接排查与安全审计。
快速识别异常连接:监听端口与外连行为
安全审计的第一步是确认哪些端口正在被监听、哪些进程建立了可疑的外部连接。常用命令如下:
-
查看所有监听端口(含进程名):
ss -tulnlp(需root权限显示进程) -
筛选非本地回环的监听服务:
ss -tuln | grep -v '127.0.0.1\|::1',避免遗漏暴露在公网的端口 -
检查已建立的TCP外连(尤其是到陌生IP或非常用端口):
ss -tnp state established | grep -E ':[0-9]{4,}',可辅助发现C2通信痕迹
定位恶意进程:结合PID与程序路径分析
当ss输出中出现未知PID时,不能仅依赖命令行名称(易被篡改),应交叉验证:
- 用
ps -p PID -o pid,ppid,comm,args查看完整启动参数和父进程 - 检查二进制路径:
ls -la /proc/PID/exe,确认是否指向正常系统路径(如/usr/bin/sshd)还是临时目录(如/tmp/.X11-unix/) - 对比
md5sum /proc/PID/exe与原始包哈希(如有RPM/DEB包管理记录)
检测隐蔽连接:RAW、UDP与TIME-WAIT异常
攻击者常利用非标准协议规避检测。SS支持深入查看各类socket类型:
-
查看所有RAW套接字(可能用于ICMP隧道或原始包注入):
ss -wln -
统计UDP连接数并排序(识别DNS放大或NTP反射迹象):
ss -un | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10 -
关注大量TIME-WAIT或SYN-RECV状态:可能是DoS尝试残留,用
ss -s总览各状态连接数,再针对性过滤
自动化审计建议:轻量级监控脚本示例
将高频审计动作固化为定时任务,降低人工疏漏风险:
- 每日记录全量监听端口与进程映射:
ss -tulnlp > /var/log/ss-listen-$(date +\%F).log 2>/dev/null - 实时告警新出现的非白名单端口:
ss -tuln | awk '{print $5}' | grep -E ':([1-9][0-9]{3,}|65535)' | grep -v -f /etc/ss-whitelist.txt - 配合auditd监控敏感socket调用:
-a always,exit -F arch=b64 -S socket,connect,accept4 -k network_activity
SS本身不提供防护能力,但它是连接层可观测性的核心入口。掌握其过滤逻辑、状态含义与进程溯源方法,能显著提升对后门、横向移动、C2通信等攻击行为的发现效率。实际使用中注意权限控制——普通用户无法看到其他用户的进程信息,安全审计务必以root或具备CAP_NET_ADMIN能力的账户执行。










