解析 xinetd.conf

解析 xinetd.conf

一般而言,在 /etc/rc.d/init.d/ 里面的 scripts 都是发展者之 RPM 所提供的,如果您有兴趣自行发展你的软件的话,那么可以直接以这样的方式来独立启动的!不过,我们也可以经由 super daemon 来管理我们的服务,因为这个 super daemon 可以提供相当多的功能,尤其是安全性方面的功能,所以,我们就来谈一谈如何使用这个东西吧!
 
先来看一看预设的 /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

内容格式:
service <service_name>
{
       <attribute> <assign_op> <value> <value> ...
       ...
}

在上面的预设范例当中,说明的是:『 如果没有指定的 services ( defaults ) 那么就用 {} 里面的设定来执行之!』正常的情况之下有点像上面例子中的黄色字体所示,那个 <> 里头的数据我们先来说明一下:注:那个 assign_op 主要有三种形式,分别如下:
 = : 表示后面的设定参数就是这样啦!
+= : 表示后面的设定为『在原来的设定里头加入新的参数
-+ : 表示后面的设定为『在原来的参数舍弃这里输入的参数!』
用途不太相同,敬请留意呦!好了!底下再来说一说那些 attribute 与 value !
 
attribute
(功能)
assing_op
(允许的动作)
说明
(范例)
一般设定项目:
disable yes
no
允许该 server 可以执行或者是不能执行!
当设定为 yes 表示该服务不能执行!
socket_type stream
dgram
raw
当联机为 TCP 封包时,则使用 stream 类型
当联机为 UDP 封包时,则使用 dgram  类型
raw 代表 server 需要与 IP 直接对谈!
protocol tcp
udp
...
这个东西说的是,联机的状态使用的是哪一种协议!?各个协议的代号可以参考 /etc/protocols 内容!此外,除非是你自己设定的服务,否则这个可以不用设定啦!
wait yes
no
这就是我们刚刚提到的 Multi-threaded 与 single-threaded 的方式啦!一般来说,我们希望大家的要求都可以同时被启用,所以可以设定 wait = no
user UID
root
还记得我们在 账号管理 那一篇提到的 UID 概念吗?对啦!这个 UID 就是那个 UID 啦!要注意的是,假如你的服务启动者不要以 root 为主的话,那么这个地方就可以改变其它的使用者,例如 nobody !这个咚咚也会有安全防护的机制存在!此外,需要注意这个 UID 必须存在于 /etc/passwd 。
group GID 跟 user 的意思相同!只是这个 GID 的使用者也必须存在于 /etc/group 当中!
instances number
UNLIMITED
这个是『在同一时间之内,同一个服务可以允许的联机数目』的意思,你可以写入一个『数字』来控制联机数目,也可以使用 UNLIMITED 来告诉系统『没有上限』啰!例如你在同时段之内仅允许 ftp 联机有 30 个,那么这里就可以输入 30 啦!
nice -19 ~ 19 还记得我们在 程序管理 里面谈到的那个 nice 指令吗?!对啦!这里就是这个东西啰!数字越小( 负值 )代表该程序越优先被执行!
server program
/usr/sbin/in.ftpd
这个就是指出这个服务的启动程序!例如要启动 ftp 的话,其实就是 in.ftpd 这支程序啦!所以这个时候在这里输入 server = /usr/sbin/in.ftpd
server_args 一些参数 这里应该输入的就是你的 server 那里需要输入的一些参数啦!例如 in.ftpd 当中,我们可能就需要输入 -l -a 这个参数说!
log_on_success PID
HOST
USERID
EXIT
DURATION
在『成功登入』之后,需要记录的项目:PID为纪录该 server 启动时候的 process ID ,HOST 为远程主机的 IP、USERID 为登入者的账号、EXTI 为离开的时候记录的项目、DURATION 为该使用者使用此服务多久?
log_on_failure HOST
USERID
ATTEMPT
RECORD
当登入失败之后被 syslog 登入的项目:HOST为远程主机的 IP,USERID为登入者账号、ATTEMPT为记录登入失败者企图的意图为何、RECORD为记录远程主机的信息!以及为何本机 server 不能启动的原因!主要有 login, shell, exec, finger 等指令可以使用在这里!( 基本上,可以在 /etc/hosts.allow 或 /etc/hosts.deny 书写内容 )。
进阶设定项目:
env 'name=value' 这一个项目可以让你设定环境变量,环境变量的设定规则可以参考 认识 BASH Shell
port number 这里可以设定不同的服务与对应的 port ,但是请记住你的 port 与服务名称必须与 /etc/services 内记载的相同才行!
redirect IP_Address port 将 client 端对我们 server 的要求,转到另一部主机上去!呵呵!这个好玩呦!例如当有人要使用你的 ftp 时,你可以将他转到另一部机器上面去!那个 IP_Address 就代表另一部远程主机的 IP 啰!
includedir directory_path 表示将某个目录底下的所有档案都给他塞进来 xinetd.conf 这个设定里头!这东西有用多了,如此一来我们可以一个一个设定不同的项目!而不需要将所有的服务都写在 xinetd.conf 当中!你可以在 /etc/xinetd.conf 发现这个设定呦!
安全控管项目:
bind IP_Address 这个是设定『允许使用此一服务的适配卡』的意思!举个例子来说,你的 Linux 主机上面有两个 IP ,而你只想要让 IP1 可以使用此一服务,但 IP2 不能使用此服务,这里就可以将 IP1 写入即可!那么 IP2 就不可以使用此一 server 啰!
interface IP_Address 跟 bind 相同!
only_from 0.0.0.0
192.168.1.0/24
host_name
domain_name
这东西用在安全机制上面,也就是管制『只有这里面规定的 IP 或者是主机名称可以登入!』如果是 0.0.0.0 表示所有的 PC 皆可登入,如果是 192.168.1.0/24 则表示为 C class 的网域!亦即由 192.168.1.1 ~ 192.168.1.255 皆可登入!另外,也可以选择 domain name ,例如 .ev.ncku.edu.tw 就可以杜绝成大环工系的网域 IP 登入你的主机使用该 server !
no_access 0.0.0.0
192.168.1.0/24
host_name
domain_name
跟 only_from 差不多啦!就是用来管理可否进入你的 Linux 主机启用你的 server 服务的管理项目! no_access 表示『不可登入』的 PC 啰!
access_times 00:00-12:00
HH:MM-HH:MM
这个项目在设定『该服务 server 启动的时间』,使用的是 24 小时的设定!例如你的 ftp 要在 8 点到 16 点开放的话,就是: 08:00-16:00。
umask 000
777
022
还记得在 档案权限 里面约略提过的 umask 这个东西吗?呵呵!没错!就是那个鬼玩意儿啰!可以设定使用者建立目录或者是档案时候的属性!系统建议值是 022 。

