tcp wrapper概述:
tcp wrapper同iptables一样都是网络资源访问器,工作在传输层只对工作在TCP协议的部分服务做访问控制;tcp wrapper是一个库文件即libwrap.so,因此只有服务在编译时动态加载libwrap.so的库或静态编译时就将libwrap库作为应用程序的一部分了的才能支持tcp wrapper中所定义的访问规则的控制 。 总体而言可以将tcp wrapper理解为依靠/etc/hosts.allow和/etc/hosts.deny这两个配置文件对工作在用户请求和服务所监听的某一套接字间的一种检查过滤机制
查看某服务是否接受tcp wrapper控制的方法有:ldd 和strings命令即
# ldd app | grep libwrap 只可查出动态编译的应用程序是否加进了libwrap库文件
#strings app | grep hosts 只可查出静态编译的应用程序是否支持tcp wrapper的控制
Examples:
# ldd `which sshd` | grep libwrap.so
查看sshd是否接受tcp wrapper控制的,结果是yes
# ldd `which xinetd` | grep libwrap.so
查看超级守护进程(xinetd)是否接受tcp wrapper控制的,结果是yes,并且要明白的是xined下代为管理的transient(非独立守护进程)也接受tcp wrapper的控制
# strings `which portmap` | grep hosts
查看portmap服务是否接受tcp wrapper控制的,结果是yes
tcp wrapper对用户的访问规则的应用次序:
它首先查看/etc/hosts.allow文件若其中有匹配的规则就允许访问若没有匹配的规则就去检查/etc/host.deny文件若其中有匹配的规则就拒绝访问若其中也没有可以匹配到的就采用默认规则允许访问
这两个文件的语法格式:daemon_list: client_list [:options]
注意:daemon_list中写的必须是某服务对应的二进制可执行程序的文件名,可用which查看; 如:which telnet
daemon_list中可以写多个服务的可执行文件名,还可以使用ALL
client_list中可以写IP;network address(其中的子网掩码只能使用长格式的即形如:/255.0.0.0);主机名,如:
www.magedu.com;某个域的域名,如:.magedu.com;MACRO(宏):ALL(所有IP) LOCAL(和本机同网段的) UNKNOWN(主机名不可解析的) KNOWN(主机名可解析的) PARANOID(主机名的正向解析和反向解析不匹配) EXCEPT(除了的…)
options选项可以是实现在/etc/hosts.allow中定义deny的,在/etc/hosts.deny中定义allow的
还可以使用spawn echo来记录日志的
#man 5 hosts_access 可查阅tcp wrapper中用到的宏
Example:
sshd: 192.168.0.
定义在/etc/hosts.allow就表示允许192.168.0.网段的用户来访问此主机的sshd,而定义在/etc/hosts.deny就表示不允许192.168.0.网段的用户来访问此主机的sshd
vsftpd,sshd,in.telnetd:172.16.0.0/255.255.0.0
定义在/etc/hosts.allow就表示允许172.16.网段的用户来访问此主机的vsftpd,sshd,in.telnet, 而定义在/etc/hosts.deny就表示不允许172.16.网段的用户来访问此主机的vsftpd,sshd,in.telnet
ALL:172.16.
定义在/etc/hosts.allow就表示允许172.16.网段的用户来访问此主机上所有受tcp wrapper控制的服务,定义在/etc/hosts.deny就表示不允许172.16.网段的用户来访问此主机上所有受tcp wrapper控制的服务
vsftpd@192.168.0.186 :172.16.
这样的用法一般是对于本机有两张网卡的,定义在/etc/hosts.allow就表示允许172.16.网段的用户来访问此主机的192.168.0.186地址上的vsftpd,而定义在/etc/hosts.deny表示拒绝172.16.网段的用户来访问此主机的192.168.0.186地址上的vsftpd
sshd仅允许172.16.0.0/16网段访问同时将日志记录到/var/log/tcpwrapper.log中
1、/etc/hosts.allow
sshd: 172.16.:spawn echo “%c enter into %s ,`date`” >> /var/log/tcpwrapper.log
2、/etc/hosts.deny
sshd: ALL:spawn echo “%h want to login,`date`” >> /var/log/tcpwrapper.log
sshd仅拒绝172.16.0.0/16网段访问
1、/etc/hosts.allow
sshd:172.16.:DENY
2、/etc/hosts.deny
在机器上实验telnet服务(23/tcp)不允许172.16.0.0/16,但允许172.16.100.200访问,其他客户端不做控制
#yum –y install telnet-server
安装telnet服务因为它依赖于xinetd所以装上telnet的同时也就装上了xinetd
#service xinetd start
telnet是受xinetd管理的,要启动telnet 就得启动xinetd
#netstat –tnlp | grep :23
查看是否已经正常启动了
方法一:
# vim /etc/hosts.allow
in.telnet: 172.16.100.200
# vim /etc/hosts.deny
in.telnet: 172.16.
方法二:
# vim /etc/hosts.allow
# vim /etc/hosts.deny
in.telnet: 172.16. except 172.16.100.200
方法三:
# vim /etc/hosts.allow
in.telnet: ALL EXCEPT 172.16. EXCEPT 172.16.100.200
# vim /etc/hosts.deny
in.telnet:172.16
或in.telnet:ALL
之后便了telnet 实验了
转载于:https://blog.51cto.com/yuanlinux/811267