前言

在通常情况下,AIX 服务器都放置于企业内部环境中,可以受到企业级防火墙的保护。为了方便使用,在 AIX 系统中许多常用服务端口缺省是开放的,但这同时也带来一定的安全隐患,给企业内部一些别有用心的人提供了方便之门。

安全无小事,对于运行了关键业务的 AIX 服务器,为了提高安全性,我们可以通过关闭不必要的端口,停止相应的服务来实现。但是,如果某项服务端口由于应用的特殊需要不可以停止,有什么办法可以使其只为一部分服务器提供该项服务,而不为其他服务器提供该项服务呢 ? 即通 IP 地址来判断访问请求是否合理,可否为其提供服务。

为了保护 AIX 服务器,避免不必要的访问,最好的办法就是在 AIX 中实施 IP 过滤规则。在 AIX 中我们通过设置 IP 过滤规则 (IP Security Filter),只接受预先定义好的访问请求而拒绝其他的访问的请求。

下面就 IP Security Filter 的设置步骤进行介绍。

安装 IP Security 软件包

为了设置 IP 过滤规则,需要在 AIX 上安装相应的 IP security 软件包,检查系统中是否有以下的软件包。 ( 在本文中所使用的操作系统的版本是 AIX 6100-TL06-SP01,而 IP Security Filter Feature 在早期的 AIX4.3.3 中就有支持了 )

图 1. 检查系统中是否安装了 IPSec 的软件包

如果没有,请在光盘驱动器中插入 AIX 操作系统 DVD,使用 AIX 中的 smit 命令进行安装。该软件包是随着操作系统一起提供的。

# smitty install

载 IP Security 核心扩展模块

软件包安装完成后,需要在系统中加载 IP Security 核心扩展模块,才能使过滤功能生效。可以使用 smitty 或 mkdev 命令来完成模块的加载。

请参照以下图片完成 IP Security 扩展模块的加载。

#smitty tcpip
Configure IP Security (IPv4)->Start/Stop IP Security->Start IP Security

图 2. 加载 IP Security 扩展模块

注意 : 在此时 <Deny All Non_secure IP Packets> 选项要设为 <no>. 否则所有的网络通讯可能就会断掉。

成功完成上述命令后,系统中应增加了以下的设备

图 3.检查系统中 IP Security 扩展模块的状态

ipsec_v4 针对的是服务器中使用的 IP 地址是 V4 的定义

ipsec_v6 针对的是服务器中使用的 IP 地址是 V6 的定义。

现在我们就可以开始在系统中定义过滤规则了。

检查系统中的缺省的 IP 过滤规则

在 AIX 中可以通过设定 permit 或 deny 规则,来表示接受或拒绝网络请求。IP Security 扩展核心模块加载后系统中就会有 2 条缺省过滤规则。

使用 lsfilt 命令检查当前系统中定义的规则。

#lsfilt -s -v4 -O

图 4.AIX 系统中缺省的过滤规则

规则 1,用于会话密钥监控服务 (session key daemon ), 只会出现在 IP v4 的过滤规则表中。通过使用端口 4001 来控制用于刷新会话密钥的通讯包。不要修改该规则。

规则 2,自动生成的规则,总是在过滤表中的最后一行,缺省是 permit 规则,表示如果之前的所有过滤规则都不匹配的话,就允许该包通过。为了安全起见,通过周密的设置,可以改为 deny 规则,拒绝所有不满足过滤规则的通讯包访问该服务器。

配置 IP 过滤规则

IP 过滤表中的每一行就表示一条过滤规则。在 AIX 中可以通过设定 permit 或 deny 规则来表示接受或拒绝网络请求。这些规则的集合决定了什么样的包是可以接收或发送的。

我们可以从多个方面来定义过滤规则,其中包括包的源地址、目标地址、网络屏蔽位、使用的协议类型、端口号、通讯方向 (inbound or outbound)、网络接口名 (interface name) 等。

在 IP 过滤规则表中,匹配检查是从规则 1 开始的,一旦找到了相匹配的规则就可以决定是接受还是拒绝该通讯包,停止对剩余规则的扫描。所以序号小的规则总是被先扫描,序号大的规则是在之前的过滤规则都不满足的情况下才会被扫描到。我们可以根据需要来调整某条规则在过滤规则表中的位置,使其发挥应有的作用。过滤规则表中的静态过滤规则是可以进行增加、删除、修改和序号移动操作的。

过滤规则的设置可以参照以下步骤完成 :

#smitty ipsec4

择 Advanced IP Security Configuration -> Configure IP Security Filter Rules -> Add an IP Security Filter Rules.

下面举例说明 : 对于 IP 地址是 172.16.58.131 的 AIX 服务器,我们希望只有来自于 172.16.15.0 网段的服务器才可以通过 telnet 访问它, 拒绝来自其他网段的 telnet 请求。

在 Unix 操作系统中 telnet 缺省使用的端口号是 23,所以在 172.16.58.131 服务器上需要设置以下 2 条过滤规则,一条是 permit 规则,一条是 deny 规则。

注意 :permit 规则要在 deny 规则之前。

图 5.172.16.58.131 服务器上设置的 permit 规则

图 6.172.16.58.131 服务器上设置的 deny 规则

