tcp_wrapper:tcp包装器,是一个由wieste venema开发,旨在为unix/linux服务器提供防火墙服务的免费软件,它能够让系统管理员记录和控制wrappers支持基于tcp的服务或守护进程的访问。

tcp_wrappers是用来辅助而非替代netfilter的,因为tcp_wrappers工作在应用层,而netfilter工作在网络层;

库文件:libwrap.so

/etc/hosts.allow  , /etc/hosts.deny

判断某服务是否能够由tcp_wrapper进行访问控制的方法:

1)      动态编译:ldd命令;

ldd $(which COMMAND) | libwrap

2)      静态编译:strings命令查看应用程序文件,其结果中是否出现了hosts.allow和hosts.deny文件;

        image.png

服务基于libwrap完成访问控制的流程:

       首先检查/etc/hosts.allow文件中有没有显式授权当前请求者访问;

              是:直接授权客户端访问;

              否:接着去检查/etc/hosts.deny文件中有没有显式拒绝当前请求者访问;

                     是:直接拒绝当前请求者的访问;

                     否:允许请求者访问;

       配置文件语法:

              daemon_list:client_list  [:options]

              daemon_list

1)      单个应用程序的文件名称,而非服务名;

2)      以逗号分隔的应用程序文件名列表;

例如:sshd,vsftpd

3)      ALL:所有接受tcp_wrapper控制的程序;

Client_list

    Ip地址;

    主机名;

    网络地址:必须使用完成格式的掩码,不能使用前缀格式掩码;

    简短格式网络地址:例如172.16.  表示172.16.0.0/255.255.0.0

    ALL:所有主机;

    KNOWN:能被解析的主机名

    UNKNOWN:无法解析的主机名

    PARANOID:主机名和ip地址的各自的正反解析结果不匹配

EXCEPT:除了

:options

    deny:拒绝,主要用于hosts.allow文件

    allow:允许,主要用于hosts.deny文件;

    spawn:启动指定的应用程序;

           vsftpd:ALL:spawn  /bin/echo  $(date)  login attempt  from  %c  to  %s,%d  >>  /var/log/vsftpd.deny.log

                  %c:client  ip

                  %s:daemon@server ip

                  %d:daemon  name

示例:vsftpd 仅开放给192.168.19.0/255.255.255.0中的主机访问;

       sshd仅开放给192.168.19.0/255.255.255.0中的主机访问,但是不包括192.168.19.130

对所有被拒绝的访问尝试都记录在/var/log/service.deny.log文件中;

1)      /etc/hosts.allow文件中内容:

Linux自学笔记——tcp wrapper_第1张图片

2)      tc/hosts.deny文件中内容:

Linux自学笔记——tcp wrapper_第2张图片

3)      测试;

首先用IP地址为192.168.19.134的主机测试;

Linux自学笔记——tcp wrapper_第3张图片

再用192.168.19.130的主机测试;

image.png

4)      查看日志;

image.png