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


15

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

人们应该获得防火墙之前连接到Internet 吗?为什么?即使默认情况下关闭所有端口,各种已安装,更新或下载的程序也可以打开(或不打开)它们,我希望即使没有一点点未经我许可也可以离开我的机器。

编辑:所以我只是发现关于iptables的问题,但我想这个问题仍然与iptables一样,因为防火墙对于大多数人来说还是相当陌生,其默认规则,可访问性和易用性以及默认情况下会重置任何iptable-rules的事实重新启动时


很好的问题。Ubuntu服务器甚至没有iptables预装!我想人们只是想将端到端原理带到第7层极限……
rlf

8
您有什么理由声明iptables对大多数人“不了解”?
SaAtomic


1
“即使默认情况下关闭所有端口,各种已安装,更新或下载的程序也可以打开它们……” -如果您认为恶意,则已安装,更新或下载的程序也可以清除防火墙规则。
marcelm '17年

1
例如@mYnDstrEAm,因为当sudo您输入密码时,您授予这些程序的安装脚本根访问权限sudo apt-get install package ...
Cat

Answers:


28

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

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

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

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

还要注意,Linux内核已经在一定程度上内置了防火墙功能。例如nftablesnetfilter。Debian和其他Linux发行版确实提供了用户空间工具,例如iptables用于管理该功能的工具。但是您对他们的处理取决于您自己。

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

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


4
@sourcejedi据我所知,至少从马铃薯(这是我开始使用它)开始,Debian的默认安装就非常相似。因此,我不确定您的意思。
法赫姆·米莎

1
@FaheemMitha以前的默认设置不是让它接受来自外部的连接:)
hobbs

1
+1 尝试避免为您做出选择。。有许多不同的工具可用于管理防火墙,每种工具各有优缺点,每种都有不同的用例。防火墙的配置方式甚至更多。深度防御(例如,独立的防火墙/路由器和每个主机的iptables规则)很好,但是如果debian安装程序假定知道我的网络设置以及我想要的防火墙规则,我会感到非常烦恼。这是我知道并决定的。
cas

4
不错的答案,尽管“ Debian避免为您做出选择,因为有很多选择可用”对我来说没有多大意义。Debian已经做出了选择(例如,当我选择“ Web服务器”时,通过lighttpd选择Apache,通过rpm进行deb ...显然是这样),这些地方都可以选择。发行的重点不是做出选择之一吗?
gd1

1
@ gd1是真的;Debian确实提供并安装了默认值,例如Exim。但是它们很容易更改。我想iptables也是Debian的默认设置。但是Debian不能独自做的一件事就是用户的非显而易见的系统配置。
Faheem Mitha

12

首先,我要重复一遍:Debian与许多其他主流发行版(尤其是Ubuntu)相比,迎合的用户群体截然不同。Debian专为了解该系统工作原理并且不惧怕不时修改以换取对系统的高度控制的人而设计。例如,Ubuntu迎合了非常不同的目标受众:那些只希望事情能够工作并且不(真正)关心引擎盖下发生的事情的人,当然也不想修改系统配置来制造东西工作。这影响了所得系统的许多方面。从某种程度上说,这就是Linux的美。可以使用相同的基本系统来构建满足不同需求的环境。请记住,Ubuntu是Debian的衍生产品,

gufw甚至不在DVD1的包装中。

第一张磁盘包含最流行的软件,这取决于从已安装系统中选择加入的匿名统计信息确定。gufw不在第一个磁盘上这一事实仅表明,在Debian中,这不是一个非常受欢迎的软件包(就安装的数量而言)。一旦您的基本系统能够联网并且可以运行,如果您更喜欢替代系统,则安装起来也很容易。

人们应该在获得防火墙之前连接到Internet吗?为什么?

