如何阻止葡萄酒应用程序的互联网访问?

YSN*_*YSN 44 security wine firewall

如何防止特定或任何葡萄酒应用程序访问互联网?

在 Windows 下使用某些应用程序时,他们不时尝试访问互联网,没有任何明显的原因。当时我能够通过个人防火墙阻止这种行为。不幸的是,到目前为止我还没有在 Ubuntu 中找到应用程序级防火墙。当我在国外使用 3G 调制解调器进行数据漫游时,这尤其令人讨厌。

gor*_*ric 36

Ubuntu 论坛上有一个关于阻止任何给定程序访问 Internet 的很好的教程。

脚步

sudo addgroup no-internet  # Create group "no-internet"
sudo adduser $USER no-internet  # Add current user to no-internet
Run Code Online (Sandbox Code Playgroud)

防止该组访问网络的 iptables 规则

sudo iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP
sudo ip6tables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP # To also block IPv6 traffic
Run Code Online (Sandbox Code Playgroud)

您不想使用sg sudo -g(作为不同的组 ID 执行命令)访问互联网的进程:

sg no-internet -c "processFullPath args"
Run Code Online (Sandbox Code Playgroud)

它基本上涉及创建一个新组,拒绝它访问 Internet,然后运行您想要限制为该组 ID 的任何程序。因此,在您的情况下,您将始终使用教程中描述的方法运行 wine。

  • 谢谢,就是这样!但我不明白,为什么有人把你投下票。你的回答正是我所希望的。 (2认同)

小智 16

创建一个群组并成为其中的一员

addgroup wino

adduser $USER wino
Run Code Online (Sandbox Code Playgroud)

现在输入一个iptables规则来阻止该组使用互联网,您可以在终端上输入此内容并按回车键

iptables -A OUTPUT -m owner --gid-owner wino -j REJECT
Run Code Online (Sandbox Code Playgroud)

为了使这个规则与systemd使用每次开机后运行iptables-persistent saveiptables-persistent软件包。

如果使用 rc-local:您可以将规则放在/etc/rc.local. 确保该文本文件中的最后一行显示exit 0.

用法示例:

sg wino "wine executablename.exe"
Run Code Online (Sandbox Code Playgroud)

您需要在" "程序名称之前输入 和 葡萄酒。

  • 我已经编辑了你的 `usermod` 命令来添加 `-a`。如果没有 `-a`,你最终会从所有其他补充组(如 `admin`、`cdrom` 等)中删除用户!使用 `addgroup`/`adduser` 也更方便。 (2认同)

mik*_*kun 9

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"MigrateProxy"=dword:00000001
"ProxyEnable"=dword:00000001
"ProxyHttp.1.1"=dword:00000000
"ProxyOverride"="<local>"
"ProxyServer"="http://NonExistantProxyAddress:80"
"User Agent"="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"
Run Code Online (Sandbox Code Playgroud)

添加到您的 wine(或 playonlinux 虚拟驱动器)注册表:

确实比使用组更简单的解决方案(& 不会阻止 pol 连接,只是应用程序)

归功于http://ootput.wordpress.com/2011/06/06/block-wine-applications-from-the-internet/comment-page-1/

编辑:等待评论中的极客添加注册表设置以阻止 TCP,同时:http : //support.microsoft.com/en-us/kb/154596(听起来像将端口设置为零或创建一些配置错误确实会阻止 tcp/udp 连接;但我还没有遇到这个问题,所以我不需要解决)

  • 这只会阻止对尊重代理设置的软件的访问,大多数显然不会......所以这不是一个有效的解决方案! (3认同)
  • 不,这不对。例如; 任何仅通过 TCP 连接到 host:port 的软件都将继续运行。HTTP 代理设置是程序必须承认和尊重的东西。如果您不相信我,请获取/编译通过 TCP 连接到另一台主机的软件并亲自查看。 (2认同)

Hi-*_*gel 7

只需将应用程序运行为:

\n\n
systemd-run --scope -p IPAddressDeny=any wine myapp.exe\n
Run Code Online (Sandbox Code Playgroud)\n\n

允许IPAddressDeny=\xe2\x80\xa6拒绝对一组 IPv4 和 IPv6 地址的访问。特殊值any禁用对所有基于 IP 的协议的访问,例如 TCP、UDP、ICMP、SCTP 等。

\n\n

使用示例(注意:对于这个演示,我必须修复wine ping,因为它对我来说超时了)

\n\n
systemd-run --scope -p IPAddressDeny=any wine myapp.exe\n
Run Code Online (Sandbox Code Playgroud)\n\n

对于答案的其余部分,我将从unix.se 上的其他类似答案中复制文本:

\n\n
\n\n

注意:这会要求您输入密码,但应用程序会以您的用户身份启动。不要让这个欺骗您认为该命令需要sudo,因为这会导致该命令在 root 下运行,而这几乎不是您的本意。

\n\n

如果您不想输入密码(毕竟,您已经拥有自己的资源,为什么需要密码来限制它们),您可以使用--user选项,但是要实现此功能,您需要启用 cgroupsv2 支持,这现在需要使用systemd.unified_cgroup_hierarchy内核参数启动。

\n