在通常情况下,AIX 服务器都放置于企业内部环境中,可以受到企业级防火墙的保护。为了方便使用,在 AIX 系统中许多常用服务端口缺省是开放的,但这同时也带来一定的安全隐患,给企业内部一些别有用心的人提供了方便之门。
安全无小事,对于运行了关键业务的 AIX 服务器,为了提高安全性,我们可以通过关闭不必要的端口,停止相应的服务来实现。但是,如果某项服务端口由于应用的特殊需要不可以停止,有什么办法可以使其只为一部分服务器提供该项服务,而不为其他服务器提供该项服务呢 ? 即通 IP 地址来判断访问请求是否合理,可否为其提供服务。
为了保护 AIX 服务器,避免不必要的访问,最好的办法就是在 AIX 中实施 IP 过滤规则。在 AIX 中我们通过设置 IP 过滤规则 (IP Security Filter),只接受预先定义好的访问请求而拒绝其他的访问的请求。
下面就 IP Security Filter 的设置步骤进行介绍。
为了设置 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 核心扩展模块,才能使过滤功能生效。可以使用 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 的定义。
现在我们就可以开始在系统中定义过滤规则了。
在 AIX 中可以通过设定 permit 或 deny 规则,来表示接受或拒绝网络请求。IP Security 扩展核心模块加载后系统中就会有 2 条缺省过滤规则。
使用 lsfilt 命令检查当前系统中定义的规则。
#lsfilt –s –v4 –O |
图 4.AIX 系统中缺省的过滤规则
规则 1,用于会话密钥监控服务 (session key daemon ), 只会出现在 IP v4 的过滤规则表中。通过使用端口 4001 来控制用于刷新会话密钥的通讯包。不要修改该规则。
规则 2,自动生成的规则,总是在过滤表中的最后一行,缺省是 permit 规则,表示如果之前的所有过滤规则都不匹配的话,就允许该包通过。为了安全起见,通过周密的设置,可以改为 deny 规则,拒绝所有不满足过滤规则的通讯包访问该服务器。
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 –v |
设置完成的 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 过滤规则”中的例子,如果 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 过滤规则”中的例子。如果希望只有 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 包进行统计。
学习
-
<<AIX6.1 安全手册 >>: 本书介绍了 AIX6.1 中与安全有关的所有内容。其中包括操作系统的基本安全设置,网络安全设置以及 AIX Security Expert 等内容。
-
AIX 6.1 Information Center:AIX 6.1 信息中心。该网站提供了大量与 AIX6.1 系统管理,性能调优,编程和系统安全相关的内容,您可以利用它们来提高自己的 AIX 技能。
- AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
- AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
- AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
-
AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
- IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。
讨论
- 加入 developerWorks 中文社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。