当前位置:操作系统 > Unix/Linux >>

xinetd使用指南(二)

例1

  文件/etc/xinetd.conf中的一部分

  Serice

  ftp

  {

  Socket_type=stream

  protocol=tcp

  wait=no

  user=root

  server=root

  Server_args=

  -

  1

  -

  a

  }

  Service

  telnet

  {

  Socket_type=stream

  protocol=tcp

  wait=tcp

  user=root

  server=/usr/sbin/in.telnetd

  }

  创建/etc/xinetd.conf文件最容易的方法是用itox工具(该例假定当前工作目录是xinetd的编译目录):

  #

  xinetd/itox

  -daemon_dir

  /usr/sbin

  /etc/xinetd.conf。itox的参数-daemon_dir

  /usr/sbin指定服务程序的目录位置,如果实现了TCP_Wrappers,从/etc/inetd.conf中是不能确定它的,转换完成以后,就开始增加属性和值,以限制访问并增加登记,最后要手工修改/etc/xinetd.conf以充分利用xinetd的特性;否则,如果只把 /etc/inetd.conf转换为/etc/xinetd.conf,

  xinetd的行为就和inetd一样了。

  表1详述了在/etc/xinetd.conf中最常使用的一些属性和值。当然还有许多其他属性,详细配置选项可以在安装xinetd以后通过man

  xinetd.conf来得到。在本小节后面的“配置实例”中,将用一些例子阐明其中的许多属性。

  表 2中给出only_from和no_access表的语法,定义了指定主机名,IP地址和网络的语法。注意表2中最后一项netmask的语法和之前看到的有所不同。它没有采用传统的十进制或十六进制netmask的表示方法,而是采用一个整数表示从netmask(用二进制表示)的最高位(最左端)开始起每位都为1的位数。因此,给定例子的netmask值设置为20,意味着其最左端的20位都设置为1,而余下12位设置为0,或

  11111111

  11111111

  11110000

  00000000

  它是十进制netmask255.255.240.0的二进制表示。

  表2

  /etc/xinetd.conf的访问控制表的语法

  语

  法

  描

  述

  hostname

  可解析的主机名。使用和这个主机名相关的所有IP地址

  IPaddress

  点和十进制形式的标准IP地址,如192.168.0.1

  Net_name

  /etc/networks中的网络名

  x.x.x.0

  x.x.0.0

  x.0.0.0

  0.0.0.0

  0作为通配符看待。如项88.3.92.0匹配从88.3.92.0到88.3.92.255的所有IP地址。项0.0.0.0匹配所有地址

  x.x.x.{a,b,…}

  x.x{a,b,…}

  x.{a,b,…}

  指定主机表。如172.19.32.{1,56,59}意味着含IP地址172,19.32.1,172.19.32.56和172.19.32.59的表

  Ipaddress/netmask

  定义要匹配的网络或子网。如172.19.16.0/20匹配从172.19.16.0到172.19.31.255的所有地址

  在看了这些基本属性之后,下面我们仔细讨论那些必需的属性,特定服务和一些配置实例。

  必需的属性

  对每种服务都必须指定某些属性。一些服务比其他服务需要更多属性,因为它们不被缺省定义(即不在/etc/services或/etc/rpc中)。表3列出了必需的属性。

  表3

  必需的属性

  语

  法

  描

  述

  Socket_type

  所有服务

  Wait

  所有服务

  User

  在/etc/services或/etc/rpc中列出的服务

  Server

  非内部服务

  Port

  不在/etc/services中的非RPC服务

  Protocol

  不在/etc/services中的所有RPC服务和所有其他服务

  Rpc_version

  所有RPC服务

  Rpc_number

  不列在/etc/rpc中的任何RPC服务

  特定的xinetd服务

  /etc/xinetd.conf文件中有4个特殊项。它们分别是defaults,

  servers,services和 xadmin。Defaults项不是一项服务,且不需要前置service关键字(否则它会被当成称为defaults的服务对待)。这些特殊项在以下 4小段中描述。

  Defaults项

  /etc/xinetd.conf文件中的defaults项是实现为该文件中的所有服务指定某些属性的默认值。这些默认值可被每个服务项取消或修改。表4中列出可在defaults项中指定的属性。这个表也指明了具体服务项中可以修改哪些属性。

  表4

  defaults可用的属性

  属性

  服务修改

  Log_on_success

  Log-on_failure

  Only_from

  No_access

  Passenv

  可以用=操作符改写或用+

  =或

  -

  =操作符修改

  Instances

  Log_type

  可以用=操作符改写

  disabled

  可注释掉的服务,但disabled属性可用于某个服务项内

  例 2是defaults项的一个实例。从中看到对所有服务而言,登记消息将通过loca14.info有选择地送到syslogd进程。对成功的服务连接,将登记PID,客户机IP地址,中止状态和连接时间。对不成功的连接企图,将登记客户机IP地址。每项服务的最大实例数设置为8。禁止两项服务: in.tftpd和in.rexecd。

  defaults项从本质上提供了在整个文件中建立某些属性的默认值,它应用于没有设置这些属性的所有服务。

  例2

  /etc/xinetd.conf中defaults项的示例

  Defaults

  {

  Log_type

  =

  SYSLOG

  loca14

  info

  Log_on_success

  =

  PID

  HOST

  EXIT

  DURATION

  Log_on_failure

  =

  HOST

  Instances

  =8

  Disabled

  =

  in.tftpd

  in.rexecd

  }

  注:如果在/etcxinetd.conf文件中没有defaults项,且之后决定增加这一项,你必须中止和重新启动xinetd以使defaults生效。这对任何要增加到/etc/xinetd.conf中的新服务也是正确的。它可以如下完成。

  #

  kill-TERM

  xinetd

  #/

  usr/sbin/xinetd

  或者如果使用了启动脚本,则只需要简单执行。

  #/etc/rc.d/init.d/xinetd

  restart

  Servers 项

  servers特殊服务是实现提供当前运行在服务器上的进程表,以及有关这些进程的确切信息。换句话说,它提供了活动连接的列表。这对排除故障和检查 xinetd状态是个有用机制。例3显示了/etc/xinetd.conf文件中的一个实例servers项。注意这项服务的类型是INTERNAL, UNLISTED,这意味着它是xinetd的内部功能,且不列在/etc/services中。使用的端口是完全任意的。

  例3

  servers项的示例

  Service

  servers

  {

  type

  =

  INTERNAL

  UNLISTED

  Socket_type

  =

  stream

  Protocol

  =

  tcp

  Port

  =

  9997

  Wait

  =

  no

  Only_from

  =

  172.17.33.111

  Wait

  =

  no

  }

  注意这项服务仅用于特定IP地址172.17.33.111,它是服务器自身的IP地址。这表示不允许任何其他主机从这个服务器获得当前运行在服务器上的进程列表。这样做的原因是显而易见的:如果这条信息可被其他系统上的主机获取,基于对当前正在运行的进程的了解就加以利用。除用于调试之外,一般不要运行该服务,因为172.17.33.111上的任何用户通过执行例4中的telnet

  172.17.33.111

  9997都能获取这条信息。注意 xinetd仅提供这条信息就退出,不提供交互连接。例4中的输出告诉我们有两个正在运行的telnet进程(第5行和第31行),一个进程PID为 5931,另一个为5961(分别为第6行和第32行),有一个ftp进程(第18行),其运行PID为5960(第19行)。

  例4

  servers服务的输出示例

  1

  $

  telnet

  topcat

  9997

  2

  Trying

  172.17.33.111……

  3

  Connected

  to

 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,