当然上面的参数不需要每个都设定啦!只要设定需要的就可以啦!而在 /etc/xinetd.conf 这个档案当中,一定会看到『 includedir = /etc/xinetd.d 』这一行!这说明的是,除了 /etc/xinetd.conf 之外,所有在 /etc/xinetd.d 的档案都是可以用来设定的啦!!好了,我们来举个简单的 telnet 的例子吧!那就是 /etc/xinetd.d/telnet 这个档案,如果你的 Mandrake 9.0 当中没有这个档案,那表示还没有安装telnet-server-krb5-1.2.5-1mdk这个套件,请先安装他吧!然后,他的内容有点像这样:
 

service telnet
{
    disable     = yes         <==服务预设是关闭的
    flags      = REUSE        <==额外使用的参数
    socket_type   = stream       <==使用 tcp 封包常用的联机型态
    wait      = no          <==不需等待,可以同时允许多个联机
    user      = root        <==启动程序的使用者身份
    server     = /usr/sbin/telnetd  <==服务启动的程序
    server_args   = -a none       <==上面那个程序的参数
    log_on_failure += USERID       <==错误登入时,要记录下来的内容
}

上面的表格中,已经说明了每一项参数的意义!如果原本的默认值你并不满意,那么你可以修改成比较安全与多一点机制。假设你这个 Linux 是一部主机,而且他有两块网络接口,分别是对外的 140.116.44.125 与对内的 192.168.0.254 这两个,如果你想要让对内的接口限制较松,而对外的限制较严格,你可以这样的来设定呢:
 
# 先针对对内的较为松散的限制来设定:
service telnet
{
    disable     = no          <==预设就是启动 telnet 服务
    bind       = 192.168.0.254    <==只允许经由这个适配卡的封包进来
    only_from    = 192.168.0.0/24   <==只允许 192.168.0.0/24 这个网段
                         的主机联机进来使用 telnet 的服务
    instances    = UNLIMITED      <==同时允许联机不限制!
    nice       = 0          <==使用的优先级较高
    flags      = REUSE        <==额外使用的参数
    socket_type   = stream       <==使用 tcp 封包常用的联机型态
    wait      = no         <==不需等待,可以同时允许多个联机
    user      = root        <==启动程序的使用者身份
    server      = /usr/sbin/telnetd  <==服务启动的程序
    server_args   = -a none       <==上面那个程序的参数
    log_on_failure += USERID       <==错误登入时,要记录下来的内容
}

# 再针对外部的联机来进行限制呢!
service telnet
{
    disable     = no                  <==预设就是启动 telnet 服务
    bind       = 140.116.44.125      <==只允许经由这个适配卡的封包进来
    only_from    = 140.116.0.0/16      <==只允许 140.116.0.0 ~ 140.116.255.255
                                                这个网段联机进来使用 telnet 的服务
    only_from    = .edu.tw             <==重复设定,只有教务界才能联机!
    no_access    = 140.116.32.{10,26}  <==不许这些 PC 登入
    access_times  = 1:00-9:00 20:00-23:59
                                              <==每天只有这两个时段开放服务
    umask      = 022                 <==建立档案时的预设属性设定
    instances    = 10                  <==同时只允许 10 个联机
    nice      = 10                  <==使用的优先级较低
    flags      = REUSE               <==额外使用的参数
    socket_type   = stream              <==使用 tcp 封包常用的联机型态
    wait      = no                  <==不需等待,可以同时允许多个联机
    user      = root                <==启动程序的使用者身份
    server     = /usr/sbin/telnetd   <==服务启动的程序
    server_args   = -a none             <==上面那个程序的参数
    log_on_failure += USERID             <==错误登入时,要记录下来的内容
}

呵呵!如上面的设定,我们可以将 telnet 的启动项目进行更多的限制!如此一来,将有助于我们的安全防护呢!尤其如果可以针对不同的接口来设定,嘿嘿!就更加的棒啰!不过,请注意喔!如果照上面的设定,那么您的主机上面将会开了两个 23 port 的接口,分别是给两个接口来使用的呢!嗯!真好玩?同样的,你也可以针对自己的喜好来设定你的其它 daemon 使他挂在 xinetd 底下呢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值