首页 > 代码库 > Linux中的super daemon —xinetd

Linux中的super daemon —xinetd

   在Linux系统中有一个用于管理其他服务的管理进程,它的作用是把某一些本身不具有管理机制或进程守护和防火墙管理的服务通过xinetd来管理。所以说xinetd是在Linux中举足轻重的一个服务,在系统中xinetd的主要配置文件是:/etc/xinetd.conf,而一些系统自带,或者是自定义的配置文件一般都放在/etc/xinetd.d/文件夹里,通常配置文件的格式是这样的:

service <service_name>
{
     <attribute> <assign_op> <value> <value> ...
     ...
}

其中<service_name>是定义/etc/services文件中相关的服务用来确定启用那个端口,所以如果自行编译安装的软件可以在/etc/services文件中查看下是否有相应的端口对应关系;<attribute>功能属性参数;<assign_op>参数的设置方法,而<assign_op>支持普通的赋值运算,所以通常<assign_op>都是这些形式的:

=:直接赋值使用后面的参数
+=:后面的设置在原来的设置里加入新的参数
-=:在原来的设置中删除这里赋值的参数

   而xinetd中的常用的attribute和value如下:

attribute(功能属性)value说明
disable(是否启动)[yes|no],缺省是disable=yes,disable是禁用的意思
id(服务的名字)[name]虽然在<service_name>中定义了服务的名字,不过在之后如果有重复使用,在这里定义唯一标识
server(程序的文件名)
[PATH]在这里需要写上服务程序的二进制文件的绝对路径
server_args(程序参数)
[argv]在这里写上二进制文件使用的参数与server配合使用
user(服务所属的UID)
[UID]用于指定服务用哪个用户启动,不要要注意的是uid必需存在于/etc/passwd中
group(服务所属的GID)
[GID]意思同上,GID必需存在于/etc/group中
socket_type(数据包类型)
[stream|dgram|raw|seqpacket],stream为提供可靠的数据包,即tcp数据包;dgram为提供不可靠的数据包,即udp数据包;raw为直接使用ip交互的服务;seqpacket为使用连续可靠的数据包连接
protocol(数据包类型)[tcp|udp]通常都用socket_type所指定,所以一般不用
wait(连接机制)
[yes(single)|no(multi)],用于确定服务启动时单进程还是多进程,udp / dgram服务通常期望值为yes,而tcp / stream服务器通常期望该值为no,用于防御DDOS
instances(最大连接数)[number|UNLIMITED],用于控制服务的最大连接数
per_source(单用户来源最大连接数)
[number|UNLIMITED],用于控制每个ip的最大连接数
cps
[2个数字],为避免短时间内大量连接导致的系统繁忙而定义的cps,其中第一个参数为一秒内能够接受的最多连接请求,第二个数字则为若超过第一个数字则暂时关闭服务的秒数,缺省第一个数字为50,第二个参数为10秒
log_type(日志文件类型)
这里有2种格式一[SYSLOG {emerg,alert, crit, err, warning, notice, info, debug}]是用syslog的8个等级,缺省是info;二是[FILE $PATH]定义日志文件的绝对路径

log_on_success

log_on_failure

(日志状态)

[PID,HOST,USERID,EXIT,DURATION,TRAFFIC,ATTEMPT],用于确定服务启动成功或者失败的日志,其中log_on_success中有[PID,HOST,USERID,EXIT,DURATION,TRAFFIC],而log_on_failure中有[HOST,USERID,ATTEMPT]。PID为服务启动时的process ID;HOST为远程主机的IP;USERID登录者的ID;EXIT为离开时的信号记录,如果使用PID选项,则记录进程ID;DURATION为session的持续时间,即用户的使用时间;TRAFFIC记录重定向服务的总字节数;ATTEMPT为连接失败的记录
env(定义额外变量)
[name=value]用于定义而外的环境变量
port(非正规端口)
[number]用于定义不在/etc/services文件中的端口
redirect(服务地址)[IP port]端口重定向转发客户端连接到服务器上时转发至别的服务器上,这里允许tcp的端口做转发
includedir(调用外部设置)
[dirname]把所有的配置写在某一个文件夹下,平时通过调用文件夹下的配置文件,就如/etc/xinetd.conf中的"includedir /etc/xinetd.d"
bind(服务IP绑定)
[IP]用于指定服务的唯一ip,其他IP无效
only_from(防火墙机制)[address]可以用IP或者是某一个网段,hostname,domainname都可以登录,其中0.0.0.0表示允许任何主机
no_access(防火墙机制)[address]同上,不过这里是表示任何变量中的地址都不可登录
access_times(时间控制)[00:00-23:59,HH:MM:-HH:MM]设置服务的启动时间
umask(默认掩码)[umask]设置用户创建新文件或目录时的umask,系统的建议值是022

总之xinetd在Linux系统中还是比较重要的一个服务,使用xinetd可以方便的管理程序,而它的访问控制、加强的日志和资源管理功能可以有效的阻止DDOS的攻击当然如果需要更多的资料可以参看man xinetd.conf

本文出自 “技术随笔” 博客,谢绝转载!

Linux中的super daemon —xinetd