前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是防火墙以及它如何工作?

什么是防火墙以及它如何工作?

原创
作者头像
新巴子
修改2018-10-29 18:28:27
5.1K0
修改2018-10-29 18:28:27
举报

介绍

防火墙是一种通过基于一组用户定义的规则过滤传入和传出网络流量来提供网络安全性的系统。通常,防火墙的目的是减少或消除不需要的网络通信的发生,同时允许所有合法通信自由流动。在大多数服务器基础架构中,防火墙提供了一个重要的安全层,与其他措施相结合,可以防止攻击者以恶意方式访问您的服务器。

本指南将讨论防火墙的工作原理,重点关注与云服务器相关的有状态软件防火墙,如iptables和FirewallD。我们首先简要介绍TCP数据包和不同类型的防火墙。然后我们将讨论与状态防火墙相关的各种主题。最后,我们将提供指向其他教程的链接,这些教程将帮助您在自己的服务器上设置防火墙。

TCP网络数据包

在讨论不同类型的防火墙之前,让我们快速了解一下传输控制协议(TCP)网络流量的样子。

TCP网络流量在数据包中围绕网络移动,数据包是由数据包标头组成的容器 - 它包含控制信息,如源和目标地址,以及数据包序列信息 - 以及数据(也称为有效负载)。虽然每个数据包中的控制信息有助于确保其关联数据正确传递,但它包含的元素还为防火墙提供了各种方法来匹配防火墙规则。

请务必注意,成功接收传入的TCP数据包需要接收方将传出的确认数据包发送回发送方。输入和输出分组中的控制信息的组合可用于确定发送器和接收器之间的连接状态(例如,新的连接,已建立的连接或者是相关的连接)。

防火墙的类型

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

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

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

应用程序防火墙通过分析传输的数据更进一步,这使得网络流量可以与特定于各个服务或应用程序的防火墙规则相匹配。这些也称为基于代理的防火墙。

除了在所有现代操作系统上都可用的防火墙软件之外,防火墙功能还可以由硬件设备提供,例如路由器或防火墙设备。同样,我们的讨论将侧重于在他们要保护的服务器上运行的有状态软件防火墙。

防火墙规则

如上所述,遍历防火墙的网络流量与规则相匹配,以确定是否允许通过防火墙。解释防火墙规则的简单方法是显示一些示例,因此我们现在就这样做。

假设您的服务器具有适用于传入流量的防火墙规则列表:

  1. 在端口80和443(HTTP和HTTPS Web流量)上接受新的和已建立的传入流量到公共网络接口
  2. 将来自办公室中非技术员工的IP地址的传入流量丢弃到端口22(SSH)
  3. 接受从办公室IP范围到端口22(SSH)上的专用网络接口的新的和已建立的传入流量

请注意,每个示例中的第一个单词是“accept”,“reject”或“drop”。这指定了防火墙在网络流量与规则匹配时应执行的操作。Accept表示允许流量通过,拒绝表示阻止流量但是回复“无法访问”错误,drop表示阻止流量并且不发送回复。每个规则的其余部分包括每个数据包匹配的条件。

事实证明,网络流量与序列或链中的防火墙规则列表从头到尾匹配。更具体地,一旦匹配规则,则将相关联的动作应用于所讨论的网络流量。在我们的示例中,如果会计员工尝试与服务器建立SSH连接,则在检查规则3之前,将根据规则2拒绝这些连接。但是,系统管理员将被接受,因为它们仅匹配规则3。

默认政策

一系列防火墙规则通常不会明确涵盖所有可能的情况。因此,防火墙链必须始终指定默认策略,该策略仅包含操作(接受,拒绝或删除)。

假设上面示例链的默认策略设置为drop。如果办公室外的任何计算机尝试与服务器建立SSH连接,则流量将被丢弃,因为它与任何规则的条件都不匹配。

如果默认策略设置为accept,则除了您自己的非技术员工之外,任何人都可以建立与服务器上任何打开服务的连接。这将是一个配置非常糟糕的防火墙的示例,因为它只会保留您员工的一部分。

传入和传出流量

从服务器的角度来看,网络流量可以是传入的也可以是传出的,防火墙为这两种情况维护一组不同的规则。源自其他地方的流量(传入流量)与服务器发送的传出流量的处理方式不同。服务器通常允许大多数传出流量,因为服务器本身通常是值得信赖的。但是,在服务器被攻击者或恶意可执行文件泄露的情况下,传出规则集可用于防止不需要的通信。

为了最大限度地提高防火墙的安全性,您应该确定希望其他系统与服务器交互的所有方法,创建明确允许它们的规则,然后丢弃所有其他流量。请记住,必须具有适当的传出规则,以便服务器允许自己将传出的确认发送到任何适当的传入连接。此外,由于服务器通常需要出于各种原因(例如,下载更新或连接到数据库)启动自己的传出流量,因此将这些情况包括在传出规则集中也很重要。

编写传出规则

假设我们的示例防火墙设置为默认情况下丢弃传出流量。这意味着如果没有补充传出规则,我们的传入接受规则将毫无用处。

为了补充示例传入防火墙规则(1和3),从防火墙规则部分,并允许在这些地址和端口上进行正确通信,我们可以使用这些传出防火墙规则:

  1. 接受已建立的端口80和443(HTTP和HTTPS)上的公共网络接口的传出流量
  2. 接受已建立的端口22(SSH)上的专用网络接口的传出流量

请注意,我们不需要为丢弃的传入流量(传入规则2)显式写入规则,因为服务器不需要建立或确认该连接。

防火墙软件和工具

现在我们已经了解了防火墙的工作原理,让我们来看看可以帮助我们建立有效防火墙的通用软件包。虽然还有许多其他与防火墙相关的软件包,但这些软件包都是有效的,并且是您最常遇到的软件包。

iptables的

Iptables是默认包含在大多数Linux发行版中的标准防火墙(称为nftables的现代变体将开始替换它)。它实际上是可以操纵Linux网络堆栈的内核级netfilter挂钩的前端。它的工作原理是将跨越网络接口的每个数据包与一组规则相匹配,以决定做什么。

要了解如何使用iptables实现防火墙,请查看 如何在Ubuntu 14.04上使用Iptables实现基本防火墙模板

UFW

UFW代表Uncomplicated Firewall,是iptables的一个接口,旨在简化配置防火墙的过程。

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

FirewallD

FirewallD是CentOS 7服务器上默认提供的完整防火墙解决方案。顺便说一句,FirewallD使用iptables配置netfilter。

要了解有关使用FirewallD的更多信息,请查看本教程:如何使用FirewallD以在您的CentOS 7服务器上配置防火墙

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

fail2ban

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

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

结论

既然您了解了防火墙的工作原理,那么您应该考虑使用上面的教程来实现防火墙,从而提高服务器设置的安全性。

更多Firewall教程请前往腾讯云+社区学习更多知识。


参考文献:《 What is a Firewall and How Does It Work?》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • TCP网络数据包
  • 防火墙的类型
  • 防火墙规则
    • 默认政策
    • 传入和传出流量
      • 编写传出规则
      • 防火墙软件和工具
        • iptables的
          • UFW
            • FirewallD
              • fail2ban
              • 结论
              相关产品与服务
              云服务器
              云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档