对瞬时守护进程的访问控制
我们知道瞬时守护进程是由超级守护进程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 = no或enable = yes之外,还可以使用
chkconfig 服务名称 on来启动服务
使用chkconfig命令修改的其实就是disable或enables这个参数的值。