题 我为什么要防火墙服务器?


请注意: 我没兴趣把它变成一场火焰战!我知道很多人对这个问题抱有坚定的信念,这在很大程度上是因为他们在防火墙解决方案上付出了很多努力,也因为他们被灌输到相信他们的必要性。

但是,我正在寻找那些人的答案 专家 在安全方面。我相信这是一个重要的问题,答案不仅仅是我自己和我工作的公司。我已经运行我们的服务器网络多年没有妥协,没有任何防火墙。我们没有任何安全妥协  本来可以用防火墙防止。

我想我在这里工作的时间太长了,因为当我说“服务器”时,我总是指“提供给公众的服务”,而不是“秘密的内部计费数据库”。因此,我们的任何规则  任何防火墙都必须允许访问整个互联网。此外,我们的公共访问服务器都位于与我们办公室分开的专用数据中心。

其他人 问了一个类似的问题,我的回答被投票给负数。这让我相信投票的人不是真的理解我的答案,或者我不了解足够的安全性来做我目前正在做的事情。

这是我的服务器安全方法:

  1. 按照我的操作系统 安全指南  之前 将我的服务器连接到Internet。

  2. 使用TCP包装器将对SSH(和其他管理服务)的访问限制为少量IP地址。

  3. 使用监视此服务器的状态 穆宁。并在其默认配置中修复Munin-node固有的严重安全问题。

  4. Nmap我的新服务器(也是在将我的服务器连接到Internet之前)。如果我要防火墙这个服务器,这应该是应该限制传入连接的确切端口集。

  5. 在服务器机房中安装服务器并为其提供公共IP地址。

  6. 使用我的操作系统的安全更新功能保持系统安全。

我的理念(以及问题的基础)是强大的基于主机的安全性消除了防火墙的必要性。总体安全理念表明,即使您拥有防火墙,仍然需要强大的基于主机的安全性(请参阅 安全指南)。这样做的原因是,将公共服务转发到服务器的防火墙可以使攻击者完全没有防火墙。服务本身是易受攻击的,并且由于向整个Internet提供该服务是其操作的要求,因此限制对其的访问不是重点。

如果有  服务器上可用的端口不需要整个Internet访问,然后该软件需要在步骤1中关闭,并在步骤4中验证。攻击者是否应该通过易受攻击的软件成功进入服务器并打开通过端口本身,攻击者可以(并且确实)通过在随机端口上建立出站连接来轻松击败任何防火墙。安全点不是为了在成功攻击后为自己辩护 - 这已经被证明是不可能的 - 这是为了让攻击者首先出局。

有人建议除了开放端口之外还有其他安全考虑因素 - 但对我而言,这听起来像是在捍卫一个人的信仰。无论防火墙是否存在,任何操作系统/ TCP堆栈漏洞都应该同样容易受到攻击 - 基于端口直接转发到该操作系统/ TCP堆栈的事实。同样,在服务器本身上运行防火墙而不是在路由器上运行防火墙(或者更糟糕的是,在两个地方),似乎增加了不必要的复杂层。我理解“安全层层叠叠”的理念,但有一点就是通过将X层胶合板堆叠在一起,然后在所有层上钻一个洞来建造屋顶。另一层胶合板不会通过你故意制造的那个洞来阻止泄漏。

说实话,我看到防火墙对服务器有用的唯一方法就是它有动态规则阻止所有服务器与已知攻击者的所有连接 - 比如垃圾邮件的RBL(巧合的是,这几乎就是我们的邮件服务器所做的) 。不幸的是,我找不到任何防火墙那样做。下一个最好的事情是IDS服务器,但这假设攻击者不会首先攻击您的真实服务器,并且攻击者无法探测您的整个网络 之前 攻击。此外,已知这些产生大量假阳性。


101
2017-11-12 21:11




那么在服务器之间传递的所有流量都是加密的? - GregD
爱它。本地防火墙规则几乎总是伏都教。 - unixtippse
您的网络中是否还有桌面/员工?你怎么用他们? - Brandon
这个问题非常适合 security.stackexchange.com - Olivier Lalonde
@routeNpingme:看起来我的原帖中没有包含那个花絮。我们所有的服务器都需要向公众开放,并且位于专用数据中心。如果您的办公室是您的数据中心,我认为您的服务器网络和办公室网络之间必须有防火墙。在这种情况下,我在谈论服务器网络 - 为什么防火墙具有完全公共访问权限? - Ernie


答案:


