我正在尝试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
将被记录。