LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 913|回复: 0

TCP_wrappers实现服务的访问控制

[复制链接]
发表于 2005-4-2 19:56:39 | 显示全部楼层 |阅读模式
TCP_wrapper 可说是所有连接上网络的主机都必须安装的基本软件。它具备了了管制进入者的功能,例如可限制那些机器可以使用本系统。另一方面,TCP_wrapper 也具有颇不错的记录功能,可以记录那时候甚么人进来了。因此,在今天蓬勃发达网络世界中不得不留意的系统安全领域,TCP_wrapper占有极重要的一席之地。
目前的大部分Linux中都默认安装了TCP_Wrappers支持,所以我们这里直接介绍其配置方法。TCP_wrapper 的控制文件有二:/etc/hosts.allow与/etc/hosts.deny。前者是处理允许连接的主机、后者当然是拒绝的主机了。不过,一般只要用一个文件就可以了。笔者只打算介绍在/etc/hosts.allow中作设定的设法。
文件格式是:服务列表 : 主机列表 : 选项1[ : 选项2 : 选项3 : …]
1.服务列表说明
服务列表是要支持的服务的名,例如:telnet、vsftpd等等。这里可以把所有要作相同设定的服务列举出来,用空格符或“,”号作分隔。例如:
telnetd   vsftpd或telnetd,vsftpd
不过,如果是表示全部,可以用ALL 与EXCEPT。ALL就是全部的服务,EXCEPT表示要排除的服务,格式是:list_1   EXCEPT   list_2。
当我们用ALL 时,如果有些例外不要的服务,那用EXCEPT是很方便的,例如:
ALL   EXCEPT   telnetd
ALL   EXCEPT   telnetd   vsftpd
EXCEPT会把其后的全都当成例外处理,而且EXCEPT可以包含EXCEPT。
2.主机列表
设定受控制的机器。这可以是机器名、主机IP,也可以使用通配符(*或?)或ALL及EXCEPT。主机名的写法有多种,可以是IP地址、主机名或NIS主机名表示。
1)        单个主机的表示
a)        域名表示:如www.syd168.com
b)        IP地址表示:172.16.0.3
2)        一批主机的表示
a)        IP地址表示:
172.16.   表示所有开始为172.16的主机,如172.16.0.8
b)        域名表示
.syd168.com表示所有域syd168.com的主机,如www.syd168.com
c)        网络表示
172.18.0.0/255.255,表示172.18子网的所有机器。
3)        NIS组的表示
@syd168.com
这里做以下说明:
        对于主机名,只比较.第一个“.”之后的部分,只要“.”之后的字符相同,那就算是符合的。所以,如果有.nccu.edu.cn的设定,xxx.nccu.edu.cn 这机器是可以通过的,但xxx.nccu.edu机器没办法通过。
        如果表示为主机的全名了,即开始没有“.”,那部能受理的就只是该机器。这种方式只能在用主机名
        对于IP地址如,140.119.,则只比较”.” 之前的数字。所以如果有“140.119.”的设定,当看到140.119.1.2 时,是可以通过的。如果写全IP地址,即IP地址的最后不是“.”,则通过的的只有指定的IP而已。
        通配符只能使用在非“.”开始的主机名和非.结束的IP地址结构中,而且在子网结构中不能使用通配符。
下面,我们通过几个实例说明:
vsftpd  :  140.113.23.3   140.119.   .nccu.edu.tw    bbs.ntu.edu.tw:
再配合“@”,可以控制连接的用户“@”之前是用户名,之后是机器名或机器IP。例如:
hup@cc.nccu.edu.cn   
如果有“@”且之前有设定任何东西,那么系统将会尝试去检测要求连接的用户账号。
3.选项说明
选项是我们所要控制的动作。在服务与client都符合之后,那么真正所要进行的动作,就是选项在作。这里只介绍常用的选项,详细请参考man手册。
1)ALLOW  接受连接请求。
2)DENY    拒绝连接请求。
注意:这两个选项只能摆在所有的选项的最后。例:
ALL    :   .bad.domain    :   DENY
fingerd  :   unknown@all   :   DENY
没有装ident 的机器 都不让它finger我们。
ALL    :   ALL@ALL    :  ALLOW
3)keepalive 这是非常好用的一个选项。如果有使用者没有正常离线就关机,那么可能会留一些进程在内存中,造成系统的负担。这个选项的设定,系统将定期检查客户是否还在线,如果不在线就断开连接,收复内存。
4)banners   /some/directory  可以在连接之后先出现一些消息。例如:说明这部机器的作用、用户名等等。这个选项就可以满足这个须求。/some/directory 是要包含要显示消息的文件目录,而消息文件必须与服务同名,如telnet服务的服务叫telnetd,则消息文件也得叫telnetd。
5) rfc  [seconds]  这个选项表示用户要用多久的时间重试登陆,缺省值是10秒。
4.控制文件的举例:
vsftpd  :  172.16.  :  banners   /usr/vsftpd/mesg  :  deny
telnetd  :  all@all  :  banners   /usr/telnetd/mesg  :  allow
vsftpd  :  all  :  rfc  931  :   keepalive  :  allow
all  :  140.119.  :  keepalive  :   allow
all  except   fingerd  :   all  :   deny
上面的设定:finger只能给有装identd之类软件的机器使用,拒绝时 会有所表示;
telnetd 允许全部人使用,且会先秀段讯息,其它的不 给140.119.之外的人使用。
安装了本软件之后,在控制上很明显的就可以轻易的作到,另一方面,也能 够记录连接时的重要记录。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表