Chinaunix首页 | 论坛 | 博客
  • 博客访问: 343209
  • 博文数量: 115
  • 博客积分: 1019
  • 博客等级: 准尉
  • 技术积分: 1104
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-22 15:02
个人简介

别想万里,要把一只脚放到另一脚的前边

文章分类

全部博文(115)

文章存档

2018年(1)

2015年(2)

2014年(31)

2013年(38)

2012年(43)

我的朋友

分类: LINUX

2012-05-21 14:45:51

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.只在某个特定的地址上的某个服务限定

         

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


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主机

4.3例子

如何控制vsftpd的访问:

         定义拒绝172.16.100.100来访问vsftpd

         vim /etc/hosts.deny

                   vsfptd: 172.16.100.100

         注意,它是立即生效的


         仅允许172.16网段访问

         vim /etc/hosts.allow

                   vsftpd: 172.16.

         vim /etc/hosts.deny

                   vsftpd: ALL


4.4:EXCEPT的使用:除开……

定义仅允许172.16.0.1来访问

         vim /etc/hosts.deny

         in.delnetd:ALL EXCEPT 172.16.0.1


4.5:定义之后的选项

         :spawn:发起一个命令

                   %u:用户名

                   %a:客户端名

                   %A:表示服务器端名

                   %d :服务的名字

                   用spawn实现日志定义:

                   任何一个用户来试图登录telnet的时候都记录

         in.delnetd:ALL EXCEPT 172.16.0.1: spawn /bin/echo “Login attempt(`date`) %u from %a attempt to login %A, the daemon is %d” >> /var/log/telnet.log

         :ALLOW:在拒绝中允许

                   仅允许172.16.0.0网段访问

                   vim /etc/hosts.deny

                   in.telnetd: 172.16. :ALLOW

                   ALL: ALL

          :DENY:在允许中拒绝

                   vim /etc/hosts.allow

                   in.delnetd: 172.16. :DENY

本机的telnet决绝所有人访问。但是允许172.16.网段,但是还要拒绝172.16.100.100访问。

在拒绝中:

         ALL: ALL EXCEPT 172.16. EXCEPT 172.16.100.100

阅读(433) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~