Linux防火墙屏蔽ip6,观点|Linux 发行版们应该禁用 IPv4 映射的 IPv6 地址吗?

从各方面来看,互联网向 IPv6 的过渡是件很缓慢的事情。不过在最近几年,可能是由于 IPv4 地址资源的枯竭,IPv6 的使用处于上升态势。相应的,开发者也有兴趣确保软件能在 IPv4 和 IPv6 下工作。但是,正如近期 OpenBSD 邮件列表中的讨论所关注的,一个使得向 IPv6 转换更加轻松的机制设计同时也可能导致网络更不安全——并且 Linux 发行版们的默认配置可能并不安全。

地址映射

IPv6 在很多方面看起来可能很像 IPv4,但它是一个不同地址空间的不同的协议。服务器程序想要接受使用二者之中任意一个协议的连接,必须给两个不同的地址族分别打开一个套接字——IPv4 的 AF_INET 和 IPv6 的 AF_INET6。特别是一个程序希望在主机上的使用两种地址协议的任意接口都接受连接的话,需要创建一个绑定到全零通配符地址(0.0.0.0)的 AF_INET 套接字和一个绑定到 IPv6 等效地址(写作 ::)的 AF_INET6 套接字。它必须在两个套接字上都监听连接——或者有人会这么认为。

多年前,在 RFC 3493,IETF 指定了一个机制,程序可以使用一个单独的 IPv6 套接字工作在两个协议之上。有了一个启用这个行为的套接字,程序只需要绑定到 :: 地址从而在所有接口上接受使用这两个协议的连接。当创建了一个 IPv4 连接到该绑定端口,源地址会像 RFC 2373 中描述的那样映射到 IPv6。所以,举个例子,一个使用了这个模式的程序会将一个 192.168.1.1 的传入连接看作来自 ::ffff:192.168.1.1(这个混合的写法就是这种地址的通常写法)。程序也能通过相同的映射方法打开一个到 IPv4 地址的连接。

RFC 要求默认实现这个行为,所以大多数系统这么做了。不过也有些例外,OpenBSD 就是其中之一;在那里,希望在两种协议下工作的程序能做的只能是创建两个独立的套接字。但一个在 Linux 中打开两个套接字的程序会遇到麻烦:IPv4 和 IPv6 套接字都会尝试绑定到 IPv4 地址,所以不论是哪个,后者都会失败。换句话说,一个绑定到 :: 指定端口的套接字的程序会同时绑定到那个端口上的 IPv6 的 :: 和 IPv4 的 0.0.0.0 地址。如果程序之后尝试绑定一个 IPv4 套接字到 0.0.0.0 的相同端口上时,这个操作会失败,因为这个端口已经被绑定了。

当然有个办法可以解决这个问题;程序可以调用 setsockopt() 来打开 IPV6_V6ONLY 选项。一个打开两个套接字并且设置了 IPV6_V6ONLY 的程序应该可以在所有的系统间移植。

读者们可能对不是每个程序都能正确处理这一问题没那么震惊。事实证明,这些程序的其中之一是网络时间协议(Network Time Protocol)的 OpenNTPD 实现。Brent Cook 最近给上游 OpenNTPD 源码提交了一个小补丁,添加了必要的 setsockopt() 调用,它也被提交到了 OpenBSD 中了。不过那个补丁看起来不大可能被接受,最可能的原因是因为 OpenBSD 式的理由(LCTT 译注:如前文提到的,OpenBSD 并不受这个问题的影响)。

安全担忧

正如上文所提到,OpenBSD 根本不支持 IPv4 映射的 IPv6 套接字。即使一个程序试着通过将 IPV6_V6ONLY 选项设置为 0 来显式地启用地址映射,它的作者也会感到沮丧,因为这个设置在 OpenBSD 系统中无效。这个决定背后的原因是这个映射带来了一些安全隐忧。攻击打开的接口的攻击类型有很多种,但它们最后都会回到规定的两个途径到达相同的端口,每个端口都有它自己的控制规则。

任何给定的服务器系统可能都设置了防火墙规则,描述端口的允许访问权限。也许还会有适当的机制,比如 TCP wrappers 或一个基于 BPF 的过滤器,或一个网络上的路由器可以做连接状态协议过滤。结果可能是导致防火墙保护和潜在的所有类型的混乱连接之间的缺口造成同一 IPv4 地址可以通过两个不同的协议到达。如果地址映射是在网络边界完成的,情况甚至会变得更加复杂;参看这个 2003 年的 RFC 草案,它描述了如果映射地址在主机之间传播,一些随之而来的其它攻击场景。

改变系统和软件正确地处理 IPv4 映射的 IPv6 地址当然可以实现。但那增加了系统的整体复杂度,并且可以确定这个改动没有实际地完整实现到它应该实现的范围内。如同 Theo de Raadt 说的:

有时候人们将一个糟糕的想法放进了 RFC。之后他们发现这个想法是不可能的就将它丢回垃圾箱了。结果就是概念变得如此复杂,每个人都得在管理和编码方面是个全职专家。

我们也根本不清楚这些全职专家有多少在实际配置使用 IPv4 映射的 IPv6 地址的系统和网络。

有人可能会说,尽管 IPv4 映射的 IPv6 地址造成了安全危险,更改一下程序让它在实现了地址映射的系统上关闭地址映射应该没什么危害。但 Theo 认为不应该这么做,有两个理由。第一个是有许多破旧的程序,它们永远不会被修复。而实际的原因是给发行版们施加了压力去默认关闭地址映射。正如他说的:“最终有人会理解这个危害是系统性的,并更改系统默认行为使之‘secure by default’。”

Linux 上的地址映射

在 Linux 系统,地址映射由一个叫做 net.ipv6.bindv6only 的 sysctl 开关控制;它默认设置为 0(启用地址映射)。管理员(或发行版们)可以通过将它设置为 1 来关闭地址映射,但在部署这样一个系统到生产环境之前最好确认软件都能正常工作。一个快速调查显示没有哪个主要发行版改变这个默认值;Debian 在 2009 年的 “squeeze” 中改变了这个默认值,但这个改动破坏了很多的软件包(比如任何包含 Java 的程序),在经过了几次的 Debian 式的讨论之后,它恢复到了原来的设置。看上去不少程序依赖于默认启用地址映射。

OpenBSD 有以“secure by default”的名义打破其核心系统之外的东西的传统;而 Linux 发行版们则更倾向于难以作出这样的改变。所以那些一般不愿意收到他们用户的不满的发行版们,不太可能很快对 bindv6only 的默认设置作出改变。好消息是这个功能作为默认已经很多年了,但很难找到被利用的例子。但是,正如我们都知道的,谁都无法保证这样的利用不可能发生。

本文由 LCTT 原创编译,Linux中国 荣誉推出 linisi.svg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux和pe修复win10启动项,pe下如何重建win10引导?pe下win10引导修复图文教程

[文章导读] 随着win10系统的流行,越来越多的小伙伴经常遇到win10系统引导丢失的情况,我们知道win10系统现在采用的是uefi引导,以前的一些修复工具都只能修复传统模式mbr格式下的硬引导,但对于uefi引导不是很清楚,uefi引…

c语言课程设计大作业模版,c语言课程设计报告模板下载

c语言课程设计报告模板是一款专业的设计模板,对于在大学有需要些设计报告的朋友,可以下载这款模板作为参考,了解设计报告的需求,基本上毕业的论文设计也是在这个基础上严格要求的,欢迎下载使用。C语言介绍C语言是一门面…

c语言如何把变量按位颠倒,求答案,用C语言编程,用户输入一个正整数,把他的各位数字前后颠倒,并输入点到后的结果...

满意答案q15173278975推荐于 2017.11.26采纳率:58% 等级:13已帮助:5665人用字符串处理很简单#include #include void main (){int n,i;char s[20];scanf("%d", &n);sprintf(s,"%d", n);printf("%d\n",s…

中南大学12月13日考c语言,中南大学2010级C语言试卷

中南大学考试试卷2010 -- 2011 学年 1 学期 时间110分钟学时学分 考试形式:班级 学号 姓名 总分100分,占总评成绩70 %一、选择题(每小题1.5分,共计30分)1. C语言中变量定义与使用的关系是 。A) 必须先定义,后使用 B)可以先使用,后定义 C) 可以…

android activity动态显示不出来,uiautomatorviewer 获取不到动态页面解决办法

以前玩 PC 最近刚搞 app 测试,费好大劲环境装好,高兴的点击 uiautomatorviewer.bat 想去抓取页面元素,尴尬的是首页就直接报错。Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesnt exis…

android xml 画下划线,android – strings.xml:如何从标记前面的空格中删除下划线?...

我的strings.xml中有以下行:This is a test在我的活动xml中,我在TextView中引用了这个字符串:android:layout_width"wrap_content"android:layout_height"wrap_content"android:text"string/test_string" />奇怪的是,当…

android开发基本知识,Android应用开发基本知识点汇总

Activity一生命周期4种状态running/paused/stopped/killed生命周期Activity发动onCreate->onStart->onResume点Home回来主界面onPause->onStop再次回到原ActivityonRestart->onStart->onResume退出ActivityonPause->onStop->onDestroy进程优先级前台&…

