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

Ern*_*nie 107 security firewall

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

但是,我正在寻找安全专家的答案。我相信这是一个重要的问题,答案不仅对我自己和我工作的公司有益。我已经运行我们的服务器网络好几年了,没有任何妥协,根本没有任何防火墙。安全无妥协,我们有可能被防止的防火墙。

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

别人问了类似的问题,我的回答被投为负数。这让我相信,要么投票否决它的人并没有真正理解我的答案,要么我对安全性的了解不足以做我目前正在做的事情。

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

  1. 将我的服务器连接到 Internet之前,请遵循我的操作系统的安全指南

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

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

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

  5. 将服务器安装在机房,并给它一个公网IP地址。

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

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

如果,并非需要由整个互联网的访问,请在服务器上的可用端口,然后该软件需要在步骤1中被关闭,并逐步4.如果验证的攻击者成功打入通过易受攻击的软件服务器并自己打开一个端口,攻击者可以(并且确实)通过在随机端口上建立出站连接来轻松击败任何防火墙。安全的重点不是在成功攻击后保护自己——这已经被证明是不可能的——而是首先将攻击者拒之门外。

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

老实说,我认为防火墙对服务器有任何用处的唯一方法是它是否具有防止已知攻击者与所有服务器的所有连接的动态规则 - 就像垃圾邮件的 RBL(巧合的是,这几乎就是我们的邮件服务器所做的) . 不幸的是,我找不到任何可以做到这一点的防火墙。下一个最好的东西是 IDS 服务器,但它假设攻击者不会首先攻击您的真实服务器,并且攻击者攻击之前会费心探测您的整个网络。此外,众所周知,这些会产生大量误报。

Sau*_*iya 54

防火墙的优点:

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

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

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

防火墙的缺点:

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

  • `最重要的是,如果您没有防火墙并且系统受到威胁,那么您将如何检测它?` 入侵检测不是防火墙的工作。这项工作由独立于防火墙的 HIDS(基于主机的入侵检测系统)处理得更恰当。 (6认同)
  • Syslog 服务器消除了第 5 项的需要。如果有的话,最好将您的防火墙日志发送到 syslog 服务器,以防攻击者设法破坏防火墙并删除其日志。然后攻击者必须破坏两个系统才能删除日志,而他们可能没有为此做好准备(尤其是自动攻击)。同样,如果您的所有系统都具有集中式日志记录,那么您可以获得比防火墙日志提供的更好的关于攻击的详细信息。 (6认同)
  • 我的观点是,由于 HIDS 驻留在主机上,我们不能相信它的输出。例如,即使我们使用加密安全的“tripwire”作为基于主机的 IDS,攻击者总是可以用永远不会报告入侵的受损版本替换所有 tripwire 二进制文件(twadmin、tripwire、twprint 等)。即使我们尝试从其他系统复制库/二进制文件,也会有一个进程在运行,该进程会监视这些受感染的二进制文件,并在它们被替换或更新时再次用损坏的版本替换它们。防火墙独立于主机,在这种情况下可以信任。 (2认同)
  • 这个答案被更受欢迎的答案所接受,因为它提供了更好、更全面的使用防火墙的原因。而不是,就此而言。 (2认同)

小智 32

TCP Wrappers 可以说是一种基于主机的防火墙实现。您正在过滤网络流量。

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

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

基本上,防火墙是主动保护。你越远离主动,你就越有可能发现自己处于对问题做出反应而不是预防问题的境地。将您的保护集中在边界,就像使用专用防火墙一样,可以使事情更容易管理,因为您有一个中央阻塞点,而不是到处复制规则。

但没有一件事一定是最终解决方案。一个好的安全解决方案通常是多层的,边界处有防火墙,设备处有 TCP 包装器,可能还有一些内部路由器上的规则。您通常应该保护网络免受 Internet 的影响,并保护节点之间的相互关系。这种多层方法不像在多张胶合板上钻孔,更像是安装一扇门,这样入侵者就有两把锁可以打破,而不仅仅是一个;这被称为人身安全陷阱,大多数建筑物都有一个是有原因的。:)

  • 此外,如果他们潜入建筑物并为外面的朋友打开内门,那么他们也必须解锁并打开外门。(即没有外部防火墙,进入您服务器的人可以直接打开它,而外部防火墙仍然会阻止来自外部的开放端口) (6认同)

