tcp_wrapper:tcp包装器

对基于tcp协议开发并提供服务的应用程序,提供的一层访问控制工具;
基于库调用实现其功能:
    libwrap

判断服务是否能够由tcp_wrapper进行访问控制:
    (1) 动态编译:ldd命令;
    (2) 静态编译:strings命令查看应用程序文件,其结果中如果出现
        hosts.allow
        hosts.deny

在配置文件在为各服务分别定义访问控制规则实现访问控制:
    /etc/hosts.allow
    /etc/hosts.deny

    配置文件语法:
        daemon_list: client_list [:options]

        daemon_list:
            应用程序的文件名称,而非服务名;
            应用程序文件名称列表,彼此间使用逗号分隔;
                例如:sshd, vsftpd:
                    ALL表示所有服务;

        client_list:
            IP地址;
            主机名;
            网络地址:必须使用完整格式的掩码,不使用前缀格式掩码;所以类似于172.16.0.0/16不合法;
            简短格式的网络地址:例如172.16. 表示 172.16.0.0/255.255.0.0;
            ALL:所有主机;
            KNOWN: 
            UNKNOWN
            PARANOID

            例如:vsftpd服务不允许172.16.100.1访问

        EXCEPT: 除了
            hosts.allow
                vsftpd: 172.16. EXCEPT 172.16.100.0/255.255.255.0 EXCEPT 172.16.100.1

        [:options]
            deny: 拒绝,主要用于hosts.allow文件中
            allow:允许,用于hosts.deny文件,实现allow的功能
            spawn: 启动额外应用程序:
                vsftpd: ALL :spawn /bin/echo `date` login attempt from %c to %s, %d >> /var/log/vsftpd.deny.log
                    %c: client ip
                    %s: server ip
                    %d: daemon name

    练习:控制telnet服务仅允许172.16.0.0网络中的主机访问,但不包括172.16.100.0/255.255.255.0中的主机;
        对所有正常登录的主机都记录于/var/log/telnet.allow.log中;
        所有未授权访问尝试都记录于/var/log/telnet.deny.log中;