好吧,一方面,我相信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系统上都提供了该功能。(在导致Linux内核版本2.4的开发过程中(大约在2000年左右),它替换了ipchains。如果我没记错的话,对于防火墙的常见用例,两者之间最大的用户可见的变化是内置规则链现在以大写字母(如INPUT)而不是小写字母(如input)命名。

如果有的话,iptables的可以做的事情其他比它的防火墙没有被广泛使用或理解。例如,它可以用于在IP数据包通过防火墙之前重写它们。


有关问题的出色且详细的摘要。但是,您写道:“第二,即使在未通过单独防火墙连接的系统上,封闭端口也不是一个重大漏洞。” 您可能要写“开放”吗?如果不是,您能否进一步说明封闭端口是多么脆弱?谢谢。
Faheem Mitha

“如果我没记错的话,它在内核2.5开发中的某些时候取代了ipchains。这就像15年前。” -2.3,实际上。这使其更接近
Jules

很好的答案,表示同意。我还要补充一点,当您从可能的最小安装iso(当前为netinstall)进行安装时,安装过程的一部分实际上是通过apt从网络上安装软件包,因此您的安装并非开箱即用。当前,这正是您想要的,尽管您也可以选择从磁盘安装,所以安装确实需要立即可用的网络连接。但是这个答案非常好。
Lizardx

1
迟来的评论:“请记住,Ubuntu最初是Debian的分支,直到今天仍与Debian保持着很大的相似性。” 据我所知,Ubuntu仍然源自Debian。这不是叉子。
法赫姆·米莎

6

如果我要猜测,而实际上没有成为一代Debian开发人员和维护人员的负责人,我的猜测将是:

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

鉴于此,我将进一步假设,我必须与sysadmin朋友确认这一点,即数据中心防火墙是服务器的外部设备,具有更高的安全性(至少有人希望是这种情况)),并处理主防火墙任务。即使在带有路由器的小型LAN上,情况就是这样,路由器就是防火墙,我在我的任何系统上都不使用任何本地防火墙规则,为什么?

我认为也许人们会将本地安装的桌面Debian或办公室或家庭中的单个文件服务器与连接到Debian的实际工作混淆了,我认为这主要集中在生产用途上。

我对此不太确定,但是在使用Debian十多年之后,我在许多方面既是Debian的开发者又是支持者。

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

也就是说,我认为Debian可能具有某些其他发行版中不具备的能力。在这种情况下,您将更改要更改的内容,创建图像,使用站点管理软件进行管理等等。这些只是一些可能性。例如,您永远不会使用DVD创建新服务器,至少永远不会在生产环境中使用,您可能会使用类似最小化的netinstall之类的东西,例如,这就是我一直使用的方式(例如,我以前使用的是更小的映像,但他们停止了使用)。如果您看一下该基本安装中包含的内容,您将对Debian认为至关重要的内容和不重要的内容有一个不错的了解。例如,ssh在那里。Xorg不是,Samba不是。

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

加上当然,实际上并没有Debian这样的东西,有各种安装映像,netinstall,完整安装,这些全都从准系统,cli到合理完整的用户桌面而变化。生产用户可能会创建图像,例如,将以用户想要的方式对其进行配置,我知道如果我要设置Debian服务器,那么我将从原始基础知识开始,并进行构建,直到达到我想要的为止。

然后,您将拥有一个Web服务器的世界,这是一个完全不同的蜡球,它们所面临的安全性问题非常不同,而且,正如我的一位老朋友与地下黑客有很好的联系,他说,有人在不知道如何保护服务器的情况下运行Web服务器它也可以称为服务器由cracker拥有的人。


我通常不喜欢这样长的答案:),但是您会涉及到非常重要的一点。如果运行Web服务器,则它需要接受与Web服务器的连接。配置第二块软件说出什么价值是值得怀疑的:是的,我想接受发送到Web服务器的Web请求。而且这种用例似乎比台式机更受Debian内部的关注。
sourcejedi '17

sourcejedi,大声笑,如果时间不长,我就不会再问网络服务器问题了,那是我最后添加的内容。但是在这种情况下,您的用户显然是新手,经验不足,他们可能没有意识到不同的发行版涵盖了截然不同的用例和用户。因此,他们基本上没有任何信息,到那时,很难知道他们所知道和不知道的东西,因此,太多单词了。还是足够。很难知道。
Lizardx

