Chinaunix首页 | 论坛 | 博客
  • 博客访问: 303802
  • 博文数量: 58
  • 博客积分: 2763
  • 博客等级: 少校
  • 技术积分: 731
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-04 19:07
文章分类

全部博文(58)

文章存档

2011年(55)

2009年(1)

2008年(2)

分类: LINUX

2011-08-28 21:24:39

之前我介绍过了iptables实现访问控制,今天来聊一聊,简单一点的访问控制tcp wrapper。

通过tcpd进程来实现的,但是有条件
1.只能实现定义的
2.必须是tcp协议

首先聊一聊监听是如何实现的?
    网络套接字编程:通过循环不停歇的一直查看端口是否有请求
    例如:ftp服务监听21号端口,如果允许则转交给ftp服务器
ldd `which command` 用于查看所依赖的库,如果存在“libwrap.so.0 => /lib/libwrap.so.0 (0x008c8000)”,则表示接受tcp wrapper控制。否则无法通过tcp wrapper的设置来实现访问控制。    
tcp wrapper的配置文件:    /etc/hosts.allow    允许的配置文件
                          /etc/hosts.deny     拒绝的配置文件
第一步:首先去检查/etc/hosts.allow文件,如果有则放行
    如果没有,则查看deny。如果deny中有,则拒绝,
    如果都没有,则放行。

格式:
        daemon_list:client_list [:options] ,选项用冒号隔开
        可执行文件的文件名
        例如:
daemon_list
        vsftpd:192.168.0.
        vsftpd,sshd,in.telnetd:   服务列表
        ALL:   表示所有服务
        daemon@host,在某一个地址上控制
                vsftpd@192.168.0.15
cilent_list
有以下格式:
        (1)单个ip
        (2)网络地址:    (1)network/mask  ,mask 只能使用长格式255.255.255.0
                (2)172.16.  
        (3)主机名称:    (1)FQDN
                (2).a.org  表示a.org域内的所有主机
        (4)宏:ALL  表示所有主机或服务
                本地  非FQDN格式的主机名称
                KNOWN 已知主机,可以被解析的主机
                UNKNOWN
                PARANOID
                EXCEPT 排除某个主机或网络

-----------------------------------------------------
举例:控制vsftpd的访问
   
禁止172.16.100.100主机的访问ftp服务
#vim /etc/hosts.deny
vsftpd:172.16.100.100

telent 是非独立守护进程,受超级守护进程的控制
    telnet服务器端的可执行程序文件叫in.telnetd
        #yum install telnet-server
        #ldd `which xinetd`
            超级守护进程受tcp wrapper的控制
        #service xinetd start
        #chkconfig telnet on
        #in.telnetd:ALL EXCEPT 172.16.0.1

-------------------------------------------------------
选项:spawn 启动
        #man 5 hosts_access        可以查看访问控制用法
        #spawn echo "%u"    当访问某项服务时,控制显示用户名,我可以将其定向到日志中,我就可以知道谁登陆过。例如:
#in.telnetd:ALL EXCEPT 172.16.0.1:spawn echo Login attempt(`date`) %u from %a attempt to login %A ,the daemon is %d. >> /var/log/telnet.log

在允许中拒绝,在拒绝中允许
            ALLOW
            DENY
例如:        
    #vim /etc/hosts.deny
    in.telnetd:172.16. : ALLOW
阅读(2163) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~