服务器 频道

FreeBSD下也有“看门人”

    【IT168 服务器学院】曾几何时,不知道你是否与笔者小神一样,有在FreeBSD下实现与WIN2000中的IPSec安全策略实现访问控制的一样功能的想法呢?也许这对刚刚接触FreeBSD的朋友来说是一种奢望,不仅是因为FreeBSD与WINDOWS系统的配置方式截然不同(特别是像小神这种喜欢跑shell的人)。不过不用失望,只要阁下用几分钟的时间专心看完下面的这篇文章的话,相信会有意外的收获的:)。

    首先我要为大家讲解一下什么是tcpwrapper。tcpwrapper是传统Unix系统的主要安全组件之一,通过使用它我们能够监控大多数的网络服务进程,从而达到网络服务访问控制(形象点说它的功能就像一个看门人,当有请求进入时,它就会将请求内容分解,并与相应的设置规则进行配对,一旦找到相应的规则时就会自动调入相应的操作了)。在现在主流的FreeBSD4.x中它已经成为了内核中的基本“设施”,且使用的方法也有了一定的改变。今天我们就以telnetd为实验对象来完成一次网络服务访问控制操作吧。

    实验环境:
    一台普通的586,跑FreeBSD4.7,使用PPPoE并做成ADSL网关,开了telnetd服务进行客户端管理(外网内网都可以访问)。

    实验目的:
    使用tcpwrapper监控telnetd服务,使外网无法登陆telnetd。

    操作基本过程:

    首先需要配置一下tcpwrapper的访问控制规则文件hosts.allow(需要注意,以前的传统的tcpwrapper都是用两个配置文件的,hosts.allow与hosts.deny,通过使用它们进行交配式的规则管理。这样非常烦琐也不够直观,在FREEBSD3.2以后这个问题得到了新的改良,现在系统默认只需要使用hosts.allow一个文件就可以了,当然,hosts.deny你也可以自行建立,这是很自由的)。打开hosts.allow的配置来看看吧:
    alex# cat /etc/hosts.allow
    看出规则的基本配置语法了吗?最基本的语法就是: 服务对象 : 客户端对象地址 : 行为
    当然,除此之外还有多种的语法演变方式,大家可以在默认存在的/etc/hosts.allow的注释文本中找到相关的资料。

    现在我们要做的就是编写自己的规则。在修改规则文件前还是先备份原来的规则文件吧。
    alex# cp hosts.allow hosts.allow.bak
    用ee打开hosts.allow:
    alex# ee /etc/hosts.allow
    在文档的开始部分找到ALL : ALL : allow这句规则(这句规则是允许所有的服务与客户端地址的),在它的前面加上#符号,也就是改成:
    #ALL : ALL : allow

    在hosts.allow中默认是没有针对telnetd服务的配对规则的,所以这里我们需要自行加上。找到下面的语句段:
    # The rest of the daemons are protected.
    ALL : ALL \
    : severity auth.info \
    : twist /bin/echo "You are not welcome to use %d from %h."
    这个是整个规则群中最后的“保险”规则(当tcpwrapper在规则群中找不到相关的配对规则时就会根据这个规则进行处理了)。
    ---------------------------------------------------------------------------------------------
    小提示:
    也许有人会问:如果我把这个“保险”规则给停了(删除了该规则语句或在前面加“#”号),而  tcpwrapper又找不到相应的规则,那tcpwrapper会如何处理呢?这样的话inetd(超级网络服务进程)会跳过tcpwrapper功能而直接把执行权交给相应的网络服务进程的。 
    ---------------------------------------------------------------------------------------------

0
相关文章