什么是防火墙及其工作原理?

介绍

防火墙是通过基于一组用户定义的规则来过滤输入和输出网络流量提供网络安全的系统,一般来说,防火墙的目的是减少或消除不必要的网络通信的发生,同时允许所有合法的通信自由流动。

本指南将讨论防火墙如何工作,专注于 stateful软件防火墙,如iptables和FirewallD,因为它们与云服务器有关。我们将从TCP包和不同类型的防火墙的简短解释开始。

TCP网络包

在讨论不同类型的防火墙之前,让我们快速看看运输控制协议(TCP)网络流量是什么样子。

TCP网络流量在一个网络中移动,这些是由包头组成的容器,其中包含源和目的地地址、包序列信息等控制信息,以及数据(也称为负载)。

重要的是要注意,成功接收接收的 TCP 包需要接收者将接收的确认包发送回发送者. 输入和输出包中的控制信息的组合可以用来确定发送者和接收者之间的连接状态(如新、建立、相关)。

防火墙类型

让我们快速讨论网络防火墙的三个基本类型:包过滤(无状态),状态和应用层。

包过滤,或无状态,防火墙通过单独检查单个包工作,因此,他们不知道连接状态,只能根据单个包头允许或拒绝包。

国家防火墙能够确定数据包的连接状态,这使它们比无状态防火墙更灵活,它们通过收集相关数据包来工作,直到在任何防火墙规则应用到流量之前可以确定连接状态。

应用程序防火墙通过分析传输的数据向前迈进了一步,这允许网络流量与特定服务或应用程序的防火墙规则进行匹配。

除了在所有现代操作系统上可用的防火墙软件外,防火墙功能还可以由路由器或防火墙设备等硬件设备提供。

防火墙规则

如上所述,通过防火墙的网络流量与规则相匹配,以确定它是否应该被允许通过。

假设您有一个服务器,其中列出了适用于输入流量的防火墙规则:

  1. 接受在端口 80 和 443 (HTTP 和 HTTPS 网络流量) 上的公共网络接口的新和已建立的入口流量(2) 将从办公室中非技术人员的 IP 地址下载到端口 22(SSH) 3 接受从您的办公室 IP 范围的新和已建立的入口流量到在端口 22 (SSH) 的私人网络接口

请注意,这些示例中的第一个单词是接受,拒绝放弃。这说明了防火墙应该在网络流量匹配规则的情况下执行的操作。 接受意味着允许流量通过, 拒绝意味着阻止流量但以无法达到的错误回应,并且 放弃意味着阻止流量而没有发送回复。

事实证明,网络流量与一系列或链条中的防火墙规则列表相匹配,从第一个到最后一个。更具体地说,一旦一个规则被匹配,相关的操作被应用到所涉及的网络流量。在我们的例子中,如果一个会计人员试图建立一个SSH连接到服务器,他们将根据规则2被拒绝,甚至在规则3被检查之前。

缺陷政策

因此,防火墙链必须始终有指定的默认策略,该策略仅由一个操作(接受、拒绝或放弃)组成。

假设上面的示例链的默认策略设置为 drop. 如果您办公室以外的任何计算机试图建立 SSH 连接到服务器,则流量会下降,因为它不符合任何规则的条件。

如果默认策略被设置为 接受,任何人,除了你自己的非技术员工,将能够建立连接到你的服务器上的任何开放服务。

入境和出境交通

由于从服务器的角度来看,网络流量可以是进出的或进出的,所以防火墙对于每个情况都保持了不同的规则组合。 来自其他地方的流量,即进出的流量,与服务器发送的输出流量不同。 通常,服务器允许大多数输出流量,因为服务器本身是值得信赖的。

为了最大限度地利用防火墙的安全效益,您应该确定您希望其他系统与您的服务器互动的所有方式,创建明确允许它们的规则,然后放弃所有其他流量. 请记住,适当的输出规则必须存在,以便服务器能够向任何适当的输出连接发送输出确认。

编写出行规则

假设我们的示例防火墙默认设置为 drop 输出流量,这意味着如果没有补充的输出规则,我们的输入 accept 规则将无用。

为了补充来自 ** 防火墙规则 ** 部分的入口防火墙规则( 1 和 3 )的示例,并允许在这些地址和端口上进行适当的通信,我们可以使用以下出发防火墙规则:

  1. 接受在端口 80 和 443 的公共网络接口(HTTP 和 HTTPS) 2 接受在端口 22 的私人网络接口(SSH) 的确立的输出流量

请注意,我们不需要明确写出输入流量的规则(输入规则2),因为服务器不需要建立或承认该连接。

防火墙软件和工具

现在我们已经研究了防火墙的运作方式,让我们看看可以帮助我们设置有效的防火墙的常见软件包。

可选

Iptables 是默认情况下大多数 Linux 发行版中包含的标准防火墙(一个名为 nftables 的现代变体将开始取代它)。 它实际上是内核级的网络过滤器夹的前端,可以操纵 Linux 网络堆栈。

要了解如何使用iptables实现防火墙,请查看这些链接:

  • [如何在Ubuntu 14.04上使用IPTables设置防火墙(https://andsky.com/tech/tutorials/how-to-set-up-a-firewall-using-iptables-on-ubuntu-14-04)
  • [如何在Ubuntu 14.04上使用Iptables实现基本防火墙模板(https://andsky.com/tech/tutorials/how-to-implement-a-basic-firewall-template-with-iptables-on-ubuntu-14-04)
  • 如何在您的服务器之间设置Iptables防火墙以保护流量

UFW

UFW,即不复杂的防火墙,是面向IPtables的界面,旨在简化防火墙配置过程。

要了解有关使用 UFW 的更多信息,请参阅本教程: 如何在 Ubuntu 和 Debian 云服务器上设置使用 UFW 的防火墙

防火

FirewallD 是一个完整的防火墙解决方案,默认情况下可在 CentOS 7 服务器上使用。

要了解有关使用 FirewallD 的更多信息,请参阅本教程: 如何配置 FirewallD 以保护您的 CentOS 7 服务器

如果您正在运行CentOS 7,但更喜欢使用iptables,请遵循本教程: 如何在CentOS 7上从FirewallD迁移到Iptables

失败2

Fail2ban是一款入侵预防软件,可以自动配置您的防火墙以阻止暴力登录尝试和DDOS攻击。

要了解有关 Fail2ban 的更多信息,请查看这些链接:

结论

现在你了解防火墙是如何工作的,你应该考虑实施一个防火墙,通过使用上面的教程来提高你的服务器设置的安全性。

如果您想了解更多关于防火墙的功能,请查看这些链接:

Published At
Categories with 技术
comments powered by Disqus