我们开始tcp_wrapper内容
tcp_wrapper的原理 
Telnet、SSH、FTP、POP和SMTP等很多网络服务都会用到TCP Wrapper,它被设计为一个介于外来服务请求和系统服务回应的中间处理软件。
基本处理过程
当系统接收到一个外来服务请求的时候 ,先由TCP Wrapper处理这个请求
TCP Wrapper根据这个请求所请求的服务和针对这个服务所定制的存取控制规则来判断对方是否有使用这个服务的权限,如果有,TCP Wrapper 将该请求按照配置文件定义的规则转交给相应的守护进程去处理同时记录这个请求动作,然后自己就等待下一个请求的处理。
如果外部还有防火墙,当然要先通过防火墙
tcp_wrapper是基于主机与服务的
使用简单的配置文件来设置访问限制
/etc/hosts.allow
/etc/hosts.deny
配置一旦被改变,立刻生效
tcp_wrapper的配置 
访问控制判断顺序:
访问是否被明确许可
否则,访问是否被明确禁止
如果都没有,默认许可
通常tcp_wrapper没有配置,就是第三条,如果都没有,默认许可的
配置文件
许可用:/etc/hosts.allow
禁止用:/etc/hosts.deny
基本语法
后台进程列表:客户端列表      [:参数(allow,deny)]
/etc/hosts.allow
vsftpd:192.168.0.
/etc/hosts.deny
vsftpd:ALL
格式是
后台进程:  client描述 
这里的后台进程需要解释下
后台进程列表应该是:
服务的可执行工具名( in.telnetd  NO telnetd)
允许指定多项服务
允许使用ALL来匹配所有服务
允许可执行工具名后添加IP或主机名,如果本机有多个网络界面
客户端描述可以包含:
IP 地址(192.168.0.254 ) 
域名或主机名(.example.com, www.wenhua.org  ) 
子网掩码(192.168.0.0/255.255.255.0 或192.168.0. ) 
网络名(@mydomain )
client描述的高级语法 
客户端描述通配符
ALL:所有
LOCAL:所有主机名中不包含.的主机
UNKNOWN:无法被解析的主机
KNOWN:可以双向解析的主机
PARANOID:正向解析成功但无法反向解析的主机
EXCEPT
可用于服务列表与客户端列表, 可以层层套用
/etc/hosts.deny 
ALL:ALL EXCEPT 192.168.0.0/255.255.255.0 EXCEPT server1.example.com
现在我们测试下
RHCE课程-RH253Linux服务器架设笔记九-tcp_wrapper_第1张图片
现在可以访问
vim /etc/hosts.deny
RHCE课程-RH253Linux服务器架设笔记九-tcp_wrapper_第2张图片
现在他要求我输入ID验证,但是我的匿名可以访问的,我正确输入ID以后,还是不可以访问
RHCE课程-RH253Linux服务器架设笔记九-tcp_wrapper_第3张图片
在允许里面明确允许
vim /etc/hosts.allow
RHCE课程-RH253Linux服务器架设笔记九-tcp_wrapper_第4张图片
又可以访问了
RHCE课程-RH253Linux服务器架设笔记九-tcp_wrapper_第5张图片
tcp_wrapper很简单,要服务的模块支持tcp_wrapper ,才可以使用tcp_wrapper
大家看吧,vsftpd的配置文件最后,明确配置tcp_wrappers=yes
vim /etc/vsftpd/vsftpd.conf
RHCE课程-RH253Linux服务器架设笔记九-tcp_wrapper_第6张图片
查看一个服务是否支持tcp_wrapper可以用一下命令
看某个服务的执行文件是否调用tcp——wrapper
ldd `which vsftpd` | grep wrap
p_w_picpath
如果这个命令有结果,也表明支持tcp_wrapper
strings `which vsftpd` | grep host
RHCE课程-RH253Linux服务器架设笔记九-tcp_wrapper_第7张图片
基于xinetd的服务都支持tcp_wrapper
如下sendmail就支持tcp_wrapper而postfix就不支持哈~
p_w_picpath
OK,tcp-wrpper,基础就这些,有兴趣的可以深入研究
################Michael分割线####################