设置完成后选择 <List IP Security Filter Rules> 检查一下当前系统中的 IP 过滤规则表。

图 7.系统中定义的过滤规则表

或者使用命令行来完成这些操作。

增加 2 条 IP 过滤规则 :

# genfilt -v 4  -a 'P' -s '172.16.15.0' -m '255.255.255.0' -d '172.16.58.131' 
-M '255.255.255.0' -g 'y' -c 'all' -o 'any' -p '0' -O  'eq' -P '23' -r 'B' 
-w 'B' -l 'N' -t '0' -i 'all
# genfilt -v 4  -a 'D' -s '0.0.0.0' -m '0.0.0.0' -d '172.16.58.131' 
-M '255.255.255.255' -g 'y' -c 'all' -o 'any' -p '0' -O 'eq' -P  '23' -r 'B' 
-w 'B' -l 'N' -t '0' -i 'all'

使用命令 lsfilt 检查当前系统中的 IP 过滤规则表

#lsfilt -s -v4 -O

 IP 过滤规则生效

设置完成的 IP 过滤规则不是立即生效的,需要做激活操作才起作用。 可以在 smit 菜单中选择激活操作菜单项或使用命令行的方式来激活它。

# smitty ipsec4

择 Advanced IP Security Configuration ->Activate/Update/Deactivate IP Security Filter Rule

或者

# mkfilt -v4 -u

 IP 过滤规则生效后,下面来验证过规则是否有效。

测试一

在 IP 地址是 172.16.15.56 的服务器上,应该能 ping 到 172.16.58.131,也可以用 telnet 访问 172.16.58.131 服务器

检查 IP 地址

zhujh@atsnim:/atspersonal/zhujh>ifconfig -a 
en2: flags=1e080863,c0<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,
64BIT,CHECKSUM_OFFLOAD(ACTIVE),LARGESEND,CHAIN> 
inet 172.16.15.56 netmask 0xffffff00 broadcast 172.16.15.255 
tcp_sendspace 131072 tcp_recvspace 65536 rfc1323 0

图 8.服务器 172.16.15.56 可以 telnet 访问 172.16.58.131

测试二

在 IP 地址是 172.16.28.221 服务器,按规则应该只能 ping 到 172.16.58.131,但却无法使用 telnet 访问 172.16.58.131。

图 9.服务器 172.16.28.221 上的运行结果

在 172.16.58.131 服务器上使 IP 过滤规则临时失效,这时 172.16.28.211 服务器就可以用 telnet 访问 172.16.58.131 服务器。以上的实验证明,设置在 172.16.58.131 的 IP 过滤规则是有效的。

图 10. 规则失效时,172.16.28.211 可以用 telnet 访问 172.16.58.131

维护 IP 过滤规则

调整 IP 过滤规则的顺序

在 IP 过滤规则表中,过滤规则的顺序是非常重要的。如果定义的顺序不恰当可能造成任何服务器都无法访问服务器,或者是本来需要限制的访问,却没有起作用,使服务器面临不必要的安全风险。

最新定义的过滤规则,其序号总是最大。为了保证它能正常发挥作用,定义完成后根据需要适当调整其在过滤规则表中的位置。

参考“配置 IP 过滤规则”中的例子,如果 deny 规则定义在 permit 之前,则所有的服务器都无法通过 telnet 来访问 172.16.58.131.

图 11.deny 规则在 permit 规则前

使用 mvfilt 命令将 permit 调整到 deny 之前就可以实现对 IP 的有效过滤。

# /usr/sbin/mvfilt -v 4 -p '4' -n '3

 12.调整后的过滤规则表

这样修改前的规则 4 就改为当前规则 3,原规则 3 及之后的规则序号都递增 1。不要忘记使用下面的命令刷新当前的过滤规则表。

#/usr/sbin/mkfilt –v4 –u

完成上述操作后,调整后的 IP 过滤规则就可以生效和起作用了。

修改 IP 过滤规则

参照 “配置 IP 过滤规则”中的例子。如果希望只有 172.16.15.56 服务器才可以访问 172.16.58.131 服务器,而在 172.16.15.0 网段和其他网段的服务器都不可以通过 telnet 来访问它。

在 172.16.58.131 服务器上使用命令 chfilt 来进行修改 permit 规则 3:

# /usr/sbin/chfilt -v 4  -n '3' -s '172.16.15.56' -m '255.255.255.255

图 13 修改后的过滤规则表

注意 : 其中的网络掩码是 255.255.255.255 而不是 255.255.255.0。指将规则 3 中的源地址 172.16.15.56 和网络掩码做 与 (AND) 的逻辑运算,其结果是 172.16.15.56. 只有来自于该服务器的 telnet 请求连接才会被接受。

总结

通过使用以下命令对 IP 过滤规则表进行周密的定义,就可以大大增强 AIX 服务器的安全,减少受到网络攻击的可能。

  • genfilt: 向系统中增加过滤规则
  • mkfilt: 使过滤规则生效或失效
  • lsfilt: 列出当前系统中定义的过滤规则表
  • chfilt: 修改过滤规则
  • mvfilt: 调整过滤规则在表中顺序
  • ipsecstat : 检查 IP security 设备和状态以及对各类 IP security 包进行统计。