“当然,实际上没有Debian这样的东西”。我不确定您的意思是什么-绝对有Debian这样的东西。这是Debian项目产生的操作系统。从技术上讲,它是一个操作系统家族,但是,当然,Linux变种非常占主导地位。有多种安装方法,但是它们都安装相同的系统。当然,您可以自由选择要安装的部分。
法赫姆·米莎

它不是指一件事。从技术上讲,您所说的是我的意思。也就是说,Debian是这个人所指的DVD安装程序映像吗?它是您在netinstall上获得的核心安装吗?它是针对特定体系结构的apt软件包池吗?是它的sid池吗?测试池?等等。就用户如何定义事物而言,我要说的是没有这样的事物,实际上是项目Debian,它负责管理定义apt和.deb的打包规则和包。顺便说一下,这就是为什么我喜欢它的原因,这是定义项目的规则。
Lizardx '17

很难解释,但是我会尝试:我没有安装'Debian',而是从netinstall iso安装说Debian Testing / Buster,64位版本。所以Debian是保护伞,可以运行并创建我安装的东西。这些年来,我逐渐意识到为什么我如此喜欢Debian,它们有严格的规则,而这些规则对我来说真正定义了Debian,而不是Ubuntu。因此,举例来说,如果您从Debian中获取一组软件包并创建Ubuntu,那么它何时将不再是Debian?它是相同的程序包,至少有一段时间了,我建议,当您停止遵循dfsg规则时,它将停止。
Lizardx '17

5

通常的想法是,除了复杂的设置之外,在大多数系统上都不需要防火墙。

当您安装服务器时,SSH正在运行。没有别的应该在监听,您可能希望能够连接到ssh。

安装网络服务器时,您会希望该网络服务器可用,不是吗?对于基本调整,您可以将Web服务器仅绑定到专用LAN接口,例如192.168.172.42(您的本地LAN IP),而不是0.0.0.0(所有ips)。您仍然不需要防火墙。

当然,一切都可以打开大于1024的端口,但是当您拥有不受信任的软件(或不受信任的用户)时,您应该做的不仅仅是安装防火墙。当您需要不信任某些事物或某人时,您需要一个安全概念,而不仅仅是软件。因此,当您需要积极考虑防火墙解决方案时,这是一件好事。

现在当然有更复杂的场景。但是,当您实际拥有其中之一时,您确实需要自己对防火墙进行微调,并且不要让像ufw这样的半自动系统来做。或者甚至可以使用ufw,但后来您决定了它,而不是操作系统的默认设置。


1
IIRC,用于个人计算机的防火墙是对Windows 95安全漏洞之一的回应,该漏洞是默认情况下所有端口都处于打开状态。在大多数操作系统上,此后以及之后,仅当实际上有服务在监听该端口时,该端口才打开。其次,防火墙通常配置为静默丢弃数据包,而不是明确拒绝数据包,因此很难分辨IP地址上是否存在系统。
bgvaughan

我不确定在没有监听服务的情况下打开端口的含义。数据包应该去哪里,为什么这是一个安全漏洞?而且,将数据包丢弃在防火墙中不会隐藏您,但更明显的是,有一台装有防火墙的计算机。当系统不在线时,系统之前的路由器会发送“无法访问”的答案。当您的计算机在那里时,它不会(接受,拒绝或丢弃数据包时都不会)。您可以通过traceroute对系统执行操作来自己检查效果。
allo

1
当我开始向您发送路由时,我可能会看到7跳。第一个是我的电脑,最后一个是您网络的入口点。当您的PC离线时,第6跳会发送“无法访问”答复。当您的PC已连接但有防火墙时,第6跳会发送正常回复,而第7跳会丢弃(或拒绝)该数据包。而且您无法控制第六跳,因此您无法在其中伪造或丢弃数据包。
allo

1
“即使没有正在运行的服务,较旧的Windows系统(例如95和我认为XP的系统)也可以将所有端口保持打开状态”,我绝对不知道保持端口不监听就意味着什么。当一个数据包到来时,你可以将它发送到侦听程序,reject它或drop它。没有“不听话就开放端口”的概念。也许您的意思是删除(接受而不发送给程序)。
allo