ada*_*amo 14

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

现在:拥有一个不再发布补丁的遗留系统怎么样?如果不能在需要时将补丁应用到 N 台机器上,而同时您可以将它们应用到网络中较少的节点(防火墙),那又会怎样呢?

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

  • @Ernie - 我想你可能只是走运了。你怎么知道你没有受到损害?对我的许多客户进行法医调查的结果发现了妥协,有时可以追溯到几个月前,而攻击者发现了个人和财务信息、客户详细信息、知识产权、商业计划等。正如肖恩所说 - 完成适当的安全审计。 (2认同)

Jos*_*eld 9

您的大部分解释似乎都驳斥了对防火墙的需求,但我不认为拥有防火墙有什么弊端,除了设置防火墙的时间很少。

很少有东西是严格意义上的“必需品”。安全更多是关于设置所有可能的封锁。闯入服务器所需的工作越多,成功攻击的机会就越少。你想让闯入你的机器比其他地方更有效。添加防火墙可以做更多的工作。

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

关于您的问题的实际说明,对我来说最重要的是您可以将 SSH、ICMP 和其他内部服务锁定到本地子网,并限制传入连接的速率以帮助减轻 DOS 攻击。

“安全的重点不是在成功攻击后保护自己——这已经被证明是不可能的——而是首先将攻击者拒之门外。”

我不同意。限制损害也同样重要。(在这种理想情况下,为什么要散列密码?或者将您的数据库软件放在与 Web 应用程序不同的服务器上?)我认为“不要把所有的鸡蛋放在一个篮子里”这句老话在这里适用。


Ste*_*day 7

Should I firewall my server?好问题。在已经拒绝连接尝试的网络堆栈之上设置防火墙似乎没有什么意义,除了少数合法打开的端口。如果操作系统中存在允许恶意制作的数据包破坏/利用主机的漏洞,在同一台主机上运行的防火墙会阻止利用吗?嗯,也许……

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

在服务器上运行防火墙的另一个原因是将这两个密切相关的问题解耦:

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

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

最后要注意的是,我总是添加您的安全检查表中没有提到的一项,那就是基于主机的入侵检测系统 (HIDS),例如AIDEsamhain。一个好的 HIDS 使入侵者很难对系统进行不必要的更改并且不被发现。我相信所有服务器都应该运行某种 HIDS。

  • HIDS 很棒 - 如果您打算设置它并忘记它。并且永远不要添加或删除帐户。否则,绝大多数 HIDS 日志将是您今天所做的一长串列表,并且很快就会一直被忽略。 (3认同)

Rob*_*oir 6

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

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

我对防火墙说同样的话——不管你对它们说什么,它们都是一种很好的保险。它们不能替代修补、锁定机器、禁用您不使用的服务、日志记录等……但它们可以是一个有用的补充。

我还建议,等式会有所改变,具体取决于您是在谈论将防火墙放置在一组精心照料的服务器前面,如您所见,还是在混合工作站和服务器的典型局域网,尽管 IT 团队尽了最大的努力和愿望,但其中一些可能会运行一些非常麻烦的东西。

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


Ari*_*iel 5

所有伟大的问题。但是 - 我很惊讶 PERFORMANCE 没有被带到桌面上。

对于高度(CPU 方面)使用的 Web 前端,本地防火墙确实会降低性能,期间。尝试负载测试并查看。我看到了很多次。关闭防火墙将性能(每秒请求)提高了 70% 或更多。

必须考虑这种权衡。

  • 这在很大程度上取决于现有的防火墙规则。防火墙规则按顺序对每个数据包运行,因此您不希望有数百条规则需要查看。例如,去年冬天,当我们管理一个在超级碗上有广告的网站时,防火墙规则不是问题。但我同意您需要了解防火墙规则对性能的影响。 (2认同)