返回列表 发布新帖
查看: 19|回复: 0

如何实时监控端口状态与异常流量

发表于 3 天前 | 查看全部 |阅读模式

这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!

您需要 登录 才可以下载或查看,没有账号?立即注册

×
对于运维来说,端口异常往往意味着:服务意外退出;被恶意扫描或爆破;存在未知进程监听端口;挖矿木马占用高位端口;端口突然暴增引发高负载。能及时发现这些情况,比事后排查要轻松得多。本文介绍几种可落地的监控方式。

一、实时查看端口状态
1. 使用 ss 监控端口监听情况(推荐)
ss 是 netstat 的升级版,速度快、信息更全。
  1. ss -tulnp
复制代码
参数说明:
t:TCP
u:UDP
l:仅显示监听
n:不解析域名
p:显示进程名
常用做法:盯紧异常端口
  1. ss -tulnp | grep -E "0.0.0.0|LISTEN"
复制代码
如果你的服务器突然出现:
  1. 50000/tcp  LISTEN  ....
  2. 60123/tcp  LISTEN  ....
复制代码
而你不认识这些端口,那么可能有猫腻。

二、如何实时检测“新端口被开启”
有时候新端口突然出现,意味着有服务被拉起,或者有木马启动。
下面提供一个小型监控脚本,用来 实时对比端口变化。
端口变化监控脚本
  1. #!/bin/bash

  2. BASELINE=/tmp/port_baseline.txt
  3. CURRENT=/tmp/port_current.txt

  4. # 初始化基线
  5. if [ ! -f "$BASELINE" ]; then
  6.     ss -tuln > "$BASELINE"
  7.     echo "Baseline created."
  8.     exit 0
  9. fi

  10. ss -tuln > "$CURRENT"

  11. DIFF=$(diff $BASELINE $CURRENT)

  12. if [ ! -z "$DIFF" ]; then
  13.     echo "[Warning] New or removed ports detected:"
  14.     echo "$DIFF"
  15.     cp $CURRENT $BASELINE
  16. fi
复制代码
添加 crontab 每分钟跑一次也很方便。

三、实时监控端口连接量(发现攻击或异常流量)
1. 查看某端口连接数
  1. ss -ant | grep :80 | wc -l
复制代码
如果你的网站端口 80/443 突然出现上千个连接,很可能遭遇 CC 攻击。

2. 按 IP 统计访问量(定位恶意 IP)
  1. ss -tn state established | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | head
复制代码
可以快速看到:哪个 IP 并发最高;是否存在恶意扫描;是否被海外机器人爆破。

四、实时监控流量情况
1. 使用iftop(像 top 的流量监控)
  1. yum install iftop -y
  2. iftop
复制代码
可以看到:实时带宽;每个 IP 的流量情况;是否存在异常上行流量(挖矿木马特征)

2. 使用 nethogs 查看每个进程占用的流量
  1. nethogs
复制代码
如果发现:
  1. python  5MB/s
  2. node    4MB/s
  3. unknown 8MB/s
复制代码
那就要小心了。

五、监控端口变化的自动告警系统(可直接使用)
下面是一个 端口异常自动邮件告警脚本(适用于 Linux):
  1. #!/bin/bash

  2. LOG=/tmp/port_watch.log
  3. BASE=/tmp/port_base.txt
  4. CUR=/tmp/port_cur.txt

  5. ss -tuln > $CUR

  6. if [ ! -f $BASE ]; then
  7.     cp $CUR $BASE
  8.     exit 0
  9. fi

  10. DIFF=$(diff $BASE $CUR)

  11. if [ ! -z "$DIFF" ]; then
  12.     echo "Port change detected:" > $LOG
  13.     echo "$DIFF" >> $LOG
  14.     mail -s "Server Port Change Alert" admin@example.com < $LOG
  15.     cp $CUR $BASE
  16. fi
复制代码
适用于:端口异常监听;服务自动拉起;后门端口检测;木马扫描端口识别。

六、结合 fail2ban、firewalld 进行自动阻断
如果监控脚本发现某 IP 同时触发多端口访问,可以让 fail2ban 自动封禁:
例如封禁大量发起 SSH 连接的 IP:
  1. fail2ban-client set sshd banip 1.2.3.4
复制代码
或通过 firewalld:
  1. firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='1.2.3.4' reject"
复制代码

七、总结
实时监控端口和流量是服务器安全的关键环节。运维中 80% 的入侵事件,都能在端口层面提前发现异常。

本篇总结的要点包括:如何查看端口状态;如何检测端口变化;如何快速发现流量异常;如何追踪高访问 IP;如何自动告警端口变化;如何结合防火墙自动封禁攻击流量。
只要把以上方法掌握好,就能提前发现大多数异常服务、木马后门、扫描行为或流量攻击。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2025 Suike Tech All Rights Reserved. 随客交流社区 (备案号:津ICP备19010126号) |Processed in 0.097732 second(s), 7 queries , Gzip On, MemCached On.
关灯 在本版发帖返回顶部
快速回复 返回顶部 返回列表