ITPub博客

首页 > 应用开发 > IT综合 > xinetd使用指南(二)(转)

xinetd使用指南(二)(转)

原创 IT综合 作者:post0 时间:2007-08-11 14:52:08 0 删除 编辑
xinetd使用指南(二)(转)[@more@]

例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 topcat 

4 Escape character is ‘^]’ 

5 telnet server 

6 Pid=5931 

7 Start_time=Sat Apr 17 10:32:15 1999 

8 Connection info: 

9 State=CLOSED 

10 Service=telnet 

11 Descriptor=20 

12 Flags=9 

13 Remote_address=10.48.3.2,39958 

14 Alternative services= 

15 Log_remote_user=YES 

16 Writes_to_log=YES 

17  

18 ftp server 

19 Pid=5960 

20 Start_time=Sat Apr 17 10:49:06 1999 

21 Connection info: 

22 State=CLOSED 

23 Service=ftp 

24 Descriptor=20 

25 Flags=9 

26 Remote_address=172.17.55.124,2320 

27 Alternative services= 

28 Log_remote_user=YES 

29 Writes_to_log=YES 

30 

31 telnet server 

32 Pid=5961 

33 Start_time=Sat Apr 17 10:49:20 1999 

34 Connection info: 

35 State=CLOSED 

36 Service=telnet 

37 Descriptor=20 

38 Flags=9 

39 Remote_address=172.17.1.3,35461 

40 Alternative services= 

41 Log_remote_user=YES 

42 Writes_to_log=YES 

43 

44 Connection closed by foreign host 

45 $ 

Services项 

 services特定项的目的是提供可用服务的列表。对services特定项来说,这是个有用的排除故障工具,但为了上述同样的安全因素,可能不会去用它。尽管如此,还是要看一看它如何工作。 

例5是 services项的一个示例。端口号的选择也是任意的。也应注意访问限制于topcat,这是服务器自身的主机名。 

例5 /etc/xinetd.conf中services项示例 

Service services 

{ 

    type = INTERNAL UNLISTED 

    Socket_type = stream 

    protocol = tcp 

    port = 8099 

    wait = no 

    Only_ from = topcat 

} 

对于servers服务来说,任何用户可执行telnet topcat 8099,并获得来自services服务的输出。例6给出了连接8099端口的实例信息信息。注意xinetd仅提供这条信息就退出,而不提供任何交互连接。 

例6 查询services内部服务的输出 

$ telnet topcat 8099 

Trying 172.17.33.111…… 

Connected to topcat. 

Escape character is ‘^]’ 

Servers tcp 9997 

Services tcp 8099 

ftp tcp 21 

telnet tcp 23 

Shell tcp 514 

Login tcp 513 

Talk udp 517 

Ntalk udp 518 

Pop-2 tcp 109 

Pop-3 tcp 110 

Imap tcp 143 

Linuxconf tcp 98 

Connection closed by foreign host. 

$ 

Xadmin项 

这个特定服务项提供以交互方式获得services特定服务所提供信息的方法。例7是/etc/xinetd.conf项的一个示例(端口号的选择也是任意的),类似于services和servers服务,这项服务也没有口令或其他保护,所以要谨慎设置服务的only_from项,以增强安全性。(linux知识宝库

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8225414/viewspace-945510/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: Cups Howto(转)
请登录后发表评论 登录
全部评论
  • 博文量
    2018
  • 访问量
    8226471