记录传出连接

记录传出连接

有没有办法记录进程创建的所有传出连接?我知道,netstat但这似乎更多的是某个时间点的快照,而不是在一段时间内运行和记录信息的东西。

我只需要 IP 或主机名、端口以及建立连接的进程。

답변1

在 Linux 上,您可以设置审计子系统记录每次建立网络连接的尝试。有关审计子系统的信息,请阅读auditctl手册页或者本教程或者本网站上的其他示例auditd如有必要,安装您的发行版的软件包,然后

auditctl -A exit,always -S connect

日志存在于/var/log/audit/audit.log我所知道的所有发行版中。你也可以搜索他们ausearch

답변2

如果您能够安装自定义内核,您应该看看系统点击。有很多例子如何跟踪网络活动。

답변3

在 Linux 上,您可以使用ip_conntrack来实现这一目标。它是一个连接跟踪模块,通常用于监视由防火墙/NAT 盒管理的行为奇怪的协议(如 FTP)的连接。

modprobe ip_conntrack
cat /proc/net/ip_conntrack

您可以 grep 伪文件来查看已建立的连接,并进一步 grep 源 IP 以查看它何时源自您的盒子。

답변4

我会考虑tcpdump在出站接口上使用来查看出站SYN请求。

如果您真的喜欢冒险,您可以制作类似的实用程序:strace或在跟踪程序执行时truss报告所有系统调用,但这有点危险,并且在处理多线程进程时有缺点。connect

관련 정보