答案1
为了防止本地非 root 用户的攻击,我确实会使用网络命名空间。
这可能是最简单的解决方案,因为一般来说,网络内容与用户/组管理分离,并且虽然可以使用 来混合两者iptables
,但它增加了开销。
网络命名空间仅依赖于这样一个事实:只有 root 才能将进程移入或移出命名空间。
所以你需要一个类似于 (ns = 命名空间) 的设置
main ns ---- nginx ns ---- elasticsearch ns
其中连接是通过虚拟以太网 (veth) 对及其自己的 LAN 网段实现的。这意味着主命名空间中的每个进程只能访问 nginx 命名空间,而无法直接访问 elasticsearch 命名空间(除非您能够在此命名空间中启动进程)。
您需要了解网络基础知识(LAN 网段、网络掩码、路由与默认路由)。ip netns ...
是用于创建和管理网络空间以及在命名空间中启动进程的命令行工具。ip link ...
是创建 veth-pairs 的命令行工具。
我建议在每个命名空间中启动一个xterm
,以便您可以查看和修改网络配置。一旦一切正常,只需编写脚本即可。
您需要稍微尝试一下,但这并不难。我想不出更简单的方法来做到这一点。
编辑
要开始使用命名空间,请尝试以下脚本这个答案,或者看看这个问题。
我不确定你被困在哪里。网络命名空间。将每个命名空间视为自己的联网虚拟计算机,它恰好与物理计算机的其余部分共享文件系统和其他内容。因此,处理名称空间与连接 LAN 中的计算机相同。一个重要的工具是虚拟以太网对,您可以将其视为连接两个网络命名空间的虚拟 LAN 电缆。