一、tcp_wrapper

 1.tcp_wrapper

   (1)TCP包装器

          一个为Unix服务器提供防火墙服务的公共领域计算机程序,通用库文件:libwrap.so。定义配置后无需重启服务,因为基于libwrap.so库动态加载,不会拒绝已经建立的连接,仅在启动该程序时检查。

配置文件:/etc/host.allow(允许)/etc/hosts.deny(禁止)

   (2)判断某服务是否能够由tcp_wrapper进行访问控制

1) 动态编译:ldd命令查看是否存在libwrap.so

# ldd $(which COMMAND) | grep libwrap

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

       注意:

CentOS6主机上的telnet服务托管于xinetd,后者接受libwrap控制;

CentOS7主机上的telnet服务未托管于xinetd,而in.telnetd程序未链接至libwrap;

 

  2.服务基于libwrap完成访问控制流程

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

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

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

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

否:允许请求者访问;

         注意:

  1)依次在/etc/hosts.allow/etc/hosts.deny配置文件中匹配请求,仅某段地址需在allow通行,在deny禁止ALL

  2)allowdeny中均未定义规则,允许请求者访问

 

 

二、配置文件

    语法格式:服务列表对应主机列表的访问控制

          daemon_list:client_list [:options]

  1.daemon_list:

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

      (2)以逗号分隔的应用程序文件名列表;例如:sshd, vsftpd

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

 

  2.client_list:

IP地址


主机名


网络地址

必须使用完整格式的掩码,不能使用前缀格式掩码

简短格式的网络地址

例如172.16.  表示172.16.0.0/255.255.0.0

ALL

所有主机

KNOWN

所有已知可以解析的主机

UNKNOWN

主机名不能反解的主机

PARANOID

正向解析和安详解析不匹配的主机

 

  3.:options

EXCEPT:除了

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

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

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

           %c: client ip

%s:  daemon@serve_ ip

%d:daemonname                

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