确定向给定 IP 创建数据包的进程(和用户)

确定向给定 IP 创建数据包的进程(和用户)

给定一个外部 IP 地址和目标端口,在 Linux 中,是否有任何方法可以使用类似ngreptcpdump来识别有时会向其发送流量的进程和/或用户?或者iptables规则?有没有推荐的方法来运行不太耗费资源的持续监控?

答案1

知道 IP 和端口后,您可以使用netstat几个参数来找出与连接相关联的进程/用户: netstat -tunp

# netstat -tunp
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0     36 192.168.42.253:22       10.0.0.7:51313          ESTABLISHED 4060/sshd: ralloway 

-t选项打开 TCP。该-u选项打开 UDP。该-n选项打开主机、端口等的数字打印。该-p选项打开打印程序的 PID 和名称。

ss实用程序是较新的替代品netstat,在这种情况下,相同的选项返回相同的信息:

# ss -tunp
Netid State      Recv-Q Send-Q  Local Address:Port   Peer Address:Port              
tcp   ESTAB      0      0       192.168.42.253:22    10.0.0.7:51313               users:(("sshd",pid=4062,fd=3),("sshd",pid=4060,fd=3))

我不知道有任何正在进行的监视器,但您可以查看 iftop、nettop、nethogs 等选项,看看它们是否适合您的需求。

-Rich Alloway(RogueWave)

答案2

Rich Alloway——RogueWave的回答有一些有希望的建议,但每个包都有这样或那样的不足之处。我能找到的唯一能满足我所有需求的选项是系统挖掘

它有多种使用方法,例如:

sysdig -p "*%evt.num %evt.datetime %evt.cpu (%user.name) %proc.name (%thread.tid) %evt.dir %evt.type %evt.info" '(fd.rnet=1.2.0.0/16 or fd.rnet=3.4.5.0/24) and fd.rport=443' | tee outputfile

相关内容