Chinaunix首页 | 论坛 | 博客

分类: LINUX

2011-08-28 13:37:07

tcp wrapper是一款访问控制的工具,很类似iptables的功能,但是要比iptables功能要小很多,一般只有在满足以下条件时才能使用tcp wrapper
       1),在编译的时候明确表示能接受tcp wrapper的控制
                        通过ldd `which sshd`来查看
                        通过strings `which portmap`| grep hosts查看
             
       2),必须是tcp协议
这个时候才能实现tcp wrapper的控制,虽然能功能范围少了一点,但是tcp wrapper配置起来要比iptables简单很多
 
能接受tcp wrapper控制的服务比如:telnet ,ssh ,vsftp
 
所谓的监听从编程角度来讲就是一段程序通过循环不停的对一个端口进行扫描
 
实际上tcp wrapper的实现就是主要是通过配置以下两个文件:
   /etc/hosts.allow
   /etc/hosts.deny

tcp wrapper的格式:
 
   daemon_list: client_list [:options]
   服务名     : 客户端名    [选项]
 
         daemon_list有以下几种格式:
                vsftpd: 192.168.0.
                vsftpd,sshd,telnetd: 192.168.0.
                All: 192.168.0.
                                     #指定只在某个特定的地址上进行控制比如:
                            #有多块网卡的情况下

         client_list有以下几种格式:
                IP
                network address/mask           #网络地址(只能使用类似255.255.完全ip地址格                                                式,不能使用位长度表示)
                hostname                       #主机名称
                     .a.org                     #表示.a.org域内的所有主机
               
以下是以vsftp为例进行演示(拒绝172.16.100.1访问ftp服务器):
 1),yum install vsftpd
 2),  service vsftpd start
 3),vim /etc/hosts.deny 里面写入
                        vsftpd: 172.16.100.1
 4),配置完立即生效,不需要重启服务
 5),通过windows客户端进行认证
只允许172.16.网段访问ftp:
 1),vim  /etc/hosts.allow 写入: vsftpd: 172.16.
 2), vim /etc/hsots.deny      :   vsftpd: ALL
 
以下是对telnet(监听23号端口)的介绍:
  telnet是一个非独立守护进程,由超级守护进程(xinetd)代为管理,它接受tcp wrapper的控制,但是     实际上不是telnet接受tcp wrapper的控制,而是xinetd接受tcp wrapper的控制
  telnet传输的过程是明文
  telnet一般不允许管理员直接登录(可以先以普通身份登进去,然后su - root)
 
 1),yum install telnet-server
 2),ls /etc/xinetd.d               #里面会有telnet,由此说明telnet是接受超级进程xinetd控制
 3),ldd `which xinetd`           #可以发现超级守护进程是接受tcp wrapper控制的
 4),chkconfig telnet on          #注意这里只是说明下一次开机会自动启动,不能立即生效
 5),service xinetd restart       #通过重启超级进程来重启telnet
 6),useradd gentoo
 7),passwd gentoo
 8),telnet 172.168.25.1测试
只允许172.16.0.1登录telnet:
 vim /etc/hosts.deny 写入:  in.telnetd:ALL EXCEPT 172.16.0.1
[:options] 介绍:
 spawn                              #发起一些额外的命令
vim /etc/hosts.deny         写入:
in.telnet: ALL EXCEPT 172.16.0.1 : spawn echo "%u from %a attempt to login %A ,the daemon is %d." >>/var/log/telnet.log                        
 
除了spawn还有allow 和 deny分别表示在/etc/hosts.allow中deny 和 /etc/hosts.deny中允许
 比如:
   vim /etc/hosts.deny中写入 :   in.telnetd: 172.16. :ALLOW
                                  ALL:ALL        #表示只允许172.16.网段使用telnet登录
 
阅读(5670) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~