网络安全 – 防火墙
几乎每个中型和大型组织都在互联网上存在,并有一个与之相连的组织网络。在外部互联网和内部网络之间的边界进行网络分区对于网络安全至关重要。有时内部网络(内部网)被称为"受信任"端,而外部互联网被称为"不可信"端。
防火墙的类型
防火墙是一种将组织的内部网络与更大的外部网络/互联网隔离的网络设备。它可以是硬件、软件或组合系统,用于防止未经授权访问内部网络。
进入或离开内部网络的所有数据包都会通过防火墙,防火墙会检查每个数据包并阻止那些不符合指定安全标准的数据包。
在网络边界部署防火墙就像将安全性聚集在一个点上。这类似于在入口处锁上公寓,而不一定在每扇门上都锁上。
防火墙被视为实现网络安全的基本要素,原因如下 −
内部网络和主机不太可能得到妥善保护。
互联网是一个危险的地方,犯罪分子、来自竞争公司的用户、心怀不满的前雇员、来自不友好国家的间谍、破坏者等都在这里。
防止攻击者对网络资源发起拒绝服务攻击。
防止外部攻击者非法修改/访问内部数据。
防火墙分为三种基本类型 −
- 数据包过滤器(无状态和有状态)
- 应用程序级网关
- 电路级网关
然而,这三个类别并不相互排斥。现代防火墙具有多种功能,可能将其置于三个类别中的多个类别中。
无状态和有状态数据包过滤防火墙
在这种类型的防火墙部署中,内部网络通过路由器防火墙连接到外部网络/互联网。防火墙逐个检查和过滤数据包。
数据包过滤防火墙主要根据源和/或目标 IP 地址、协议、源和/或目标端口号以及 IP 报头内的各种其他参数等标准允许或阻止数据包。
该决定可以基于 IP 报头字段以外的因素,例如 ICMP 消息类型、TCP SYN 和 ACK 位等。
数据包过滤规则有两个部分 −
选择标准 − 它用作决策的条件和模式匹配。
操作字段 − 此部分指定当 IP 数据包满足选择标准时要采取的操作。该操作可以是阻止(拒绝)或允许(允许)数据包通过防火墙。
数据包过滤通常是通过在路由器或交换机上配置访问控制列表 (ACL) 来实现的。ACL 是数据包过滤规则表。
当流量进入或退出接口时,防火墙会从上到下将 ACL 应用于每个传入数据包,找到匹配条件并允许或拒绝单个数据包。
无状态防火墙是一种僵化工具。它查看数据包,如果符合条件,即使它不是任何已建立的正在进行的通信的一部分,它也会允许它。
因此,在现代网络中,这种防火墙被状态防火墙取代。与无状态防火墙仅基于 ACL 的数据包检查方法相比,这种类型的防火墙提供了更深入的检查方法。
状态防火墙监视连接设置和拆除过程,以检查 TCP/IP 级别的连接。这使它们能够跟踪连接状态并确定哪些主机在任何给定时间点具有打开的授权连接。
它们仅在请求新连接时引用规则库。将属于现有连接的数据包与防火墙的打开连接状态表进行比较,并做出允许或阻止的决定。此过程节省时间并提供了额外的安全性。除非属于已建立的连接,否则不允许任何数据包侵入防火墙。它可以使防火墙上的非活动连接超时,之后不再允许该连接的数据包。
应用程序网关
应用程序级网关充当应用程序级流量的中继节点。它们拦截传入和传出的数据包,运行在网关上复制和转发信息的代理,并充当代理服务器,阻止受信任的服务器或客户端与不受信任的主机之间的任何直接连接。
代理是特定于应用程序的。它们可以在 OSI 模型的应用程序层过滤数据包。
特定于应用程序的代理
特定于应用程序的代理仅接受由它们旨在复制、转发和过滤的指定应用程序生成的数据包。例如,只有 Telnet 代理才能复制、转发和过滤 Telnet 流量。
如果网络仅依赖于应用程序级网关,则传入和传出数据包无法访问未配置代理的服务。例如,如果网关运行 FTP 和 Telnet 代理,则只有这些服务生成的数据包才能通过防火墙。所有其他服务都会被阻止。
应用级过滤
应用级代理网关检查并过滤单个数据包,而不是简单地复制它们并盲目地将它们转发到网关。特定于应用程序的代理检查通过网关的每个数据包,通过应用层验证数据包的内容。这些代理可以过滤应用程序协议中特定类型的命令或信息。
应用程序网关可以限制执行特定操作。例如,可以配置网关以防止用户执行"FTP put"命令。这可以防止攻击者修改存储在服务器上的信息。
透明
尽管应用程序级网关可以是透明的,但许多实现都要求用户进行身份验证,然后用户才能访问不受信任的网络,这一过程降低了真正的透明度。如果用户来自内部网络或来自互联网,身份验证可能会有所不同。对于内部网络,可以允许简单的 IP 地址列表连接到外部应用程序。但从互联网方面来说,应该实施强身份验证。
应用程序网关实际上在两个方向(客户端 ↔ 代理 ↔ 服务器)的两个 TCP 连接之间中继 TCP 段。
对于出站数据包,网关可以用自己的 IP 地址替换源 IP 地址。该过程称为网络地址转换 (NAT)。它确保内部 IP 地址不会暴露给互联网。
电路级网关
电路级网关是数据包过滤器和应用程序网关之间的中间解决方案。它在传输层运行,因此可以充当任何应用程序的代理。
与应用程序网关类似,电路级网关也不允许跨网关建立端到端 TCP 连接。它建立两个 TCP 连接并将 TCP 段从一个网络中继到另一个网络。但是,它不会像应用程序网关那样检查应用程序数据。因此,有时它被称为"管道代理"。
SOCKS
SOCKS (RFC 1928) 是指电路级网关。它是一种网络代理机制,使 SOCKS 服务器一侧的主机能够完全访问另一侧的主机,而无需直接 IP 可达性。客户端在防火墙处连接到 SOCKS 服务器。然后,客户端进入要使用的身份验证方法的协商,并使用所选方法进行身份验证。
客户端向 SOCKS 服务器发送连接中继请求,其中包含所需的目标 IP 地址和传输端口。服务器在检查客户端是否满足基本过滤条件后接受请求。然后,网关代表客户端打开与请求的不受信任主机的连接,然后密切监视随后的 TCP 握手。
SOCKS 服务器通知客户端,如果成功,则开始在两个连接之间中继数据。当组织信任内部用户,并且不想检查在互联网上发送的内容或应用程序数据时,将使用电路级网关。
使用 DMZ 部署防火墙
防火墙是一种用于控制组织内部网络"进出"网络流量的机制。在大多数情况下,这些系统有两个网络接口,一个用于外部网络(如互联网),另一个用于内部网络。
防火墙进程可以严格控制允许从一端到另一端的内容。希望为其 Web 服务器提供外部访问的组织可以限制到达防火墙的所有流量,端口 80(标准 http 端口)除外。所有其他流量(如邮件流量、FTP、SNMP 等)都不允许穿过防火墙进入内部网络。下图显示了一个简单的防火墙示例。
在上述简单部署中,尽管所有其他来自外部的访问都被阻止,但攻击者不仅可能接触 Web 服务器,还可能接触内部网络上任何其他因意外或其他原因而将端口 80 保持打开状态的主机。
因此,大多数组织面临的问题是如何在保持内部网络的严密安全性的同时,实现对公共服务(如 Web、FTP 和电子邮件)的合法访问。典型的方法是部署防火墙以在网络中提供非军事区 (DMZ)。
在此设置中(如下图所示),部署了两个防火墙;一个在外部网络和 DMZ 之间,另一个在 DMZ 和内部网络之间。所有公共服务器都放置在 DMZ 中。
使用此设置,可以制定允许公共访问公共服务器的防火墙规则,但内部防火墙可以限制所有传入连接。通过设置 DMZ,公共服务器可以获得足够的保护,而不必将其直接放置在外部网络上。
入侵检测/预防系统
数据包过滤防火墙仅基于涉及 TCP/UDP/IP 标头的规则运行。它们不会尝试在不同的会话之间建立关联检查。
入侵检测/预防系统 (IDS/IPS) 通过查看数据包内容来执行深度数据包检测 (DPI)。例如,根据已知病毒、攻击字符串的数据库检查数据包中的字符串。
应用程序网关会查看数据包内容,但仅针对特定应用程序。它们不会在数据包中查找可疑数据。 IDS/IPS 查找数据包中包含的可疑数据,并尝试检查多个数据包之间的相关性,以识别任何攻击,例如端口扫描、网络映射和拒绝服务等。
IDS 和 IPS 之间的差异
IDS 和 IPS 在检测网络异常方面相似。IDS 是一种"可见性"工具,而 IPS 被视为"控制"工具。
入侵检测系统位于网络一侧,监控许多不同点的流量,并提供对网络安全状态的可见性。如果 IDS 报告异常,则由网络管理员或网络上的其他设备启动纠正措施。
入侵防御系统就像防火墙一样,它们位于两个网络之间,并控制通过它们的流量。它强制执行指定的策略来检测网络流量中的异常。通常,它会在发现异常时丢弃所有数据包并阻止整个网络流量,直到管理员解决异常为止。
IDS 的类型
IDS 有两种基本类型。
基于签名的 IDS
它需要一个包含已知攻击及其签名的数据库。
签名由表征特定攻击的数据包类型和顺序定义。
这种类型的 IDS 的局限性在于只能检测到已知攻击。这种 IDS 也可能发出误报。当正常数据包流与攻击特征匹配时,可能会发生误报。
众所周知的公共开源 IDS 示例是"Snort"IDS。
基于异常的 IDS
这种类型的 IDS 创建正常网络运行的流量模式。
在 IDS 模式下,它会查看统计上异常的流量模式。例如,ICMP 异常负载、端口扫描呈指数增长等。
检测到任何异常流量模式都会生成警报。
此类 IDS 部署面临的主要挑战是难以区分正常流量和异常流量。
总结
在本章中,我们讨论了用于网络访问控制的各种机制。通过访问控制实现网络安全的方法在技术上不同于本教程前面章节中讨论的在不同网络层实施安全控制。但是,尽管实施方法不同,但它们是相互补充的。
网络访问控制由两个主要组件组成:用户身份验证和网络边界保护。RADIUS 是一种在网络中提供中央身份验证的流行机制。
防火墙通过将内部网络与公共互联网分开来提供网络边界保护。防火墙可以在不同的网络协议层上运行。 IDS/IPS 允许监控网络流量中的异常以检测攻击并采取预防措施。