将端口限制为单个应用程序

vir*_*tor 4 linux port restrictions

我想将一系列 udp 端口​​限制为单个应用程序(或用户)。我想要实现的不仅仅是bind()从其他 uid 中阻止 a ,而且还从可以自动分配的池中删除范围。

例如,如果有人试图明确绑定 12345,但没有运行指定的应用程序,他们应该获得 EPERM。如果有人试图绑定一个未指定的端口,他们不应该尝试随机绑定 12345。

有什么系统可以在这里提供帮助吗?我尝试浏览 apparmor / selinux 文档,但他们似乎只做阻止部分。

Jam*_*s F 5

在 Linux 上执行此操作的最简单方法是在标准临时端口范围的顶部或底部范围保留一个块。

通过运行找出您当前的范围

cat /proc/sys/net/ipv4/ip_local_port_range
Run Code Online (Sandbox Code Playgroud)

然后通过向其中回显不同的内容来设置它(并修改 sysctl.conf 或类似内容以使其在启动时也发生)。我的系统使用 32768-61000,所以我可以将它更改为 32768-60000 与 SELinux/AppArmor 一起为我的应用程序保留 60001-61000。

echo "32768 60000" > /proc/sys/net/ipv4/ip_local_port_range
Run Code Online (Sandbox Code Playgroud)

我不知道有什么方法可以在短暂范围的中间开辟一个缺口。