Chinaunix首页 | 论坛 | 博客
  • 博客访问: 114961
  • 博文数量: 42
  • 博客积分: 932
  • 博客等级: 准尉
  • 技术积分: 470
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-18 22:33
文章分类
文章存档

2011年(42)

分类: LINUX

2011-09-01 22:25:00

  tcp wrapper是一款简单易用的访问控制工具,基于tcpd进程来实现,能对基于tcp的服务进行访问控制,能接受tcp wrapper的服务有两个必要条件,一在编译的时候明确接受tcp wrapper的控制,二是基于tcp协议的服务!相比较于iptables来说tcp wrapper能共实现控制的范围要小的多,然而配置起来要简单的多!
下面我们简单了解下这个小工具:
首先看看tcp wrapper的工作机制:
实时上tcp wrapper是通过tcpd这个工作在稍底层的进程代为监听那些用户对于接受tcp wrapper管理的服务的请求进而对这些服务的请求实现访问控制的机制!稍微有点儿绕啊!举个例子说明下吧!
如我们的vsftp服务是接受tcp wrapper 的管理的,当我们启动vsftpd这个服务时就监听在21号端口,当用户发送ftp的请求的时候,就直接发往21号端口,我们的vsftpd服务给予响应即可,但是在接受tcp wrapper的访问控制后,tcpd这个进程会在稍底层的某个端口代替vsftpd来监听用户发送的ftp请求,来对其进行匹配和访问控制,简单的说就是当用户向服务器发起ftp服务的请求时首先会经过tcp wrapper的过滤,如果匹配规则通过则把请求转发给vsftpd服务,如果不通过则丢弃请求拒绝用户访问!
简单的了解了工作的机制后我们想要知道到底哪些进程时接受tcp wrapper的管理的呢?tcp wrapper究竟是靠什么实现访问控制的呢?下面我们就解决这些问题:
首先,怎么判断一个进程是否是接受tcp wrapper的管理的呢?
可以通过以下两种方法判断:
1、使用命令ldd来查看某个服务的动态链接库是否有libwrap.so.0 这个库文件ldd 'which command'
如:# ldd `which sshd` //注意有反引号

[root@server79 ~]# ldd `which sshd`
 linux-gate.so.1 =>  (0x00e84000)
 libwrap.so.0 => /lib/libwrap.so.0 (0x00e24000) //能看到这么一行的都是接受tcp wrapper控制的
2、通过静态库查看使用命令strings,strings 'which command'

如:root@server79 ~]# strings `which portmap` |grep hosts
hosts_access_verbose
hosts_allow_table
hosts_deny_table
/etc/hosts.allow //出现这两行即接受tcp wrapper控制
/etc/hosts.deny

 

配置文件/etc/hosts.{allow,deny},该配置文件修改后立即生效
   1)格式
      daemon:client.list[:options]
     daemon是对应每个服务的可执行文件的文件名
          telnet----in.telnetd
          sshd ----- sshd
          vsftpd--- vsftpd
     client.list要过滤的列表
       列表格式
            ip   特定的主机ip  如192.168.1.1
            networkip network/mask(mask 不能使用CIDR的格式)
            networkip 可写成如 192.168.1.  表示1.0 的网段
            hostname  基于主机名的过滤
            .test.com   对整个test.com 域进行过滤
2)使用宏定义
     ALL         所有主机或服务
     LOCAL     本地主机
     KNOWN     已知的主机
     UNKNOWN 未知的主机
     PARANOID 正反向解析不匹配
     EXCEPT    除什么之外的  如 in.telnetd: All EXCEPT ip
3)options 
     spawn command  spawn后接要执行的命令
     ALLOW        在拒绝中允许,及用在hosts.deny表中
     DENY          允许中拒绝,及用在hosts.allow表中

相对来说tcp warpper的应用还是比较简单易用的就不举例说明了!

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