路由器的 DMZ 主机与私有访问:哪个更适合 Mac?
路由器的 DMZ 主机会把每条未匹配的入站请求转发到一台计算机。在启用之前,请先与窄规则或私有路径比较。
家用路由器上的 DMZ 主机设置听起来像一个安全区域,实际行为却是把所有流量都转出去。任何从互联网到达、又没有被其他规则匹配到的内容,都会被发往选定的 LAN 地址。这是让入站服务跑起来的捷径,而不是私密访问一台 Mac 的设计。在启用之前,请先与窄规则或私有路径比较。
DMZ 设置真正做了什么
在大多数消费级固件中,这个标签只意味着一件事:未匹配的入站流量会被转发到指定的主机。它不会创建独立的子网、防火墙区域或隔离边界。被选中的计算机会收到路由器不知道该怎么处理的一切。
正因如此,这个设置在修好一项坏掉的服务上非常有效,在限制还有哪些东西进来上却非常糟糕。路由器只是在宽泛地执行被要求的事。固件里没有任何东西能把你要的请求和你不想要的请求分开。
三种 Mac 角色,三扇正门
在打开任何东西之前,先列出 Mac 实际在做什么。向外拨号的客户端根本不需要任何入站规则。服务器需要自己的监听器、自己的身份验证和一条窄通道。屏幕共享目标需要一条私有路径,以及该服务允许的用户列表。这是三种不同的设计,而 DMZ 设置对哪一种都不太合适。
sudo lsof -nP -iTCP -sTCP:LISTEN在 Mac 上运行这条命令并读取列表。如果 没有任何东西在监听,那么任何入站规则都不会让服务出现。
比较的是暴露面,不是便利性
全量转发会把攻击面扩大到 Mac 暴露的每一个端口,包括你忘了还开着的服务。窄转发只把一个端口暴露给互联网,并且仍然需要应用自身的身份验证。私有路径不向公网暴露任何东西,代价是访问前必须先建立隧道。
在这里便利并不是决定因素,因为便利的选项同时也是那个会敞开着失败的选项。如果 Mac 只向外连接,那么入站开口的正确数量就是零,这句话值得在开一个端口之前读两遍。选择别的做法意味着接受你不需要的暴露。把这份暴露写下来,选择通常就自己清楚了。
在不中断的情况下替换全量转发
替换全量转发在成为防火墙变更之前,是一次盘点工作。查清目前有哪些合法服务依赖这条宽规则,并确认替代方案对每一个都有效。然后删除 DMZ 条目,只添加设计所需的窄规则或私有访问。过渡期间把两个入口都开着,正是临时变通变成永久的途径。
无论走哪条路径,都要保留主机防火墙和服务自身的身份验证。隧道保护的是传输,而不是恰好坐在同一台机器上的公开监听器。维护和更新仍然决定服务是否安全,而一次固件更新可能会悄悄改变宽规则放行什么。厂商关于 DMZ 主机功能 的文档用更少的字表达了同样的暴露问题。