Chinaunix首页 | 论坛 | 博客

分类: LINUX

2009-02-18 15:09:57

  解析 super daemon 的设定档
  前面提到,Super daemon 就是一支总管许多服务的 daemon ,这支 daemon 在 FC4 上面即是 xinet 啰~ 通常我们也称呼为 xinetd 啦~这支 daemon 来管理许多的服务是有好处的, 最大的优势就是‘安全性较高!’。怎么说呢?因为 super daemon 可以透过额外的资料分析, 来管理谁可以、谁不能使用某个服务,因此,多了一道类似防火墙的手续,自然就能够比较安全一些啦。 而且他还可以记录该服务的使用状态,也可以记录错误登入的资讯,用在管理一些比较危险的服务上面, 确实有他的必要性啦!

  底下我们就来谈一谈,这个 super daemon 到底是如何分析的, 当然,就得要先谈一谈,这个 xinetd 的主要预设参数档: /etc/xinetd.conf 啰~

  解析 xinetd.conf
  先来看一看预设的 /etc/xinetd.conf 这个档案的内容是什么吧!

  [root@linux ~]# vi /etc/xinetd.conf
  #
  # Simple configuration file for xinetd
  #
  # Some defaults, and include /etc/xinetd.d/
  defaults
  {
  instances        = 60       <==同一服务的同时连线数最多可达 60 个
  log_type         = SYSLOG authpriv <==登录后,会被纪录到登录档的资讯
  log_on_success   = HOST PID <==若成功的登入时,记录的资讯有哪些?
  log_on_failure   = HOST     <==若登入失败,则记录的资讯又是如何?
  cps              = 25 30    <==同一秒钟内最大连线数量为 25 个,若超过 25 个,
  则该服务会暂时停止 30 秒!
  }

  includedir /etc/xinetd.d <==更多的设定值在 /etc/xinetd.d 那个目录内

  基本上,这个预设参数档的意义是:‘当某个使用 super daemon 管理的服务启动时,除非该服务已经设定好管理的项目,否则将以上述 xinetd.conf 内的预设参数带入。’的意思,也就是说,这仅是预设值, 但我们可以自行指定新的设定值来取代 xinetd.conf 内的预设值啦! 也就是说,这个档案设定成,在预设的状态下‘:一个服务最多可达 60 个连线,且同一秒内连接上的连线不可超过 25 个。而若登入的成功与否时, 会分别记录不同的资讯到登录档当中。’这样说,可以比较清楚了吧? ^_^ 至于更多的参数说明,我们会在底下再强调的!

  既然这只是个预设参数档,那么自然有更多的服务参数档案啰~没错~而所有的服务参数档都在 /etc/xinetd.d 里面,这是因为上表当中的最后一行啊!这样瞭了吧! ^_^。 那么每个参数档案的内容是怎样呢?一般来说,他是这样的:

  service 
  {
           ...
  .............
  }

  第一行一定都有个 service ,至于那个 里面的内容, 则与 /etc/services 有关,因为他可以对照著 /etc/services 内的名称与 port number 来决定所要启用的 port 是那个啊!
/etc/services内记录系统内所有服务的项目。这些服务项目有的放在/etc/init.d目录里,有的放在/etc/xinet.d里。)然后相关的参数就在两个大刮号中间。 attribute 是一些 xinetd 的管理参数, assign_op 则是参数的设定方法。 assign_op 的主要设定形式为:

  = : 表示后面的设定参数就是这样啦!
  += : 表示后面的设定为‘在原来的设定里头加入新的参数’
  -= : 表示后面的设定为‘在原来的参数舍弃这里输入的参数!’

  用途不太相同,敬请留意呦!好了!底下再来说一说那些 attribute 与 value !

  attribute
  (功能)    assing_op
  (允许的动作)     说明与范例
  一般设定项目:
  disable     yes
  no     允许该 server 可以执行或者是不能执行!当设定为 yes 表示该服务不能执行! 这个设定是一定要的啦。如果我想要启动某个服务,那么这里就要设定成为:
  disable = no
  socket_type     stream
  dgram
  raw     stream 为连线机制较为可靠的 TCP 封包,若为 UDP 封包则使用 dgram 机制。 raw 代表 server 需要与 IP 直接对谈!例如 telnet 使用 TCP ,所以:
  socket_type = stream
  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     -20 ~ 19     还记得我们在 程序管理 里面谈到的那个 nice 指令吗?!对啦!这里就是这个东西啰!数字越小( 负值 )代表该程序越优先被执行!
  server     program
  完整档名     这个就是指出这个服务的启动程式!例如要启动 telnet 的话,其实就是 in.telnetd 这支程式啦!所以这个时候在这里输入
  server = /usr/sbin/in.telnetd
  server_args     program
  一些参数     这里应该输入的就是你的 server 那里需要输入的一些参数啦!例如 in.telnetd 当中,我们还可以加入某些参数!
  log_on_success     PID
  HOST
  USERID
  EXIT
  DURATION     在‘成功登入’之后,需要记录的项目:PID 为纪录该 server 启动时候的 process ID , HOST 为远端主机的 IP、USERID 为登入者的帐号、EXIT 为离开的时候记录的项目、 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     表示将某个目录底下的所有档案都给他塞进来 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 。

  OK!我们就利用上面这些参数来架构出我们所需要的一些服务的设定吧! 参考看看底下的设定方法啰! ^_^

阅读(3013) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~