![如何找出哪个进程偶尔打开特定 IP 地址上的特定端口?](https://linux22.com/image/151403/%E5%A6%82%E4%BD%95%E6%89%BE%E5%87%BA%E5%93%AA%E4%B8%AA%E8%BF%9B%E7%A8%8B%E5%81%B6%E5%B0%94%E6%89%93%E5%BC%80%E7%89%B9%E5%AE%9A%20IP%20%E5%9C%B0%E5%9D%80%E4%B8%8A%E7%9A%84%E7%89%B9%E5%AE%9A%E7%AB%AF%E5%8F%A3%EF%BC%9F.png)
每隔 5 分钟左右,我的计算机上就会有一个进程(使用我的主用户 ID)尝试在不寻常的 TCP 端口(>1k)上打开与未知 IP 地址(无 rDNS)的连接。我可以在计算机的 IP 防火墙日志中看到这一点,因为每次连接都被拒绝:
[243678.820911] Firewall: *TCP_OUT Blocked* IN= OUT=eth1 SRC=192.168.1.33 DST=123.45.67.89 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=31984 DF PROTO=TCP SPT=31339 DPT=1234 WINDOW=64240 RES=0x00 SYN URGP=0 UID=1234 GID=1234
现在,我想知道哪个过程它(有几百个正在运行)是为了阻止它尝试,并看看这是否是我应该关心的事情。
我如何等待并检测到进程名称,哪个进程以用户 ID 1234 在 TCP 端口 3456 上打开到 123.45.67.89 的连接?
答案1
您可以使用 netstat 构建一个紧密循环,如下所示:
while :; do netstat -np | awk '$5 ~ ":3456" {print}'; done
它的效率不是很高,但它应该能够捕获调用进程的 pid 和名称。