鸟哥的 Linux 私房菜
目录 | Linux 基础篇 | Linux 服务器篇 | Linux 企业应用篇 | 安全管理
     
 
搭建服务器文件习题解答篇
最近更新日期:2003/09/20
 
在我们的 Linux 搭建服务器文件当中,每个章节或多或少都有些课后练习给大家复习一下!呵呵!那么各个章节的解答会在这里提供喔!
 

PART I 搭建服务器前进修篇

    第一章、搭建服务器之前所需的技能分析
     
  • 请简述进行网站搭建前,应该具备何种基本技能?

  • 基本的技能需要有:
    1. Linux 系统操作上,至少需要了解帐号管理、文件属性与权限、程序与资源管理、硬体如硬碟之挂载与软件套件之安装如RPM套件管理员等等,而 vi 与 Shell 亦是不可忽略之基本技能,更重要者,日志的管理以及系统服务的原理(如 stand alone 与 super deamon 服务启动的方式差异等)亦需同时厘清,以方便未来搭建网站时除错的技巧;
    2. 在网络的基础知识上,TCP/IP 的观念以及路由的概念相当的重要,此外,DNS 的概念也很重要。
    3. 在心态的调整上面,系统管理员需要的道德感以及使命感需要较高的标准。
     
  • 如果我有一颗硬碟在 A 主机上面安装了 Linux 之后,拿到另一台配备相同的 B 主机上面去进行开机,结果竟然无法顺利开机,您认为可能的原因是什么?

  • 由于配备相同,所以排除硬体的问题,不过,考虑到 IDE 排线与 partition 的代号,以及 /etc/fstab 的对应,所以应该是由于 IDE 插槽放置错误所致(Linux 系统下,每个 IDE 插槽对应的 partition 名称皆不相同喔!)。此外,上次不正常关机也可能造成硬碟损害而无法开机成功!
     
  • 一般来说,在 Linux 系统上,使用者预设的家目录在那个目录下?另外,新增一个使用者时,该使用者预设的家目录内容来自那个目录下?

  • 在 /etc/default/useradd 这个文件里面会规范使用者的预设家目录以及预设家目录的内容,一般来说,使用者预设家目录在 /home ,至于家目录内的文件则复制来源在 /etc/skel 里面。
     
  • 磁碟配额 ( quota ) 能否针对某个特定的目录进行限制?Quota 有什么较为特殊的使用限制?

  • Quota 目前仅能针对整个 partition 进行限额配置,如果该特定目录是一个 partition 那就可以进行 quota 设定,否则无法针对特定目录!此外, Quota 除了特定目录以及需要 ext2, ext3 等磁碟格式才支援之外,也需要核心的支援喔!
     
  • 在 Linux 系统下,要寻找一个档名为 vbird.document 的文件,可以使用什么指令进行搜寻?又,如果要寻找在一天内更动过的文件,又该如何进行?

  • 如果是执行档可以使用 which command 来搜寻,如果是文件,就必须要使用 locate vbird.document 或 whereis vbird.document 或 find / -name vbird.document 。如果要找到一天内更动过的文件,可以使用 find 配合参数,如:‘ find / -ctime 1’。
     
  • 在 Linux 系统中,常见的套件管理员有 RPM 与 Tarball ,请分别说明这两个套件管理员的优缺点。
    • RPM 套件管理员在安装套件的时候,会将该套件的文件名称、套件功能与讯息等等资讯记录于 /var/lib/rpm 目录内,由于有这些套件的资本资讯,因此在系统内很容易进行 RPM 的升级、安装、移除等动作。不过,由于 RPM 文件之间的相依性相当的强,因此常常会有版本不合或者是欠缺某样前驱套件的问题发生。
    • 至于 Tarball 则是原始码,使用者可以自行设定套件的编译参数,以符合自己的 Linux 平台。此外,由于 Tarball 是原始码,因此需要在您的系统上面进行编译,编译的过程中需要 gcc, make, 以及 kernel source 等套件,还有您所想要安装的套件所需要的前驱套件也同时需要先安装后,才能进行 Tarball 的安装。注意,几乎每个 Tarball 以 tar 程序解开后,在新增的目录下均会有 README 以及 INSTALL 文件,请务必先查阅过后才进行编译工作。
     
  • 如果我下载了一个档名为 httpd-2.0.52.tar.gz 的文件,一般来说,这个文件代表的意义为何?我该如何让这个文件能够在我的 Linux 系统上面安装?

  • 由于附档名是 .tar.gz 或者是 .tgz 的文件,所以可以认定该文件为一个 Tarball 的文件。至于档名的配置方面,httpd 为套件名称,2.0.52 则通常为该套件的版本名称了!那如何安装?由于该文件为 httpd 这个套件,且格式为 Tarball ,所以您必须要:
    1. 系统上面务必具有 tar, make, gcc 等相关的编译套件;
    2. 使用 tar 解开 httpd-2.0.52.tar.gz 之后,务必进入该目录内读取 REAME 或/与 INSTALL 文件,以了解是否还需要其他的相关套件的搭配安装;
    3. 以 ./configure --help 查阅一下是否有相关可以加入或者取消的编译内容;
    4. 使用 make 读取 Makefile 来编译程序;
    5. 使用 make install 来安装程序!
     
  • 我以原始码的方式进行一个套件的安装,但是在分析系统的时候,分析程序一直告诉我找不到 cc 这个指令,请问这是什么问题?为何需要 cc ?又,我该如何解决这个问题,好让套件可以顺利的被安装在我的 Linux 上面?

  • 如前面几个题目所说的,因为是原始码,所以还需要编译程序来将该原始码编译成为可以在您的 Linux 系统上面跑的 binary 文件,在 Linux 上头预设的编译程序就是 gcc 这个编译器(compiler)。如果您在安装 Linux 的时候,使用 Linux Installer 预设的套件选择,那通常会没有安装 gcc 以及 make 等套件,此时,请拿出您的原版光碟,以 mount 指令挂载后,使用 RPM 将一个一个相关的套件安装即可(过程会蛮复杂的!)^_^
     
  • 我发现我的 Linux 系统怪怪的,似乎有什么不知名的程序在记忆体当中跑,我该如何将这个不知名的程序捉出来,并且将他移除?

  • 如果要捉出程序(process)的话,可以使用 ps -aux 或者是直接输入 top 来查询 process 的 ID (PID),找到 PID 号码后,再以 kill -9 PID 来删除该程序即可。
     
  • 我总是无法编辑某个文件,您认为应该是什么问题造成的?那又要怎么解决?

  • 无法编辑某个文件,可以先使用 file 这个指令来查询一下该文件的格式,例如想察看 /etc/shadow 的格式,可以下达:‘file /etc/shadow’,如果是文字档,却还是无法编辑,那么最可能发生的原因就是‘权限’的问题了。可以使用 ls -l filename 察看文件权限,再以 chmod 或 chown 来修订该文件的权限。此外,该文件也可能含有隐藏属性,可以使用 lsattr filename 查阅,再以 chattr 来修订隐藏属性。
     
  • 什么是 UID 与 GID ?UID 有哪些等级?

  • 在 Linux 系统下,使用者与群组其实都是以‘ID(数字)’的格式来设定的,所以使用者与群组其实都是 UID 或 GID (User ID 与 Group ID),Linux 对于文件权限也都是使用 UID/GID 来分辨。不过人类习惯使用文字来记忆,所以才会有 /etc/passwd 与 /etc/group 来转译 ID 与 User 及 Group 之间,这也才会发生为何在 Internet 上面捉下来的 Tarball 解开之后,往往会有文件拥有人与群组为数字的型态,因为您 Linux 系统上面的 /etc/passwd 与 /etc/group 没有相关的对应文字说。至于 UID 的等级主要有两种,分别是超级管理员(root),其 UID 为 0,其他非为 0 的 UID 基本上身份是相同的!不过 Linux 通常会将小于 500 的 UID 保留给系统使用。
     
  • 使用者的家目录参数、UID、GID以及其他相关参数,还有密码文件,放置在哪些文件里面?

  • 放置在 /etc/passwd 与 /etc/shadow 当中。当然还有 /etc/login.defs 喔!
     
  • 你认为一个称职的网管人员应该具备什么能力?

  • 能力需求相当高,如了(1)作业系统的基础知识(不论是 Linux/Unix/MAC/MS);(2)网络基础的知识;(3)个别 Internet Services 的运作知识之外,还需要(4)身心保持在备战状态,以及(5)具有相当高程度的道德感、责任感与使命感。
     
  • 我要启动一个系统预设的 Service,请问我可能可以由执行或修改哪些目录底下的文件来启动?

  • 如果是 stand alone 的服务,可以经由 /etc/rc.d/init.d/* 里面的文件,如 /etc/rc.d/init.d/syslog start;
    如果是 Super daemon 的服务,就必须(1)先到 /etc/xinetd.d 或者是 /etc/inetd.conf 修改相关文件或参数;(2)以 /etc/rc.d/init.d/xinetd restart 来启动。
     
  • 我要关掉 cron 这个服务,应该怎么关掉他?如果正常的方法无法关闭这个服务,可以使用什么方法来关闭?

  • 因为 cron 是一个 stand alone 的服务,所以可以使用 /etc/rc.d/init.d/cron stop 来关闭;如果还是无法正常关闭,可以使用 ps -aux | grep cron 捉出该程序的 PID ,然后以 kill -9 PID 来关闭。
     
  • 如果一开机就要执行某个程序,应该要将该程序写入那个文件里面?

  • 可以直接在 /etc/rc.d/rc[run-level].d 里面加入 S 开头的文件,不过,更简单的作法是直接将该程序写入 /etc/rc.d/rc.local ,不过,请注意该程序必须要具有可执行的权限,且 rc.local 也必须要是可执行喔!
     

    第二章、简易网络基础架构
     
  • 请简述 OSI 网络七层协定每一层的功能;

  • OSI 网络七层协定主要又分为两大部分,网络层与使用者应用层两部份。至于每一层的相关功能请参考本章节的表一所示。
     
  • 在 ISP 提供的网络服务中,他们提到传输速度为 1.5M/382K ,请问这个数据的单位为何?

  • 由于电子讯号的基本单位为 bits ,所以一般 ISP 提供的传输速度单位均为 bits/second ,并非我们常用的文件计数单位 Bytes !
     
  • 什么是 MAC ( Media Access Control ) ,MAC 主要的功能是什么?

  • 在网络媒体上面,资料要传输时,必须知道下一个节点的位址才能顺利传送,这个节点的位址如网络卡的硬体位址就是 MAC 了。硬体位址是在网络卡出厂时就已经焊死在上面了(某些笔记型电脑的 MAC 则可以经由特殊软件修改),而软件位址,则是我们常说的 IP ,这两个并不相同喔!其中,MAC 与 IP 互相的对应则是以 ARP Table 来进行转译的!
     
  • 请解释什么是物理广播 ( Physical Broadcast ) ,他与逻辑广播 ( Logical Broadcast ) 有什么不同?

  • 物理广播主要与网络媒体有关,在同一个网络媒体上面同一时间仅能有一台主机来使用这个网络共享媒体,而要判断目前有没有其他主机在使用这个网络媒体时,就是利用Physical Broadcast 咯!
    至于逻辑广播呢?呵呵!就是在查询到底网络上面有没有我们这部主机想要连接的相关协定或者同一网络内的其他主机了!他则主要与 MAC, ARP 以及软件位址(通称的 IP)有关啦!
     
  • 什么是封包碰撞?为什么会发生封包碰撞?

  • 当两部主机同时在一个网络媒体上面进行资料传输时,两个资料封包就会发生碰撞的情况,这就是封包碰撞了。在网络媒体流量很高、网络媒体的连线长度过长都会容易发生资料封包碰撞的情况。
     
  • ARP Table 的作用为何?如何在我的 Linux 察看我的 ARP 表格?

  • ARP Tables 主要在对应 IP 与 MAC ,当主机要将资料封包送出到下个节点时,必须要知道下个节点的 MAC 才能传送,而如果不知道 MAC 时,就得需要使用逻辑广播来查询 IP 与 MAC 的对应才行。不过,当您的主机内部的 ARP table 已经记录了 IP 对应的 MAC 之后,那么该资料封包则可以立即传送到下个节点去,而不需要再次的进行逻辑广播了。要知道目前的 arp table 内有多少纪录,可以使用 ‘  arp -a ’来查询。
     
  • 简略说明 Netmask 的作用与优点;

  • Netmask 可以有效的增加网络的效率,这是因为 Netmask 可以定义出一个网络的大小,那么 broadcast 的时间就可以降低很多!一般来说,我们如果要将一个大网络再细分为小网络,也需要藉由 Netmask 来进行 subnet 的切割。
     
  • 我有一组网络为: 192.168.0.0/28 ,请问这个网络的 Network, Netmask, Broadcast 各为多少?而可以使用的 IP 数量与范围各是多少?

  • 因为共有 28 个 bits 是不可动的,所以 Netmask 位址的最后一个数字为 11110000,也就是 (128+64+32+16=240) ,所以:
    Network:192.168.0.0
    Netmask:255.255.255.240
    Broadcast:192.168.0.15
    IP:由 192.168.0.1 ~ 192.168.0.14 共 14 个可用 IP 喔!
     
  • 承上题,如果网络是 192.168.0.128/29 呢?

  • 因为是 29 个 bits 不可动,所以最后一个 Netmask 的位址为: 11111000 也就是 (128+64+32+16+8=248),所以:
    Network:192.168.0.128
    Netmask:255.255.255.248
    Broadcast:192.168.0.135
    IP:由 192.168.0.129 ~ 192.168.0.134 共 6 个可用的 IP 喔!
     
  • 我要将 192.168.100.0/24 这个 C Class 的网络分为 4 个子网络,请问这四个子网络要如何表示?

  • 既然要分为四个网络,也就是还需要藉助 Netmask 的两个 bits (2的2次方为4啊!),所以 Netmask 会变成 255.255.255.192 ,每个子网络会有 256/4=64 个 IP ,而必须要扣除 Network 与 Broadcast ,所以每个子网络会有 62 个可用 IP 喔!因此,四个子网络的表示方法为:
    192.168.100.0/26, 192.168.100.64/26, 192.168.100.128/26, 192.168.100.192/26。
     
  • 如何观察 Linux 主机上面的路由资讯 ( route table )?

  • 路由资讯的观察可以下达 route 来直接察看!或者是下达 route -n 亦可!
     
  • TCP 封包上面的 SYN 与 ACK 标志代表的意义为何?

  • SYN 代表该封包为该系列连线的第一个封包,亦即是主动连线的意思;
    ACK 则代表该封包为确认封包,亦即是回应封包!
     
  • 什么是三向交握?在哪一种封包格式上面才会有三向交握?

  • 使用 TCP 封包才会有三向交握。TCP 封包的三向交握是一个确认封包正确性的重要步骤,通过 SYN, SYN/ACK, ACK 三个封包的确认无误后,才能够建立连线。至于 UDP 封包则没有三向交握喔!
     

    第三章、区域网络架构简介
     
  • 幻想自己是一个私人公司的老板,员工有 20 人,如果我想要让公司的员工都可以连上 Internet ,并且管理每个员工的对外连线,请问我的硬体连线应该怎么配置比较好?另外,应该申请的线路频宽应该多大较佳?而我的内部网络 ( IP, Netmask, ....) 又该如何设定比较好?

  • 因为只有 20 个员工,事实上,人员并不多,所以并不需要在内部加设 router 来隔开不同的网络。不过,由于想要管理员工的上网功能,因此最好以第三章图三的架构,以一台主机内含两块网络卡隔开 Intranet 与 Internet 两个网段,便于管理;至于对外连线的频宽方面,如果 Linux 主机需要进行网络服务的功能,那么最好能够有 512/512 的频宽,因为可能会有 Client 端下载的问题,至于如果单纯的仅下载时(公司没有额外的网络服务),可以考虑使用 T1/384 之类的频宽,比较省钱;而在内部网络设定上,如同本章节使用的网络 192.168.0.0/24 来设定即可,如果公司内部尚有移动装置(NoteBook),则可以在 Linux 上加装 DHCP (参考十六章)服务器。
     
  • 承上题,假如我的私有网络内有较大的网络流量,那么我的网络媒体应该怎么选择较佳?

  • 如果私有网络内的流量较大,那么网络媒体需要选择 Switch 而不要使用 Hub !另外,整体包括网络线也都需要使用能够负载 10/100 Mbps 的流量才好。
     

    第四章、连上 Internet
     
  • 我要如何确定我在 Linux 系统上面的网络卡已经被 Linux 捉到并且驱动了?

  • 网络卡能不能被捉到可以使用‘ dmesg|grep eth ’来判断,有没有驱动则可以使用 lsmod 看看模组有没有载入核心!最后,以 ifconfig eth0 192.168.0.10 测试看看!
     
  • 假设我的网络参数为:IP 192.168.100.100, Netmask 255.255.255.0, 请问我要如何在 Linux 上面设定好这些网络参数 (未提及的网络参数请自行定义!)?请使用手动与文件设定方法分别说明。
    • 手动设定为:‘ ifconfig eth0 192.168.100.100 netmask 255.255.255.0 up
    • 文件设定为:vi /etc/sysconfig/network-scripts/ifcfg-eth0 ,内容为:
      • DEVICE=eth0
        ONBOOT=yes
        BOOTPROTO=static
        IPADDR=192.168.100.100
        NETMASK=255.255.255.0
        NETWORK=192.168.100.0
        BROADCAST=192.168.100.255
      要启动则使用 ifup eth0 即可!
     
  • 我要将我的 Linux 主机名称改名字,步骤应该如何(更改那个文件?如何启用?)?

  • Linux 主机名称在 /etc/sysconfig/network 这个文件里面的‘HOSTNAME=主机名称’来设定,先以 vi 来修改,改完后可以使用 /etc/rc.d/init.d/network restart 或者直接 reboot 启动主机名称!
     
  • /etc/resolv.conf 与 /etc/hosts 的功能为何?

  • 以主机名称寻找 IP 的方法, /etc/resolv.conf 内填写 DNS 主机名称,至于 /etc/hosts 则直接填写主机名称对应的 IP 即可!
     
  • 我使用 ADSL 拨接连上 Internet ,请问拨接成功之后,我的 Linux 上面会有几个网络介面 (假设我只有一个网络卡)?

  • 因为拨接是使用 PPP (点对点)协定,所以拨接成功后会多出一个 ppp0 的介面,此外,系统原本即有 eth0 及 lo 这两个介面,所以共有三个介面。
     
  • 在 Linux 上面进行 ADSL 拨接应该使用什么软件?

  • 请爱用 rp-pppoe ,官方网站:
     
  • 一般来说,如果我拨接成功,也取得了 ppp0 这个介面,但是却无法对外连线成功,您认为应该是哪里出了问题?该如何解决?

  • 因为拨接成功了,表示物理对外连线没有问题,那么可能的问题应该是发生在 Gateway 上面了!确认的方法请使用 route -n 查阅路由资讯,然后修订 /etc/sysconfig/network-scripts/ifcfg-eth0 吧!


    第五章、Linux 常用网络指令介绍
     
  • 我要增加一个路由规则,以 eth0 连接 192.168.100.0/24 这个网络,应该如何下达指令?

  • 以手动的方法为:‘route add -net 192.l68.100.0 netmask 255.255.255.0 dev eth0’即可!
     
  • 我的网络停顿的很厉害,尤其是连接到 tw.yahoo.com 的时候,那么我应该如何检查那个环节出了问题?

  • 使用 traceroute 寻找到底那个环节出问题:‘traceroute tw.yahoo.com’即可!
     
  • 我发现我的 Linux 主机上面有个连线很怪异,想要将他断线,应该如何进行?

  • 以 root 的身份进行‘netstat -anp |more’查出该连线的 PID,然后以‘ kill -9 PID ’踢掉该连线。
     
  • 您如何知道 green.ev.ncku.edu.tw 这部主机的 IP ?

  • 方法很多,可以利用 host green.ev.ncku.edu.twdig green.ev.ncku.edu.tw nslookup green.ev.ncku.edu.tw 等方法找出!
     
  • 请找出您的机器上面最适当的 MTU 应该是多少?

  • 请利用‘ping -c 3 -M do -s MTU yourIP ’找出您的 IP 的 MTU 数值。
     
  • 如何在终端机介面上面进行 WWW 浏览?又该如何下载 WWW 上面提供的文件?

  • 要浏览可以使用 lynx ,至于要下载则使用 wget 这个软件。如果想要在终端机上面看到中文,还可以安装 JCMME 。
     
  • 在终端机介面中,如何连接 bbs.sayya.org 这个 BBS ?

  • 利用 telnet bbs.sayya.org 即可连接上,同样的,要看到中文,还是得安装 JCMME 。

PART II、主机的简易防火措施篇

    第七章、限制 Linux 对外连线的端口
     
  • 如何观察您 Linux 主机上面已经有多少 port 被打开了?

  • 如果仅想单纯了解正在 LISTEN 当中的端口,可以使用‘netstat -tul’,如果还想知道有多少连线已经建立,可以使用‘netstat -an’来察看。
     
  • 如何观察程序?

  • 利用‘ps -aux’,或者是 top 来察看均可。
     
  • 请问 LISTEN 的 port 与 daemon 的关系为何?

  • 正在 LISTEN 当中的端口均是由某些服务(daemons)所启动的,所以要启动端口就得启用某个服务,要了解某个端口是由那个 daemon 所启动的,就利用 netstat -tulp 来查阅。
     
  • 请解释三向交握的原理与封包传输的方向。

  • 三向交握为较为可靠的封包传输的一种确认方式,因此只有 TCP 封包才能具有三向交握。他利用(1) client 对 Server 主动连线时带有的 SYN 标志,(2)Server 回应时的 SYN/ACK 及(3)最终 Client 确认的 ACK 标志来确认封包的可靠性。更详细说明请参考第二章 TCP 与三向交握
     
  • 请问 stand alone 与 super daemon 各是什么?

  • Linux 系统的服务有独立启动(stand alone)及超级服务员(super daemon)两种启动的方式。挂在 super daemon 底下的服务可以经由 super daemon 的管理,以加强一些安全功能,不过由于还要经过 super daemon 的管理,所以服务的连接速度上会比 stand alone 慢一点。详细的说明请参考‘’第二十一章‘认识系统服务’内的相关说明吧!
     
  • 请问您的 Linux 主机 (不论是那个 distributions ) 有关 daemon 启动与关闭的 scripts 与文件放置在那个目录下?

  • 各个 daemons 的启动与关闭的 scripts 是放置在 /etc/rc.d/init.d 里面,至于 super daemon 的管理参数文件则在 /etc/xinetd.d 里面!
     
  • 请将您的 linux 主机对外的连线端口全部关闭!

  • 请参考本章节的作法!利用 ntsysv 或者 chkconfig 等功能加上 reboot ,或者 netstat 配合 kill 的方式!
     

    第八章、Linux 网络套件升级
     
  • 请依照您的 Linux 系统进行适合的网络套件升级程序(一个步骤一个步骤写下来),并说明为何您需要选择这样的网络升级程序?

  • 这题请参考本章节的内容,选择 APT 或者是其他 Linux distributions 网站提供的线上升级方式来进行您的套件升级。
     

    第九章、多 IP Router 的搭建
     
  • 请问您如何将您的 eth0 这个介面修改成为 192.168.100.2 在网络 192.168.100.0/25 之内的网络参数内容?

  • 因为 192.168.100.0/25 的 netmask 为 255.255.255.128 ,所以可以这样做:‘ifconfig eth0 192.168.100.2 netmask 255.255.255.128 up ’这样即可!如果尚须其他的参数,则需要以文件形式来下达,如 vi /etc/sysconfig/network-scripts/ifcfg-eth0,并修改为:
      DEVICE=eth0
      ONBOOT=yes
      BOOTPROTO=static
      IPADDR=192.168.100.2
      NETMASK=255.255.255.128
      NETWORK=192.168.100.0
      BROADCAST=192.168.100.127
     
  • 请手动设定 eth0:1 这个虚拟介面,使成为网络参数: 192.168.200.2, 网络在 192.168.200.0/24。

  • ifconfig eth0:1 192.168.200.2 up
     
  • 如何观察路由表?

  • route -n 即可查阅!注意到 0.0.0.0 那个目标(default gateway)。
     
  • 如何启动 Linux 的 IP Forward 功能?

  • 直接以‘echo "1" > /proc/sys/net/ipv4/ip_forward ’即可!
     
  • 假设您是一个学校单位的资讯管理员,学校内有 200 部电脑,奉上面大头的旨意,必须要将 200 部电脑分为 4 个 Subnet ,请问您应该如何布线(请画出示意图)?而这 4 个 Subnet 的网络参数如何选择(请自行选择)?而是否需要 Router ?如果需要的话,假设每个 Router 仅能有两个网络实体介面,那么该如何布线?(注:不要使用虚拟介面)

  • 我的布线如同下图所示:

    每个 Router 都具有两个介面,且四个 Router 的右边介面都在同一个网段内!那么 Router 1 怎么跟 Router 2 的内部网络进行沟通?利用:‘route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.5.2’即可!
     
  • 万一您的网络有点停顿,发现可能是网络上某个节点出现问题,您应该如何确认是哪一台 Router 出问题?

  • 使用第五章Linux 常用网络指令当中提到的 traceroute 来查询!
     

    第十章、认识网络安全
     
  • 我老是发现我的系统怪怪的,似乎有点停顿的模样,怀疑可能是 CPU 负荷太大,所以要去检查一下系统相关的资讯。请问,我该以什么指令去检查我的系统相关的资讯?

  • 可以使用 top, sar, free, ps -aux, uptime, last 等功能去查询系统的相关资讯喔!
     
  • 我怀疑我的系统上面有过多的具有 SUID 的文件存在,导致一般使用者可以随意的取得 root 的权限,请问,我要如何找出这些具有 SUID 权限的文件?

  • 因为 SUID 是 4000 这个权限的模样,所以我可以这样做:
    find / -perm +4000
     
  • 我由国内一些 ftp 网站上下载了 Red Hat 公司释出的套件,我想安装他,但又不知道该套件文件是否被修改过!请问我该如何确定这个套件的可用性?

  • 利用最简易的 MD5 编码来测试一下,例如‘ md5sum 套件名称’,再比对与原始套件释出的 MD5 数据是否相同!?
     
  • 良好的密码规划是防备主机的第一要务,请问 Linux 系统当中,关于密码相关的文件与规则设定在哪些文件里面?

  • 密码的设定规则在 /etc/login.defs 里面!至于密码文件在 /etc/shadow 内!
     
  • 简易说明,当一台主机被入侵之后,应该如何处理?

  • 找出问题、重新安装、漏洞修补、资料还原!请参考本章最后面的‘修补工 0240network-secure-1.php#repaire 作’内容!
     

    第十一章、简易 Firewall 搭建
     
  • 为什么我搭建了防火墙,我的主机还是可能中毒?

  • 防火墙不是万灵丹,他还是可能被病毒或者是木马程序所入侵的!此外,如果您的主机本身就已经提供了多个网络服务,则当该网络服务的套件有漏洞时,防火墙仍然无法克服该服务的漏洞的!因此仍然需要持续的进行主机的监视工作!
     
  • 请说明为何搭建了防火墙,我的主机还是可能被入侵?入侵的依据可能是什么方法?

  • 因为防火墙仅是抵挡某些不受欢迎的封包,如果您有开放 WWW 的服务时,则要求您主机 port 80 的封包将可直接进入您的主机,万一 WWW 套件有漏洞时,那么就可能被入侵了!所以套件的更新很重要!
     
  • 我们知道核心为 2.4 的 Linux 使用的防火墙机制为 iptables ,请问,如何知道我的 Linux 核心版本?

  • 利用 uname -r 可以查得!
     
  • 请列出 iptables 预设的两个 table ,以及各个 table 里面的 chains 与各个 chains 所代表的意义;

  • filter 为预设的 Table,里头预设的链有:
    • INPUT:为来自外部,想要进入主机的封包;
    • OUTPUT:为来自主机,想要离开主机的封包;
    • FORWARD:为主机内部网络与外部网络的封包(不论进或者出),但该封包不会进入主机。
    还有 nat 这个 table:
    • PREROUTING:进行路由之前的封包传送过程
    • OUTPUT:离开主机的封包传送过程;
    • POSTROUTING:已经经过路由了,然后才进行的过滤规则。
     
  • 什么是 iptables 的预设政策 (Policy)?

  • 当封包的所有属性都不在防火墙的规则当中时,那么这个封包能否顺利的通过防火墙,则以 Policy 作为这个封包的最终动作了!
     
  • 假设今天我的 Linux 仅是作为 Client 之用,并没有对 Internet 进行任何服务,那么您的防火墙规划应该如何设定比较好?!

  • 既然没有对 Internet 提供任何服务,那么(1)请将所有的对外端口先关闭吧!(2)防火墙规则当中,最重要的是 INPUT 的 Policy 一定要 DROP ,然后将‘ iptables -A INPUT -m state --state RELATED -j ACCEPT ’即可!
     
  • 我要将来自 192.168.1.50 这个 IP 来源的封包,只要是向我的 21~23 端口要求的封包,就将他抵挡,应该如何下达 iptables 指令?

  • iptables -A INPUT -p tcp -s 192.168.1.50 --dport 21:23 -j DROP
     
  • 我要将我自己主机 ping 的回应功能取消,应该如何下达 iptables 的指令?

  • 因为 ping 能否回应用的是 icmp 的 type 8 (请参考第二章 网络基础 内的 ICMP 相关内容),所以我可以这样做:
    iptables -I INPUT -p icmp --icmp-type 8 -j DROP
     
  • 请说明为何这个指令是错误的?‘iptables -A INPUT -p udp --syn -s 192.168.0.20 -j DROP’?

  • 因为只有 TCP 封包才会具有 SYN 的标志, UDP 并没有 SYN 的标志啊!所以上面的指令是错误的!
     
  • DNS 的要求是必须的,那么我该如何设定我的主机可以接受要求 DNS 的回应呢?

  • 因为 DNS 的来源是 port 53 ,因此要接受来自 port 53 的封包就成为了:
    iptables -A INPUT -p udp --sport 53 -j ACCEPT
    iptables -A INPUT -p tcp --sport 53 -j ACCEPT
     
  • 如何取消 iptables 在我的系统上面?

  • 先要清除规则后,才能够将 iptables 移除!不过,我们主要将规则清除即可!
    iptables -F; iptables -X; iptables -Z
    iptables -t nat -F; iptables -t nat -X; iptables -t nat -Z
     
  • 如何储存目前的防火墙机制,以及如何将上次储存下来的机制回复到目前的系统中?

  • 请利用 iptables-save 以及 iptables-restore 这两个指令,配合命令重导向即可!
     

    第十二章、申请合法的主机名称
     
  • 请简易说明 /etc/hosts 的用途;

  • 这个文件是早期用在进行主机名称与 IP 的解析的,目前比较常用在内部网络的名称解析上,可以加快内部网络的反查喔!
     
  • 请说明‘合法授权’的主机名称需要做什么?

  • 如果想要合法授权,就需要向上层 DNS 主机‘注册’才行!而且还要上层 DNS 主机管理员愿意将领域名称的解析权限授权给您啊!
     
  • 什么是动态 DNS 系统?(仅说明 client 端)

  • 因为我们的 Client 拨接时,得到的 IP 都不是固定的,所以无法以 DNS 系统进行固定 IP 对应主机名称的工作!此时就需要动态 DNS 系统了!以 DNS 主机提供的动态更新主机名称对应 IP 的机制,可以让我们的不同 IP 对应到同一个主机名称呐!
     
  • 如果您使用 adsl 拨接来上网设定服务器,那么该申请哪一类型的主机名称?为什么?

  • 因为我是以 ADSL 上网拨接,所以 IP 是不固定的,此时需要申请动态 DNS 主机的主机名称,例如 adsldns.org 以及 no-ip.org 等等!
     

PART III、各类服务器搭建篇

    第十三章、简易 Telnet SSH 主机设定
     
  • Telnet 与 SSH 都是远端连线服务器,为何我们都会推荐使用 SSH 而避免使用 Telnet 呢?原因何在?

  • 因为 Telnet 除了使用‘明码’传送资料外,本身 telnet 就是很容易被入侵的一个服务器,所以当然也就比较危险了。至于 ssh 其实也不是很安全的!由台湾电脑危机处理小组的文件可以明显的发现 openssl + openssh 也是常常有漏洞在发布!不过,比起 telnet 来说,确实是稍微安全一些!
     
  • 请尝试说明 SSH 在 Server 与 Client 端连线时的封包加密机制;

  • 利用 key pair 来达到加密的机制:Server 提供 Public Key 给 Client 端演算 Private key ,以提供封包传送时的加密、解密!
     
  • 请问 SSH 的设定档是哪一个?如果我要修改让 root 无法使用 SSH 连线进入我的 SSH 主机,应该如何设定?又,如果要让 badbird 这个使用者无法登入 SSH 主机,该如何设定?

  • SSH 设定档档名为 sshd_config ,通常放置在 /etc/ssh/sshd_config 内;如果不想让 root 登入,可以修改 sshd_config 内的参数成为:‘PermitRootLogin no ’,并重新启动 ssh 来设定!如果要让 badbird 使用者无法登入,同样在 sshd_config 里面设定为:‘DenyUsers badbird’即可!
     
  • 在 Linux 上,预设的 Telnet 与 SSH 服务器使用的端口(port number)各为多少?

  • telnet 与 ssh 的端口分别是:23 与 22!请参考 /etc/services 喔!
     
  • 如果发现我无法在 Client 端使用 ssh 程序登入我的 Linux 主机,但是 Linux 主机却一切正常,可能的原因为何?(防火墙、known_hosts...)

  • 无法登入的原因可能有很多,最好先查询一下 /var/log/messages 里面的错误讯息来判断,当然,还有其他可能的原因为:
    1. 被防火墙挡住了,请以 iptables -L -n 来察看,当然也要察看 /etc/hosts.deny;
    2. 可能由于主机重新开机过, public key 改变了,请修改您的 ~/ssh/known_hosts 里面的主机 IP ;
    3. 可能由于 /etc/ssh/sshd_config 里面的设定问题,导致您这个使用者无法使用;
    4. 在 /etc/passwd 里面,您的 user 不具有可以登入的 shell ;
    5. 其他因素(如帐号密码过期等等)
     
  • 既然 ssh 是比较安全的资料封包传送方式,那么我就可以在 Internet 上面开放我的 Linux 主机的 SSH 服务了吗?!请说明您选择的答案的原因!

  • 最好不要对 Internet 开放您的 SSH 服务,因为 SSH 的加密函式库使用的是 openssl ,一般 Linux distribution 使用的 SSH 则是 openssh ,这两个套件事实上仍有不少的漏洞被发布过,因此,最好不要对 Internet 开放,毕竟 SSH 对于主机的使用权限是很高的!
     

    第十四章、简易 NAT 服务器
     
  • 请简单的说明 NAT 主机的用途与运作原理。

  • NAT 主机的最大用途在于‘封包伪装’,可以做为内部 Client 主机对外的连线之用(类似 IP 分享器),当然,也可以做为区域内主机 (DMZ) 的设定!至于其运作原理则主要以 iptables 的过滤机制有关,利用 iptables 来将通过的封包进行 Source IP 或 destination IP 的伪装!
     
  • 假设我是您公司的上层主管,我知道我们单位内共有 100 部电脑 (Windows 作业系统),其中共分为两大部门,这两大部门的资料是互相独立的,并且两大部门各自拥有一台 Linux 主机在负责文件分享的工作(就是未来会谈到的 SAMBA 主机)。不过,我们公司仅有一条对外的 ADSL 双向 512 的专线而已。现在,我命令您规划全公司 100 部电脑都可以连上 Internet ,而且只多给您一台 Linux 主机,并且原有的 Linux 主机功能 ( 就是 SAMBA 啦 ) 还是存在。请问:
    1. 公司的网络规划的示意图如下所示:


    2. 两边的 LAN 并没有互相物理连接,此外,微型电脑为本来的 Linux 主机,而新增一台 Linux 主机则是‘服务器’那一台!
    3. 多出来的那一台 Linux 主机用途为 ADSL 连接与内部私有网络的连接,该 Linux 的网络参数:‘IP为192.168.0.254(对内),对外为拨接所产生的介面!启动 NAT 功能’!
    4. 两部 Linux SAMBA 主机的网络参数为:‘部门A:IP为192.168.1.254(对内卡)以及192.168.0.1(对外卡),新增 route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.0.2’,‘部门B:IP为192.168.2.254(对内卡)以及192.168.0.2(对外卡),新增route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1’,两部主机的 Gateway 都是192.168.0.254。
    5. 两个部门的网络参数:‘部门A,Network:192.168.1.0/24,Gateway:192.168.1.254’、‘部门B,Network:192.168.2.0/24,Gateway:192.168.2.254’。
     

    第十五章、简易 NFS 服务器设定
     
  • NFS 的主要设定档为何?而在该文件内主要设定项目为何?

  • 主要的设定档为 /etc/exports 而至于其设定的内容项目在每一行当中则为:
    1. 分享的目录
    2. 针对此分享目录开放的主机或 IP或网络
    3. 针对这部主机所开放的权限参数!
     
  • 在 NFS 主要的设定档当中仅有少许的参数说明,至于预设的参数说明则没有在该文件当中出现,请问,如果要查阅更详细的分享出来的文件的属性,要看那个文件?

  • 要查阅 /var/lib/nfs/xtab 这个文件才行!
     
  • 如果已经启动了 nfs 这个服务器,但是却又修改过主要设定档,请问可以使用那个指令来重新挂载分享出来的目录与 client 端权限的设定值?

  • 透过使用 exportfs ,可以加上 -a 或者是 -rv 这两个参数来重新挂载!如 exportfs -rv
     
  • 在 client 端如果要挂载 NFS 所提供分享的文件,可以使用那个指令?

  • 那自然就是 mount 啦!还有卸载是 umount 喔!
     
  • 在 NFS 主要设定档当中,可以透过那个参数来控制不让 client 端以 root 的身份使用您所分享出来的目录与文件?

  • 可以在 /etc/exports 当中的参数项目,设定‘ root_squash ’来控制压缩 root 的身份喔!
     
  • 我在 client 端挂载了 NFS Server 的某个目录在我的 /home/data 底下,当我执行其中某个程序时,却发现我的系统被破坏了?您认为可能的原因为何?该如何克服这样的问题,尤其是当我的 Client 端主机其实是多人共用的环境,怕其他的使用者也同样发生类似的问题呢?!

  • 可能由于您挂载进来的 NFS Server 的 partition 当中具有 SUID 的文件属性,而您不小心使用了该执行档,因此就可能会发生系统被破坏的问题了!
    可以将挂载进来的 NFS 目录的 SUID 功能取消!例如:
    mount -t nfs -o nosuid,ro server:/directory /your/directory
     

    第十六章、简易 DHCP 服务器设定
     
  • DHCP 的主要用途为何

  • DHCP 主机的主要用途就是在于自动分配网络参数给 Client 端的电脑,以降低网络当中可能发生的 IP 冲突问题,以及减少网管人员到处检查错误的伤脑筋!
     
  • DHCP 主要的两种 IP 分配模式为何?

  • 主要的两种分配模式分别为 Dynamic IP 与 Static IP , Static IP 透过 MAC 的比对,至于 Dynamic IP 则是直接取用网络中尚未被使用到的 IP 来进行 Client 端的分配。
     
  • 在有 DHCP 主机存在的网络当中,且 client 端亦使用 DHCP 来规划用户端的网络参数,那么请问,在该网络当中,Client 端是如何取得 IP 的呢??
    1. 首先, Client 端会发出一个 DHCP 要求封包;
    2. Server 端接收到要求后,会主动的回应资讯给 Client ;
    3. Client 若接受该 DHCP 主机所提供的参数,则主机会记录下租约资讯,至于 client 端则开始以主机提供的参数设定其网络;
     
  • DHCP 是如何发送 Static IP 的?可以使用何种指令取得该资讯?

  • DHCP 主要利用网络卡的硬体位址,亦即俗称的‘网络卡卡号’,也就是 MAC 来进行 Client 端的比对的,至于主动取得 Client 端的方式,可以透过 ping 以及 arp 来获得。
     
  • 在 DHCP 的租约档,亦即 /var/lib/dhcp/dhcpd.leases 当中,记录了什么资讯?

  • 这个文件主要记录了 Client 端连上 Server 端的纪录资料,他会被 DHCP 主机用来判定与 Client 端的租约行为喔!
       
  • DHCP 的登录档放置于何处?

  • 就是最重要的 /var/log/messages 这个文件啦(预设状况下!)
     

    第十七章、简易 DNS 服务器设定
     
  • 为何要有 DNS 系统:

  • 最主要的功能其实在于 Hostname 对应 IP 的查询,可以让我们人类以电脑主机名称连上 Internet ,而不必背诵 IP 哩!
     
  • 那么请教 Unix Like 系统当中,主要使用那个套件做为 DNS 主机的搭建,同时,他又是使用那个 daemon 来启动 DNS 系统?

  • 在 Unix Like 系统当中,使用 BIND 这个套件做为 DNS 的搭建,至于 daemon 则是使用 named 这个 daemon !
       
  • 最早的 Internet 其实是为了政府人员可以连上网络以进行资源的分享,另外,则是电子邮件的使用。而在早期使用的重要文件只有 /etc/hosts 这个,请教这个 hosts 文件的内容含有什么项目?

  • 这个文件的‘格式’为‘ <IP> <主机名称> <主机别名(aliase)>’,而,这个文件里面放置了至少一行,也就是:
    127.0.0.1 localhost localhost.localdomain
    另外,也可以将经常连接的主机 IP 与 HOSTNAME 的对应给他写进来!
     
  • 请说明 DNS 的三种类型与相关的内容:

  • DNS 主机主要分为: master, slave 与 cache-only 三种类型!在 master 当中,master 主机里面即有设定 DNS 资料文件,例如在 /var/named 里面的正反解文件。至于 slave 的 DNS 主机则主要在进行 master 主机的资料备份,同时也提供 Internet 上面的查询功能。使用 master/slave 的最大优点在于“单点维护”的能力!利用修改 master 即可让 slave 的资料同时更新,减少人力的浪费。至于 cache-only 仅进行快取的纪录,本身并无资料库文件!
     
  • 正解文件(forward)反解文件(reverse)与内部回圈使用的文件(loopback)主要的纪录功能为:

  • 正解档在设定 hostname 对应到 IP 的纪录,主要的纪录有 A, NS, SOA, MX, CNAME 等等;
    反解档主要设定 IP 对应到 Hostname 的纪录,主要的纪录为 SOA, NS 与 PTR 等。
    内部回圈则是 localhost 与 127.0.0.1 的对应啦!
     
  • 在主要的 DNS 设定档 /etc/named.conf 当中,有一个较为特殊的文件,他的类型为 hint ,请问这个文件的功能为何?

  • 这个文件主要是由 rs.internic.net 所下载下来的,主要记录了 root (.) 这个 zone 的 IP !可以让我们的 DNS Server 在找不到资料库时,可以到这个 root 去查询资料!
       
  • 在 client 端搜寻 HOSTNAME 对应到 IP 的查询时,最重要的文件,以及该文件的主要用途为何?

  • /etc/nsswitch.conf :可以用来设定查询主机名称的顺序!例如先查询 /etc/hosts 再查询 DNS 系统;
    /etc/hosts :最早的名称解析器;
    /etc/resolv.conf:这就是 DNS 系统的 resolver (解析器)了。
       
  • 一般来说,在 Client 端使用的查询 HOSTNAME 的指令大多使用什么?

  • nslookup :可以用来收集一台主机的相关资讯;
    dig:可以用来收集详细的主机资讯;
    whois :可以用来收集详尽的 DNS 主机资讯。
    host 则较为简单喔!
     
  • 请问 named 重要的资讯登录在在那个文件中?

  • 在 /var/log/messages 当中。
     

    第十八章、简易 WWW 服务器设定
     
  • 请问 LAMP 这个服务器代表什么意思?

  • 这个名词代表了 Linux + Apache + MySQL + PHP 这个 WWW 服务器的组成!
     
  • Apache 的设定档档名一般为何?

  • Apache 的设定档档名为 httpd.conf ,不过,由于 httpd.conf 内容参数可以使用‘ include "额外设定档名"’,所以也可能具有其他的额外设定档喔!
     
  • 在 Apache 的设定档当中,哪一个参数是用来设定‘主网页’的?

  • 设定主网页的参数为:DocumentRoot 喔!后面接的是主网页放置的‘目录’!
     
  • 哪一个指令用来重新启动与关闭 Apache ?(请以 Tarball 安装的方法来说明)

  • 其实不论是 RPM 还是 Tarball 都是使用 apachectl 这个文件来启动 apache 的,不过 RPM 已经将该文件整合到 /etc/rc.d/init.d/httpd 里面去而已!
     
  • 当我使用 ps -aux 的时候,发现好多的 httpd... 的程序,这是正常的吗?!最多可以有几个程序是在那个文件的那个参数所设定的?!

  • 这是正常的,主要由 httpd.conf 里面设定的底下两个参数:
    • MinSpareServers
    • MaxSpareServers
     
  • 又,呈上题,这些程序 (process) 的 owner 与 group 是谁?该察看那个设定档的那个参数?

  • 同样察看 httpd.conf 里面的 User 与 Group 这两个设定值!
     
  • 如果今天我以 http://your.ip 结果却发现浏览器出现类似 FTP 的画面(会列出该目录下的所有文件),这是什么原因造成的?该如何避免?

  • 这是由于在 httpd.conf 里面,针对该目录的设定参数‘ Options ’当中,设定了 Indexes 这个设定值,导致当找不到主页时(通常是 index.html),就会将该目录下的所有文件秀出来!解决的方法就是拿到 Options 里面的 Indexes 设定值即可!
     
  • 在 Apache 里面, .htaccess 这个文件的功能为何?

  • 可以用来取代 httpd.conf 里面的设定参数!创造属于使用者自己的 Apache 风格!
     

    第十九章、简易 SAMBA 服务器设定
     
  • 一般来说, SAMBA 使用的设定档放置在哪里?档名为何?

  • 使用的档名为 smb.conf ,通常会放置在 /etc/samba/smb.conf 里面,不过,最好可以使用 rpm -qc packagename 来查询!
     
  • 哪一个指令可以用来判断 smb.conf 这个设定档的正确性?

  • 当我们修改完 smb.conf 之后,记得要以 testparm 来进行 samba 的确认!
     
  • 哪一个指令可以用来察看 SAMBA 主机分享出什么目录?

  • 利用 smbclient 即可:‘smbclient -L NetBiosName -U username ’!
     
  • smbmount 的功能为何?

  • 在 Linux 系统上面,将 Windows 的网络上的芳邻,或者是 Linux 的 SAMBA 所提供分享的资源挂载到自己的系统下!
     
  • 我今天使用 smbpasswd 去新增一位使用者 badbird,让他可以登入我的 Linux SAMBA 主机,但是无论如何就是无法新增。您认为原因可能是什么?

  • 由于 Samba 使用者的资讯必须要存在于 /etc/passwd 里面,既然无法新增,应该先确认 badbird 这个使用者已经存在于 Linux 系统当中了!如果还是无法新增,则需要查阅 smb.conf 的设定,看看是否 /etc/samba/smbpasswd 这个密码文件不存在?!
     

    第二十章、简易 Mail Server 搭建 -- Sendmail 设定
     
  • 我在使用 Sendmail 寄信时,却发生底下这个问题,请问可能的发生原因为何?
  • 可能的问题有两个:
    • 你的 Client 端电脑的 IP 或者是网络位址被 /etc/mail/access 所挡住,或者是 /etc/mail/access 没有打开你的 RELAY 权力;
    • 你有进行 SMTP 邮件认证的设定,但是忘记在 MUA 当中设定帐号与密码的项目了!
    如果不是这两个原因,那么可能的问题就多了!请详细的检查您的网络设定!
       
  • 请列出四个 Mail Server 的相关的元件,以及其功用为何?
    1. Mail Client :邮件用户端,其实就是使用 mail 的那位使用者所在的电脑即可称为 mail client ;
    2. Mail User Agent :为一个应用软件,主要的功能就是收受邮件主机的电子邮件,以及提供使用者浏览与编写邮件的功能;
    3. Mail Transfer Agent :为在电脑与本地端 Mail server 或 Internet 上面的 Mail server 传送讯息与邮件的主机;
    4. Mail Dilivery Agent :主要的功能就是将 MTA 所收受的本机信件,放置到本机帐户下的邮件文件中 ( Mailbox )!
     
  • POP3 与 SMTP 的功能为何?
    • SMTP 为使用于 MUA 或 MTA 与 MTA 之间的传输协定,通常使用 port 25 ,只要主机支援 SMTP ,并且其他 relay 的条件能配合,就可以进行邮件传递!
    • POP3 可以提供使用者经由 MUA 到 MTA 下载邮件,同时并可将邮件从主机上面删除!
     
  • 请简单的说明 DNS 里面 MX 标志与 Mail 的关系为何?

  • MX recode 可以可以让 mail server 经由 MX 以及 A ( address ) 这个记录来进行 mail gateway 与 mail route 的功能!能够达到的作用相当的多!
     
  • 今天我突然兴起,想要修改我的 sendmail ,请问, sendmail 的设定档在哪里?而我要以什么程序修改 sendmail 呢?

  • Sendmail 的设定档为 sendmail.cf ,这个文件通常放置在 /etc/sendmail.cf 或者 /etc/mail/sendmail.cf !您可以手动的编辑这个文件,不过不建议如此,取得代之的,可以使用 m4 这个程序来进行 macro 的动作,进一步的完成 sendmail.cf 的修改!至于使用 m4 时,需要先建立 m4 scripts ,再以 m4 转换才能形成 sendmail.cf 喔!
     
  • 什么是 mailling list ?在 sendmail 底下有什么方法可以不藉由其他的软件达到 mailling list 的功能?

  • Mailling list 就是将使用者寄给一个帐号邮件时,该帐号会主动的将该邮件传送到所有的用户去!有点类似目前的电子报!在 sendmail 底下,我们可以透过 aliases (需配合 newaliases) 以及 ~/.forward 来达成喔!
     
  • 如何察看邮件伫列的内容,以及邮件伫列内容放置在何方?

  • 使用 mailq 即可知道目前邮件伫列的内容,而邮件伫列虽然可以透过 sendmail.cf 来修改,不过,预设情况下,都是以 /var/spool/mqueue 为邮件伫列目录。
     
  • 若我的 sendmail 主机有很多名称,我想让这些名称都可以进行 mail 的接收,应该修改什么文件?

  • 可以修改 /etc/mail/local-host-names 来达成!
     
  • 什么是 Open Relay?

  • 所谓的 Open Relay 就是,不论发信端来自何处,您的 Open Relay 的主机均可以帮发信端将信件发送出去,这个称为 Open Relay 。如果您的 mail server 具有 open relay 的情况,那么很容易遭受到垃圾邮件的填充,不但造成网络频宽的耗损,也容易让您的主机被列入黑名单当中!
     

    第二十一章、简易 Mail Server 搭建 -- Postfix 设定
     
  • 请问 Cyrus SASL 在 1.5.xx 以及 2.xx 版本中,用来作为 SMTP 的认证的机制有何不同?并请说明不同的版本与 Postfix 的搭配情况。

  • 一般而言, SASL 1.5 适用于 postfix 1.xx 版本,至于 SASL 2.x 版则适用于 postfix 2.xx 版。由于 SASL 2.x 主要使用 saslauthd 这个 daemon 来做为身份认证的方式,而 SASL 1.5 则使用的是 pam 与 pwcheck 这两个机制,两个版本的认证机制并不相同。所以使用 Postfix 来设定 SMTP 的身份认证时,请务必记得版本的差异!
     
  • 如果要让 Postfix 可以收发来自非本机的外部信件,您可以修改 main.cf 里面的什么参数?

  • 需要在 main.cf 里面修改的变数主要有:
    1. 当 Client 来自信任的网络,也就是 IP 符合 $mynetworks 的设定值时;
    2. 当 Client 来自信任的机器,也就是主机名称符合 $relay_domains 的设定项目时;
    3. 当 Client 来自不信任的网络,但是去的目的地主机端符合 $relay_domains 的设定时。
     
  • 如何察看您目前的 Postfix 服务器的所有设定参数?(使用什么指令?)

  • 利用 postconf -n 可以察看‘目前 main.cf 里面设定的参数’,而如果要看所有的参数,则直接使用 postconf 即可!
     
  • 在 Postfix 当中,由于已经具有过滤邮件的机制,所以不太需要使用 procmail 了!请问,我该如何启用信件的 Header 过滤机制?同时,如何设定规则,使得 192.168.100.100 这个主机的来信,以及只要邮件的标头为‘ Your account ’的信件就予以丢弃?

  • 启用的方式可以在 main.cf 里面启用这个设定值:
    header_checks = regexp:/完整路径/档名
    body_checks = regexp:/完整路径/档名
    至于文件内容可以这样做:(注:因为要查阅的是标头,所以需要 header_checks 后面所接的档名呐!)
    /^Subject.*your\ account/ REJECT
     

    第二十二章、简易 FTP Server 搭建 -- Wu FTP 设定
     
  • FTP 在建立连线以及资料传输时,会建立哪些连线?

  • 需建立两种连线,分别是 command 与 data transfer 的连线,就是命令通道与资料传输通道。一般来说,就是 port 21(ftp) 与 port 20(ftp-data)。
     
  • FTP 主动式与被动式连线有何不同?

  • 主动式连线的时候, command 连线是由 client 端主动连接到主机端,但是 ftp-data 则是由主机端主动的连线到 client 端。至于被动式连线的时候,则不论 command 还是 ftp-data 的连线,主机端都是 Listen 客户端的要求的!
     
  • 有哪些动作可以让您的 FTP 主机更为安全 ( secure ) ?

  • 有很多的方法,在设定上面有这些方法:
    • 让 guest 与 anonymous 的家目录限制在固定的目录中(chroot 或是 restricted);
    • 使用 TCP_Wrappers 启动 FTP ,并以他来控制可连线的 IP;
    • 拒绝 guest 与 anonymous 使用 change, delete, rename 等等指令;
    • 拒绝 root 的登入或者其他系统帐号的登入;
    • 拒绝大部分的 upload 行为!
     
  • 我们知道 ftp 会启用两个 ports ,请问这两个 port 在哪里规范的?而且,一般正规的 port 是几号?

  • 是在 /etc/services 里面规范的,此外,正规的 ports 在 command 是 21 而 data 是 20 。
     
  • Wu FTP 的主要设定档在哪里?

  • /etc/ftpaccess
       
  • 在 Wu FTP 的设定档当中,那个 log transfer 是干嘛用的?

  • log transfer 可以将使用者进行资料传输的时候,将传输的文件大小、内容等等记录到 /var/log/xferlog 里面去!
     
  • 在 Wu FTP 的设定档当中,那个 passive ports 是干嘛用的?

  • 我们知道 FTP 有主动与被动连线两种方式,如果 FTP 主机允许被动连线,那么 Client 端连线时,主机端将会随机取大于 1024 的 port 来进行 data transfer ,为了避免随机取 port 的问题,所以 passive ports 可以指定固定的几个小范围的 ports ,比较安全。
     
  • 那一个文件可以用来抵挡类似 root 这种系统帐号的登入 FTP?

  • /etc/ftpusers!(其实是利用 pam 模组来达成的功能!)
     
  • 在 FTP 的 server 与 client 端进行资料传输时,有哪两种模式?为何这两种模式影响资料的传输很重要?

  • 资料的传输有 ASCII 与 Binary 两种方式,在进行 ascii 传送方式时,被传送的文件将会以文字模式来进行传送的行为,因此,文件的属性会被修改过,可能造成执行档最后却无法执行等的问题!一般来说,ASCII 通常仅用在文字文件与一些原始码文件的传送。
     

    第二十三章、简易 FTP Server 搭建 -- Pro FTPD
     
  • 如何建立一个使用者,他可以使用 FTP 的功能,但是无法以 telnet 或 ssh 登入系统?!请使用 proftpd 的设定项目来设定!

  • 因为无法使用 telnet/SSH ,这表示他可能不具有正常的 shell ,因此您可以将该使用者在 /etc/passwd 里面,最后一个 shell 参数改成 /bin/false ,然后在 proftpd.conf 里面设定‘RequireValidShell off’即可!
     
  • 我明明在台湾,我的主机时区 (/etc/sysconfig/clock) 明明在台湾,为何登入 proftpd 之后,显示的系统时间就是慢了 8 小时?请问为什么?如何解决?

  • 这是由于 proftpd 预设使用 GMT 时间,因此,您必须要重新设定 proftpd ,使得时间使用 localtime 才成!修改 proftpd.conf 里面的参数成为:‘TimesGMT  off
     
  • 如果发生了无法登入,或者是与 proftpd 的 FTP 功能相关的错误时,要如何 debug 呢?

  • 最先应该查询是否被防火墙挡住了(同时观察 Server/Client 端);
    克服防火墙问题后,再查询 FTP port 是否有启动;
    再检阅 /var/log/messages 里面的错误讯息,
    最后据以修订 proftpd.conf 的设定参数!
     

    第二十五章、简易 Proxy Server 搭建
     
  • 请说明为何 Proxy 可以提升网络的 WWW 浏览速度?

  • 这不但由于 Proxy 可以透过上层 Proxy 达到分流的功能,使得网络传输更具效率之外,还由于 Proxy 会将资料快取(cache)在自己的硬碟内,以方便下次的查询,因此对于区域网络的浏览速度是有帮助的!
     
  • 万一 squid 发生了问题,请问我该如何找出问题点?

  • 最主要还是在于找出问题,所以需要由 suqid 的登录档查询起,当然,硬碟的优劣以及 squid 所取得 PID 的 owner 与 group 都是需要注意的!
     
  • 请说明 Proxy 服务器的功能为何?

  • Proxy 服务器的功能在于代理来自 client 的上网需求,并向目地端主机送出 client 端的要求,以协助 client 端取得所需要的浏览网页。此外,并可将网页资料进行 cache 的功能。
     
  • 试说明为何 Proxy 服务器可以提升网络之内的网络安全性?

  • 由于 Proxy 服务器通常搭建之后,会让网络仅有一个 Proxy 主机的出口,亦即单点对外的服务器,可以强化网络的管理!
     

    第二十六章、简易 Network Information Service, NIS Server 搭建
     
  • 请简单说明 NIS server 的功能与工作流程

  • 当您有多部具有相同帐号的 Linux 主机时,即可利用 NIS 所提供的服务,来利用一台 NIS 主机掌控所有的 linux 主机的登入时所需查阅的帐号与密码验证。流程如下:
    1. NIS Server 将自己系统内的 /etc/passwd, /etc/group, /etc/hosts 等制作成为 DBM 的资料库格式文件;
    2. NIS Client 若有用户登入的要求时,会前往 NIS Server 搜寻资料库里面的资料做为验证之用。
    3. 每次更动 NIS Server 上面的用户资料时,则 NIS Server 需要重新制作 DBM 资料库文件才行!
     
  • 请简单说明 NIS Server/client 的架构

  • NIS master/client 的特色为:
    1. NIS Server 的 master 先将自己的帐号、密码相关文件制作成为资料库文件(database file);
    2. NIS Server 的 master 将自己的资料库文件传送到 slave 上面;
    3. NIS Server 的 slave 接收来自‘信任的 NIS Server master 主机’的资料后,更新自己的资料库,使自己的资料库与 master 主机的资料同步;
    4. 网络当中的所有 NIS Client 查寻 NIS Server 时,会找寻‘最先回应的那一台 NIS 主机的资料库内容’。
    也就是说,搭建 slave NIS server 可以分担区域内 NIS 的工作!
     
  • NIS 启动之前需要先启动那个服务,否则就无法启动成功

  • 因为 NIS 是 RPC Server 的一种,所以必须要启动 portmap 这个 daemon 才行!
     
  • 我的 NIS 网络名称为 bird ,另外,我主机的 IP 与主机名称为 192.168.5.1/bird.nis.org ,请问要这些资讯需要设定在 NIS Server 的哪些文件之内?

  • 网络名称可以直接手动下达‘ nisdomainname bird ’也可以写入 /etc/sysconfig/network 里面‘NISDOMAIN=bird’;
    IP 与 主机名称 需要写入在 /etc/hosts 里面。
     
  • /etc/nsswitch.conf 的功能为何?如果我想要让密码查寻先本地的密码档,再查寻 NIS ,需要如何设定?

  • 该文件的功能很多,在 DNS 方面,可以用来决定正、反解的顺序,至于密码则可以用来判断何者为先!如果需要先查本机再查 NIS 的密码时,需要的参数:
    passwd:     files nis nisplus
    shadow:     files nis nisplus
     
  • NIS Server 将密码等文件做成资料库以提供 NIS client 来查寻,那么请问使用什么动作后,可以将密码文件转成 NIS 的资料库格式文件?

  • /usr/lib/yp/ypinit -m
     
  • 如果我想要增加网络当中一个新的帐号:newaccount,并且这个 newaccount 可以让 NIS Client 查寻到他的帐号与密码,需要进行哪些步骤?
    1. 先登入 NIS Server 以 useradd newaccount 以及 passwd newaccount 来新增帐号;
    2. 制作密码资料库:‘/usr/lib/yp/ypinit -m’
    3. 重新启动:‘/etc/rc.d/init.d/ypserv restart ; /etc/rc.d/init.d/yppasswdd restart’。
     
  • 实作范例题:底下是我的网络参数特征:

  • network/netmask:192.168.1.0/255.255.255.0
    NIS server : 192.168.1.100 (hostname: server.nis.test )
    NIS cient: 192.168.1.200 (hostname: client1.nis.test )
    NIS domain name: nis.test
    利用上面的参数来设定 NIS 架构,请一步一步的写下你的设定。
    请自行参考本章节内容设定!
     
  • 承上题:如果我的网络太大了,所以有一台 NIS slave 主机,这部主机的 IP 为 192.168.1.50 ,请问这部主机该如何设定?

  • 请参考:
     

    第二十七章、简易 NTP 服务器设定
     
  • 什么是 GMT (格林威治) 时间与 UTC 时间?

  • 由于地球是圆的,所以同一时间点上,在地球共可分为 24 个时区,其中,我们以欧洲的格林威治时间为一个对照的依据,这个即是 GMT 时间。台湾时间比 GMT 时间快了 8 小时。至于 UTC 时间则是由原子钟所计算的时间,这个时间是相当的准确的,主要仍以格林威治时间为时区!
     
  • Linux 系统的所有时区文件放置哪一个目录底下?

  • 所有的时区文件放置于:/usr/share/zoneinfo 底下!至于系统时区的设定档则在 /etc/sysconfig/clock 与 /etc/localtime 喔!
     
  • 我的 Linux 主机本来放置在日本东京,现在想将他拿到台湾来运作,不过因为日本与台湾有一个小时的时差,所以我的时间应该需要经过调整才行。不过,因为我的 BIOS Time 主要是依据 UTC 时间来设定的,所以似乎只要更动时区参数即可。请问我该如何设定时区,好让我的 Linux 主机能够显示正确的时间?

  • 将 /usr/share/zoneinfo/Asia/Taipei 这个文件复制成为 /etc/localtime 即可!
     
  • 目前 Linux 系统上面的时间服务器主要是以 NTP 为主,请问这个 daemon 的主要设定档放在哪里,而该设定档中,针对上层 time server 的设定参数为何?而那个 driftfile 参数是干嘛用的?

  • 在 /etc/ntp.conf 这个文件当中,至于上层 time server 的设定参数为 server 啊!那个 driftfile 则是用来做为‘时间差额’的计算的!该参数后面接的是一个完整路径的档名,该文件里面的数值单位为百万分之一(ppm)。
     
  • 请问 ntptrace 的功能为何?

  • 可以用来追踪上层 time server 的连线时间与目前时间!
     
  • 我以 date 更新了我 Linux 上面的时间后,该如何将时间数据写入 BIOS 内?

  • 必须利用 hwclock 这个程序来写入,利用 hwclock -w 写入 BIOS 。
     
  • 在 Linux 上面如何进行网络校时?

  • 最简单的方法即是使用‘ ntpdate time.servers.ip; hwclock -w ’即可!
搭建服务器文件习题解答篇

2003/0919:完成到 Part II (简易主机防火措施篇) 的习题咯!
2003/09/20:完成了 Part III 的习题咯!真开心!大家作作看吧!
 
     
幸运彩快三平台网 macfa.net排版整理
原文作者鸟哥,,更多Linux学习资料在线看:Linux系统管理员手册 - Linux命令大全 - Linux调用大全- Linux专栏 - 国产Linux