当前位置:Linux教程 - RedHat - RedHat 7.x 专题:TCP Wrapper and xinetd (之一)

RedHat 7.x 专题:TCP Wrapper and xinetd (之一)



         说明:
    这是我最近整理成稿的一个专题,分为三篇发布,原文当中有很多表格和章节目录等,在网页的显示效果不是很好,如果你需要本文档的PDF格式,请致信 [email protected]
    本文档的很多资料来自对英文原文档的翻译和整理,可能有所偏差甚至错误,这是我第一次发布本文档,希望能够得到大家的指正。

    这是第一篇,正文如下:


    RedHat 7.x 专题:
    TCP Wrapper and xinetd


    A verbose document for TCP Wrapper and xinetd on RedHat Linux 7.x


    作者 :赵凤君( Roc Zhao)
    邮件 : [email protected]
    版本 : Beta 0.0.1
    最后修改:July 17, 2002
    Copyleft ( 2002 ) with GNU Free Documentation License.

    版权声明和使用许可

    本文档由赵凤君(Roc Zhao)原创于2002年7月17日。
    遵循GNU Free Documentation License(GFDL)许可协议,作者声明如下:
    作为对开发源代码社团的回报,在不用于商业目的的前提下,任何人均可自由使用、复制、传播和修改本文档;但未经作者许可,您不得以任何目的和方式使用本文档的部分或全部牟取商业

    利益,否则您将受到严厉的民事和刑事制裁,并在法律允许的范围内受到最大可能的民事起诉。
    如果您需要转载本文档,建议您致信告知作者,使作者和读者可以知道本文档的发布情况;如果您修改了本文档,您必须保留本版权说明,并书写您的修改记录在文档附录的修改日志中,同

    时将修改后的结果发布到网络上与大家共享。


    The English descirption:
    Author : Roc Zhao
    Mail : [email protected]
    Site: http://roczhao.gledecity.com (Not available)
    Qq; 27565476
    Version : Beta 0.0.1
    Last revised : July 17, 2002
    Copyleft ( 2002 ) with GNU Free Documentation License.




    目录
    RedHat 7.x 专题: 1
    TCP Wrapper and xinetd 1
    版权声明和使用许可 2
    目录 3
    告诉我您的看法 5
    TCP Wrapper and xinetd 6
    第一节 概述 6
    1 关于TCP Wrapper 6
    2 关于xinetd 6
    第二节 获取、编译与安装 8
    1 软件的获取 8
    2 编译安装 8
    第三节 配置 9
    1 配置方法 9
    2 属性列表 10
    3 基本属性 15
    4 支持多操作符的属性 16
    5 默认属性 16
    6 注意问题 17
    第四节 配置实例 17
    1 defaults配置 17
    2 telnet的配置 18
    3 echo的配置 19
    4 RPC类服务例子 19
    5 自定义的服务配置范例 20
    第五节 xinetd进程 20
    1 启动与中止: 20
    2 命令参数 25
    3 控制信号 26
    第六节 xinetd日志 27
    1 日志条目 27
    2 日志格式 27
    Appendix 29
    Apperndix I Thanks 29
    Apperndix II Reference 29
    Apperndix III Revision Log 30



    告诉我您的看法

    在LINUX的路上,我是个永远的学生。这些文章是我学习路上的笔记,我将其整理成专题的方式发布到网络上,希望能够对初学者有所帮助并能够得到大家的建议,使其更加严谨和完善。
    我想,开放源代码的好处之一就是将自己的东西拿出来与大家分享,让大家去剖析自己、批判自己,从而使其更加严谨和完善。所以,虽然深知自己的浅薄,做的也只是一些很粗浅的东西,

    但我还是将它拿出来,接受大家的检验。所以,我非常希望能够得到您的反馈,包括意见和建议等等。
    如果您发现如下情况,请不吝告知:
    ? 文档中是否有错误?
    ? 语言表述是否清晰和完善?
    ? 您是否需要其他内容?如果是,您需要什么内容?
    ? 文中举例是否正确?是否需要更多的例子?
    ? 文档排版是否舒适?如果不舒适?您的建议是什么?
    ? 您最欣赏的是文档的哪些方面?哪些章节?
    如果您有任何意见建议,请注明文档发布站点,文档名称、问题、错误的章节、页码等信息告知与我。
    您可以通过如下方式与我联系:
    ? 电子邮件: [email protected]
    ? 个人主页: http://roczhao.gledecity.com (当前不可用)
    ? QQ :27565476
    ? 地址: 中国 . 深圳

    非常感谢您阅读本文档,如果您有所收获,祝贺您!如果遇到问题,告诉我。






    TCP Wrapper and xinetd
    第一节 概述

    RedHat 7.2 的系统服务存取控制机制主要有两种:一种是以ipchains或iptables为具体实现的firewall机制,另一种是以TCP Wrapper为具体实现的xinetd机制。本文档主要论述后一种机制

    的具体实现。
    1 关于TCP Wrapper
    象Telnet、SSH、FTP、POP和SMTP等很多网络服务都会用到TCP Wrapper,它被设计为一个介于外来服务请求和系统服务回应的中间处理软件。它的基本过程是这样的:当系统接收到一个

    外来服务请求的时候,先由TCP Wrapper处理这个请求,TCP Wrapper根据这个请求所请求的服务和针对这个服务所定制的存取控制规则来判断对方是否有使用这个服务的权限,如果

    有,TCP Wrapper将该请求按照配置文件定义的规则转交给相应的守护进程去处理同时记录这个请求动作,然后自己就等待下一个请求的处理。
    TCP Wrapper机制的主要目的在于,来自客户端的请求只被允许同一个独立的守护进程(xinetd)直接通信,而它请求的目标服务被TCP Wrapper包裹起来,这样就提高了系统的安全性和系

    统管理的方便性。
    一方面,TCP Wrapper 提高了系统的安全性。系统安全性的具体体现主要有两点,一个是获取访问权限前的控制,一个是获取访问后的处理。获取权限前,它会根

    据/etc/hosts.allow和/etc/hosts.deny定制的规则来判断对方是否有权限;获取权限后,通过bind、redirect等属性的设置,可能已经由另一台主机或者另一个服务在处理了对方的请求,而对

    方并不会感知中间经过了这样的处理。
    另一方面,TCP Wrapper更加方便了系统管理。一方面可以抽取系统所有服务共有的属性放到/etc/xinetd.conf中,另一方面,将每一个服务具体的配置放到/etc/inetd.d目录下,而每个配置文

    件都遵循同样的语法和规则。
    TCP Wrapper的功能来自于libwrap.a,它是一个网络服务库,象xinetd、sshd和portmap等许多系统服务编译时都依赖于它,其他的网路服务程序甚至你自己编写的网络服务程序都可以加

    上这个编译选项来提供TCP Wrapper的功能。

    2 关于xinetd
    然而,TCP Wrapper机制并不是仅仅有了libwrap.a库就起作用,只有当libwrap.a库和xinetd服务结合使用的时候才能发挥出TCP Wrapper机制的作用。xinetd是RedHat 7.x的超级守护进程,

    它提供诸如访问控制、请求记录、地址绑定、重定向和资源利用控制等服务。
    RedHat Linux 7.x版本中的很多系统服务都用到了xinetd,象FTP, IMAP, POP, 和 telnet.等。/etc/services中所有的服务通过他们的端口来访问服务器的时候,先由xinetd来处理,在唤起对方

    请求的服务之前,xinetd先检验请求者是否满足配置文件中指定的访问控制规则,当前的访问是否超多了指定的同时访问数目,还有配置文件中指定的其他规则等,检查通过,xinetd将这个

    请求交付到相应的服务去处理,自己就进入sleep状态,等待下一个请求的处理。
    redhat 7.x开始更加注重系统安全,最大的特征就是用xinetd.conf代替原来的inetd.conf
    并且7.x中默认安装没有开ftp,telnet等熟悉的服务,而是更安全的ssh,7.x还加入firewall等服务增强了系统的安全性。xinetd(eXtended InterNET services daemon)提供类似

    于inetd+tcp_wrapper的功能,但是更加强大和安全。它能提供以下特色:

    1、 强大的存取控制功能:
    ? 内置对恶意用户和善意用户的差别待遇设定;
    ? 使用libwrap支持,其效能更甚于tcpd
    ? 可以限制连接等级,基于主机的连接数和基于服务的连接数
    ? 设置特定的连接时间
    ? 将某个服务设置到特定的主机提供服务
    2、 有效防止DOS攻击
    ? 可以限制连接的等级
    ? 可以限制一个主机的最大连接数,从而防止某个主机独占某个服务
    ? 可以限制日志文件的大小,防止磁盘空间被填满
    3、 强大的日志功能
    ? 可以为每一个服务就syslog设定日志等级
    ? 如果不使用syslog,也可以为每个服务建立日志文件
    ? 可以记录请求的起止时间以决定对方的访问时间
    ? 可以记录试图非法访问的请求
    4、 转向功能
    ? 可以将客户端的请求转发到另一台主机去处理
    5、 支持IPv6
    ? xinetd 自 xinetd 2.1.8.8pre* 起的版本支持 IPv6
    6、与客户端的交互功能
    ? 无论客户端请求是否成功,xinetd都会有提示告知连接状态

    当前,它最大的缺点是对RPC支持的不稳定性,但是可以启动protmap与xinetd共存来解决这个问题。

    何时使用xinetd?
    原则上任何系统服务都可以使用xinetd,然而,我认为,最适合应该是哪些常用的internet服务,同时,这个服务的请求数目和频繁程度不会太高。象DNS和Apache就不适合采用这种方式,

    而象Ftp、telnet、 SSH等就很适合使用xinetd方式,至于pop、imap等邮件服务是否适合使用这种方式,我自己也很难下结论,系统默认使用xinetd,很多人也是这样做的,但我没有这方面

    的测试。

    系统默认使用xinetd的服务可以分为如下几类:
    1、 标准internet服务:telnet ftp
    2、 信息服务:finger netstat systat
    3、 邮件服务:imap imaps pop2 pop3 pops
    4、 RPC服务:rquotad rstatd rusersd sprayd walld
    5、 BSD服务:comsat exec login ntalk shell talk
    6、 内部服务:chargen daytime echo servers services time
    7、 安全服务:irc
    8、 其他服务:name tftp uucp

    第二节 获取、编译与安装
    xinetd在RedHat 7.2是默认安装的,所以一般说来,你无需自己去安装。然而,如果你在低版本的RedHat上,你可能需要下面的安装步骤。

    1 软件的获取
    Xinetd当前最新的版本是2.3.5,发布于May.28.2002。你可以从下面的地址获取它的源代码包:http://www.xinetd.org/xinetd-2.3.5.tar.gz

    2 编译安装
    现在假设你将该软件下载到/home/src目录,安装步骤如下:
    cd /home/src
    tar xvzf xinetd*
    cd xinetd*
    ./configure –prefix=/etc –with-libwrap –with-loadavg –with-inet6
    make
    make install
    cp xinetd/sample.conf /etc/xinetd.conf
    如果你在旧版本的RedHat上安装,你可能会用到下面的指令,这个perl脚本可以将inetd.conf转换为xinetd.conf:
    xinetd/xconv.pl < /etc/inetd.conf > /tmp/xinetd.conf

    下面是编译参数说明:
    --prefix 指定安装目录
    --with-libwrap 加载libwrap.a库,使之可以使用TCP Wrapper功能
    --with-loadavg 使之具有限定连接数的功能,避免DOS攻击
    --with-inet6 使之支持ipv6

    说明:
    如果您使用的是RedHat 7.x版本,建议你无需自己安装,这一点跟别的服务不同,如果你自行安装,可能会出现意想不到的麻烦。

    第三节 配置

    1 配置方法
    相关的配置文件如下:
    /etc/xinetd.conf
    /etc/xinetd.d/* //该目录下的所有文件
    /etc/hosts.allow
    /etc/hosts.deny

    xinetd的默认配置文件是/etc/xinetd.conf。其语法和/etc/inetd.conf完全不同且不兼容。它本质上是/etc/inetd.conf和/etc/hosts.allow,/etc/hosts.deny功能的组合。/etc/xinetd.conf中的每一项

    具有下列形式:

    service service-name
    {
    attribute operator value
    。。。。。。
    }

    其中service是必需的关键字,且属性表必须用大括号括起来。每一项都定义了由service-name定义的服务。
    Service-name是任意的,但通常是标准网络服务名,也可增加其他非标准的服务,只要它们能通过网络请求激活,包括localhost自身发出的网络请求。
    每一个service有很多可以使用的attribute,在下表中进行了详细的说明。稍后将描述必需的属性和属性的使用规则。
    操作符可以是=,+=,或-=。所有属性可以使用=,其作用是分配一个或多个值,某些属性可以使用+=或-=的形式,其作用分别是将其值增加到某个现存的值表中,或将其值从现存值表中

    删除。
    Value是为给定属性设置的值。

    需要说明的是:每一项服务既可以追加到/etc/xinetd.conf中,也可以在/etc/xinetd.conf中指定的目录中分别建立单独的文件,RedHat 7.x建议的是后一种做法,因为这样做的可扩充性很好,

    管理起来也比较方便。RedHat 7.x默认的服务配置文件目录是/etc/xinetd.d 。
    发布人:叶三耿 来自: