[TOC]

tcp_wrapper:

    库文件:libwrap.so,tcp包装器;
    
    判断一个服务程序是否能够由tcp_wrapper进行访问控制的方法:
        (1) 动态链接至libwrap.so库;
            ldd  /PATH/TO/PROGRAM
                libwrap.so
        (2) 静态编译libwrap.so库文件至程序中:
            strings /PATH/TO/PGRGRAM 
                hosts_access
    
    配置文件:/etc/hosts.allow, /etc/hosts.deny
        
         See 'man 5 hosts_options' and 'man 5 hosts_access' for information on rule syntax. 
    
        配置文件语法:
            daemon_list : client_list[ : option : option ...]
            
            daemon_list:程序文件名称列表
                (1) 单个应用程序文件名;
                (2) 程序文件名列表,以逗号分隔;
                (3) ALL:所有受tcp_wrapper控制的应用程序文件;
                
            client_list:
                (1) 单个IP地址或主机名;
                (2) 网络地址:n.n.n.n/m.m.m.m,n.n.n.;
                (3) 内建的ACL:
                    ALL:所有客户端主机;
                    LOCAL:Matches any host whose name does not contain a dot character.
                    UNKNOWN
                    KNOWN
                    PARANOID
                    
                OPERATORS:
                    EXCEPT
                        list1 EXCEPT list2 EXCEPT list3
                        
                        sshd: 172.16. EXCEPT 172.16.100. EXCEPT 172.16.100.68
        
            [ : option : option ...]
            
                deny:拒绝,主要用于hosts.allow文件中定义“拒绝”规则;
                allow:允许,主要用于hosts.deny文件中定义”允许“规则;
                
                spawn:生成,发起,触发执行用户指定的任意命令,此处通常用于记录日志;
                
                    vsftpd: 172.16. : spawn /bin/echo $(date) login attempt from %c to %s >> /var/log/tcp_wrapper.log 
                
    练习:仅开放本机的sshd服务给172.16.0.0/16网络中除了172.16.0.0/24网络中的主机之外的所有主机,但允许172.16.0.200访问; 每次的用户访问都要记录于日志文件中;