Ubuntu 中有没有办法为单个用户设置 TCP 端口权限?
例如,userA 只允许打开 3000-3010 之间的端口。因此,如果 userA 运行以下命令php -S 0.0.0.0:3001
,它就会起作用。但如果他们尝试跑步php -S 0.0.0.0:3200
,他们的许可就会被拒绝。
答案1
不涉及 MAC(SELinux 或 AppArmor),你可以使用 iptables 进行这个快速而肮脏的黑客攻击:
iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -o ethX -m owner --uid-owner <userA_UID> -m multiport --dports 3000-3010 -j ACCEPT
但是,它不会向用户记录任何内容,并且仍然允许用户绑定港口。他只会出现端口被阻塞的症状