TCP Warppers的访问控制机制:所有受xinetd服务管理的服务和一部分独立服务

判断某个服务是否支持TCP Wrappers的两个方法:
 1、使用ldd $(which sshd)服务名,如果这个服务依赖于libwrap.so.0这个库文件,这个服务就支持TCP Wrappers
 2、使用strings $(which sshd)服务名,如果可以看到/etc/hosts.{allow,deny},这个服务就支持TCP Wrappers
TCP Wrappers先检查/etc/hosts.allow文件,后检查/etc/hosts.deny文件,默认的策略是允许
TCP Wrappers访问控制的书写格式:daemon_list:client_list[:options]
 daemon_list的形式:
  1) vsftpd 单个服务
  2) vsftpd,sshd 一组服务列表
  3) ALL 所有服务
  4) [email protected] 某个接口上的某种服务
 client_list的形式
  1) 192.168.1.1 单个IP
  2) 192.168.1.0/255.255.255.0 只能使用长格式
  3) 172.16. 某个网段可以省略0
  4) FQDN格式的主机名
  5) .example.com 某个域内的所有主机
  6) ALL 所有主机
  7) LOCAL,KNOWN,UNKNOWN,PARANOID(正反向解析不匹配)
  8) ALL EXCEPT 192.168.1.1 
 options的形式:常用于记录日志(日志中不能有":"出现,":"在文件里是有特殊意义)
  severity/spawn/twist
  1)daemon_list: client_list : severity local0.alert(这里是syslog级别) 记录日志的级别,写入syslog里面
  2)daemon_list: client_list : spawn /bin/echo `/bin/date` from %h>>/var/daemon_list.log :allow/deny 可以在本地自定义记录日志和日志记录的位置
  这里可以使用一些TCP Wrappers的扩展定义
  %a-返回客户端的IP地址,%A-返回服务器的IP地址,%d返回进程名等,具体可以查看 man 5 hosts_access
  3)daemon_list: client_list : twist /bin/echo "显示内容"  传达给客户端的,twist只能用在最后,后面不能再跟allow/deny
 在允许中拒绝写在hosts.allow文件中:daemon_list: client_list : deny
 在拒绝中允许写在hosts.deny文件中:daemon_list: client_list : allow