仅向特定范围的本地端口授予进程权限

仅向特定范围的本地端口授予进程权限

我正在寻找一种方法来防止特定进程绑定到特定范围的本地端口之外的任何内容。假设 localhost:50000 - localhost:50050 是允许的范围。我不想改变临时端口的范围。

是否可以仅向进程授予允许绑定的非常特定范围的本地端口的权限?如果我的应用程序是容器友好的,那么这是可行的,但我需要在没有 Docker 抽象层的情况下执行此操作。

该应用程序尝试bind(0),它将随机选择5个本地端口进行绑定。

答案1

您可以将进程隔离到单独的 IP 名称空间中(请参阅 参考资料man ip-netns)。那么它绑定到哪个端口并不重要,因为无论如何你都必须在那里转发所有流量。

对于外界来说,该进程似乎使用了正确的端口(不是为了建立netstat连接,而是为了建立连接)。

答案2

如果您始终以相同的非 root 用户身份运行进程,则可以使用模块iptables将流量丢弃到指定端口以外的其他端口owner

如果您的系统正在运行 SELinux,那么编写一个策略来限制您的应用程序可能是更好的选择,并且您不需要更改源代码中的任何内容。类似的工具波尔根吉可能对入门有用。

相关内容