/etc/hosts.allow 和 /etc/hosts.deny 文件的格式是完全相同的。每个规则都必须位于其正确的行位。空行或以井字号 (#) 开始的行会被忽略。
每条规则都使用以下基本格式来对网络服务的访问进行控制:
<daemon list>: <client list> [: <option>: <option>: ...]
<daemon list> — 一个由逗号分隔的进程名(不是 服务名)列表,或 ALL 通配符。守护进程列表也接受运算符(请参阅第 3.2.2.1.4 节 “算子(Operators)”)来提供更大的灵活性。
<client list> — 一个由逗号分隔的主机名、主机 IP 地址、特殊模式或通配符列表,该列表用来识别受这项规则影响的主机。客户列表也接受在 第 3.2.2.1.4 节 “算子(Operators)” 中列出的运算符来允许更大的灵活性。
<option> — 这项规则被触发时要运行一个动作选项或由冒号分隔开动作列表。选项领域支持扩展式、发布 shell 命令、允许或拒绝访问以及修改日志记录。
在这部指南的其它章节可以找到关于上面提到的专门术语的更多信息:
下面是一个基本的主机访问规则示例:
vsftpd : .example.com
这条规则指示 TCP Wrappers 监测在 example.com 域内的任何主机要向 FTP 守护进程(vsftpd)发出的连接。如果这条规则出现在 hosts.allow 中,连接则被接受。如果这条规则出现在 hosts.deny 中,连接则被拒绝。
下面的主机访问规则比较复杂,而且使用两个选项领域:
sshd : .example.com \ : spawn /bin/echo `/bin/date` access denied>>/var/log/sshd.log \ : deny
请注意每个选项领域前面都有反斜线(\)。使用反斜线可以防止由于规则太长而造成失败。
这个范例规则规定如果 example.com 中的某个主机试图向 SSH 守护进程(sshd)发出连接请求,那么执行 echo 命令来将这次尝试添加到一个专用日志文件里,并且拒绝该连接。因为使用了命令选项 deny,这一行拒绝访问,即使它出现在 hosts.allow 文件里。请参阅 第 3.2.2.2 节 “选项领域 ” 来获得关于各种可选选项更详细的信息。