每个 UNIX 管理员都熟悉 inetd,inetd 是个守护程式,通过一个集中的配置文档(inetd.conf)来管理大多数入网连接。xinetd 守护程式是 inetd 的替代,他提供许多改进的或新的特性,连同更容易的配置。Ted 解释了 inetd 背后的概念,并且给出了在您自己的站点上配置 xinetd 的示例。
经典的 inetd 守护程式已存在很久了。有几种替换 inetd 的功能的方法,但是最灵活、最简便的方法似乎是 xinetd。inetd 能做的,xinetd 也能做,并且 xinetd 还能做更多的事情。譬如,TCP 封装、模块化配置、连接重定向和入站连接的负载限制,而这些只是使得 xinetd 成为系统管理员良好选择的部分特性。
本文是为从初学者到中级系统管理员这样的读者而准备的,并且文中的说明和示例并不尝试假设您已熟悉 inetd。在本文中,我们将研究 xinetd 的一些简单用法,从安装到安全性策略的实现。
开始之前
为实现本文的目的,您的系统最好安装了最近的主流(2000 或更新)UNIX(Linux、Solaris、BSD)。这些示例在 Perl 和 UNIX(连同其他操作系统)的早期版本上也能够运行,但是他们功能方面的障碍应该由读者作为练习来解决。给定的特定示例是用于 Red Hat Linux 的,但是他们在其他系统上应该也能够运行(除 chkconfig 以外)。
inetd 到底是什么
对于 UNIX 系统管理员,inetd 和 cp/rm/mv 命令相同基本。他总是存在,并准备着处理入站连接。但他到底是什么?他用来做什么?
首先从 TCP/IP (他也包括 UDP,但我们现在还不考虑)开始回答。当您建立和一台主机的连接时,实际上是创建了一个 TCP/IP 连接(通常是个套接字) ― 这好象是在您和主机之间打了一个电话。TCP/IP 连接由起始主机和接收主机唯一地定义,但更有其他标识。假如我们都连接到一台服务器,他如何区分 webserver、telnet、SSH、FTP 和其他连接呢?套接字也通过建立连接所使用的端口来定义。例如,端口 21 是入站 FTP、端口 22 是 SSH、端口 23 是 TELNET(有关其他大多数端口,能够查看 UNIX 系统上的 /etc/services)。
一旦建立了连接,某人就在另一端拿起了电话。这能够是接线员或直线。直线表示您直接连接到了服务器,而接线员是涉及 inetd 的方法。接线员实际上处理一组入站直线(主机上的端口),并亲自将他们交给负责的程式(服务器)。
UDP 是另一种连接方法。象 TCP 相同,UDP 基本上是和某人的对话,但是不确保他是可靠的。UDP(继续使用电话的比喻)就象将消息扔到传送带上,让接收者站到另一端。您能够从传送带得到许多消息,但是假如消息太多(网络流量高)或读取消息费时太久(服务器忙),则接收者可能会丢失一些消息。
假如使用 inetd,在执行一些检查后,您被重定向到特定服务器。只有一个配置文档 ― inetd.conf,管理任何入站连接。因而在系统上添加、删除、更改或复查服务变得更为简单。例如,在 Solaris 系统上使用 TCP 封装器将 ftp 定义如下:
清单 1,FTP 服务的 inetd.conf 定义
|
这些是创建一个 FTP 连接所需的全部参数。简单地说,我们以面向流(stream)的方式使用 TCP/IP(tcp)时,同时允许多个 FTP 连接(nowait)、作为 root 运行连同调用 FTP(接下来,TCP 封装器将调用 FTP 守护程式)。
用一上午的时间解析很困难吗?绝对困难。有必要这么复杂吗?不。xinetd 继承了 inetd 的设计并将他模块化,这意味着每个服务都能够存在于他自己的配置文档中。xinetd 还添加了一些象 TCP 封装器之类的功能部件,使得配置更加简单。
xinetd 保持了中央配置(接线员)方法,将任何配置文档存储到单一位置,通常是 /etc/xinetd.conf 和 /etc/xinetd.d/*,使系统管理员能够更容易地获得。模块化配置意味着,您能够通过将服务复制到 xinetd.d 目录来向多台机器上分发该服务,也能够用同类的手段除去他。甚至能够指定额外的包含目录。
最后,xinetd FAQ(请参阅本文后面的 参考资料)声明了 RPC 程式在 xinetd 下运行得不太好。但是没问题,对 RPC 使用 inetd,并对其他任何服务使用 xinetd。这就象雇了两个接线员,一个说西班牙语,另一个说任何其他语言。
xinetd 简介
那么 xinetd 是什么?一句话,他就是个程式。处理入站网络连接没什么神奇。能够使用 Perl、Python 或 Java 来处理。Xinetd 是用 C 编写的,而且他和他的前辈 inetd 相同快,假如不是更快的话(例如,TCP 封装器不必为每个入站连接而执行;他们在启动时装入内存)。
xinetd 正在研发中。(您的版本可能过时了,所以请务必到主页上查找最新的版本;请参阅 参考资料。)因为他正在研发中,所以 xinetd 的安全漏洞得以迅速弥补,而不象 inetd 那样薄弱,通常要很长时间才能弥补。当然,xinetd 是随源代码一起交付的,所以您能够复查源代码并自己找到可能存在弱点的地方。
如何使用 xinetd 定义服务呢?编写一个服务文档,他除了指定 /etc/xinetd.conf 中所指定的一般参数之外,还指定特定配置。所以,假如 /etc/xinetd.conf 是这样的:
清单 2,样本 xinetd.conf(标准的 Red Hat 7.1)
|
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



