有没有办法记录进程创建的所有传出连接?我知道,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