介绍:
1、对有状态连接的特定服务进行安全检测并实现访问控制,所以只能用于tcp服务
2、判断进程是否接收tcp_wrappers的控制,取决于程序在编译时是否添加了libwrap库
3、类似防火墙的功能,但需要程序支持;对于一些访问控制可简单配置即可实现
查询程序是否tcpwrap模块
存放位置:/lib64/libwrap.so.0
判断进程是否能够由tcp_wrapper进行访问控制的方法:
ldd /path/to/program |grep libwrap.so
strings /path/to/program |grep libwrap.so
部分进程没有单独的服务,如telnet,通过xinetd服务管理
使用:
配置文件:/etc/hosts.allow,/etc/hosts.deny
帮助文件:man 5 hosts_access,man 5 hosts_options
检查顺序:hosts.allow,hosts.deny,(规则无法匹配时,默认允许)
注:一旦前面规则匹配到,直接生效,将不再继续
基本语法:
dameon_list[@host]:clinet_list [EXCEPT ][:options:option…]
dameon_list@host格式:
dameon_list:
单个进程,sshd
多个进程,sshd,vsftpd
全部,ALL
[@host]:
可省略,表示主机所有ip
选择只针对主机的某个ip:@172.20.10.1
clinet_list:
单个ip
多个ip,用逗号隔开
基于主机名,如www.hello.cn
基于网络/掩码:如192.168.0.0/255.255.0.0
基于网络/prefix:如192.168.0.0/16
简写:如192.168.
内置ACL:ALL,LOCAL,KNOWN,UNKNOWN,PRRANOID
EXCEPT用法
vsftpd: 192.168. EXCEPT192.168.1.0/24 EXCEPT 192.168.1.100
用在/etc/hosts.allow,表示允许192.168.0.0/16,除了192.168.1.0/24,不包括192.169.1.100
[:options:option…]
:spawn 启动一个外部程序完成执行的操作
vsftpd:192.168.181.3 :twist /bin/echo"connection prohibited"
不管在/etc/hosts.allow或者/etc/hosts.deny都表示拒绝连接,客户端在连接时会输出指定信息
:twist 实际动作是拒绝访问,使用指定操作替换当前服务,将标准输出和错误输出重定向到客户端,默认是/dev/null
sshd:192.168.181.6:spawn echo "%c pass%s ,%d PID is %p" >> /var/log/sshd.log
说明:在/etc/hosts.allow中添加,允许登录,并记录
在/etc/hosts.deny中添加,拒绝登录,并记录
%c 客户端ip,%s 服务端ip和进程名,%d 进程名,%p 进程pid,%%表示%
:deny 主要用在/etc/hosts.allow文件中定义拒绝 规则
如 vsftpd:172.16. :deny 拒绝172.16.0.0/16段访问vsftpd
:allow 主要用在/etc/hosts.deny文件中定义允许 规则
如 vsftpd:172.16. :allow允许172.16.0.0/16段访问vsftpd
测试工具:
tcpdmatch [-d] daemon[@host] client
-d 测试当前目录下的hosts.allow和hosts.deny
[root@localhost init.d]# grep -v ^# /etc/hosts.deny
sshd:ALL
[root@localhost init.d]# tcpdmatch sshd 192.168.181.3
client: address 192.168.181.3
server: process sshd
access: denied
示例:
1、只允许192.168.1.0/24的主机访问sshd服务和telnet服务
/etc/host.allow
sshd,in.telnetd:192.168.1
/etc/hosts.deny
sshd,in.telnetd:ALL