如何阻止给定用户的所有流量?

时间:2013-03-06 02:04:32

标签: unix iptables su mutt

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

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

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

    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]'
    

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

2 个答案:

答案 0 :(得分:1)

mutt使用邮件服务器发送电子邮件,而且很可能没有使用虚拟的uid运行。

答案 1 :(得分:0)

以下是设置chroot jail的指南,您似乎需要它。

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

这允许您控制可以执行的命令,您可以限制用户访问诸如mutt之类的内容而没有任何问题。您授予访问权限,您不必弄清楚要拒绝的内容。因为所有命令都是默认阻止的。这使得设置变得更加简单。