1
就我个人而言,默认情况下我拒绝防火墙以及安全的后备。但是我知道什么时候让debian让用户安装防火墙。我做了很多实验,其他人选择了taskel中的Web服务器并完成了。关于win95的事情一无所知,但我想无论如何今天都没关系;)。
allo

4

人们是否应该在连接到Internet之前

要防火墙吗?

即使默认情况下所有端口都关闭

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

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

为什么?

我怀疑人们有一个假设

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

尽管后者是常见的做法,例如通过消费类路由器,但我认为这不能保证。毫不奇怪,以前的假设没有记录在案;这也不是明智的选择。

我认为,rpcbind的问题是一个更一般性的例子。人们可以尝试推广Debian,它具有许多很酷的功能。但是Debian在Ubuntu的优美和友好性,甚至可以说对于想要学习这些细节的人的可靠性方面落后于Ubuntu 。

下载的程序可以打开它们(或不能打开它们),我希望在没有我允许的情况下不要离开我的机器。

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

我部分同意,安装Linux并没有为众所周知的安全层设置任何接口令人担忧。我个人认为了解默认Windows防火墙的设置很有用。它希望您能够“信任”家庭网络,而在最新版本中,快速安装甚至会跳过询问您是否信任当前网络的问题。主要目标似乎是要区分家庭网络,未受保护的连接(例如直接连接的调制解调器)和公共wifi网络。请注意,UFW始终​​不支持此功能。

仅Fedora Linux尝试在中提供类似的功能firewalld。(软件包似乎在Debian中也可用...)。可以说,它的GUI不像GUFW那样“友好”。


我很高兴您对ubuntu的评论用“针对尝试学习的人”进行了限定,我认为从某种意义上说,这是实际的答案,debian不是为该团体创建的系统,而ubuntu的存在实际上可能归结为这一事实。作为不尝试学习的人,例如,这就是我总是更喜欢debian而不是ubuntu的确切原因。我曾经使用本地防火墙,但最后,我开始将它们更多地看作玩具而不是真正的公用程序,我指的是gui东西,而不是iptables等。您认为1.和2.点涵盖了此决定背后的思想,我同意这个决定。
Lizardx

我编辑了@Lizardx,以强调使用rpcbind +公共wifi网络发现这种情况的令人沮丧的情况:)。我想我知道您的评论来自何处,但我并不完全同意。我很高兴可以在回购中使用大量的步枪,但是我希望有一个定义的默认值(或多个默认值,例如,如果您将XFCE视为流行的“ not GNOME3”选项),则可以作为可靠的基础。
sourcejedi '17

公共wifi显然是用例,其中系统防火墙对普通用户而言至关重要。但是,如其他答案所示,Debian假设您安装并偶然使用它就知道这一点。也许更接近FreeBSD或OpenBSD如何看待这个问题?仅对我而言,我不是Debian默认软件包组选择的忠实拥护者,我从未见过他们创建我真正想要运行的东西,不像XUbuntu或各种Debian旋转创建了不错的默认安装。话虽如此,我同意,不是GNOME 3 XFCE的选项将非常不错。
Lizardx

4
gufw太可怕了。ufw几乎没有任何意义,难道它不将规则存储在XML中吗?啊。即使是手动iptables规则集也更易于处理。
user2497'8

3

Unix的传统哲学一直是KISS,并且运行/公开最少的服务。

还必须显式安装一些服务,甚至有些服务已绑定到localhost,并且必须启用它们以使其在本地网络/ Internet中可见(MySQL,MongoDB,snmpd,ntpd,xorg ...)。与默认情况下启用防火墙相比,这是一种更明智的方法。

您只需要防火墙从特定角度带来的复杂性,而在公司路由器或家庭网关设备后面的需求可能会减少,因此,明智的做法是让用户自行决定。防火墙与许多其他安全软件一样,如果管理不当,也会给人以错误的感觉。

Debian的定位向来是技术性更强的人,他们知道iptables是什么。还有几个众所周知的包装器,文本或图形模式界面,可以轻松安装。

最重要的是,它附带的软件太多还是太少都引起了人们的意见。对于资深用户而言,默认情况下会附带安装过多的软件和服务,尤其是在服务器模式下。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.