防火墙的优点:

  1. 您可以过滤出站流量。
  2. 第7层防火墙(IPS)可以防止已知的应用程序漏洞。
  3. 您可以集中阻止某个IP地址范围和/或端口,而不是尝试确保没有服务侦听每台计算机上的该端口或拒绝使用 TCP Wrappers
  4. 如果您必须处理安全性较低的用户/管理员,防火墙可以提供帮助,因为它们可以提供第二道防线。如果没有它们,必须绝对确保主机是安全的,这需要所有管理员都有良好的安全性理解。
  5. 防火墙日志将提供中央日志并帮助检测垂直扫描。防火墙日志可以帮助确定某个用户/客户端是否正在尝试定期连接到所有服务器的同一端口。要在没有防火墙的情况下执行此操作,必须组合来自各种服务器/主机的日志以获得集中视图。
  6. 防火墙还附带反垃圾邮件/防病毒模块,这些模块也增加了保护。
  7. OS独立安全性。基于主机OS,需要不同的技术/方法来使主机安全。例如,TCP Wrappers可能在Windows计算机上不可用。

最重要的是,如果您没有防火墙并且系统受到损害,那么您将如何检测它?试图在本地系统上运行某些命令'ps','netstat'等不能被信任,因为这些二进制文件可以被替换。来自远程系统的'nmap'无法保证保护,因为攻击者可以确保root-kit仅在选定时间接受来自所选源IP地址的连接。

硬件防火墙在这种情况下有所帮助,因为与主机操作系统/文件相比,更改防火墙操作系统/文件非常困难。

防火墙的缺点:

  1. 人们认为防火墙会处理安全问题,不会定期更新系统并阻止不需要的服务。
  2. 他们花了。有时需要支付年度许可费。特别是如果防火墙具有防病毒和反垃圾邮件模块。
  3. 额外的单点故障。如果所有流量都通过防火墙并且防火墙出现故障,则网络将停止。我们可以拥有冗余防火墙,但之前的成本点会进一步放大。
  4. 状态跟踪对接受所有传入连接的面向公众的系统没有任何价值。
  5. 状态防火墙在DDoS攻击期间是一个巨大的瓶颈,并且通常是第一个失败的因素,因为它们试图保持状态并检查所有传入的连接。
  6. 防火墙无法查看加密流量。所有流量 应该 端到端加密,大多数防火墙在公共服务器前增加很少的价值。可以为一些下一代防火墙提供私钥来终止TLS并查看流量内部,但这会增加防火墙对DDoS的敏感性,并打破TLS的端到端安全模型。
  7. 操作系统和应用程序比防火墙更快地修补漏洞。防火墙供应商通常会处理已知问题 年份 如果没有修补,修补防火墙群集通常需要许多服务和出站连接的停机时间。
  8. 防火墙远非完美,许多都是出了名的越野车。防火墙只是在某种形式的操作系统上运行的软件,除了(通常很慢的)CPU之外,可能还有额外的ASIC或FPGA。防火墙存在漏洞,但它们似乎提供了很少的工具来解决它们。因此,防火墙会增加应用程序堆栈的复杂性和额外的难以诊断错误的来源。

52
2017-11-13 02:36



Above all this if you do not have firewall and system is compromised then how would you detect it? 入侵检测不是防火墙的工作。 HIDS(基于主机的入侵检测系统)可以更好地处理这项工作,该系统独立于防火墙。 - Steven Monday
Syslog服务器不需要第5项。如果有的话,最好将防火墙日志发送到系统日志服务器,以防攻击者设法破坏防火墙并删除其日志。然后攻击者必须妥协两个系统只是为了删除日志,他们可能没有为此做好准备(尤其是自动攻击)。同样,如果您的所有系统都具有集中式日志记录,则可以获得比防火墙日志更好的攻击详细信息。 - Ernie
我的观点是,自从HIDS驻留在主机上,我们无法信任它的输出。例如,即使我们使用加密安全的“tripwire”作为基于主机的IDS,攻击者也可以始终用受损版本替换所有tripwire二进制文件(twadmin,tripwire,twprint等),这些版本永远不会报告入侵。即使我们尝试从其他系统复制库/二进制文件,也可以运行一个进程监视这些受损的二进制文件,并在更换或更新时再次使用损坏的版本替换它们。防火墙独立于主机,在这种情况下可以信任。 - Saurabh Barjatiya
这个答案被更受欢迎的答案所接受,因为它为使用防火墙提供了更好,更全面的原因。而不是,就此而言。 - Ernie
状态包检测防火墙不属于服务器前面。它们是DDoS攻击中的一个巨大责任,通常是攻击失败的第一件事。 - rmalayter


TCP Wrappers可以称为基于主机的防火墙实现;你正在过滤网络流量。

对于攻击者在任意端口上进行出站连接的点,防火墙也会提供一种控制传出流量的方法;正确配置的防火墙以适合与系统相关的风险的方式管理入口和出口。

关于防火墙如何缓解任何TCP漏洞的问题,您不熟悉防火墙的工作原理。思科有一大堆可供下载的规则,用于识别以导致特定操作系统问题的方式构建的数据包。如果你抓住Snort并开始使用正确的规则集运行它,你也会收到关于这种事情的警报。当然,Linux iptables可以过滤掉恶意数据包。

基本上,防火墙是主动保护。你越远离主动,你最有可能发现自己处于一个问题的反应而不是防止问题。与专用防火墙一样,集中保护边界,使事情变得更容易管理,因为您有一个中心阻塞点而不是在任何地方复制规则。

但没有一件事必然是最终的解决方案。一个好的安全解决方案通常是多层的,你在边界有一个防火墙,在设备上有TCP包装器,也可能在内部路由器上有一些规则。您通常应该保护网络免受Internet的影响,并保护节点之间的互通。这种多层方法不像是在多张胶合板上钻一个洞,更像是装了一对门,所以入侵者有两个锁而不是一个;这被称为物理安全中的人员陷阱,并且大多数每个建筑物都有一个原因。 :)


33
2017-11-12 22:04



此外,如果他们潜入建筑物内部并为外面的朋友打开内门,他们还必须解锁并打开外门。 (即没有外部防火墙,进入您服务器的人可以直接打开它,而外部防火墙仍会阻止来自外部的开放端口) - Ricket
@Ricket:也许他们可以,但是现代攻击者不会为这样的事情烦恼。攻击者除了将您的服务器添加到僵尸场之外,还必须特别关注您的站点。 - Ernie
@Ernie - 不,它只需要存在就可以自动探测Warez的免费空间,客户数据库,财务信息,密码以及被添加到僵尸网络 - 但即使这样也可能很糟糕 - 一些管理员会高兴地将你的IP黑屏如果它看起来像你主持僵尸。 - Rory Alsop
TCP Wrappers could be arguably called a host-based firewall implementation +1为一个很好的答案。 - sjas


(你可能想读“没有防火墙的生活“)

现在:如果没有补丁发布的遗留系统怎么样?那么在你需要的时候无法将补丁应用到N机器上,而同时你可以在网络中的较少节点(防火墙)中应用这些补丁呢?

辩论防火墙的存在或需求是没有意义的。真正重要的是您必须实施安全策略。为此,您将使用将实现它的任何工具,并帮助您管理,扩展和发展它。如果需要防火墙这样做,那很好。如果他们不需要也没关系。真正重要的是拥有可靠且可验证的安全策略实施。


15
2017-11-12 21:31



嘿。在过去的8年里,我一直在运行我们的服务器网络而没有防火墙。我本可以有 书面 “没有防火墙的生活”,但无论如何,他做得更好,并且运行的网络比我大。 - Ernie
@Ernie - 我想你可能很幸运。你怎么知道你没有受到损害?对我的许多客户进行的法医调查结果发现了妥协,有时可追溯到几个月,而攻击者发现了个人和财务信息,客户详细信息,知识产权,商业计划等。正如Sean所说 - 进行适当的安全审计。 - Rory Alsop
实际上,除了我们的服务器网络与我们的办公室网络在物理上是分开的事实之外(因此,即使在每个服务器上都有root访问权限,也不能从中收集真正敏感的数据),我已经能够发现每一个妥协我们自从我从这里开始以来一直没有。我可以继续谈论我开始时存在的恐怖表演,但我没有足够的空间。 :)我只想说大多数攻击都不是微妙的,而且微妙的攻击也是可以发现的。哦,是的,用户权限分离是你的朋友。 - Ernie


你的大多数解释似乎都反驳了对防火墙的需求,但除了设置一个防火墙的时间不多外,我看不出有任何解决方案。

在这个词的严格意义上,很少有东西是“必需品”。安全性更多的是关于设置所有封锁。打入服务器所需的工作量越多意味着成功攻击的可能性就越小。你想让它比其他地方更容易打入你的机器。添加防火墙可以完成更多工作。

我认为关键用途是安全性的冗余。防火墙的另一个优点是你可以简单地删除尝试连接到任何端口而不是响应被拒绝的请求 - 这将使攻击者的nmapping更加不方便。

根据您的问题的实际注意事项,对我来说最重要的是您可以将SSH,ICMP和其他内部服务锁定到本地子网以及限制传入连接以帮助缓解DOS攻击。

“安全点不是为了在成功攻击后保护自己 - 已经证明这是不可能的 - 这是为了让攻击者首先出局。”

