新手应关注网络栈关键指标识别扫描行为:tcpinsegs突增伴重传、tcpoutrsts持续>50/秒、tcpattemptfails跳升;ss -s中syn-recv>20或time-wait暴增提示syn flood或端口扫描;需联动journalctl、auth.log、ss、netstat交叉验证,并设阈值告警与自动封禁。

新手不必硬啃内核源码,重点是看懂几个关键指标背后的含义——它们就像网络栈的“仪表盘读数”,异常波动往往就是扫描行为的早期信号。
从/proc/net/snmp里抓关键数字
执行cat /proc/net/snmp | grep -A 1 "Tcp:",重点关注这三行:
- TcpInSegs:每秒进来的TCP数据段数量。正常业务下较平稳;若某分钟突增3倍以上,且伴随大量retransmit(重传),可能是SYN扫描触发的半连接堆积
- TcpOutRsts:主动发出去的RST包数。健康系统该值极低;若持续高于50/秒,说明有大量连接被拒绝,常见于端口扫描后目标主机回RST
- TcpAttemptFails:连接尝试失败次数。扫描器扫到关闭端口时会收到RST或超时,这个值会跳升
用ss命令看连接状态分布
运行ss -s,注意输出末尾的统计行:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 如果established很少,但syn-recv(半开连接)超过20个,且持续不下降,大概率遭遇了SYN Flood或快速端口扫描
- time-wait突然暴涨(比如从几百飙到上万),可能有工具在短时间发起大量短连接(如nmap -sT全端口扫)
- 出现大量fin-wait-1或close-wait异常堆积,需结合日志查是否被恶意探测后故意断连
结合日志交叉验证可疑IP
不要只盯一个来源。把网络栈指标和日志联动起来:
- 当TcpOutRsts飙升时,立刻查journalctl -u sshd --since "1 hour ago" | grep "Invalid user" | awk '{print $11}' | sort | uniq -c | sort -nr | head -5,看是不是同一IP在扫SSH
- 发现某个IP在auth.log里反复尝试不同用户名,再用ss -tun src 192.168.1.222确认它是否同时在连多个端口
- 如果ss -s显示大量syn-recv,但netstat -an | grep :22 | wc -l却很低,说明不是真实登录,而是扫描器在试探
设置基础告警阈值防漏掉苗头
不用复杂平台,一行脚本能守住底线:
- 每5分钟跑一次:awk '/Tcp:/ && NR==2 {print $3}' /proc/net/snmp,若连续两次超过平时均值的200%,发邮件提醒
- 监控ss -s中syn-recv数,>30就记录并自动iptables -A INPUT -s [IP] -j DROP(先测试环境验证)
- 把grep "port [0-9]\+" /var/log/ufw.log | tail -100的结果做简单计数,单IP 10分钟内扫超15个端口就列入观察名单










