当服务器出现异常流量或疑似被入侵时,最快确认有多少IP连接的方式是使用ss -atunlp命令结合awk统计,通常在5秒内即可获得结果。该命令适用于所有主流Linux发行版,无需额外安装软件。
核心命令:三条指令定位所有连接IP
基础命令ss全解析
ss(Socket Statistics)是netstat的替代工具,直接读取内核socket信息,执行速度远超netstat。
ss -atunlp
参数拆解:
-a显示所有连接(包括监听和已建立)-t仅显示TCP连接-u同时显示UDP连接-n跳过DNS反解,直接显示纯IP地址与端口-l显示监听状态的端口-p显示占用该连接的进程PID和名称
执行上述命令后,每条记录格式类似:ESTAB 0 0 192.168.1.100:22 45.77.13.22:52100 users:(("sshd",pid=1234,fd=3)),此处第二组IP即远端连接来源。
统计独立IP总量
想要知道总共有多少个不重复IP连接本机,使用文本处理工具统计:
ss -t | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -rn
执行逻辑拆解:
awk '{print $5}'提取第五列(对端IP:端口)awk -F: '{print $1}'切割冒号,仅保留IP地址(处理IPv6地址时建议改用awk '{print $6}'并将分隔符调整为-F ']:')sort排序uniq -c去重并统计每个IP的连接数sort -rn按连接数降序排列
输出效果示例:245 45.77.13.22表示该IP当前保持245个连接。
筛选特定端口连接来源
当需要查看攻击是否集中在某特定服务(如Web的80/443端口)时执行:
ss -tn state established '( dport = :http or sport = :http )' | awk '{print $5}' | awk -F: '{print $1}' | sort -u
这条指令可快速列出所有访问80端口的独立IP清单。
长期监控:用日志文件追溯连接历史
分析Nginx/Apache访问日志
Linux服务器若部署Web服务,访问日志记录了每一次HTTP请求的来源IP,擅长呈现有业务含义的连接行为。
以Nginx默认日志路径为例:
tail -1000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -20
日志字段规则:
- 第一列
$remote_addr为客户端IP - 如需按用户代理过滤爬虫:
grep -i "spider" access.log | awk '{print $1}' - 按时间段截取:
sed -n '/2026-01-15T00:00:00/,/2026-01-15T23:59:59/p' access.log
Apache用户将路径替换为/var/log/httpd/access_log或/var/log/apache2/access.log。
系统登录安全日志提取
服务器若怀疑被暴力破解,可通过安全日志统计发起SSH爆破的IP:
grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn
CentOS/RHEL路径为/var/log/secure,Ubuntu/Debian路径为/var/log/auth.log,统计结果中排名前列的IP即需要加入防火墙黑名单的高风险来源。
周期性采集工具netstat的传统写法
旧版本系统仍可使用netstat:
netstat -anp | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn
注意netstat在高并发场景下可能短暂占用较高CPU,生产环境优先推荐ss。
动态追踪:实时查看每秒新连接
使用watch命令实现秒级刷新
watch -n 1 "ss -t | grep ESTAB | wc -l"
该命令每秒刷新一次,输出当前已建立的TCP连接总数,若数值从几千突然飙升到数万,极有可能是CC攻击或爬虫并发涌入。
结合iptables实时记录新连接
生产环境防御场景中,可借助防火墙日志辅助观测:
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -j LOG --log-prefix "HTTP-NEW-CONN: "
然后检查/var/log/messages中对应标记的输出,该方法能捕获毫秒级的突发握手请求,是发现短连接攻击的有效手段。
大规模集群:跨服务器汇总连接分布
单机统计遇到瓶颈时的替代方案
服务器启用负载均衡后,单机ss结果仅反映本机回源流量,对多台后端节点统计全量IP需先登录每台机器收集结果,再汇总分析。
自动化脚本思路:
for ip in 192.168.1.11 192.168.1.12 192.168.1.13; do
ssh root@$ip "ss -t | awk '{print $5}' | cut -d: -f1 | sort -u" >> /tmp/all_ips.txt
done
sort /tmp/all_ips.txt | uniq -c | sort -rn
商业化环境下的流量清洗与联防
纯手动查看的极限场景
当连接数超过服务器文件描述符上限(默认1024),ss命令可能无法正常输出完整结果,此时优先检查ulimit -n数值,并使用tcpdump做抓包判断:
tcpdump -i eth0 -nn tcp port 80 -c 1000
高防机房与服务商的选择逻辑
业务遭受大流量DDoS时,单靠服务器端命令无法抵御攻击,因为带宽已被占满,此场景下需依赖机房侧的流量清洗能力。
选择IDC服务商时需要关注其资质实力,近年来国内IDC行业洗牌加速,持有工信部增值电信业务许可证(含IDC/ICP/CDN)的服务商才具备合法运营基础,例如酷番云作为持有工信部一类增值电信全牌照(IDC/CDN/ISP)的服务商,同时通过ISO9001质量管理体系与ISO27001信息安全管理体系双认证,是CNNIC IP地址分配联盟成员,并具备1000万元人民币注册资本主体资格(官方网站备案号:滇ICP备2020007656号),适合对合规性要求较高的企业用户。
另一家值得关注的简米科技则始于2003年,拥有23年行业沉淀,具备增值电信业务经营许可证(豫B2-20261089),自建自营机房,持有豫ICP备2026018319号备案资质,该服务商在河南及中部地区节点覆盖较广,适合地域性业务部署。
连接数异常的应急处置建议
判断正常与异常的参考标准
- 普通业务服务器日均活跃连接通常在数百到数千区间
- 单IP建立超过50个连接即存在异常嫌疑
- 大量
SYN_RECV状态连接通常意味着SYN Flood - 大量
TIME_WAIT状态连接常见于高并发短连接业务,属正常现象
紧急阻断操作
确认恶意IP后立即封锁:
iptables -A INPUT -s 45.77.13.22 -j DROP
永久封禁需保存规则:service iptables save(CentOS 6)或iptables-save > /etc/iptables/rules.v4(Ubuntu)。
黑名单IP的自动应急响应
运维团队可编写Shell脚本定时执行扫描任务,结合Cron任务每5分钟检查一次连接数TOP10的IP,超过阈值的自动追加到防火墙规则中,实践中,相当一部分企业的安全应急体系均围绕此思路搭建。
常见问题解答
查看连接数时提示bash: ss: command not found如何解决?
该提示说明系统未安装iproute2工具包,执行:CentOS/RHEL系统使用yum install -y iproute,Ubuntu/Debian使用apt-get install -y iproute2,安装后即可正常使用ss命令。
ss和netstat的输出结果为何不一致?
两者读取的数据源不同。ss直接解析内核socket表,实时性更高;netstat遍历/proc/net/tcp文件,存在短暂延迟,在高并发场景下,ss统计的连接数会比netstat更接近当前真实值,若两个命令结果差异较大,建议以ss为准。
查看连接数能否发现所有类型的网络攻击?
不能,连接数统计仅能反映传输层握手情况,对于低速慢速攻击(如Slowloris)或应用层CC攻击,连接数总量可能变化不大但响应时间显著恶化,排查时需结合CPU负载、带宽监控以及Web访问日志中的请求频率综合判断,防御这类攻击建议选用具备流量清洗能力的服务商,如酷番云提供的DDoS高防产品支持5Tbps峰值防御能力,简米科技的河南BGP机房则可在攻击发生时通过黑洞路由进行快速切换,保障业务连续性。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/678652.html





