tcp_wrap:

    工作在tcp层,对基于tcp的访问请求做控制。
    工作在用户请求和服务监听套接字之间的检查过滤机制。可以实现对某种服务的访问请求,根据规则定义判断是否允许访问。

    需要二进制程序加载对应的库文件才能予以控制。


tcpd 库:
    包含在glib库中。
    libwrap.so 动态库文件
    有的程序在编译是已经编译为静态库文件。

检查应用程序是否受tcp_wrap控制
    1.动态库文件
        #ldd `which sshd`|grep libwrap
            libwrap.so.*

        显示二进制程序所需的库文件。若出现libwarp.so文件则说明使用动态库方式。

    2.静态库文件
        #strings `which portmap` |grep hosts
            /etc/host.allow
            /etc/host.deny
        若出现以上文件,则说明已编译为静态。

tcp_warp访问控制文件:
    /etc/hosts.allow
    /etc/hosts.deny

    语法格式:
        DAEMON_LIST: CLIENT_LIST[ :OPTIONS]

        DAEMON_LIST 二进制程序名,不是服务名。
            ALL 表示所有受控制的程序
            PROGNAME@IP 适用于主机有多个ip地址的情况,指定从哪个ip地址访问服务。

        CLIENT_LIST 客户端列表
            IP ip地址

            NETWORKADDR  网段
                NETWORK/NETMASK
                NETWORK.

            HOSTNAME
                FQDN
                .DOMAIN

            MACRO 宏
                ALL 全部客户端
                LOCAL 和本机网卡在同个网段内的主机
                KNOWN FQDN可以被正常解析
                UNKNOWN FQDN无法解析
                PARANOID FQDN正向解析和反向解析不匹配
                EXCEPT 除了,不包含

        OPTIONS
            DENY
            ALLOW
            spawn  echo “STRINGS” >> /var/log/xxxx.log 记录日志

    宏:
        %c 客户端信息 格式为 USER@HOST
        %s 访问服务的信息 格式为 SERVER@HOST
        %h 客户端主机名
        %p 访问服务的pid


控制流程:
    hosts.allows --> hosts.deny --> 默认规则

    1.检查hosts.allow,若有匹配规则则允许访问,若没有则检查hosts.deny
    2.检查hosts.deny,若有匹配规则则拒绝访问
    3.检查默认规则,默认为允许

进程:
    standalone 独立守护进程
        服务自我进行管理

    transient 瞬时守护进程
        由超级守护进程xinetd代为管理。