如何将网络活动限制为仅限 Mac 上的 VPN 并防止不安全的互联网活动?

如何将网络活动限制为仅限 Mac 上的 VPN 并防止不安全的互联网活动?

我使用 Mac OS 并连接到 VPN 以隐藏我的位置和 IP(我在网络系统首选项中选中了“通过 VPN 连接发送所有流量”框),我希望保持匿名并且不想泄露我的真实 IP,因此使用 VPN。我有一个名为 pearportVPN 的首选项,当我上网时,它会自动将我连接到我的 VPN。问题是,当我使用 Airport(或其他方式)连接到互联网时,在我的 Mac 登录我的 VPN 之前,我有几秒钟不安全的互联网连接。因此,在我连接到互联网和登录我的 VPN 之间的几秒钟内无意中暴露我的真实 IP 地址只是时间问题。

有什么方法可以阻止任何不通过 VPN 的来往于 Mac 的流量,这样除非我登录 VPN,否则什么都无法连接?我怀疑我需要找到一个第三方应用程序来阻止除通过服务器地址之外的所有流量,也许是 Intego Virus Barrier X6 或 little snitch,但恐怕我不确定哪个是正确的,也不知道该如何配置它们。

任何帮助都将不胜感激。谢谢!

答案1

您可以使用防火墙来 (a) 限制除发往 VPN 服务器的流量之外的所有出站网络流量,然后 (b) 允许通过 VPN 接口的任何流量。除非您使用静态寻址,否则 (a) 中的限制必须包括协商 DHCP 租约的权限。

您应该能够使用命令行中的“ipfw”实用程序完成此操作。通过“安全”偏好设置窗格提供的防火墙(我认为是 OS X 10.5 中的新功能)不允许您阻止出站流量。

有关的基本信息ipfw可以在FreeBSD 手册

一旦你想出了一个合适的防火墙脚本,你就需要安排它在系统启动时激活。 、 和 上的手册页launchd可能launchctl都会launchd.plist有所帮助。

答案2

我使用的是 Snow Leopard,并使用了下面的 shell 脚本。它仅允许通过 PPTP VPN 隧道的流量。请注意,它不会对本地 DHCP 流量做出任何例外。

#!/bin/sh

# Clean any pre-existing rules
ipfw -f flush

# Allow any kind of traffic to go through ppp0 (our VPN interface)
ipfw -f add allow all from any to any via ppp0 

# Allow any to talk to GRE protocol (used with PPTP)
ipfw -f add allow gre from any to any 

# Allow any to talk to any remote server on PPTP port 1723
ipfw -f add allow tcp from any to any dst-port 1723

# Check states (below allows established tcp connections to vpn server via \
# port 1723 back through the firewall
ipfw -f add check-state
ipfw -f add allow tcp from any to any established

# Closing Up
ipfw -f add 65533 reject log udp from any to any 
ipfw -f add 65534 deny log ip from any to any 

答案3

请注意,即使是 ipfw 规则也无法保护您免受许多常见泄漏的影响,包括 DNS 泄漏、IPv6 泄漏以及网络启动和默认路由更改之间的时间滞后!我在 Mac 上使用 waterroof 来处理防火墙配置,以下规则集应导入 Waterroof:

IPFW IPv4 规则

添加 00010 拒绝任何到任何的 icmp

添加 00100 允许从任意到任意的 ip 通过 lo*

添加 00110 拒绝来自 127.0.0.0/8 的 ip 到任何

添加 00120 拒绝任何到 127.0.0.0/8 的 ip

添加 00130 允许从任意到 224.0.0.251 目标端口 5353 的 udp

添加 00140 允许从 224.0.0.251 到任意目标端口 5353 的 udp

添加 00300 拒绝来自 224.0.0.0/3 的 ip 到任何

添加 00400 拒绝从任何到 224.0.0.0/3 的 tcp

添加 00500 拒绝从任何到任何目标端口 0 的 TCP

添加 00600 检查状态

将 01000 允许来自我的 tcp 添加到任何保持状态

将 01001 允许来自我的 UDP 添加到任何保持状态

将我的 25000 个允许 IP 添加到“在此处插入 VPN 主机”

在“在此处插入 VPN 主机”中添加 25100 允许 IP

添加 33300 拒绝从任何到任何已建立的 TCP

添加 65000 允许从任意 67 到任意 dst-port 68 的 udp

在 icmptypes 8 中添加 65100 拒绝任何向我发送的 icmp 日志

添加 65200 拒绝任何到任何的 UDP

添加 65300 拒绝任何到任何的 icmp

添加 65400 拒绝任何 IP 到任何

添加 65535 允许 ip 从任意到任意

IPFW IPv6 规则

添加 02070 拒绝任何到任何的 ipv6

添加 33300 拒绝日志 ipv6-icmp 从任何到任何 icmptype 128

来源:http://blog.c22.cc/2011/07/31/protecting-your-osx-with-ipfw-and-littlesnitch/

关于 DNS 泄漏,您可以使用: http://opendns.github.io/dnscrypt-osx-client/

DNSCrypt 是一种保护 DNS 流量“最后一英里”的方法,可以解决 DNS 协议中一整类严重的安全问题,例如篡改、中间人攻击和最后一英里的 DNS 流量监听。

相关内容