在Linux系统中,各种网络服务程序基本上都会有一些针对客户端访问的控制策略,如smb、bind、sshd等,都可以提供针对客户端地址的访问控制。除此以外,服务器通常还会处于网络层防火墙的强力保护之下。本节将要学习的TCP Wrappers(TCP封套)机制,可以作为防火墙后的第二道防线,为各种网络服务提供额外的安全防护。
1.TCP  Wrappers概述
       TCP Wrappers可以将其他的TCP服务程序“包裹”起来,增加了一个额外的安全检测机制,外来的连接请求首先要通过这层安全检测,获得许可后才能被服务程序所接受。同时它还可以记录所有企图访问包装服务的行为,为管理员提供丰富的安全分析资料。
        大多数Linux发行版中都默认提供了TCP Wrappers功能,在RHEL5系统中对应的软件包是tcp_wrappers-7.6-40.2.1,该软件包提供了主要执行文件tcpd和共享链接库文件libwrap.so.*。TCP Wrappers机制的实现也对应有两种方式。
→直接使用tcpd对其他服务程序进行包装,需要运行tcpd。
→由其他网络服务程序调用libwrap.s.*链接库,无需运行tcpd。
         通常第二种方式应用更加广泛也更有效率,如vsftpd、sshd以及xinetd超级服务器程序,都调用了libwrap共享库(使用ldd命令可以查看执行程序的共享库信息)。
使用TCP Wrappers机制_职场
2.hosts.allow和hosts.deny策略应用
        TCP Wrappers机制主要针对服务程序和客户端地址进行访问控制,控制策略在/etc/hosts.allow和/etc/hosts.deny两个文件中设置,分别对应允许的和拒绝的策略。
2.1两个文件使用相同格式的配置记录,常用的记录格式如下:
<服务程序列表>:<客户机地址列表>
         两个字段之间使用冒号分隔,每个列表内容可以包含多项内容,不同的列表项使用逗号分隔。
服务程序列表字段可以表示为以下形式:
→ALL代表所有的服务。
→单个服务程序名称,例如“vsftpd”代表vsftpd服务器程序。
→多个服务程序组成的列表,例如“vsftpd,sshd”。
客户机地址列表字段可以表示为以下形式:
→ALL代表所有的客户机地址。
→LOCAL代表本机地址。
→单个IP地址,例如“192.168.4.4”。
→网络段地址,例如“192.168.4.0/255.255.255.0”。
→以点号“.”开始的域名,例如“.benet.com”匹配benet.com域中的所有主机。
→以点号“.”结束的网络号,例如“192.168.4.”匹配192.168.4.0/24网段的所有IP地址。
→允许使用通配符“*”、“?”,例如“10.0.8.2*”匹配以10.0.8.2开头的所有IP地址(包括如10.0.8.2、10.0.8.20、10.0.8.200等)。但是不要在以点号“.”开始或结束的模式中使用。
→以上多个客户机地址也可以组成列表,例如“192.168.1.,172.17.17.,.benet.com”。
2.2访问控制原则
在应用hosts.allow、hosts.deny文件中的访问控制策略时,遵循以下顺序和原则:
→如果在/etc/hosts.allow文件中找到相匹配的策略,则运行访问。
→否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问。
→如果在两个文件中都找不到相匹配的策略,则允许访问。
2.3TCP Wrappers配置实例
        在TCP Wrappers访问机制时,较宽松的策略可以是“允许所有,拒绝个别”,较严格的策略是“允许个别,拒绝所有”。前者只需要在/etc/hosts.deny设置对应的个别拒绝策略就可以了;后者则除了在/etc/hosts.allow中设置个别允许策略外,还需要在/etc/hosts.deny文件中添加“ALL:ALL”的策略设置。
为vsftpd服务程序设置TCP Wrappers访问控制策略,仅允许地址为192.168.1.3的主机访问,拒绝其他客户机访问ftp服务器。
查询ftp服务IP地址:
使用TCP Wrappers机制_休闲_02
查询ftp服务IP地址:
使用TCP Wrappers机制_职场_03
查询客户机IP地址:
使用TCP Wrappers机制_TCP Wrappers机制_04
开启vsftpd服务
使用TCP Wrappers机制_TCP Wrappers机制_05
编辑hosts.allow和hosts.deny策略
使用TCP Wrappers机制_休闲_06
先编辑hosts.allow策略:
使用TCP Wrappers机制_TCP Wrappers机制_07
编辑hosts.deny策略
使用TCP Wrappers机制_TCP Wrappers机制_08
验证,IP地址为192.168.1.3的主机是可以访问ftp服务的
使用TCP Wrappers机制_职场_09
编辑hosts.allow将允许访问的主机IP地址变为192.168.1.4
使用TCP Wrappers机制_职场_10
使用TCP Wrappers机制_TCP Wrappers机制_11
这样IP地址为192.168.1.3的主机就不能在访问ftp服务器了,因为允许的主机成了192.168.1.4,而/etc/hosts.deny设置的是拒绝所有,因此IP地址为192.168.1.3的主机就不能在继续访问了。
使用TCP Wrappers机制_职场_12