ss -ant 不直接显示 conntrack 状态,仅反映 tcp socket 层状态;可通过 syn_recv 过多、established 集中、time_wait 堆积等异常分布快速初筛攻击,再用 conntrack 查跟踪表真实负载。

ss -ant 本身不直接显示连接跟踪表(conntrack)状态,它只展示内核 socket 层的 TCP 连接状态(如 ESTABLISHED、SYN_RECV、TIME_WAIT 等),而连接跟踪表是 netfilter/iptables/nftables 框架中独立维护的会话状态记录,需用 conntrack 工具查看。
但攻击流量(如 SYN Flood、大量短连接、扫描行为)会在 socket 层留下明显痕迹,ss -ant 可高效反映其对 TCP 状态分布的影响。结合关键过滤与状态分析,就能间接判断是否被攻击及影响范围。
查看攻击特征明显的 TCP 状态分布
运行以下命令统计当前所有 TCP 连接按状态的分布:
ss -tan | awk '{print $1}' | sort | uniq -c | sort -nr
重点关注以下几类异常状态:
SYN_RECV 过多(如 >50)
表明大量半开连接未完成三次握手,典型 SYN Flood 特征。
单独计数:ss -tan state syn-recv | wc -lESTABLISHED 异常高且来源集中
可能是 CC 攻击或恶意长连接。配合 IP 统计:ss -tan state established | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10TIME_WAIT 大量堆积(如 >6万)
不一定是攻击,但若伴随服务响应变慢或端口耗尽,则可能因攻击引发连接快速创建+关闭。
计数:ss -tan state time-wait | wc -lFIN_WAIT2 / CLOSE_WAIT 显著偏高
CLOSE_WAIT多说明本地方应用未主动 close socket,可能是连接泄漏;FIN_WAIT2多则可能对端不发 FIN,也见于慢速攻击(如 Slowloris)。
快速定位可疑连接源(IP + 端口)
-
查看连接最多的前 5 个源 IP:
ss -tan | awk '{print $5}' | cut -d: -f1 | grep -v "*" | sort | uniq -c | sort -nr | head -5 -
查看连接到本机 80/443 端口的远程 IP 分布:
ss -tan 'dst :80 or dst :443' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10 -
实时观察新连接涌入(每秒刷新):
watch -n 1 'ss -tan state syn-recv | wc -l; ss -tan state established | wc -l'
配合 conntrack 查连接跟踪表真实负载(需安装)
若需确认 netfilter 层是否过载(例如 conntrack 表满导致丢包),运行:
# 查看当前跟踪条目总数和上限
cat /proc/sys/net/netfilter/nf_conntrack_count
cat /proc/sys/net/netfilter/nf_conntrack_max
# 查看各协议连接数分布(需 conntrack-tools)
conntrack -S
# 列出高频源 IP 的 tracked 连接(示例:top 10)
conntrack -L | awk '{print $7}' | cut -d= -f2 | sort | uniq -c | sort -nr | head -10
⚠️ 注意:
conntrack -L输出量大,生产环境慎用;建议先用ss -ant快速定性,再按需深入conntrack。
小结:ss -ant 是攻击初筛的高效入口
它不替代 conntrack,但胜在轻量、实时、内核直取。只要关注 SYN_RECV、ESTABLISHED 来源分布、TIME_WAIT 规模和变化速率,就能在秒级内识别攻击迹象。真正要查“连接跟踪表状态”,请切换至 conntrack 工具。











