在Linux系统中,许多网络服务针对客户机提供了某种访问控制机制,如samba、BIND、Httpd、OpenSSH等,除此之外还有一种防护机制—TCP Wrappers(TCP封套),以作为应用服务与网络之间的一道特殊防线,提供额外的安全保障。
TCP Wrappers概述
TCP Wrappers将其他的TCP服务程序“包裹”起来,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。
TCP Wrappers还可以记录所有企图访问被保护服务的行为,为管理员提供丰富的安全分析资料。TCP Wrappers的访问控制是基于TCP协议的应用服务。
相对于iptables防火墙访问控制规则,TCP Wrappers的配置更简单。但是TCP Wrappers也有两个缺点:
第一,TCP Wrappers只能控制TCP协议的应用服务;
第二,并不是所有基于TCP协议的应用服务都能接受TCP Wrappers控制。对于大多数Linux发行版,TCP Wrappers是默认提供的功能。
2、 TCP Wrappers 的访问策略
TCP Wrappers机制的保护对象为种网络服务程序,针对访问服务的客户机地址进行访问控制。对应的两个策略文件为**/etc/hosts.allow和/etc/hosts.deny**,分别用来设置允许和拒绝的策略。
2.1策略的配置格式
两个策略文件的作用相反,但配置记录的格式相同,如下所示:
<服务程序列表>:<客户机地址列表>
服务程序列表、客户机地址列表之间以冒号分隔,在每个表内的多个项之间以逗号分隔。
(1)服务程序列表,可以分为以下几类:
ALL:代表所有的服务。
单个服务程序:如“sshd”。
多个服务程序组成的列表:如“sshd,vsftpd”。
(2)客户机地址列表,可以分为以下几类:
ALL:代表任何客户机地址。
LOCAL:代表本机地址。
单个IP地址:如“192.168.75.158”。
网络地址段:如“192.168.75.0/255.255.255.0”。
以“.”开始的域名:如“.kgc.cn”匹配域中的所有主机。
以“.”结束的网络地址:如192.168.75.匹配整个192.168.75.0/24网段。
嵌入通配符“*””?”:前者代表任意长度字符,后者仅代表一个字符,
如”10.0.8.2*”匹配以10.0.8.2开头的所有IP地址。不可与以“.”开始或结束的模式混用。
多个客户机地址组成的列表:如“192.168.1.,172.17.17.,.kgc.cn”。
2.2访问控制的基本原则
关于TCP Wrappers机制的访问策略,应用时遵循以下顺序和原则:
- 首先检查/etc/hosts.allow文件,如果匹配则允许访问;
- 否则继续检查/etc/hosts.deny文件,如果匹配则拒绝访问;
- 如果上述两个文件都没有匹配,则允许访问。
2.3TCP Wrappers配置实例
较宽松的策略可以是“允许所有,拒绝个别”——只在hosts.deny文件中添加拒绝策略就可以了。
较严格策略是“允许个别,拒绝所有”——除了在hosts.allow中添加允许策略外还需要在hosts.deny文件中设置“ALL:ALL”的拒绝策略。
举例:只允许61.63.65.67的主机或者位于192.168.2.0/24网段的主机访问sshd服务,拒绝其他地址。
[root@aminglinux ~]#vim /etc/hosts.allow
sshd:61.63.65.67,192.168.2.*
[root@aminglinux ~]#vim /etc/hosts.deny
sshd:ALL
例:只允许172.16.11.28访问
1、设置etc/hosts.allow允许的网段为172.16.11.28**,且必须要加上虚拟机VM的IP段才可以**
[root@aminglinux ~]#vim /etc/hosts.allow
sshd:172.16.11.28,192.168.65.*
[root@aminglinux ~]#vim /etc/hosts.deny
sshd:ALL