我不想要在Windows上使用"安全端口"或者其他个人防火墙承诺的功能。我查看了iptables,但它不符合我的要求。
我在这里看到了一个很好的答案("如何阻止Wine应用程序访问互联网"),但设置起来非常不方便。
是否有一款软件可以询问每个程序是否可以访问互联网?
我在这里看到了一个很好的答案("如何阻止Wine应用程序访问互联网"),但设置起来非常不方便。
是否有一款软件可以询问每个程序是否可以访问互联网?
创建一个名为no-internet
的组。请不要加入该组。
sudo addgroup no-internet
向iptables添加规则,阻止属于no-internet
组的所有进程使用网络(使用ip6tables
还可以阻止IPv6流量)
sudo iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP
sudo -g no-internet YOURCOMMAND
而不是YOURCOMMAND
。%sudo ALL=(:no-internet) NOPASSWD: ALL
sudo visudo
的东西iptables-save
和iptables-restore
来持久化防火墙规则。sudo -g no-internet firefox
比默认的连接速度更快。但是它并没有起作用。 - kennsudo iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP
,需要使用sudo
。 - Klesuniptables-translate
的说法,NFTables的等效命令是:nft add rule ip filter OUTPUT skgid "$(getent group no-internet|cut -f3 -d:)" counter drop
。 - Pedro Gimenosudo ip6tables -A OUTPUT -m owner --gid-owner no-internet -j DROP
зҡ„е‘Ҫд»ӨжқҘдёәIPv6жү§иЎҢжӯӨж“ҚдҪңпјҢ并дҪҝз”Ёsudo service netfilter-persistent save
дҪҝе…¶жҢҒд№…еҢ–пјҲеңЁе®үиЈ…netfilter-persistentиҪҜ件еҢ…еҗҺпјүгҖӮ - Tey'sudo iptables -A OUTPUT -m owner !--gid-owner has-internet -j DROP
,当我执行sudo -g has-internet YOURCOMMAND
(例如sudo -g has-internet ping somerandomsite.com
)时无法连接...为什么?我应该加入has-internet组吗?在规则中是否应该使用--suppl-groups选项?谢谢!!!! - codeispoetryfirejail --net=none firefox
# run app without access to internet
sudo unshare -n sudo -u my_user my_app
更多详细信息请参见man unshare
和this answer。
如果你正在寻找一个图形界面防火墙,我在OpenSnitch上取得了良好的结果——它尚未在Ubuntu软件仓库中,并且我不会称其为生产级别,但是按照github页面上的构建步骤对我有效。
Ubuntu已经有一个防火墙ufw
,但默认情况下是禁用的。您可以通过命令行或其前端gufw启用和使用它,该前端可以直接从Ubuntu软件中心安装。
如果您需要阻止特定应用程序的互联网访问,您可以尝试LeopardFlower,它仍处于测试版,并且不在Ubuntu软件中心提供:
commit 34b4a4a624bafe089107966a6c56d2a1aca026d4 Author: Christoph Hellwig Date: Sun Aug 14 17:33:59 2005 -0700
[NETFILTER]: Remove tasklist_lock abuse in ipt{,6}owner
Rip out cmd/sid/pid matching since its unfixable broken and stands in the way of locking changes to tasklist_lock.
Signed-off-by: Christoph Hellwig <hch@xxxxxx> Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx> Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
iptables
以实现每个应用程序限制的更多信息。然而,我建议在您的回答中包含重要信息(并仍然提供链接供参考)。 - Eliah Kagan我发现这里发布的解决方案非常好。它涉及创建一个允许互联网访问的用户组,并设置防火墙规则,只允许该组成员访问。应用程序要想访问互联网,唯一的方式就是由该组的成员运行。你可以通过使用sudo -g internet -s
命令在该组下运行程序。
简要总结上述链接中的帖子内容:
sudo groupadd internet
/etc/group
文件的sudo
组中。如果您修改了该文件,则需要注销并重新登录,然后下面的脚本才能正常工作。#!/bin/sh
# 防火墙应用程序 - 仅允许从“internet”组运行的应用程序运行
# 清除先前的规则
sudo iptables -F
# 接受internet组的数据包
sudo iptables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT
# 还要允许本地连接
sudo iptables -A OUTPUT -p tcp -d 127.0.0.1 -j ACCEPT
sudo iptables -A OUTPUT -p tcp -d 192.168.0.1/24 -j ACCEPT
# 拒绝其他用户的数据包
sudo iptables -A OUTPUT -p tcp -j REJECT
# 开启带有internet访问权限的终端
sudo -g internet -s
iptables-save
和iptables-restore
shell命令。http://www.linuxbsdos.com/2011/12/06/3-application-level-firewalls-for-linux-distributions/
有一个应用程序已经被提及过了,叫做leopardflower。我不确定它的状态/维护情况。