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 连接:
- 定位进程:
sudo ss -tunap | grep 203.0.113.5:443
# 输出:PID=1234 (curl)
- 查看进程详情:
ps -p 1234 -f
# 输出:/usr/bin/curl https://example.com
- 抓包验证:
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