📄 839.html
字号:
<TD background="images/bgi.gif" tppabs="http://www.linuxhero.com/docs/images/bgi.gif"
height=30></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=3 width="95%"
align=center border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width="100%"
border=0>
<TBODY>
<TR>
<TD vAlign=top>
<p><FONT class=normalfont><B><font color=blue>使用xinetd</font></B></FONT><BR><FONT class=smallfont color=#ff9900>2004-04-23 15:18 pm</FONT><BR><FONT class=normalfont>作者:冯大辉<br>来自:Linux知识宝库<br>联系方式:无名<br><br>Jose 描述了如何着手配置调整xinetd。 <br>
<br>
~~~~~~~~~~~~~~~~~ <br>
xinetd 提供了访问控制,改进的日志功能和资源管理,取代了inetd,已经成为了Red Hat 7 <br>
和Mandrake 7.2的Internet标准超级守护进程。对那些对它感兴趣的人,这篇文章将引导你如何应 <br>
用一些它的特性,这些特性基于xinetd 2.1.8.8pre3版本。 <br>
<br>
<br>
<br>
******** <br>
<br>
导言 <br>
<br>
******** <br>
<br>
<br>
<br>
xinetd的最初的作者,Panagoitis Tsirigotis (panos@cs.colorado.edu)。好像已经停止了这 <br>
个项目。 Rob Braun (bbraun@synack.net)继续了这个工作,现在负责维护这个软件包。为了能 <br>
使select( )在我的老的libc5系统上使用,我不得不给当前的包添加几对头文件,这是我注意到的 <br>
问题。或许你需要它们,如下: <br>
<br>
<br>
<br>
xinetd/internals.c.orig <br>
<br>
<br>
<br>
Fri Jun 16 19:00:15 2000 <br>
<br>
+++ xinetd/internals.c <br>
<br>
Fri Jun 16 19:00:53 2000 <br>
<br>
@@ -12,6 +12,8 @@ <br>
<br>
#include <br>
<br>
#include <br>
<br>
#include <br>
<br>
#include <br>
<br>
#include <br>
<br>
#include "sio.h" <br>
<br>
***************** <br>
<br>
关于 xinetd <br>
<br>
***************** <br>
<br>
xinetd 用同样功能的,扩展了的语法取代了 inetd中的通用的行。 另外,还添加了日志功能和访 <br>
问控制。 虽然 inetd 使用Venema的 tcp_wrappers 软件(tcpd)控制TCP的连接, 但是你不能控 <br>
制UDP连接。而且,inetd对 RPC (portmapper)类型的服务也处理不好。 另外, 虽然使用inetd你 <br>
可以控制连接速度 ( 通过给wait或是 no wait 变量附加一个数, 例如nowait.1 每个 一秒钟一个 <br>
实例),你不能控制实例的最大数。这能导致进程表攻击,例如,一个有效的拒绝服务攻击。通过使 <br>
用 xinetd,我们可以防止这样。 <br>
<br>
我启动xinetd通常用下面的命令,把它放在我的Internet服务启动脚本中: <br>
/usr/sbin/xinetd -filelog /var/adm/xinetd.log -f /etc/xinetd.conf <br>
这告诉 xinetd 对所有的服务都进行纪录,日志保存到文件 /var/adm/xinetd.log 中,并且使用 <br>
配置文件 /etc/xinetd.conf.。这篇文章中的大量篇幅都将用在这个设置文件上。 <br>
<br>
***************** <br>
<br>
编译时选项 <br>
<br>
***************** <br>
<br>
你应该注意的3个编译时的选项提供了额外的访问控制 libwrap, loadavg (用于监视负载均衡) <br>
和 IPv6 支持。对于大多数libwrap“明白“的守护进程 (如 portmapper 和sendmail),在设置 <br>
脚本中的``with-libwrap''选项 告诉 xinetd支持tcp_wrappers文件/etc/hosts.allow <br>
和/etc/hosts.deny。xinetd 的这些选项就像对 inetd那样支持所有的 xinetd控制的监视进 <br>
程。 注意如果你从头开始做 xinetd的话,就可以做访问控制,不再需要tcpd。不管怎样对libwrap <br>
的支持是有用的--如果你从inetd/tcpd迁移并且也不想改变你的访问文件的话 。 <br>
<br>
第二个有趣的设置选项是支持负载均衡监视,在 ./configure脚本中使用with-loadavg选 <br>
项。sendmail 支持在高负载的时候去掉连接,假定它已经脱离了控制并且正在当掉机器。用这个选 <br>
项可以激活max_load 选项以限制任何连接或是基于负载均衡机器的所有服务。 <br>
<br>
最后,添加 IPv6支持 可以通过在 ./configure 脚本中使用 with-inet6 capability选项来 <br>
完成。这使xinetd 支持 IPv6地址和连接。注意要使这个生效的话你的核心(和网络)必须支 <br>
持 IPv6。当然了,IPv4 仍然被支持。 <br>
<br>
************** <br>
<br>
配置文件 <br>
<br>
************** <br>
<br>
The xinetd 配置文件,通常可以手工或是自动从 inetd.conf文件生成。 前者费时间且容易出 <br>
错;后者可以通过 itox软件或者xconv.pl 脚本轻易完成。虽然 itox软件正在被取消而倾向于使 <br>
用xconv.pl 脚本,它仍然很有用。但是,要注意重复的运行它会覆盖原有的配置文件。itox <br>
和xconv都以同样的方式工作,我们用 itox来进行演示; <br>
<br>
$ itox < /etc/inetd.conf > xinetd.conf <br>
<br>
更新一些的软件,xconv,可以理解注释,并且比 itox对tcpd 用得更好,使用 itox,你不得不指 <br>
定守护进程的路径 ,如 /usr/sbin。 你想要包含的第一段就是默认的段,就像名字的暗示的那 <br>
样,默认的inetd服务。 <br>
<br>
defaults <br>
<br>
{ <br>
<br>
instances = 25 <br>
<br>
log_type = FILE /var/adm/servicelog <br>
<br>
log_on_success = PID HOST EXIT <br>
<br>
flags = NORETRY <br>
<br>
log_on_failure = HOST RECORD ATTEMPT <br>
<br>
only_from = 129.22.0.0 <br>
<br>
no_access = 129.22.210.61 <br>
<br>
disabled = nntp uucp tftp bootps who <br>
<br>
shell login exec <br>
<br>
disabled += finger <br>
<br>
} <br>
<br>
<br>
<br>
马上, 我们可以了解 xinetd 设置参数的语法: <br>
<br>
<指示directive> <操作符operator> <值value>. <br>
<br>
xinetd 指示符列在表一中,在这里我们将忽略 flags,type,env 和 passenv指示符。 我对将 <br>
对only_from 和 no_access以及额外的日志选项加以更多的讨论 <br>
<br>
表 1. xinetd的指示符 <br>
----------------------------------------------------------------------- <br>
指示符 描述 <br>
socket_type 网络套接字类型, 流或者数据包 <br>
protocol IP 协议, 通常是TCP或者 UDP <br>
wait yes/no, 等同于inetd的wait/nowait <br>
user 运行进程的用户 ID <br>
server 执行的完整路径 <br>
server_args 传递给server的变量,或者是值 <br>
instances 可以启动的实例的最大的值 <br>
start max_load 负载均衡 <br>
log_on_success 成功启动的登记选项 <br>
log_on_failure 联机失败的时候的日志信息 <br>
only_from 接受的网络或是主机 <br>
no_access 拒绝访问的网络或是主机 <br>
disabled 用在默认的 {} 中 禁止服务 <br>
log_type 日志的类型和路径 FILE /SYSLOG <br>
nice 运行服务的优先级 <br>
id 日志中使用的服务名 <br>
------------------------------------------------------------------------ <br>
<br>
操作符非常简单, = 或者+=。用 =,右边给定的值传给左边的指示符。 +=也是非常直接的,用于 <br>
给一个已经指定的指示符添加一个值。没有它,原先的指示符就会被覆盖,这样可以用来展开访问列 <br>
表,或者跨越多行。 <br>
<br>
用如下的格式描述服务: <br>
---------------------------------- <br>
服务名 <br>
{ <br>
指示符 = 值 <br>
指示符 += 值 <br>
} <br>
---------------------------------- <br>
<br>
服务名一定要在 /etc/services列出 ,并且要用使用合适的socket和协议。 <br>
<br>
***************** <br>
<br>
关于访问控制 <br>
<br>
***************** <br>
<br>
关于访问控制的有几句话。 首先, xinetd控制连接,不是通过包,它只是个用户方的守护进程,如 <br>
同inetd 一样。 同样的, 可以打断一个被服务器禁止的主机的SYN或是connect()。但不能打断 <br>
象FIN [端口扫描使用带有FIN 标志位的TCP包, 通常是nmap这样的工具运行产生的]这样的“秘密 <br>
“ 扫描。 不要把 xinetd 当作一个 firewall 用以阻止端口扫描。一个有经验的入侵者能够用这 <br>
些信息收集你的不同服务的访问列表。幸运的是, 这些可以被xinetd纪录。当你看到你的日志的时 <br>
候你的疑虑会消失的。 <br>
<br>
第二, xinetd, 2.1.8.8pre3版本,当一个系统试图连接的时候进行名字查找,以前,它在启动的 <br>
时候进行查找, 但是现在已经改变了。 <br>
<br>
使用访问控制真的很简单。第一个指示符是 only_from, 列出了从哪一个网络或是主机我们可以接 <br>
受连接。这个规则可以被 no_access覆盖。 你可以使用网络号,如 10.0.0.0 或者 10,或者是网 <br>
络名,包括 *.my.com 或者 .my.com 。主机名或者主机的 IP地址也可以在这里使用指示 <br>
符0.0.0.0 t匹配所有的主机,监听所有的地址。通过使用 no_access一旦符合标准拒绝就会被解 <br>
析。 再说一遍,网络和主机可以指定。 <br>
<br>
*********** <br>
<br>
服务配置 <br>
<br>
*********** <br>
<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -