解析 xinetd.conf

来源:互联网 发布:mac内置音频剪辑 编辑:程序博客网 时间:2024/06/06 07:14

解析xinetd.conf

一般而言,在 /etc/rc.d/init.d/ 里面的 scripts 都是发展者之RPM 所提供的,如果您有兴趣自行发展你的软件的话,那么可以直接以这样的方式来独立启动的!不过,我们也可以经由super daemon 来管理我们的服务,因为这个 super daemon 可以提供相当多的功能,尤其是安全性方面的功能,所以,我们就来谈一谈如何使用这个东西吧!
 
先来看一看预设的 /etc/xinetd.conf 这个档案的内容是什么吧!
 #
# Simple configurationfile 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
(允许的动作)说明
(范例)一般设定项目:disableyes
no允许该 server 可以执行或者是不能执行!
当设定为 yes表示该服务不能执行!socket_typestream
dgram
raw当联机为 TCP 封包时,则使用 stream 类型
当联机为 UDP 封包时,则使用 dgram  类型
raw 代表 server 需要与 IP 直接对谈!protocoltcp
udp
...这个东西说的是,联机的状态使用的是哪一种协议!?各个协议的代号可以参考/etc/protocols 内容!此外,除非是你自己设定的服务,否则这个可以不用设定啦!waityes
no这就是我们刚刚提到的 Multi-threaded与 single-threaded 的方式啦!一般来说,我们希望大家的要求都可以同时被启用,所以可以设定wait= nouserUID
root还记得我们在 账号管理那一篇提到的 UID 概念吗?对啦!这个 UID 就是那个 UID 啦!要注意的是,假如你的服务启动者不要以root 为主的话,那么这个地方就可以改变其它的使用者,例如 nobody !这个咚咚也会有安全防护的机制存在!此外,需要注意这个UID 必须存在于 /etc/passwd 。groupGID跟 user 的意思相同!只是这个 GID 的使用者也必须存在于 /etc/group 当中!instancesnumber
UNLIMITED这个是『在同一时间之内,同一个服务可以允许的联机数目』的意思,你可以写入一个『数字』来控制联机数目,也可以使用UNLIMITED来告诉系统『没有上限』啰!例如你在同时段之内仅允许ftp 联机有 30 个,那么这里就可以输入 30 啦!nice-19 ~ 19还记得我们在 程序管理里面谈到的那个 nice 指令吗?!对啦!这里就是这个东西啰!数字越小( 负值)代表该程序越优先被执行!serverprogram
/usr/sbin/in.ftpd这个就是指出这个服务的启动程序!例如要启动 ftp的话,其实就是 in.ftpd 这支程序啦!所以这个时候在这里输入 server = /usr/sbin/in.ftpdserver_args一些参数这里应该输入的就是你的 server 那里需要输入的一些参数啦!例如in.ftpd 当中,我们可能就需要输入 -l -a 这个参数说!log_on_successPID
HOST
USERID
EXIT
DURATION在『成功登入』之后,需要记录的项目:PID为纪录该server 启动时候的 process ID ,HOST 为远程主机的 IP、USERID 为登入者的账号、EXTI为离开的时候记录的项目、DURATION 为该使用者使用此服务多久?log_on_failureHOST
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 。portnumber这里可以设定不同的服务与对应的 port ,但是请记住你的port 与服务名称必须与 /etc/services 内记载的相同才行!redirectIP_Address port将 client 端对我们 server 的要求,转到另一部主机上去!呵呵!这个好玩呦!例如当有人要使用你的ftp 时,你可以将他转到另一部机器上面去!那个 IP_Address 就代表另一部远程主机的IP 啰!includedirdirectory_path表示将某个目录底下的所有档案都给他塞进来 xinetd.conf这个设定里头!这东西有用多了,如此一来我们可以一个一个设定不同的项目!而不需要将所有的服务都写在xinetd.conf 当中!你可以在 /etc/xinetd.conf 发现这个设定呦!安全控管项目:bindIP_Address这个是设定『允许使用此一服务的适配卡』的意思!举个例子来说,你的Linux 主机上面有两个 IP ,而你只想要让 IP1 可以使用此一服务,但 IP2 不能使用此服务,这里就可以将IP1 写入即可!那么 IP2 就不可以使用此一 server 啰!interfaceIP_Address跟 bind 相同!only_from0.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_access0.0.0.0
192.168.1.0/24
host_name
domain_name跟 only_from 差不多啦!就是用来管理可否进入你的Linux 主机启用你的 server 服务的管理项目! no_access 表示『不可登入』的PC 啰!access_times00:00-12:00
HH:MM-HH:MM这个项目在设定『该服务 server 启动的时间』,使用的是24 小时的设定!例如你的 ftp 要在 8 点到 16 点开放的话,就是: 08:00-16:00。umask000
777
022还记得在 档案权限里面约略提过的 umask 这个东西吗?呵呵!没错!就是那个鬼玩意儿啰!可以设定使用者建立目录或者是档案时候的属性!系统建议值是022 。

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

原创粉丝点击