1

我想在具有受限权限的 UNIX 上运行脚本。具体来说,我想运行我收到的代码而不让它发送数据。我目前的解决方案是:

  1. 创建一个虚拟用户。
  2. 用于iptables阻止虚拟用户的所有传出流量。
  3. 以虚拟用户身份运行目标程序,使用su - dummy -c 'command'.

我实现上述第 2 步的方式如本页所述。具体来说,我使用以下命令添加新规则:

sudo iptables -I OUTPUT -m owner --uid-owner dummy -j DROP

当我现在尝试通过切换到虚拟帐户来 ping 一个网址时,ping 确实失败了,因为我将规则添加到了 iptables。这是该命令:

> su - dummy -c 'ping www.google.com'
ping: unknown host www.google.com

尝试使用traceroute. 但是,当我尝试使用类似的方式发送电子邮件时mutt,它会成功:

 su - dummy -c 'echo "test" | mutt -s test [emailaddress]'

为什么该规则不阻止这一点,更一般地说,我如何确保阻止我正在运行的程序的所有传出流量?

4

2 回答 2

1

mutt 使用邮件服务器发送电子邮件,这很可能没有使用 dummy 的 uid 运行。

于 2013-03-06T02:23:49.617 回答
0

这是设置 chroot 监狱的指南,您似乎需要它。

https://help.ubuntu.com/community/BasicChroot

这使您可以控制可以执行哪些命令,可以毫无问题地限制用户访问 mutt 之类的东西。您授予访问权限,您不必弄清楚要拒绝什么。因为所有命令都被默认阻止。这使得设置变得更加简单。

于 2013-03-06T04:53:18.373 回答