我不同意。限制损害赔偿同样重要。 (在这个理想下为什么哈希密码?或者将你的数据库软件粘贴在与你的网络应用程序不同的服务器上?)我认为古老的说法“不要把所有鸡蛋都放在一个篮子里”在这里适用。


9
2017-11-12 21:30



嗯,你是对的,我没有任何缺点。缺点:网络复杂性增加,单点故障,单一网络接口带来瓶颈。同样,在一个防火墙上进行的管理错误可能会导致整个网络崩溃。在与服务器机房进行20分钟的旅行时,众神禁止在此期间锁定自己。 - Ernie
这可能只是纯粹的修辞,但当你说“安全更多是关于设置所有封锁你可以”时,我宁愿听到“安全更多是关于默认阻止一切,并小心打开严格的最低限度来操作”。 - MatthieuP
+1全面的安全计划涵盖预防,检测和响应。 - Jim OHalloran


Should I firewall my server? 好问题。似乎没有必要在网络堆栈顶部打一个防火墙,它已经拒绝了对除了少数合法开放的端口之外的所有端口的连接尝试。如果操作系统中存在允许恶意制作的数据包破坏/利用主机的漏洞,则会出现防火墙 在同一台主机上运行 防止漏洞利用?好, 也许 ...

这可能是在每台主机上运行防火墙的最有力理由:防火墙 威力 防止网络堆栈漏洞被利用。这是一个足够强大的理由吗?我不知道,但我想有人可以说,“没有人因安装防火墙而被解雇。”

在服务器上运行防火墙的另一个原因是要解除这两个强烈相关的问题:

  1. 从哪里,到哪个端口,我接受连接?
  2. 哪些服务正在运行并正在侦听连接?

如果没有防火墙,运行的服务集(以及tcpwrappers等的配置)将完全确定服务器将打开的端口集,以及将从谁接受连接。基于主机的防火墙为管理员提供了额外的灵活性,可以在更广泛地提供新服务之前以受控方式安装和测试新服务。如果不需要这种灵活性,那么在服务器上安装防火墙的理由就更少了。

最后一点,我总是添加一个未在安全检查表中提及的项目,这是一个基于主机的入侵检测系统(HIDS),例如: 助手 要么 萨温节。一个好的HIDS使入侵者很难对系统进行不必要的更改并且仍然无法检测到。我相信所有的服务器都应该运行某种HIDS。


8
2017-11-12 23:10



+1提及HIDS系统。 - Sam Halicke
HIDS很棒 - 如果你打算设置并忘记它。永远不要添加或删除帐户。否则,绝大多数HIDS日志都会列出您今天所做的事情,并且很快就会被忽略。 - Ernie
他们说,没有痛苦,没有收获。在具有大量更改的服务器上,可以过滤掉预期的噪音,让您专注于意外情况。 - Steven Monday


防火墙是一种工具。它本身并不能保证安全,但它可以作为安全网络中的一层做出贡献。这并不意味着你需要一个,我当然担心那些盲目地说“我必须得到防火墙”而不理解为什么他们这么想,谁不理解防火墙的优点和缺点的人。

我们可以说有很多工具我们不需要......是否可以运行没有防病毒软件的Windows计算机?是的,它是...但是拥有一个很好的保险层。

我会对防火墙说同样的话 - 无论你能说些什么,它们都是一个很好的保险级别。它们不能替代修补,锁定机器,禁用不使用的服务,记录等等......但它们可以是一个有用的补充。

我还建议这个等式会有所改变,具体取决于你是否正在谈论将防火墙放在一组精心照料的服务器前面,就像你看起来那样,或者是一个混合了工作站和服务器的典型局域网尽管IT团队付出了最大的努力和愿望,其中一些可能会运行一些非常毛茸茸的东西。

还需要考虑的是创建一个明显强化的目标的好处。可见的安全性,无论是明亮的灯光,重型锁具还是建筑物上的明显警报箱;或者企业IP地址范围内的明显防火墙可以阻止偶然的入侵者 - 他们会去寻找更容易的猎物。这不会阻止坚定的入侵者,他们知道你有他们想要的信息,并决心得到它,但是阻止偶然的入侵者仍然是值得的 - 特别是如果你知道任何入侵者的探测器持续超越威慑需要特别认真对待。


6
2017-11-12 22:25



因此我说“服务器”而不是“办公室网络”的原因是什么? :)特别是在我们的案例中,数据中心和办公室是两个物理上分离的实体。 - Ernie
我理解厄尼,但这是值得强调的一点...所以我做到了。 - Rob Moir


