简介
一个 POWER 服务器具有承载上百个 LPAR 或分区(一个分区就是操作系统安装的一个独立实例)的处理能力,这意味着,虚拟化功能让您能在一个物理机器中拥有上百个服务器。如果这上百个服务器在处理 Internet 或其他敏感的数据,那么您可能想要在其中设置一些防火墙规则作为额外的安全层(以及网络防火墙和入侵防御设备)。
本文从简短回顾 TCP/IP 网络开始。如果您熟悉 TCP/IP 及其工作方式,那么可以跳过下一节。接下来,您还将回顾在 AIX 机器中启用并设置 TCP/IP 过滤功能需要用到的包、步骤和命令。最后,您要使用第一节中讲述的概念,在示例场景中进行配置。
TCP/IP 回顾
TCP/IP 是赋予网络生命的精髓。通过网络传输的数据被分割成小块,称为 “包” 或 “IP 包”(表示 Internet Protocol 包)。当传输信息的时候,它被数据发送者分成包,并标有源和目标电脑的信息,然后通过网络发送。
现在我们从更高的层次看看网络包的结构是怎样的。根据通信所使用协议的不同,您可能会处理以下的 IP 包:
- 普通 IP 包或IP 数据报:IP 包可用来封装以下任何协议。通常情况下,在网络中看不到普通 IP 包。但是可以使用 IP 包中传输的信息创建防火墙过滤。
- ICMP 消息:ICMP 是用来报告和诊断网络问题的协议。生成 ICMP 消息的最常见命令是 ping,它用来测试是否能连接到某个设备上。可以配置过滤功能来过滤掉某些 ICMP 包,例如,您可能想要防止某些 ICMP 流量发送到与 Internet 相连的服务器上。
- UDP 包或用户数据报:UDP 是不可靠、无连接的协议。UDP 数据包可能会丢失,或者不按顺序发送给接收的应用程序;必须在应用程序层进行错误处理。由于协议栈执行的控制少,其优点是处理时间短、延时少,而且数据传输更快。有一些熟知的服务就是基于 UDP,如 DNS 查询、TFTP 和 VoIP。
- TCP 包或段:TCP 是可靠的、面向连接的协议。TCP 段能保证以发送时的顺序进行交付,代价是需要额外的包来建立和完成连接,且协议栈要执行更多的处理来确保这一点。有很多熟知的服务依赖于 TCP:HTTP(web 流量)、SMTP(邮件流量)、FTP(文件传输)、SSH (Secure Shell)、Telnet 及其他。
一般来说,您的服务器只提供其中一项或几项服务,因此您可能想只允许您所提供的服务的流量。
剖析 ICMP、TCP 和 UDP
以下表格显示了不同类型的网络包的结构,更重要的是,您可以看到,哪一个是允许我们基于此字段内容过滤包的 AIX 过滤管理命令的命令行选项。在稍后对过滤所使用的 AIX 命令进行分析时会用到这些命令行选项。
表 1 – IP 包格式
| 比特位 | 0-15 | 16-31 | ||||
|---|---|---|---|---|---|---|
| 0 | 版本 (-v) | IHL | 服务类型 | 总长度 | ||
| 32 | 标识 | 标志 (-f) | 分段偏移 | |||
| 64 | 使用期限 | 协议 (-c) | 报头检验和 | |||
| 96 | 源地址 (-s) | |||||
| 128 | 目的地址 (-d) | |||||
| 160 | 选项 | 边距 | ||||
表 2 – ICMP 格式
| 比特位 | 0-15 | 16 -31 | |
|---|---|---|---|
| 0 | 类型 (-o / -O) | 编码 | 校验和 |
| 32 | IP 报头 + 64 位原始数据报 | ||
表 3 – UDP 格式
| 比特位 | 0-15 | 16-31 |
|---|---|---|
| 0 | 源端口 (-o) | 目标端口 (-O) |
| 32 | 长度 | 校验和 |
表 4 – TCP 格式
| 比特位 | 0-15 | 16-31 | ||
|---|---|---|---|---|
| 0 | 源端口 (-o) | 目标端口 (-O) | ||
| 32 | 序列号 | |||
| 64 | 确认号 | |||
| 96 | 偏移 | 保留 | 标志 | 窗口 |
| 128 | 校验和 | 紧急指针 | ||
| 160 | 选项 | 边距 | ||
| 192 | 数据 | |||
AIX 过滤功能简介
某些情况下,您可能想要阻止某些包到达其目的地,或者只让某一些包到达。
需要的包
一些常见的场景包括,只允许来自信任源的连接、阻止连接到服务器未提供的服务,以及只允许连接到特定服务。在这些情况下,您都可以使用 AIX 操作系统附带的 TCP/IP 过滤功能。
TCP/IP 过滤功能包含在 IPSec 包中,因此检查是否存在的最简单的方法就是用 lslpp –l 列出已安装的包,并验证是否有以下两个包:
| 1 2 |
|
IPsec 是用来创建服务器之间加密通信通道的协议,此通道也常被称为隧道或 VPN 隧道。本文不会详细讨论 IPsec,如果想要在您的环境中使用 IPSec,要保证已安装以下包:
| 1 2 3 |
|
有关 IPSec 的更完整的描述,您可以参考本文 参考资料 一节中的 Security Guide 文档。
命令参考
要使用 TCP/IP 过滤功能,只要用到几个命令,本节将加以说明,下节将会用到。如果您熟悉 AIX 命令,您将会看到它们很类似,在名称前都有描述性前缀,如 mk、ls 和 rm,后面还有 filt 后缀。
- lsfilt:列出表中的过滤规则。创建之后,每条规则都会被分配一个编号,可以轻松地使用该命令看到。
- genfilt:向表中添加一条过滤规则。这是用来创建新过滤的命令。如果未使用
–n参数来指定位置,那么新的规则将会被添加到表格末尾。 - chfilt:用来改变现有的过滤规则。您需要提供规则 ID 以指明要修改哪条规则。规则 1 是默认规则,无法使用此命令修改。
- rmfilt:
rm后缀对所有 UNIX 管理员来说应该很熟悉。您可以使用此命令在任何时候根据规则 ID 来删除过滤规则。 - mkfilt:这是一个重要的命令,它可以激活或停用表中的过滤规则,启用或禁用过滤日志,并改变默认规则。如果要使对过滤表的更改生效,需要在运行此命令时带上一些参数。
过滤策略的方法
当谈到 TCP/IP 过滤中的策略时,通常是指两种可能的安全方法:
- 默认拒绝所有流量,只允许您许可的。
- 默认允许所有流量,只拒绝您限制的。
从安全角度出发,拒绝所有策略是最安全的。但是如果您是配置正在使用中的服务器,那么您在运用此策略前一定要非常谨慎,防止产生不必要的服务中断。对于新的服务器,从开始就使用此策略要简单一些,因为在投入使用之前有足够的时间进行测试。
允许所有策略更加宽松,而且它适用于您有生产服务并想要保护一个特定服务的情况。
示例场景
在本节中,我将会展示一个简单的示例场景,以此作为在服务器上实现其他过滤配置的良好开端。
场景
您的公司在 p710 Express 服务器的 AIX LPAR 上部署了一个新的内网应用程序,公司的安全部门要求限制对 Web 应用程序的访问,只允许来自地址为 172.16.10.5 的内部代理服务器的流量。Web 应用程序监听 TCP 端口 80 和 443。安全部门提出第二条要求,只允许与连接到管理网络 10.1.1.x 的接口的 SSH 连接。安全部门强调,这些要求是强制性的,与服务的的所有配置无关,作为额外的保护层。服务器的 IP 地址是 172.16.10.45 和 10.1.1.45(第一个是提供给用户的地址,第二个是供管理员登录服务器并执行维护任务使用的)。下列图形显示了此场景。
图 1:示例场景

