IPTables 在 OUTPUT 链上记录连接 pid

IPTables 在 OUTPUT 链上记录连接 pid

我正在尝试pid使用 iptables OUTPUT 链日志来查找套接字,或者更好地将其添加到日志中。

我当前的 iptable 规则:

sudo iptables -A OUTPUT -j LOG --log-prefix='[PID]' --log-level 7 --log-uid

我有点沮丧,因为我知道 iptables模块可以通过(使用标志)owner过滤项目,这意味着信息就在那里,但我无法记录它。pid-m owner --owner-pid

我知道使用 INPUT 链是不可能的,因为 iptables 是一个内核进程,但是对于 OUTPUT 链来说应该是可能的。

有什么想法吗?或者甚至如何交叉一些日志数据来获取 OUTPUT 链连接的 PID?

答案1

因此,IPtables 目前无法根据 PID 过滤数据包。但您可以根据 UID 或 GID 进行过滤:

owner match options:
[!] --uid-owner userid[-userid]      Match local UID
[!] --gid-owner groupid[-groupid]    Match local GID
[!] --socket-exists                  Match if socket exists
    --suppl-groups                   Also match supplementary groups set with --gid-owner

您可以添加新用户,然后以新创建的用户身份运行该应用程序:

sudo -u user application

如果您有现有用户(例如,postfix)已经有用户帐户,您可以执行以下操作:

首先,找到用户的 UID:

[root@mail ~]# cat /etc/passwd | grep postfix
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

其次,添加此 iptables 规则。注意将其添加到 OUTPUT 链中的位置:

/usr/sbin/iptables -A OUTPUT -m owner --uid-owner 89 -j LOG --log-prefix "POSTFIX: "

然后来自用户的所有数据包都postfix将被记录。

相关内容