TCP wrappers
 
These software components (wrappers) monitor incoming
network traffic to the host computer and control what can and cannot access the services mapped to specific ports. When a request comes to a computer at a specific
port, the target operating system will check to see if this port is enabled. If it is enabled
and the operating system sees that the corresponding service is wrapped, it knows to
look at an access control list, which spells out who can access this service. If the person
or computer attempting to access this service is allowed within the access control list,
the operating system permits the connection to be made. If this person or computer is
not allowed, the packet is dropped or a message is sent back to the initiator of the request,
indicating that the request is refused.
 
 
TCP Wrappers 介绍
 
TCP Wrappers(tcp_wrappers)是linux缺省安装的一个包,用于为网络服务程序提供基于主机的访问控制。
当客户端发起服务连接请求,首先会被TCP Wrappers拦截,由其根据配置文件(/etc/hosts.allow和/etc/hosts.deny)判断是否允许该用户的请求。一旦连接被批准,TCP Wrappers将不再干涉客户端与网络服务之间的通信。
TCP Wrappers的核心是库文件/usr/lib/libwrap.a,所有支持TCP Wrappers的程序都会加载这个库。因此,要判断某一程序是否支持TCP Wrappers,只要查一下该程序是否调用了libwraps就可以。具体可以使用下面的命令:
ldd binary-name |grep libwraps
常见的支持Tcp Wrappers的网络服务程序有/usr/sbin/sshd, /usr/sbin/sendmail和/usr/sbin/xinetd。
配置文件的解析顺序:
1. 解析/etc/hosts.allow,当发现第一个匹配规则后退出,并且不再解析hosts.deny。
2. 解析/etc/hosts.deny, 当发现第一个匹配规则后退出。
TCP Wrappers不会缓存规则,因此任何对规则的修改都会即时生效。但有一个例外,就是portmap,原因是portmap的实现要求任何规则的修改必须重启portmap服务才能生效。而且,portmap不支持域名或主机名,因此规则中只能使用IP。据此类推,那些依赖protmap的服务(如NIS,NFS)也同样存在这种限制。
规则语法:
<daemon list>: <client list> [: <option>: <option>: …]
TCP Wrappers的规则语法非常灵活,不仅支持通配符、模式和操作符,还可以通过option选项灵活进行访问控制、日志记录、执行shell命令以及使用预定义常量。