Sou*_*mya 4 linux networking tcp port
由于我无法控制的原因,我有一个绑定到 TCP“localhost:$PORT”的二进制文件。(Unix 套接字绑定将使这个问题变得毫无意义)。
如果我理解正确的话,这意味着虽然没有网络机器可以连接,但该机器上的其他用户(包括非特权守护程序用户)可以连接到该端口。
有什么方法可以让我指定只允许以 $me 运行的二进制文件连接到此端口?我可以成为 root 来指定配置,但侦听二进制文件和连接二进制文件都以非 root $me 用户身份运行
iptables 中有一个owner匹配扩展,但它只能在 OUTPUT 和 POSTROUTING 链中使用。因此,您可以在 iptables OUTPUT 链的最开头添加两个规则,如下所示(需要 root 访问权限):
iptables -I OUTPUT 1 -o lo -p tcp --dport $PORT -m owner --uid-owner $me -j ACCEPT
iptables -I OUTPUT 2 -o lo -p tcp --dport $PORT -j DROP
Run Code Online (Sandbox Code Playgroud)
如果您的系统有一些服务可以为您管理 iptables 设置(例如,ufw对于 Debian/Ubuntu 或firewalldRedHat/Fedora 系统),您可能需要配置该服务来为您创建这些 iptables 规则,而不是直接手动添加它们。