第十八章、认识系统服务 (daemons)
最近升级日期:2009/09/14

大标题的图示重点回顾
  • 服务 (daemon) 主要可以分为 stand alone (服务可单独启动) 及 super daemon (透过 xinetd 统一管理的服务) 两种。
  • super daemon 由于是经过一个统一的 xinetd 来管理,因此可以具有类似防火墙管理功能。此外,管理的联机机制又可以分为 multi-threaded 及 single-threaded。
  • 启动 daemon 的程序通常最末会加上一个 d ,例如 sshd, vsftpd, httpd 等
  • stand alone daemon 启动的脚本放置到 /etc/init.d/ 这个目录中,super daemon 的配置文件在 /etc/xinetd.d/* 内, 而启动的方式则为 /etc/init.d/xinetd restart
  • 立即启动 stand alone daemon 的方法亦可以使用 service 这个命令
  • Super daemon 的配置文件 /etc/xinetd.conf ,个别 daemon 配置文件则在 /etc/xinetd.d/* 内。在配置文件内还可以配置联机客户端的联机与否, 具有类似防火墙的功能喔。
  • 若想要统一管理防火墙的功能,可以透过 /etc/hosts.{allow,deny} ,若有安装 TCP Wrappers 时,还能够使用额外的 spawn 功能等
  • 若想要配置启动时启动某个服务时,可以透过 chkconfig, ntsysv 等命令。
  • 一些不需要的服务可以关闭喔!

大标题的图示本章习题
( 要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看 )
  • 情境模拟题一:透过安装、配置、启动、观察与管理防火墙等机制,完整的了解一个服务的启动与观察现象。

    • 目标:了解 daemon 的控管机制,以 super daemon 为例;
    • 前提:需要对本章已经了解,尤其是 super daemno 部分;
    • 需求:最好已经连上 Internet ,因为会动用到安装软件

    在本情境中,我们使用 telnet 这个服务来观察,假设最终我们只开放 .edu.tw 的网域来使用本机的 telnet 服务喔! 可以这样做看看:

    1. 先看看 telnet 服务器有没有安装。 telnet 服务器在 CentOS 上面指的是 telnet-server 这支程序,所以可以这样看看:
      [root@www ~]# rpm -q telnet-server
      package telnet-server is not installed
      
      [root@www ~]# yum install telnet-server
      ==============================================================
       Package          Arch    Version         Repository    Size
      ==============================================================
      Installing:
       telnet-server    i386    1:0.17-39.el5   base          35 k
      
      Transaction Summary
      ==============================================================
      Install      1 Package(s)
      Update       0 Package(s)
      Remove       0 Package(s)
      
      Total download size: 35 k
      Is this ok [y/N]: y
      Downloading Packages:
      telnet-server-0.17-39.el5.i386.rpm          |  35 kB     00:00
      warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897
      Importing GPG key 0xE8562897 "CentOS-5 Key (CentOS 5 Official Signing Key) 
      <centos-5-key@centos.org>" from /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
      Is this ok [y/N]: y
      Running rpm_check_debug
      Running Transaction Test
      Finished Transaction Test
      Transaction Test Succeeded
      Running Transaction
        Installing     : telnet-server           [1/1]
      
      Installed: telnet-server.i386 1:0.17-39.el5
      Complete!
      

    2. 如果已经安装了,那么直接来察看一下配置文件,看看 telnet 是 stand alone 还是 super daemon 呢?最简单的方法就是 chkconfig 了!
      [root@www ~]# chkconfig --list telnet
      telnet          off  <==只有 on 或 off 者为 super daemon
      
      [root@www ~]# ll /etc/xinetd.d/telnet
      -rw-r--r-- 1 root root 305 Dec  1  2007 /etc/xinetd.d/telnet
      # 看吧!果然是 super daemon 哩!
      
      [root@www ~]# grep '^telnet' /etc/services
      telnet          23/tcp
      telnet          23/udp
      
      由上面可以看到, telnet 是 super daemon ,而起启动的端口在 port 23 这个地方。

    3. 如果要启动的话,可以这样来处置喔:
      [root@www ~]# chkconfig telnet on; chkconfig --list telnet
      telnet          on
      [root@www ~]# /etc/init.d/xinetd restart
      正在停止 xinetd:                       [  确定  ]
      正在激活 xinetd:                       [  确定  ]
      
      [root@www ~]# netstat -tlnp | grep xinetd
      tcp  0  0 0.0.0.0:23   0.0.0.0:*     LISTEN      2487/xinetd
      # 确认一下,确实有启动 port 23 喔! ^_^
      

    4. 现在假设我们仅要针对 .edu.tw 来开放,至于其他的来源则予以关闭。我们这里选择 /etc/hosts.{allow,deny} 来处理,你必须要这样做:
      # 1. 先找到 telnet 的主程序是哪一支?
      [root@www ~]# grep server /etc/xinetd.d/telnet
              server          = /usr/sbin/in.telnetd
      
      # 2. 开始指定开放的网域:
      [root@www ~]# vim /etc/hosts.allow
      in.telnetd : .edu.tw
      
      [root@www ~]# vim /etc/hosts.deny
      in.telnetd: ALL
      
      简单!搞定! ^_^

简答题部分:
  • 使用 netstat -tul 与 netstat -tunl 有什么差异?为何会这样?
    使用 n 时, netstat 就不会使用主机名与服务名称 (hostname & service_name) 来显示, 取而代之的则是以 IP 及 port number 来显示的。IP 的分析与 /etc/hosts 及 /etc/resolv.conf 有关, 这个在未来服务器篇才会提到。至于 port number 则与 /etc/services 有关,请自行参考喔! ^_^
  • 你能否找出来,启动 port 3306 这个端口的服务为何?
    透过搜寻 /etc/services 内容,得到 port 3306 为 mysql 所启动的端口喔!查询 google, 可得到 mysql 为一种网络数据库系统软件。
  • 你可以透过哪些命令查询到目前系统默认启动会启动的服务?
    本章提到的 chkconfig 以及 ntsysv 都可以查阅的到!
  • 承上,那么哪些服务『目前』是在启动的状态?
    可以透过 service --status-all,或者是透过 netstat -anl 等方式。也可以透过 pstree 去查询喔! 只是相关对应的服务 daemon 档名就得要个别查询了。
  • tcp wrappers 软件功能与 xinetd 的功能中,可以使用哪两个文件进行网络防火墙的控管?
    /etc/hosts.{allow,deny}

大标题的图示参考数据与延伸阅读

 
     
http://linux.vbird.org is designed by VBird during 2001-2011. ksu.edu 

本网页主要以Firefox配合解析度 1024x768 作为设计依据     鸟哥自由软件整合应用研究室