RedHat-Wrapper和xinetd的实现(三)

王朝other·作者佚名  2008-05-19
宽屏版  字体: |||超大  

编者:Wrapper和xinetd是实现Linux的存取限制一种方式。我们在第一篇文章中介绍了其基本原理和安装编译的方法,在第二篇文章中跟大家仔细说了一下它的配置。没有看到的朋友可以去看一下页面底部的相关文章。今天讲到一些实例,便于大家的理解和掌握。最后还提到了日志管理。

配置实例

1. defaults配置

【范例1】/etc/xinetd.conf

# Simple configuration file for xinetd

# Some defaults, and include /etc/xinetd.d/

defaults

{

instances = 60

log_type = SYSLOG authpriv

log_on_success = HOST PID

log_on_failure = HOST

cps = 25 30

}

includedir /etc/xinetd.d

解读:RedHat 7.x建议的配置方法不是将所有服务项都写在一个文件里面,/etc/xinetd.conf是作为默认配置文件用的,/etc/xinetd.d目录下面的每个文件对应一个服务。前面说过,默认项的设置是作用于所有服务的,由此可以看出上面的对所有服务都是设置了60个实例、设置的日志方式为SYSLOG authpriv,登陆成功时记录HOST和PID,失败时仅记录HOST,

每秒最多处理25个连接,如果超过这个数目的连接则等待30秒后继续处理。Includedir指令指定了配置文件的目录是/etc/xinetd.d

2.telnet的配置

【范例1】/etc/xinetd.d/telnet

# default: on

# description: The telnet server serves telnet sessions; it uses

# unencrypted username/password pairs for authentication.

service telnet

{

disable = no

flags = REUSE

socket_type = stream

wait = no

user = root

instances = 10

server = /usr/sbin/in.telnetd

log_on_failure += USERID

rlimit_as = 8M

rlimit_cpu=20

}

解读:

1、 instances的设置覆盖了defaults项的设置;

2、 log_on_failure属性在defaults项的基础上加上了USERID。

3、 对TELNET服务设置了资源限制,最多可用内存为8M,CPU每秒处理20个进程。

3 .echo的配置

【范例3.1】/etc/xinetd.d/echo

# default: off

# description: An echo server. This is the tcp

# version.

service echo

{

disable = yes

type = INTERNAL

id = echo-stream

socket_type = stream

protocol = tcp

user = root

wait = no

}

【范例3.2】/etc/xinetd.d/echo-udp

# default: off

# description: An echo server. This is the udp

# version.

service echo

{

disable = yes

type = INTERNAL UNLISTED

id = echo-dgram

socket_type = dgram

protocol = udp

user = root

wait = yes

port = 7

}

解读:由于它们的服务名相同,只是socket类型不同,所以,使用id属性来区分。

4. RPC类服务例子

【范例4】/etc/xinetd.d/rstatd

service rstatd

{

type = RPC

socket_type = dgram

protocol = udp

server = /usr/etc/rpc.rstatd

wait = yes

user = root

rpc_version = 2-4

env =LD_LIBRARY_PATH=/etc/securelib

}

5. 自定义的服务配置范例

【范例4】/etc/xinetd.d/sample

service sample

{

type = UNLISTED

socket_type = stream

protocol = tcp

server = /usr/bin/sample

port =20020

}

xinetd进程

1 启动与中止:

如果你使用的是7.x 的默认安装:

/etc/rc.d/init.d/xinetd start

/etc/rc.d/init.d/xinetd stop

/etc/rc.d/init.d/xinetd restart

/etc/rc.d/init.d/xinetd reload

或者

/sbin/service xinetd start

/sbin/service xinetd stop

/sbin/service xinetd restart

/sbin/service xinetd reload

如果你使用的是6.x上的自行编译安装:

你需要自行建立xinetd启动脚本:

touch /var/run/xinetd.pid

touch /var/lock/subsys/xinetd

chmod 755 /etc/rc.d/init.d/xinetd

你可以用下面的命令来控制进程:

/etc/rc.d/init.d/xinetd start

/etc/rc.d/init.d/xinetd stop

/etc/rc.d/init.d/xinetd restart

/etc/rc.d/init.d/xinetd reload

vi /etc/rc.d/init.d/xinetd

##文件内容如下:

/etc/rc.d/init.d/xinetd文件内容

#!/bin/bash

#

# xinetd This starts and stops xinetd.

#

# chkconfig: 345 56 50

# description: xinetd is a powerful replacement for inetd.

# xinetd has access control machanisms, extensive

# logging capabilities, the ability to make services

# available based on time, and can place

# limits on the number of servers that can be started,

# among other things.

#

# processname: /usr/sbin/xinetd

# config: /etc/sysconfig/network

# config: /etc/xinetd.conf

# pidfile: /var/run/xinetd.pid

prog="xinetd"

PATH=/sbin:/bin:/usr/bin:/usr/sbin

# Source function library.

. /etc/rc.d/init.d/functions

# Get config.

test -f /etc/sysconfig/network && . /etc/sysconfig/network

# Check that networking is up.

[ ${NETWORKING} = "yes" ] || exit 0

[ -f /usr/sbin/xinetd ] || exit 1

[ -f /etc/xinetd.conf ] || exit 1

RETVAL=0

start(){

echo -n $"Starting $prog: "

# Need to get rid of localization for external services -

# it doesn't make much sense to have i18n on the server side here

LANG=en_US

LC_TIME=en_US

LC_ALL=en_US

LC_MESSAGES=en_US

LC_NUMERIC=en_US

LC_MONETARY=en_US

LC_COLLATE=en_US

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有