V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cnbatch
V2EX  ›  程序员

IPv6 的 IPv4 映射地址是否真的有安全问题?

  •  
  •   cnbatch · 2022-07-06 20:07:38 +08:00 · 1200 次点击
    这是一个创建于 653 天前的主题,其中的信息可能已经有所发展或是发生改变。

    IPv6 的 IPv4 映射地址(IPv4-mapped IPv6)是指这种:

    IPv4 地址:192.168.100.1

    能够在 IPv6 写成 ::FFFF:192.168.100.1

    正常来讲,应用程序只要关闭“IPv6 only”选项(当然了,操作系统也得支持),那么就可以用一个 IPv6 socket 同时处理 IPv4 的连接。


    在目前活跃的各个操作系统当中,OpenBSD 早在 2012 年就十分明确地表明不支持这种操作,理由是“出于安全考虑”。

    For security reasons, OpenBSD does not route IPv4 traffic to an AF_INET6 socket, and does not support IPv4 mapped addresses, where IPv4 traffic is seen as if it comes from an IPv6 address like “::ffff:10.1.1.1”. Where both IPv4 and IPv6 traffic need to be accepted, bind and listen on two sockets.

    只不过,不但 Windows 和 Linux 都支持这种映射地址,就连同样是 BSD 家族的 FreeBSD 和 NetBSD 也一样支持,我实在想不出 OpenBSD 说的 security reasons 到底是什么样安全顾虑。

    能够搜到的理由“解释”也就来自这两个地方(都是 2015 年的):

    https://lwn.net/Articles/688462/ (这篇文章被人机翻成 https://linux.cn/article-7823-1.html

    还有 https://stackoverflow.com/questions/32051957/ipv6-why-are-ipv4-mapped-addresses-a-security-risk

    大意就是,防火墙未必能够正确处理规则匹配。

    只不过都已经这么多年了,规则匹配什么的早就已经弄好了呀。


    所以疑问来了,真的有安全问题吗?

    6 条回复    2022-07-06 22:21:06 +08:00
    ragnaroks
        1
    ragnaroks  
       2022-07-06 20:49:25 +08:00
    我觉得没有;应该是当时的防火墙不能正确处理,现在应该可以了
    blankmiss
        2
    blankmiss  
       2022-07-06 20:57:08 +08:00
    不知道欸 我关闭 IPV6 了
    ysc3839
        3
    ysc3839  
       2022-07-06 21:00:03 +08:00 via Android
    我觉得是可能用户不想开放 IPv4 端口,这个功能会在用户不知情的情况下开放
    raysonx
        4
    raysonx  
       2022-07-06 21:30:17 +08:00
    应该是为了避免用户以为自己只监听了 IPv6 端口,所以只配置了 IPv6 防火墙,而实际 IPv6 端口和 IPv4 端口全部都监听了这种情况。
    cnbatch
        5
    cnbatch  
    OP
       2022-07-06 22:13:20 +08:00
    @ysc3839
    @raysonx
    对于这些情况,其实 OpenBSD 完全可以默认开启 net.ipv6.bindv6only ,然后在文档某个章节单独列出说明白,需要用单 socket 双栈的用户再自己主动打开。

    直白地说就是,“这个功能我设置成默认关闭了,想用的话可以自己打开,风险自担,选择权在你(用户)手上”。

    毕竟,主动选择用 OpenBSD 的人基本不会是小白。像这样一刀切直接不支持,有点像是 OpenBSD 开发团队把用户当小白🙃

    也许他们真的认为,跟他们自己相比,用户们都是小白吧😑
    cnbatch
        6
    cnbatch  
    OP
       2022-07-06 22:21:06 +08:00
    @cnbatch 一时手滑,应该是,“需要用单 socket 双栈的用户再自己主动修改 net.ipv6.bindv6only”
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   979 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:36 · PVG 03:36 · LAX 12:36 · JFK 15:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.