4

日经小白问题: IPv6 下直接暴露在公网上,是不是安全方面有隐患?

 2 years ago
source link: https://www.v2ex.com/t/802867
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  信息安全

日经小白问题: IPv6 下直接暴露在公网上,是不是安全方面有隐患?

  acess · 23 小时 49 分钟前 · 2625 次点击
以前经常听说 IPv6 地址空间大,所以 IPv4 下 zmap 这种高效扫描工具能不到 1 个小时就扫遍全网这种事情已经不再可能了。

怎么说呢?

我觉得这种说法貌似是有道理,但稍微想想……

有几个人上网从来就没点击过什么奇怪的链接?(虽然有安全意识的人都知道链接不能乱点)
也许一不小心、甚至毫无察觉的情况下(比如劫持、XSS ),就访问了什么奇奇怪怪的网站,然后——对方很显然就直接能知道你的 IPv6 地址了啊。

虽然这样是守株待兔的,只能被动等着你上钩,相比主动扫描影响确实相对小多了,但并不是说就没影响了。

相比而言,如果是 NAT 下的 IPv4,那他获取到的只是 NAT 网关的 IP 地址,并不能直接借助这个地址深入到内网(当然如果是 UPnP 、NAT-PMP 之类映射了那当然还是能访问到内网,不过我想有不少本来就不想暴露在公网的东西,从一开始就并不会支持 UPnP 之类的)。


关于 Windows 防火墙……根据我现在的理解:

貌似 Windows 防火墙是分“区域”的,默认是“公用网络”,比如我连了公共 WiFi 这种,我肯定不希望我的端口直接暴露出去;但有的时候,比如 BT 下载之类的,暴露一下可能也无妨。
如果是我把笔记本背回家了,连的是家里的 WiFi,那么就切换到了“专用网络”。在家里的话,比如 SMB 共享,我希望可以在别的设备上访问,于是很多时候这些端口就是暴露的。

于是问题来了,其实在“专用网络”下,我也不想让我家局域网之外的其他设备访问我的 SMB 共享不是么。

我看了一下 Windows 防火墙高级设置,里面好像也没有限制远端 IP 地址。那么……

如果是 NAT 下的 IPv4,那么“天然”就是只有我局域网里的手机啦、平板啦、第二台电脑啦……只有这些我家里的、自己的设备才能访问我的 SMB 共享。
如果是 IPv6 呢?没有 NAT 了,那我的 SMB 共享岂不就是直接暴露在公网上了么?


(当然也可以吐槽“专用网络”这个分类本身就太过笼统……比如一个学生,在寝室里愿意开放给舍友访问的东西,和放暑假回家后、在家里愿意开放给家里人访问的东西,很可能并不重合……但这其实是另一码事了)


搜了一下,貌似有人说 OpenWrt 默认的防火墙规则,会默认阻止入站连接。但是运营商的光猫什么的就不好说了,貌似一般就是没有 NAT 、也没有这样的防火墙规则。(稍微搜了一下,貌似也有光猫可能有阻止入站的规则?但好像这个甚至都没在 web 界面给出选项,都需要 telnet 上去直接改配置文件,更遑论细粒度地放行某个设备或端口)

( IPv6 的 NAT 是啥情况我也不知道。IPv4 貌似很多时候提到的都是 NAPT,而且即便能打洞大多也是端口限制型锥形 NAT 这种,貌似只要不是刻意打洞就并不怎么暴露。IPv6 据说是“真正的 NAT”,也就是说地址是一一映射的?那么也许 v6 的 NAT 很多时候并不能起到阻挡入站连接的效果了)

(另外其实我还在想一个问题,就是 IPv4 的 NAT 下有 UPnP 、NAT-PMP 之类协议能自动设置端口映射——虽然这些协议好像还是不能解决多层嵌套“级联”的问题……那么 IPv6 呢?如果说都是像(据说) OpenWrt 那样防火墙规则直接默认阻挡入站了,那如果一个 app 想像之前 UPnP 一样“开洞”要怎么办呢?是不是只能弹窗要求用户手动去设置?)


另外其实我还想到一件事,就是 Electrum 这个 BTC 钱包曾经爆过的一个高危漏洞,在浏览器访问恶意网页时,因为 Electrum 钱包在运行时就监听本地端口开了一个 RPC 服务器,可以被浏览器里的恶意网页(比如 JS 代码?)访问,于是就可以直接窃取钱包里的资金或私钥(如果钱包没设密码的话,如果设置了密码也仍然有隐私泄露问题,也就是 BTC 地址可以被得知)。
当时的修正措施是让 Electrum 的 RPC 服务器在响应头里加入一条来禁止 CORS,不过当时就有人说这样修得其实并不算彻底。

一方面可以说,像 Electrum 的这个 RPC 漏洞,就是被动守株待兔的典型,并不是主动去“扫描”,但很显然一样很致命、很严重。

但另一方面其实也可以说,Electrum 已经监听本地回环地址 127.0.0.1 了(如果我没记错的话),于是这反过来可以挑战上文提到的“IPv6 相比 NAT 下的 IPv4 会增加暴露面”这个概念——不说什么 IPv4 还是 IPv6 、是公网 IP 还是内网私有 IP,即便你监听的是本地回环地址又如何,不是照样有可能“暴露”么,虽然这大概因为浏览器环境所以受到一定的限制(大概就是……只能是 HTTP(S)、FTP 之类等浏览器能支持的协议,而且还会受 CORS 限制?)

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK