为什么 Debian 默认没有启用防火墙?

为什么 Debian 默认没有启用防火墙?

我正在使用带有 KDE 的 Debian 9.1,我想知道为什么它没有安装并默认启用防火墙? gufw 甚至不在 DVD1 的软件包中。

人们是否期望连接到互联网安装防火墙?为什么?即使所有端口默认情况下都是关闭的,各种安装、更新或下载的程序也可以打开它们(或不打开它们?),我希望未经我的许可,不要有任何一个比特离开我的机器。

编辑:所以我刚刚发现iptables但我想问题仍然是 iptables,因为防火墙对于大多数人来说似乎相当陌生,它的默认规则、它的可访问性和易用性以及事实上,默认情况下,任何 iptable 规则都会在重新启动时重置

答案1

首先,Debian 倾向于假设您知道自己在做什么,并试图避免为您做出选择。

Debian 的默认安装相当小且安全——它不会启动任何服务。甚至添加到安装中的标准可选附加功能(例如,Web 服务器、ssh)通常也相当保守和安全。

因此,在这种情况下不需要防火墙。 Debian(或其开发人员)假设,如果您启动其他服务,您将知道如何保护它们,并且可以在必要时添加防火墙。

也许更重要的是,Debian 避免让您选择使用哪些防火墙软件。有多种选择——应该使用哪一种?即使对于基本的防火墙设置,应该选择什么设置?话虽如此,iptables它是优先级重要的,所以它是默认安装的。但当然,Debian 不知道你想要如何配置它,所以它不会为你配置它。无论如何,您可能更喜欢使用iptables的后继者。nftables

另请注意,防火墙功能已在一定程度上内置于 Linux 内核中;例如nftablesnetfilter。 Debian 和其他 Linux 发行版确实提供了用户空间工具来iptables管理该功能。但你如何处理它们取决于你。

请注意,这些实体的命名并不一致。引用维基百科nftables页面:

nftables 通过用户空间实用程序 nft 进行配置,而 netfilter 通过实用程序 iptables、ip6tables、arptables 和 ebtables 框架进行配置。

答案2

首先,我确实想重复已经说过的话:Debian 迎合的用户群体与许多其他主流发行版(尤其是 Ubuntu)截然不同。 Debian 面向那些了解系统如何工作的人,并且不害怕时不时地修补以换取对系统的高度控制。例如,Ubuntu 迎合了非常不同的目标受众:那些只想让事情正常运行而不(真正)关心幕后发生的事情的人,当然也不想修改系统配置来使事情变得简单工作。这会影响最终系统的许多方面。从某种程度上来说,这就是 Linux 的优点之一。相同的基础系统可用于构建满足不同需求的环境。请记住,Ubuntu 是 Debian 的衍生版本,并且至今仍与 Debian 保持着极大的相似性。

gufw 甚至不在 DVD1 的软件包中。

第一个磁盘包含最流行的软件,这是通过选择从已安装的系统收集匿名统计信息来确定的。 gufw 不在第一个磁盘上这一事实仅表明这不是 Debian 中非常流行的(就已安装基础而言)软件包。如果您更喜欢它而不是其他选择,一旦您拥有了网络并运行的基本系统,它也很容易安装。

人们是否希望在安装防火墙之前连接到互联网?为什么?

嗯,一方面,我相信 Debian 允许通过网络安装。 (不仅在正常安装期间从网络下载软件包,而且从字面上看从与正在安装的主机不同的主机开始安装。)默认配置有限制性规则集的防火墙可能会存在干扰的风险。与在安装过程中需要传出网络访问的安装相同,其目的不仅仅是下载正在安装的软件包的最新版本。

另一方面,就是我上面提到的;通常,Debian 希望您知道自己在做什么。如果您需要防火墙,您应该能够自己配置它,并且您应该比 Debian 维护者更了解您的特殊需求是什么。在这方面,Debian 有点像 OpenBSD,只是没有那么极端。 (当在让基础系统更安全一点和让它更可用一点之间做出选择时,OpenBSD 维护者实际上总是选择安全性。这在他们的基础系统安全漏洞统计中有所体现,但对可用性有巨大影响。)

当然,还有技术细节:防火墙支持包含在基础系统中。只是内核默认将其设置为所有许可的规则集,并且基本 Debian 安装不会执行任何操作来更改此设置。您可以运行几个命令来限制流量。

即使所有端口默认情况下都是关闭的,各种安装、更新或下载的程序也可以打开它们(或不打开它们?),我希望未经我的许可,不要有任何一个比特离开我的机器。

首先,防火墙通常用于限制传入交通。如果你想限制外向的交通,这是一个完全不同的问题;当然可行,但需要根据您的具体情况进行更多调整。默认阻止传出流量防火墙,使常用端口保持打开状态(其中常用端口可能是 ftp/20+21、ssh/22、smtp/25、http/80、https/443、pop3/110、imap/143 和一堆其他的),再加上允许与已建立的会话相关的流量,并不比默认允许的防火墙更安全。最好确保基本系统安装的软件包集仅限于一组易于理解、配置安全的交付软件包,并允许管理员在需要更多保护时设置适当的防火墙规则。

第二,一个封闭的端口(一个使用 TCP RST/ACK 响应 TCP SYN,通常报告为“连接被拒绝”——这通常是支持 TCP/IP 的实时系统上 TCP 端口的默认状态,没有相反的配置,也没有软件侦听)不是一个重大漏洞,即使在未通过单独防火墙连接的系统上也是如此。全封闭配置中唯一的重大漏洞是内核的 TCP/IP 堆栈实现中是否存在漏洞。但数据包已经通过内核中的 netfilter (iptables) 代码,并且那里也可能潜伏着一个错误。导致另一端“连接被拒绝”的响应逻辑非常简单,我很难相信它会成为错误的主要来源,更不用说与安全相关的错误了;与网络服务相关的错误几乎总是存在于服务本身中,如果它们没有运行或除了环回接口之外没有监听任何东西,那么攻击者实际上没有任何东西可以连接和利用。

第三,软件包通常以 root 身份安装,您(软件包)可以在您不知情的情况下更改 iptables 规则。因此,您不会获得像要求人工管理员手动允许流量通过主机防火墙那样的东西。如果您想要这种隔离,您应该首先将防火墙与其保护的主机分开。

所以我刚刚发现了 iptables,但我想问题仍然是 iptables,因为防火墙对于大多数人来说似乎相当陌生,它的默认规则以及可访问性和易用性。

我实际上会说对面的是真的; iptables 作为防火墙是众所周知的。它几乎可以在您可能遇到的所有 Linux 系统上使用。 (大约在 2000 年左右,它在 Linux 内核版本 2.4 的开发过程中取代了 ipchains。如果我没记错的话,对于防火墙的常见用例,两者之间最大的用户可见变化是内置规则链现在以大写字母命名,例如INPUT,而不是小写字母,例如input。)

如果有的话,iptables 可以做一些事情其他与未广泛使用或理解的防火墙相比。例如,它可以用来重写IP数据包它们穿过防火墙。

答案3

如果我要猜测,如果我没有真正成为一代 Debian 开发者和维护者的头脑,我的猜测会是这样的:

Debian 主要被设计为服务器操作系统,sid 和测试分支的主要目的都是创建下一个稳定分支,并且在冻结时,它们被冻结,新的稳定分支是从测试中获取的,就像发生在 Stretch 身上。

鉴于此,我进一步假设,我必须与一位系统管理员朋友确认这一点,数据中心防火墙是外部设备,安全性要高得多(至少有人希望是这种情况)),对服务器来说,并处理主要的防火墙任务。即使在带有路由器的小型局域网上,情况也是如此,路由器就是防火墙,我在我的任何系统上都没有使用任何本地防火墙规则,为什么要这样做呢?

我认为人们可能会将本地安装的桌面 Debian 或办公室或家里的单个文件服务器与连接到 Debian 的实际工作混淆,我认为 Debian 主要侧重于生产使用。

我对此不太确定,但在使用 Debian 十多年之后,作为开发人员和 Debian 在很多方面的支持者,这是我的感觉。

我可以检查一下,因为这实际上是一个很好的问题,但我的猜测是,真正的网络在网络的入口点设有防火墙,而不是基于每台机器,或者至少,这是可能驱动的基本思想德班。另外,当然,如果不是这种情况,系统管理员将使用 Chef 之类的东西在每台计算机上设置防火墙规则,而不依赖于任何默认安装,这不是您想要的值得信赖,例如,默认的 Debian ssh 配置不是我个人默认使用的配置,例如,它们默认允许 root 登录,如果系统管理员发现这是一种不好的做法,则需要纠正它。

也就是说,我认为 Debian 存在一种能力假设,而其他一些发行版中可能不存在这种能力。例如,您可以更改您想要更改的内容、创建图像、使用站点管理软件管理它们等等。这些只是一些可能性。例如,您永远不会使用 DVD 来创建新服务器,至少不会在生产中使用,您可能会使用诸如最小网络安装之类的东西,这就是我经常使用的(例如,我曾经使用过更小的映像) ,但他们停止了)。如果您看一下基本安装中包含的内容,您就会对 Debian 认为重要的内容和不重要的内容有一个很好的了解。例如,ssh 就在那里。 Xorg 不是,Samba 不是。

人们还可能会问为什么他们又回到 GNOME 作为默认桌面,但这些只是他们做出的决定,他们的用户基本上会忽略这些决定,因为你可以按照你想要的方式制作系统(也就是说,为了获得 Xfce 桌面,我不知道)不安装 Xdebian(如 Xubuntu),我只安装 Debian core、Xorg 和 Xfce,然后就可以了)。类似地,如果我想要防火墙,我会对其进行配置,了解其来龙去脉等,但我个人并不期望 Debian 能够启用该功能,如果它是这样的话,实际上对我来说会有点烦人。也许我对此的看法反映了您也可能在 Debian 内部找到的一种共识。

另外,当然,实际上不存在 Debian 这样的东西,有各种安装映像、网络安装、完整安装,这些都从准系统、仅 cli 到相当完整的用户桌面。例如,生产用户可能会创建映像,按照用户想要的方式进行配置,我知道如果我要设置 Debian 服务器,我会从原始基础知识开始,然后进行构建,直到它满足我的要求。

然后你就进入了网络服务器的世界,这是一个完全不同的蜡球,它们有非常不同的安全问题,正如我一位与地下黑客有密切关系的老朋友所说,运行网络服务器而不知道如何保护安全的人也可以称为服务器由破解者拥有的人。

答案4

人们是否期望在此之前连接到互联网

是的

安装防火墙?

即使所有端口默认关闭

抱歉,他们不是。rpcbind似乎默认情况下已安装、启用并在网络上侦听。

编辑:我相信这已在最新的安装程序中得到修复,即 Debian 9 (Stretch)。但对于以前版本的 Debian,我觉得在公共 WiFi 网络上安装(然后更新)它们不太安全。

为什么?

我怀疑人们有一个假设

  1. 本地网络不会攻击您的网络服务
  2. 您的本地网络和更广泛的互联网之间已经存在防火墙。

虽然后者是消费者路由器的常见做法,但我不认为这是有保证的。毫不奇怪,前一个假设没有被记录下来。这也不是明智之举。

在我看来,rpcbind 的问题是一个更普遍的问题的例子。人们可以尝试推广 Debian,它有很多很酷的功能。但 Debian 落后于 Ubuntu 的精致程度和友好程度,或者甚至可以说,对于那些使用它的人来说它的可靠性如何了解这些细节。

下载的程序可以打开它们(或不能?),并且我希望在未经我许可的情况下不要离开我的机器。

在开始下载和运行您不确定它的作用的随机软件之前,您当然可以自由地安装防火墙:-p。

我部分同意,安装 Linux 却找不到为众所周知的安全层设置的任何接口,这令人震惊。我个人发现了解默认 Windows 防火墙的设置方式很有用。它希望您能够“信任”家庭网络,在更新的版本中,快速安装甚至会跳过询问您是否信任当前网络。主要目标似乎是区分家庭网络、不受保护的连接(例如直接连接的调制解调器)和公共 WiFi 网络。请注意,UFW 无论如何都不支持这一点。

Fedora Linux 独自尝试在firewalld. (软件包似乎在 Debian 中也可用...)。它的 GUI 并不像 GUFW 那样“友好”。

相关内容