虽然 TCP Wrappers 的配置更加简单,但是也有两个缺点:第一,TCP Wrappers 只能控制 TCP 协议应用服务;第二,并不是所有基于 TCP 协议的应用服务都能接受 TCP Wrappers的控制。
TCP Wrappers 的访问策略
TCP Wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户机地址进行访问控制。对应的两个策略文件为 /etc/hosts.allow 和 /etc/hosts.deny,分别用来设置允许和拒绝的策略。
1. 策略的配置格式
< 服务程序列表 >:< 客户机地址列表 >
两个策略文件作用相反,但配置记录的格式相同。
( 1 ) 服务程序列表
- ALL:代表所有的服务。
- 单个服务程序。
- 多个服务程序组成的列表。
( 2 ) 客户机地址列表
- ALL:代表任何客户机地址。
- LOCAL:代表本机地址。
- 单个 IP 地址。
- 网络端地址。
- 以 “ . ” 开始的域名。
- 以 “ . ” 结束的网络地址。
- 嵌入通配符 “ * ” “ ? ”:前者代表任意长度字符,后者代表一个字符。
- 多个客户机地址组成的列表。
2. 访问控制的基本原则
首先检查 /etc/hosts.allow 文件,如果找到相匹配的策略,则允许访问,否则继续检查 /etc/hosts.deny 文件,如果找到相匹配的策略的策略,则拒绝访问;如果检查两个文件都找不到相匹配的策略,则允许访问。
3. TCP Wrappers 的基础配置
例如,只希望 IP 地址为 13.13.12.14 的主机或者位于 192.168.88.0 /24 网段的主机访问 sshd 服务,拒绝其他地址,可以执行以下操作。
# host.allow 文件
[root@localhost~]# vim /etc/hosts.allow
sshd:13.13.12.14,192.168.88.*
# 列表内的多个项之间以逗号分隔
# host.deny 文件
[root@localhost~]# vim /etc/hosts.deny
sshd:ALL
较宽松的策略可以是 “ 允许所有,拒绝个别 ” ,较严格的策略是 “ 允许个别,拒绝所有 ”。