第 7章 . 防火墙

信息安全通常被当作一种不断改进的过程而不是一成不变的产品。然而,标准的安全实现通常会使用某种专用机制来控制存取权限;把对网络资源的使用限制在授权的、可识别身份的、和可追踪的用户范围内。红帽企业 Linux 包括了好几种强大的工具来协助管理员和安全工程师们解决网络级别的存取控制问题。

除了 CIPE 或 IPsec(第6章 中所讨论)之类的 VPN 解决方案外,防火墙是网络保安系统的一个重要组成部分。好几家推广防火墙方案的厂商都提供了满足各级市场需求的产品:从保护一台电脑的家庭用户的需求,到保卫重要企业信息的数据中心方案,如 Cisco、Nokia、和 Sonicwall 的防火墙设备。Checkpoint、McAfee、以及 Symantec 等厂商还开发了家用和商用的专有软件防火墙解决方案。

除了硬件防火墙和软件防火墙间的区别外,各个防火墙在功能用途方面也有所区别。表 7-1详细描述了三种常见的防火墙,以及它们的运行方式:

方法描述优越性不利因素
NAT网络地址转换(Network Address Translation,NAT)把内部网络的 IP 子网放置在一个或一组外部 IP 地址之后,把所有的请求都伪装成来自一个地址而不是多个不同地址。

� 可以在 LAN 机器上被透明配置
� 保护在一个或多个外部 IP 地址之后的许多机器,简化管理任务
� 用户到 LAN 的出入可以通过打开和关闭 NAT 防火墙/网关上的端口来限制

� 一旦用户从防火墙外连接了服务,则无法防止其蓄意活动

分组过滤器分组过滤防火墙读取每个进出 LAN 的数据分组。它可以根据头信息来读取和处理分组,并根据被防火墙管理员实施的可编排的规则来过滤分组。Linux 内核通过 netfilter 内核子系统内建了分组过滤功能。

� 可以通过 iptables 这个前端工具而被定制
� 不需要任何客户方面的定制,因为所有的网络活动都在路由器级别而不是应用程序级别被过滤
� 由于分组没有通过代理来传输,客户和远程主机间是直接连接,因此网络传输速度比较快

� 无法像代理防火墙一样根据内容过滤分组
� 在协议层处理分组,但是无法在应用程序层处理分组
� 复杂的网络体系可能会使建立分组过滤规则方面比较困难,特别是在和 IP 伪装(IP masquerading)或本地子网及 DMZ 网络一起使用时

代理代理防火墙过滤所有从 LAN 客户到代理机器的某种特定协议或类型的请求,然后,它再代表这个本地客户向互联网发送这些请求。代理机器被用来充当企图不良的远程用户和内部网络客户机器之间的一个缓冲。

� 使管理员拥有对 LAN 之外的应用程序和协议功能的控制权
� 某些代理服务器可以缓存数据,因此当客户存取频繁请求的数据时,这些数据就可以从本地缓存调出而不必使用互联网连接,这有助于减少不必要的带宽用量
� 代理服务可以被密切地监视和记录,从而允许你在网络资源用量方面有更严格的控制

� 代理通常是应用程序特有的(HTTP、telnet 等)或在协议方面有限制的(多数代理只能用于 TCP 连接的服务)
� 应用程序服务无法在代理后面运行,因此你的应用程序服务器必须使用另一种网络保安措施
代理可能会成为网络的瓶颈,因为所有的请求和传输都要经过一个中介而不是让客户直接连接远程服务

表 7-1. 防火墙类型

7.1. Netfilter 和 IPTables

Linux 内核中有一个功能强大的联网子系统 netfilter。netfilter 子系统提供了有状态的或无状态的分组过滤,还提供了 NAT 和 IP 伪装服务。netfilter 还具备为高级选路和连接状态管理而变形(mangle)IP 头信息的能力。netfilter 是通过 IPTables 工具来控制的。

7.1.1. IPTables 总览

netfilter 的强大功能和灵活性是通过 IPTables 界面来实现的。这个命令行工具和它的前身 IPChains 的语法很相似;不过,IPTables 使用 netfilter 子系统来增进网络连接、检验、和处理方面的能力;IPChains 使用错综复杂的规则集合来过滤源地和目的地路线以及两者的连接端口。IPTables 只在一个命令行界面中就包括了更先进的记录方式;选路前和选路后的行动;网络地址转换;以及端口转发。

本节提供对 IPTables 的总览。关于 IPTables 的详细信息,请参阅《红帽企业 Linux 参考指南》