实现 – 设置规则
首先启用服务器中的 IPSec 以启用 IP 过滤。为此,使用 ipsec4 的 smitty 快速路径:
| 1 |
|
选择 Start/Stop IP Security 并按下 Enter 键:
| 1 2 3 4 |
|
选择 Start IP Security 并按下 Enter 键:
| 1 2 3 |
|
从以下各项中选择 Start IP Security 并按下 Enter 键:
| 1 2 3 4 |
|
之前的步骤演示了如何启用 IPSec,从而利用 IP 过滤功能。成功完成后,会显示如下内容:
| 1 2 3 4 5 6 |
|
如果在这里看到错误,那么可能是系统丢失了某些在 需要的包 一节中提到过的包。确认 IP Sec 是否在系统中启用的一个方法是使用如下命令:
| 1 2 |
|
对于日志功能,决定要记录哪些事件时要非常慎重。像 “记录所有内容” 这样的策略可能会变成填写日志文件系统的噩梦,甚至可能对服务器造成副作用。要理性对待日志策略。在此场景中,只要记录被过滤功能拒绝的包,因此日志将会帮助您识别未授权的连接源。日志是由每条规则中的 -l(小写 L)参数控制的,其后是 Y 或 N(Yes 或 No)。
现在可以使用 lsfilt 命令来查看创建的默认规则。不要急着修改默认规则,先搞懂它们的用途和影响。
现在,创建符合安全部门要求的规则。
我们首先创建限制对管理网络的管理访问的规则。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
以上规则实现了管理员连接的目标。请注意,尽管我故意在第 1 条、第 3 条规则留下空挡,不限制 en1 的接口。我这么做是为了展示如何使用 chfilt 命令来修改已有的规则,如下所示:
| 1 2 |
|
现在我们添加规则来限制来自内部代理服务器 172.16.10.5 对内网应用程序的访问。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
以上命令已经创建了满足此场景要求的所有规则。请注意,规则的顺序对实现目标是非常重要的。
下一步,还需要做一些事来启用对拒绝包的记录,并激活配置。
实现 – 设置日志
现在配置 syslog 守护进程将所有来自 IP 过滤的条目记录在指定的文件中。
| 1 2 3 4 5 6 7 8 9 10 11 |
|
实现 – 激活所有内容
到此为止,您已经创建了过滤规则,并准备好了 syslog 以记录被拒绝包的日志。现在可以使用 mkfilt 命令激活配置。
| 1 2 3 4 |
|
应急模式:假设您通过控制台登录到服务器,创建并激活了新的防火墙规则。此时突然接到某人的电话,说他无法访问服务器中运行的某一项服务。您意识到,其中一条规则有疏漏,或不正确,但此时来不及逐条检查,需要立即恢复服务。如果发生这种情况,您只要运行 mkfilt –d 来停用这些规则。不要误用 rmfilt,此命令不仅会影响表中的规则,而且在运行 mkfilt 命令后才会起作用。
一旦完成配置,您就可以定期检查 /var/adm/ipsec.log 文件丢弃了哪些包,并检测潜在攻击以及对配置所做的调整。
结束语
在本文中,我演示了 AIX IP 过滤功能,这是一项内置的而且很有用的功能,可让系统管理员在服务器中实现额外的安全层。同时还讲解了一些基本的网络概念,并总结了执行过滤所要用到的包和命令。与往常一样,所有的防火墙配置都要认真规划,以避免产生副作用,这些副作用往往很难排除。
本文是一个对想要使用此模块进行配置的 UNIX 管理员的很好的入门指导。
本文详细介绍AIX操作系统中TCP/IP过滤功能的配置方法,包括启用IPSec、创建过滤规则及日志设置,旨在帮助系统管理员提升服务器安全性。
7202

被折叠的 条评论
为什么被折叠?



