netstat 网络相关命令

查询本机 IP 连接

netstat -an

查看网络 TCP 连接状态数量

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

查看 8080 端口有多少个 TCP 连接

netstat -ant |grep 8080|wc -l

查看当前 TCP 连接状态为 ESTABLISHED 的数量

netstat -ant|grep 8080|grep ESTABLISHED|wc -l

查看 TCP 连接

netstat -ant

过滤某个 TCP 端口

netstat -ant |grep 端口号

查看 UDP 连接

netstat -anu

过滤某个 UDP 端口

netstat -anu |grep 端口号

实时监控 UDP 连接信息,每隔 2 秒自动更新一次

watch -n 2 'netstat -anu'

使用ss或netstat 关联进程和端口

# 显示所有 TCP/UDP 连接及关联的进程(需要 root 权限)
sudo ss -tunap | grep <目标IP或端口>
sudo netstat -tunap | grep <目标IP或端口>

使用lsof按端口或IP过滤进程

# 列出所有使用 TCP 的进程
sudo lsof -iTCP -sTCP:ESTABLISHED

# 按端口过滤(如 443)
sudo lsof -i :443

# 按远程 IP 过滤(如 203.0.113.5)
sudo lsof -i @203.0.113.5

抓包分析明文内容

# 抓取 eth0 网卡上目标端口 80 的流量,并显示 ASCII 内容
sudo tcpdump -i eth0 port 80 -A

# 抓取特定 IP 的流量(如 203.0.113.5)
sudo tcpdump -i eth0 host 203.0.113.5 -A

使用nethogs 实时监控流量(需root)

sudo nethogs -d 2  # 每 2 秒刷新一次

检查进程可信性

# 通过 PID 查进程路径
sudo ls -l /proc/<PID>/exe
# 查进程启动参数
sudo ps -p <PID> -f

阻断可疑连接

# 用 iptables 临时封禁 IP
sudo iptables -A INPUT -s <可疑IP> -j DROP

检查外部IP

# 查询 IP 归属地
whois <可疑IP>
curl ipinfo.io/<可疑IP>

假设发现一个到 203.0.113.5:443 的未知 TCP 连接:

  1. 定位进程:
sudo ss -tunap | grep 203.0.113.5:443
# 输出:PID=1234 (curl)
  1. 查看进程详情:
ps -p 1234 -f
# 输出:/usr/bin/curl https://example.com
  1. 抓包验证:
sudo tcpdump -i eth0 host 203.0.113.5 -A
# 输出:GET /api/data HTTP/1.1...

需要安装的工具:

# Debian/Ubuntu
sudo apt install net-tools lsof tcpdump tshark

# CentOS/RHEL
sudo yum install net-tools lsof tcpdump wireshark-cli