首页 > 代码库 > 瞬时守护进程的访问控制

瞬时守护进程的访问控制

对瞬时守护进程的访问控制

我们知道瞬时守护进程是由超级守护进程xinetd代为管理的,由于超级守护进程接受TCP Wrappers的访问控制,因此瞬时守护进程也接受TCP Wrappers的控制管理。

虽然TCP  Wrappers可以对瞬时守护进程做访问限制,但是他只能控制哪些用户可以访问哪些服务,不能精确的控制每一个服务的使用。比如,控制telnet服务的最大同时连接数、控制每一客户端访问该服务的最大连接数等等。TCP Wrappers是无法做到的。

 

要想有效的管理的这些瞬时守护进程,需要编辑超级守护进程的配置文件。

超级守护进程的文件为/etc/xinetd.conf/etc/xinetd.d/*

其中/etc/xinetd.conf为主配置文件,或者叫做默认配置文件

/etc/xinetd.conf的语法格式如下:

#vim  /etc/xinetd.conf

defaults

{       

         aryuement = value

         …

includedir  /etc/xinetd.d/

在主配置文件中定义的参数具有全局性,也就是说他们在任何一个由xinetd代为管理的瞬时守护进程的配置文件里都有效。

常见的参数有:

enable = {yes|no}     表示是否启用该服务,yes为启用该服务

disabled = {yes|no}   表示是否启用该服务,no表示启用该服务

log_type = SYSLOG daemon info  表示日志类型为SYSLIG 日志级别为info

                   还有一个日志类型为FILE 后面接记录日志文件

                   例如:log_type = FILE /var/log/telnet.log

log_on_failure = HOST  表示访问失败时,将访问主机信息记录下来

log_on_success = PID HOST DURATION EXIT

#表示访问成功时,将服务的pid、访问主机、以及在此会话期间的相关信息和退出时的信息都记录下来

cps = num1  num2  表示每一秒的最大连接数为num1,如果超过num1就暂停num2

instances = num1    表示某个服务的最大连接数

per_source = num1   表示每个客户端允许的最大连接数

only_from = {IP|NETWORK/MASK|HOSTNAME|DOMAIN}

#表示只有指定的主机才可以访问该服务

no_access = {IP|NETWORK/MASK|HOSTNAME|DOMAIN}

#表示不允许访问某服务的主机。

bind = IP 

#默认情况下,如果某个服务有多个ip,那么这些ip默认都处于监听状态。bind = IP表示只

允许哪一个ip处于监听状态。或者理解为只允许哪个ip可以使用此服务

interface = IP bind的意思一样。

access_tiomes = HH:MM-HH:MM

#表示只允许指定的之间段内访问某服务

port = PORT 指定某服务的端口号,如果不使用默认端口,则可以使用此选项

wait = {no|yes} 

#表示如果同时有多个请求,该服务是同时进行响应,还是一个一个的响应,其他请求处于

等待状态。no表示为同时启动多个进程或线程进行响应。默认为no

socket_type = {stream|dgram|raw}

#stream表示为tcp报文,dgram表示为udp报文,raw表示使用rpc协议进行连接

user = root 表示该服务以哪个用户身份来运行

group = root 表示以哪个组的身份来运行和user的意思大致相同

server = 二进制程序  表示某个服务的二进制程序

#例如:server = /usr/bin/rsync

server_args = ARGS  表示给二进制程序传递的参数

#例如:/usr/bin/rsync  --daemon

umask = UMASK 表示设定用户建立目录和文件时的属性

banner = /path/to/file  登入成功后,显示该文件的内容

 

 

以上这些参数如果定义在主配置文件中,则全局生效。当然也可以定义在各个服务的配置文件中。这些瞬时守护进程的配置文件在/etc/xinetd.d/目录下。如果这些参数定义在各个服务的配置文件中,则只对该服务生效。这些瞬时守护进程的配置文件语法格式如下:

service  <service_name>

              {

                     <attribute> <assign_op> <value> <value> ...

                     ...

              }

其中<service_name>和配置文件名称相同

<attribute>表示参数选项,就是上面的这些参数

<assign_op>表示操作符,例如”=”

<value>表示为某个参数赋值

 

实例:设定本地的rsync服务(非独立守护进程),满足如下需求:

1、  仅监听在本地192.168.0.103的地址上提供服务

2、  仅允许192.168.0.0/24网络内的主机访问,但不允许192.168.0.100访问

3、  仅允许运行最多3个实例,而且每个ip最多只允许发起2个连接请求

 

解决办法:

#vim  /etc/xinetd.d/rsync

service rsync

{

        disable = no

        socket_type     = stream

        wait            = no

        user            = root

        server          = /usr/bin/rsync

        server_args     = --daemon

        log_on_failure  += USERID

        bind            = 192.168.0.103

        only_from       = 192.168.0.0/24

        no_access       = 192.168.0.100

        instances       = 3

        per_source      = 2

}

 

启动瞬时守护进程除了修改参数disable = noenable = yes之外,还可以使用

chkconfig 服务名称 on来启动服务

使用chkconfig命令修改的其实就是disableenables这个参数的值。

本文出自 “linux学习之路” 博客,请务必保留此出处http://xslwahaha.blog.51cto.com/4738972/1573869

瞬时守护进程的访问控制