华为鸿蒙os2.0系统何时搭载手机,鸿蒙OS 2.0系统正式发布!余承东:明年华为系手机将会搭载...

原标题:鸿蒙OS 2.0系统正式发布!余承东:明年华为系手机将会搭载由于众所周知的原因,华为手机这两年过的很艰难,尤其是今年力度大了后,华为手机接下来可能面临无芯片可用的严重情况。而除了一些硬件外&#…

html气泡写法,制作CSS气泡框

气泡状文本框,是一种很生动的网页设计手段。它可以用来表示用户的发言。也可以用来作为特定信息的提示符。DVD租借网站Netflix,还用它显示碟片的详细信息。制作CSS气泡框的传统方法,需要5张背景图片,分别是:*tl.gif&am…

html教程padding,HTML CSS——margin和padding的学习

一、什么是边距CSS中的边距指的是当前元素border与周围其它元素border的距离(或者称为空间)。二、什么是内边距,什么是外边距代码2-1:html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.d…

html5的交互标签,html5里交互元素的使用方法

在H5里,交互元素就是和用户进行互动的元素,这一部分非常的重要,并且和之前的JS控制的效果不同,H5相比于HTML增加了很多的交互元素,比如隐藏显示注脚就是其中的一个交互效果。交互元素的使用body{font-size: 12px;}span…

组策略 控制台登录计算机用用户,Window 2008 R2组策略之一——组策略管理控制台...

组策略管理在windows域管理中占有重要地位,本身也不是新的内容了。但微软在Windows2008中终于集成了一个非常好用的组策略管理工具——组策略管理控制台。并且为原有的组策略添加了新的元素。本文从介绍组策略管理控制台入手,力求通过比较通俗的语言&…

计算机桌面上的输入法状态栏,输入法状态栏

2009-05-02今天不知怎么的,把工具栏里输入法的图标给搞丢了。请问大侠怎样找回?请指点,谢谢任务栏系统托盘区的输入法图标不见了,点击运行输入Ctfmon。exe 回车即可。任务栏没有输入法的解决方法(先右击任务栏/工具栏/勾选语言栏试…

html按钮分享功能实现,一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)...

前几天由于工作需要制作一个分享按钮,考虑到后续其他项目可能也会用到,于是就打算写成插件化,正好也给我自己的插件jquery.hooray增加一个新的功能,为了不浪费大家时间,我先把demo放出来,如果觉得能用到&am…

北京理工大学珠海学院专业计算机类,北京理工大学珠海学院计算机学院网络工程专业...

北京理工大学珠海学院计算机学院网络工程专业发表时间:2019-10-10作者:211大学网日前,在计算机学院网络工程专业林开荣、张海燕老师的带领下,6名来自北京理工大学珠海学院2016级网络工程专业学生参加了珠海市职业技能竞赛云计算工…

国防科技大学计算机学院教员,我国最好的四所科技大学,第一名排名世界前列,还有一所是铁饭碗...

分享亲子快乐,交流教育知识,欢迎关注陆北老师2021年泰晤士世界大学排名揭晓,中国科技大学进入了前一百名,而南方科技大学也进入了前三百名。其实我国的科技类大学,以中国科技大学为首,有四所的实力非常雄厚…

计算机图形学基础教程论文,计算机图形学小论文

为毕业生写计算机图形学小论文提供计算机图形学小论文范文参考,涵盖硕士、大学本科毕业论文范文和职称论文范文,包括论文选题、开题报告、文献综述、任务书、参考文献等,是优秀免费计算机图形学小论文网站。计算机图形学的发展及应用探讨摘要计算机图形学…

哔哩哔哩服务器在哪个文件夹,哔哩哔哩缓存在哪个文件夹 具体操作步骤

我们在手机b站中缓存了视频,如果想要找到源文件,就必须要在手机的内部存储中去寻找,实际上,手机b站缓存的视频隐藏的很深,其查看路径为:文件管理/本地/内部存储/android/data/tv.danmaku.bili/download/“随…

超算和服务器性能,烽火GPU高性能服务器助力武大超算中心建设

近日,继“武汉大学100G高速网络及网格计算集群采购项目”中标后,烽火GPU高性能服务器再次中标“武汉大学GPU集群采购项目”。作为行业首例,此次烽火将在武大超算中心同时提供Intel KNL以及NVIDIA GPU超算解决方案,两种顶尖HPC方案…

fastai学习:01_intro Questionnaire

fastAI Questionnaire 感觉还挺多的,怪不得说每一课要额外8小时进行学习。 1.Do you need these for deep learning? Lots of math T / F Lots of data T / F Lots of expensive computers T / F A PhD T / F F F F F 2.Name five areas where deep learning is …