|
最近升级日期: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 服务喔!
可以这样做看看:
- 先看看 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!
|
- 如果已经安装了,那么直接来察看一下配置文件,看看 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 这个地方。
- 如果要启动的话,可以这样来处置喔:
[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 喔! ^_^
|
- 现在假设我们仅要针对 .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}
参考数据与延伸阅读
|
|