如何在Linux上阻止对某些程序的互联网访问

最近,我遇到了限制Internet访问到特定程序的问题。 有没有人可以推荐一个好的方法,而不使用任何特定的软件?

对我来说,解决办法恰到好处。

  1. 创build,validation新组 ; 将所需用户添加到此组中:
    • 创build: groupadd no-internet
    • validation: grep no-internet /etc/group
    • 添加用户: useradd -g no-internet username

      注意:如果你修改已经存在的用户,你应该运行: usermod -a -G no-internet userName检查: sudo groups userName

  2. 在path中创build一个脚本并使其可执行:
    • 创build: nano /home/username/.local/bin/no-internet
    • 可执行文件: chmod 755 /home/username/.local/bin/no-internet
    • 内容: #!/bin/bash
      sg no-internet "$@"
  3. 添加iptables规则来删除组no-internet的networking活动:
    • iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP

      注意:不要忘记将更改永久化,所以重新启动后会自动应用 。 这样做取决于你的Linux发行版。

4.检查它,例如在Firefox上运行:

  • no-internet "firefox"

如果您想要例外,并允许程序访问本地networking

  • iptables -A OUTPUT -m owner --gid-owner no-internet -d 192.168.1.0/24 -j ACCEPT
  • iptables -A OUTPUT -m owner --gid-owner no-internet -d 127.0.0.0/8 -j ACCEPT
  • iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP

注:在产卵的情况下,将保持规则。 例如,如果您运行一个没有互联网规则的程序,该程序将打开浏览器窗口,但规则将被应用。