所有重大问题。但是 - 我很惊讶PERFORMANCE没有被提到桌面。

对于高度(以CPU为单位)使用的Web前端,本地防火墙确实会降低性能,周期。尝试负载测试,看看。我看到了这么多次。关闭防火墙可将性能(每秒请求数)提高70%或更多。

必须考虑这种权衡。


5
2017-11-13 22:28



它在很大程度上取决于防火墙规则。防火墙规则按顺序在每个数据包上运行,因此您不希望有数百个必须查看的规则。去年冬天,当我们管理一个在超级碗上有广告的网站时,防火墙规则不是问题。但我确实同意您需要了解防火墙规则对性能的影响。 - Sean Reifschneider


防火墙是额外的保护。它可以防范的三个特殊情况是网络堆栈攻击(即,您的服务器操作系统对从未达到端口级别的特制数据包存在漏洞),成功入侵与“电话回家”(或发送垃圾邮件等) ),或者打开服务器端口的成功入侵,或者在打开端口之前监视端口敲门序列的可检测性较低。当然,最后两个与减轻入侵的损害而不是阻止它有关,但这并不意味着它没用。请记住,安全不是一个全有或全无的主张;一个采用分层方法,腰带和吊带,以达到足以满足您需求的安全级别。


4
2017-11-13 12:37



+1绝对,深度防守是关键。 - Jim OHalloran
我没有看到如何阻止出站流量到任何效果,特别是当我们的客户希望我们的许多服务器向互联网上的随机主机发送邮件时(如垃圾邮件的情况)。 “打电话回家”只是连接到网络上的其他随机主机的问题 - 我怀疑阻止所有出站连接除了少数几个将有所帮助 - 也就是说,如果你想做 什么 在网上。阻挡几个港口有点像在沙漠中间建立一个收费站。 - Ernie


无论如何我都不是安全专家,但听起来好像你是防火墙的。您似乎已经采用了防火墙的一些核心功能,并使其成为您的策略和过程的一部分。不,如果您要自己做与防火墙相同的工作,则不需要防火墙。至于我自己,我宁愿尽我所能保持安全,但防火墙看着我的肩膀,但在某些时候你可以做防火墙正在做的一切,它开始变得无关紧要。


3
2017-11-13 10:47





小型设置当然不需要防火墙。如果您有一台或两台服务器,则可以维护软件防火墙。话虽如此,我们不会在没有专用防火墙的情况下运行,并且有几个原因可以解释为什么我保持这种理念:

角色分离

服务器用于应用程序。防火墙用于数据包检查,过滤和策略。 Web服务器应该担心提供网页,就是这样。将两个角色放在一个设备中就像要求您的会计师也成为您的保安。

软件是一个移动目标

主机上的软件总是在变化。应用程序可以创建自己的防火墙例外操作系统已更新并打补丁。服务器是一个高流量的“管理”区域,您的防火墙策略/安全策略对于安全性而言通常比应用程序配置更重要。在Windows环境中,假设有人在某些组策略级别出错并在桌面PC上关闭Windows防火墙,并且没有意识到它将应用于服务器。只需点击即可让您大开眼界。

只谈到更新,防火墙固件更新通常每年发布一次或两次,而操作系统和服务更新是一个不变的流。

可重用的服务/策略/规则,可管理性

如果我设置一个名为“Web服务器”的服务/策略(比如TCP 80和TCP 443),并将其应用到防火墙级别的“Web服务器组”,那就更有效了(一些配置更改)并且比在10个盒子上设置防火墙服务以及打开2个端口x 10次更容易出现人为错误。当该政策需要改变时,它是1变化而不是10。

我仍然可以在攻击期间或在妥协之后管理防火墙

假设我的基于主机的防火墙+应用程序服务器受到攻击并且CPU不在图表中。为了开始弄清楚发生了什么,我受到了负担,而不是攻击者甚至进入并看着它。

实际体验 - 我曾经搞过防火墙规则(将端口留给ANY而不是特定的端口,服务器有一个易受攻击的服务),并且攻击者实际上有一个实时的远程桌面会话。每次我开始进行会话时,攻击者都会杀死/断开我的会话。如果不能从一个独立的防火墙设备关闭该攻击,那可能会更糟糕。

独立监测

专用防火墙单元的登录通常远远优于基于主机的软件防火墙。有些足够好,甚至不需要外部SNMP / NetFlow监控软件来获得准确的图像。

IPv4保护

如果一个用于Web而一个用于邮件,则没有理由拥有两个IP地址。将服务保存在单独的盒子上,并通过专门设计的设备适当地路由端口。


3
2017-11-13 16:06