我想将一系列udp端口限制为单个应用程序(或用户).我想要实现的不仅仅是阻止来自其他uid的bind(),还要从可以自动分配的池中删除范围.
例如,如果有人试图显式绑定12345,但没有运行指定的应用程序,则应该获得EPERM.如果有人试图绑定一个未指定的端口,他们永远不应该尝试随机绑定12345.
有没有可以提供帮助的系统?我尝试浏览apparmor / selinux文档,但他们似乎只做阻塞部分.
解决方法
在
Linux上执行此操作的最简单方法是在标准短暂端口范围的顶部或底部范围预留块.
通过运行了解您当前的范围
cat /proc/sys/net/ipv4/ip_local_port_range
然后通过回显不同的东西来设置它(并修改sysctl.conf或类似的东西以使其在启动时发生).我的系统使用32768-61000,所以我可以将它更改为32768-60000与SELinux / AppArmor一起为我的应用程序保留60001-61000.
echo "32768 60000" > /proc/sys/net/ipv4/ip_local_port_range
我不知道如何在短暂的范围中间划出一个缺口.