Linux的另一个访问控制:TCP Wrapper

1.Tcp Wrapper是一个基于tcpd访问实现的访问控制工具,它能够访问大部分基于tcp的服务,一般来讲,它只能实现那些在编译的时候明确定义接受tcpd管理才行。

他们的工作原理类似于这样的情况:一般来讲,所谓服务监听在某个套接字上进行监听的服务,其实都是通过一个循环来实现的,这个循环就是不停的查看在某个端口上有客户端的请求到来。然后根据客户端的请求完成不同的任务。受tcpd管理的服务,可以是独立的,也可以是非独立的。当客户端的请求到来的时候,先由tcpd来检查,之后才交由端口。

2.如何知道我们的哪些程序可以被tcpd来控制呢?

一个程序到底接受不接受控制,可以用两种方式来查看

1.ldd `which command` | grep wrap  :只要编译的时候,动态链接到wrap这个库上就可以决定是接受控制的

2.strings `which command` | grep hosts  :也能够查看是否接收控制。不过它的显示是这样子的。里面应该有以 hosts开头的文件。

只要出现了/etc/hosts.allow和/etc/hosts.deny则表明它支持tcp wrapper来实现访问控制。

其实,tcp wrapper的控制,正是基于这样的方式实现的。

只要写在/etc/hosts.allow里,一般都是允许访问的,写在/etc/hosts.deny里,就是拒绝访问的。

3.当一个客户端到来的时候,是如何检查的呢?

首先去检查我们的/etc/hosts.allow看这个文件有没有跟这个完全匹配到的条目,如果有,则直接通过访问,如果没有则进而检查deny这个文件,如果deny文件中有,则明确拒绝访问,否则,当两个文件都没有匹配的时候,默认是允许的。

4.如何去定义访问控制:

格式:daemon_list: client_list <:options}

进程:客户端列表 <:选项>

4.1进程如何表示:这里不能指定进程名,必须指定进程的那个可执行文件的文件名

4.1.1.可以是单个的可执行文件的名字

vsftpd: 192.168.0.

4.1.2.可以是多个服务的列表

vsftpd,sshd,in.telnetd:

4.1.3.可以使用通配符ALL,表示所有

ALL:

4.1.4.只在某个特定的地址上的某个服务限定

vsftpd@192.168.0.186

在实现控制某个特定服务服务的时候,要实现依赖于这个服务的其他服务也能够服务。

4.2客户端列表如何定义

4.2.1.可以使用单个的IP

IP

4.2.2.也可以使用网络地址

4.2.2.1:使用网络地址加掩码的方式来实现,这个掩码必须是长格式的。network/mask :不能使用长度格式,只能使用完全ip地址的格式

4.2.2.2:完全可以使用网络地址的类似于172.16.则它会自动识别成172.16.0.0/255.255.0.0

4.2.3:可以使用主机名,比如 hostname

4.2.3.1:可以使用单个主机名 fqdn

4.2.3.2:可以使用域名,比如 .a.org 这表示a.org域内的所有主机

4.2.4:可以使用常用的宏定义:

ALL:表示所有主机/所有服务

LOCAL:本地主机,没有域名的主机,非FQDN的主机名称格式

KNOWN,UNKNOWN所有可解析的主机、不能被解析的主机

PARANOID:正向反向解析不匹配的主机

EXCEPT:除了XX主机

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/23531.html