对有状态连接的特定服务进行安全检测并实现访问控制
以库文件形式实现
某进程是否接受libwrap的控制取决于发起此进程的程序在编译时是否针对libwrap进行编译的
判断服务程序是否能够由tcp_wrappers进行访问控制的方法:
ldd /usr/sbin/sshd|grep libwrap.so
strings 'which sshd'|grep libwrap.so
配置文件:/etc/hosts.allow 优先级高
/etc/hosts.deny
默认允许
基本语法:
daemon_list@host:client_list [:optino :option...]
daemon_list@host格式:
单个应用程序的程序名,例如vsftpd
以逗号或空格分隔的应用程序文件名列表,如:sshd,vsftpd
ALL表示所有接受tcp_wrappers控制的服务程序
主机有多个IP,可用@hostIP来实现控制
sshd@192.168.0.254 ###本机网卡上的192.168.0.254
client_list格式:
以逗号或空格分隔的客户端列表
基于IP地址:192.168.10.1 192.168.1.
基于主机名:www.qq.com .magedu.com
基于网络/掩码:192.168.0.0/255.255.255.0
基于net/prefixlen:192.168.1.0/24(centos7)
基于网络组(NIS域):@mynetwork
内置ACL:ALL,LOCAL(主机名不带点),KONWN(主机名可以解析成IP),UNKNOWN,PARANOID(主机名和IP无法双向解析)
option选项:
EXCEPT排除用法
vsftpd:172.16. EXCEPT 172.16.100.0/24 EXCEPT 172.16.100.1
deny 主要用在 /etc/hosts.allow定义“拒绝”规则
如:vsftpd:172.16. :deny
allow 主要用在 /etc/hosts.deny定义“允许”规则
如:vsftpd:172.16. :allow
spawn 启动一个外部程序完成执行的操作
twist 实际动作是拒绝访问,使用指定的操作替换当前服务,标准I/O和ERROR发送到客户端,默认至/dev/null
测试工具:
tcpdmatch [-d] daemon[@host] client
-d 测试当前目录下的hosts.allow和hosts.deny
tcpdmatch -d sshd 192.168.30.7
示例:
1、只允许192.168.1.0/24的主机访问sshd和telnet
/etc/hosts.allow
sshd,telnet:192.168.1.0/255.255.255.0
/etc/hosts.deny
sshd,telnet:ALL