以前经常听说 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 限制?)
怎么说呢?
我觉得这种说法貌似是有道理,但稍微想想……
有几个人上网从来就没点击过什么奇怪的链接?(虽然有安全意识的人都知道链接不能乱点)
也许一不小心、甚至毫无察觉的情况下(比如劫持、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 限制?)