当前位置:Linux教程 - Linux - Linux系统安全与优化(安装Linux)

Linux系统安全与优化(安装Linux)



        
    第二章 安装Linux服务器

    了解硬件环境

    创建启动盘,引导Linux

    安装类型和方法

    创建分区

    警告

    最小的分区要求

    Disk Druid分区工具

    交换分区

    部件安装(选择软件包组)

    单个软件包的选择

    怎样使用rpm命令

    启动和停止daemon服务

    安装完服务器之后必须卸载的软件

    安装完服务器之后必须安装的软件

    服务器上已经安装的程序

    给终端加点颜色

    使软件保持最新的版本

    了解硬件环境
    了解硬件环境是成功安装RedHat Linux的关键。因此,必须花一些时间熟悉一下自己的硬件环境。准备好回答如下的问题:

    1. 计算机上有几个硬盘?

    2. 每个硬盘的大小?

    3. 如果有两个以上的硬盘,哪一个是主盘?

    4. 内存有多大?

    5. 计算机上有SCSI卡吗?如果有,型号是什么?由哪家公司生产的?

    6. 鼠标是什么类型的(串口,还是PS/2)?

    7. 鼠标有几个键?

    8. 如果是串口鼠标,那么连在哪个串口上?

    9. 显卡的产商和型号,有多少显存?

    10. 显示器的产商和型号?

    11. 如果想把计算机连接到网络上,请再注意下面几个问题:

    a) 计算机的IP地址?

    b) 网络掩码?

    c) 网关地址?

    d) 域名服务器的地址?

    e) 域名?

    f) 主机名?

    g) 网卡型号和厂商?

    创建启动盘,引导Linux
    如果你安装过很多次Linux,结果都失败了,那么可能需要一个修正过的软盘镜像。在这种情况下,可以去RedHat Linux的勘误网站去下载特殊的软盘镜像。

    因为这是很少见的情况,应该尽可能地先试一下标准的安装软盘,只有在实在不能完成安装的情况下,才有必要去勘误网站看看。RedHat 6.1的光盘可以从光驱直接启动。如果你的计算机不支持直接启动,那么也可以在MS-DOS下创建启动盘,请用下面的命令(假定CD-ROM的盘符是d:,里面放的是RedHat Linux 6.1的光盘):

    在windows下打开MS-DOS方式(开始 | 程序 | MS-DOS方式):

    C:\\> d:
    D:\\> cd \\dosutils
    D:\\dosutils> rawrite
    Enter disk image source file name: ..\\images\\boot.img
    Enter target diskette drive: a:
    Please insert a formatted diskette into drive A: and press --ENTER-- :
    D:\\dosutils>

    当rawrite.exe要求输入软盘镜像的时候,输入完整的“boot.img”的路径名,把软盘插入A驱。当程序问你把镜像写入哪个软盘驱动器的时候,输入“a:”。

    RedHat Linux的勘误网站是:http://www.redhat.com/errata

    因为我们不从CD-ROM启动,而从软盘启动安装,所以把软盘插入A:驱,然后重新启动计算机。当出现boot:的时候,按下回车键,继续引导。

    l 选择语言

    l 选择键盘类型

    l 选择鼠标类型

    安装类型和方法
    RedHat Linux 6.1有以下几种安装类型:

    l GNOME工作站

    l KDE工作站

    l 服务器

    l 自定义

    有些安装类型(GNOME工作站、KDE工作站和服务器),简化了安装过程,但是失去了很多灵活性。

    因此,我们建议你选择“自定义”安装,这样你可以选择安装什么服务器软件以及如何划分你的硬盘。

    我们的目标是安装尽可能少的软件,以保证系统的高效率。而且,安装的软件越少,安全漏洞也就越少。

    选择“Custom”,继续安装。

    创建分区
    警告
    我们强烈建议在分区之前,先备份你当前的系统。为了保证系统高效、稳定和安全,我们还建议你象下面介绍的那样分区。我们这样分区是假定你要配置一个Web和Proxy服务器。

    之所以在分区中有两个特殊的“/chroot”和“/cache”分区是因为:“/chroot”分区是为DNS服务器、Apache服务器和其它需要改变根目录的(chrooted)服务器准备的;“/cache”分区是为Squid Proxy服务器准备的。如果你不打算安装Squid Proxy服务器,那么不必创建“/cache”分区,但是请注意:Squid+Apache的结合会把服务器的性能和安全提高很多。

    如果想让数量较多的用户访问你的服务器,必须把“/tmp”和“/home”放在不同的分区上,这几乎是强制的。这样做可以避免分区被一些用户文件填满。把“/var”和“/usr”放在不同的分区也是一个好主意。使“/var”和其它分区分开也可以避免分区被填满。

    在我们的分区安排中,特别保留了400MB的磁盘空间给改变根目录的(chrooted)程序,比如:Apache、DNS以及其它软件。这是必须的,因为Apache的DocumentRoot文件和其它可执行的程序都会被安装在这个分区上。注意:Apache chrooted目录在“/chroot”分区上的大小是和“DocumentRoot”文件的大小成正比的。如果不准备安装和使用Apache,可以把分区大小减小到10M,这10M是DNS服务器所必需的。

    最小的分区要求
    下面是Linux能够正常运行的最小分区要求。这样的分区安排甚至可以适用于只有512MB硬盘的老式486计算机机。当然,这种分区安排只是一个建议。

    / 35MB
    /boot 5MB
    /chroot 10MB
    /home 100MB
    /tmp 30MB
    /usr 232MB
    /var 25MB

    Disk Druid分区工具
    Disk Druid是RedHat Linux带的一个分区工具。选择“Add”添加新的分区,“Edit”改变分区,“Delete”删除分区,“Reset”恢复原来的分区状态。在添加一个新分区的时候,会出现一个窗口,要求你添上有关这个分区的一些必要的信息。要求添的信息是:

    l Mount Point: 分区装载(mount)的目录

    l Size: 分区的大小,以兆为单位

    l Partition Type: 分区类型。Linux的文件系统要使用Linux native类型的分区,Linux交换分区请用Linux Swap类型。

    如果你有一个SCSI硬盘,那么这个设备的名称将是“/dev/sda”;如果你有一个IDE硬盘,那么这个设备名称将是“/dev/hda”。如果很在意系统的高性能和稳定性,我们建议你用SCSI硬盘。

    Linux分区的命名方式是字母和数字相结合的,这种命名方式很灵活也很直观。下面是一个小小的总结:

    l 前两个字母:前两个字母表示设备类型,“hd”代表IDE硬盘,“sd”表示SCSI硬盘

    l 第三个字母:这个字母是说明具体的设备。例如:“/dev/hda”表示第一个IDE硬盘;“/dev/hdb”表示第二个IDE硬盘。

    请记住这些,这样给Linux分区的时候,会觉得容易一些同时也不易混淆。

    交换分区
    交换分区是用于虚拟内存的。如果计算机的内存少于16M,你必须创建交换分区。即使有更多的内存,我们还是建议你建立交换分区。交换分区最小必须等于计算机的内存,如果内存多于16M,最小只要16M就行了。交换分区最大大约为1GB,(Linux 2.2内核现在可以支持1GB的交换文件,如果多于1GB就是浪费)。注意:可以创建多于一个的交换分区,尽管只有在安装大型服务器的时候才有这个必要。尽量把交换分区放在硬盘驱动器的起始位置,因为一个磁盘的起始位置在物理上是在最外的柱面上,所以磁头每转一圈可以覆盖更大的面积。

    下面是一个例子,教你怎么建立分区(这样的分区安排是安装我们在书中介绍的服务器所需要的),下面的例子是用Disk Druid的命令:

    Add
    Mount Point: /boot ß←our /boot directory
    Size (Megs): 5
    Partition Type: Linux Native
    Ok

    Add
    Mount Point: /usr ß←our /usr directory.
    Size (Megs): 1000
    Partition Type: Linux Native
    Ok

    Add
    Mount Point: /home ß←our /home directory.
    Size (Megs): 500
    Partition Type: Linux Native
    Ok

    Add
    Mount Point: /chroot ß←our /chroot directory.
    Size (Megs): 400
    Partition Type: Linux Native
    Ok

    Add
    Mount Point: /cache ß←our /cache directory.
    Size (Megs): 400
    Partition Type: Linux Native
    Ok

    Add
    Mount Point: /var ß←our /var directory.
    Size (Megs): 200
    Partition Type: Linux Native
    Ok

    Add
    Mount Point: ß←our /Swap partition (leave the Mount Point Blank).
    Size (Megs): 150
    Partition Type: Linux Swap
    Ok

    Add
    Mount Point: /tmp ß←our /tmp directory.
    Size (Megs): 100
    Partition Type: Linux Native
    Ok

    Add
    Mount Point: / ß←our / directory.
    Size (Megs): 316
    Partition Type: Linux Native
    Ok

    分区完毕之后,你可以在屏幕上看到类似的信息:

    Mount Point
    Device
    Requested
    Actual
    Type

    /boot
    sda1
    5M
    5M
    Linux Native

    /usr
    sda5
    1000M
    1000M
    Linux Native

    /home
    sda6
    500M
    500M
    Linux Native

    /chroot
    sda7
    400M
    400M
    Linux Native

    /cache
    sda8
    400M
    400M
    Linux Native

    /var
    sda9
    200M
    200M
    Linux Native


    sda10
    150M
    150M
    Linux Swap

    /tmp
    sda11
    100M
    100M
    Linux Native

    /
    sda12
    316M
    315M
    Linux Native

    Drive
    Geom [C/H/S]
    Total (M)
    Free (M)
    Used (M)
    Used (%)

    Sda
    [3079/64/32]
    3079M
    1M
    3078M
    99%


    现在,选择“Next”继续安装。分区创建完之后,安装程序会让你格式化分区。选择想要格式化的分区,选中“Check for bad blocks during format”选择框,按“Next”继续。这样就开始格式化分区,并且激活分区。Linux就可以使用这个分区了。

    下一步如果选择安装LILO,你会看到LILO的配置。可以选择把LILO装在主引导扇区(MBR)或引导分区的第一个扇区。

    在通常情况下,应该选择把LILO安装在主引导扇区。(如果你的计算机上装有NT,或一些多重引导程序,如System Command,你最好仔细看一遍LILO-HOWTO,以免不必要的损失)。然后,开始配置网络和时钟。接着,要输入root口令和进行安全验证的配置。不要忘了选上:

    l Enable MD5 passwords

    l Enable MD5 passwords

    没有必要选择Enable NIS,因为我们不在这台服务器上安装NIS服务。

    部件安装(选择软件包组)
    上面都完成了之后,该选择安装哪些软件包了。在默认情况下,Linux是一个强大的操作系统,可以提供很多服务。但是,这些服务大多数都是没有必要的,而且会造成安全隐患。

    安装Linux的正确方法是:安装一个稳定和安全的系统。首先,你只要必要的部件,也就是软件包组。通过选上“Select individual package”这个单选框,在后面的安装过程中,你可以选中或不选单独的软件包。

    因为我们安装的是Linux服务器,所以没有必要安装图形界面(XFree86)。在服务器上安装图形界面意味着:更低的处理能力,更少的CPU时间,更少的内存,更多的安全问题,以及等等。图形界面一般只在工作站上使用。选择安装下面的软件包组:

    l Networked Workstation

    l Network Management Workstation

    l Utilities

    选择好软件包组之后,就应该选择单个的软件包了。

    注意:选上“Select individual package”单选框(非常重要),因为只有这样才会让你选择安装单个软件包。

    单个软件包的选择
    安装程序列出可以选择的软件包组,每个软件包组下面是单独的软件。

    下面列出的软件,因为安全、优化或者其它原因,请不要安装,待一会儿会解释的。

    Applications/Archiving: dump
    Applications/File: git
    Applications/Internet: finger, ftp, fwhois, ncftp, rsh, rsync, talk, telnet
    Applications/Publishing: ghostscript, ghostscript-fonts, mpage, rhs-printfilters
    Applications/System: arpwatch, bind-utils, knfsd-clients, procinfo, rdate, rdist, screen, ucd-snmp-utils
    Documentation: indexhtml
    System Environment/Base: chkfontpath, yp-tools
    System Environment/Daemons: XFree86-xfs, lpr, pidentd, portmap, routed, rusers, rwho, tftp, ucd-snmp, ypbind
    System Environment/Libraries: XFree86-libs, libpng
    User Interface/X: XFree86-75dpi-fonts, urw-fonts

    在解释为什么不装这些软件包之前,可能有人会问:为什么不在服务器上装finger、ftp、fwhois和telnet呢?要知道这些软件从本质上来说是不安全的。假定有一个黑客已经入侵了你的服务器,他可以用finger、ftp、fwhois和telnet查询或入侵网络中的其它计算机。如果没有装这些软件,他就不能使用这些软件或者就得试图在你的服务器上安装这些软件,如果真的这样做,就会被你很容易地跟踪到。可以用Tripware这样的软件进行跟踪。

    Applications/Archiving:

    dump这个软件包包括dump和restore这两个程序。dump用来检查文件系统中的文件以确定哪些需要备份,然后把这些文件拷贝到磁盘、磁带或其它介质上。【没必要,我们用别的方法】

    Applications/File:

    GIT(GNU 交互式工具)可以浏览文件系统,查看文本或二进制文件,查看或停止进程,还包括一些其它相关的工具和shell脚本。(很象DOS下的NC)。【没必要】

    Applications/Internet:

    finger可以让用户查看系统中其他用户的登录名(login name)、家目录(home directory)、真实姓名(name)以及登录系统的时间,等等。【安全隐患】

    ftp是标准的UNIX下的FTP客户软件(命令行)。FTP是在Internet上使用很广的文件传输协议。【安全隐患】

    fwhois可以让系统中的用户查询whois数据库。【安全隐患】

    ncftp是增强型的FTP客户软件。ncftp的增强包括:支持命令行编辑,命令历史记录,递归下载(包含子目录的下载),自动匿名登录,还有其它很多功能。【安全隐患,没必要】

    rsh包括一些程序,这些程序可以在远程计算机上运行命令,登录到其它计算机或在计算机之间拷贝文件(rsh、rlogin和rcp)。【安全隐患】

    ntalk包括Internet talk协议的客户端和服务器程序,你可以用它与在不同计算机上的人进行交谈(chat)。【安全隐患】

    telnet是用得很多的登录远程计算机的协议。【安全隐患】

    Applications/Publishing:

    ghostscript是一套软件包括:PostScript™解释器、C语言的函数库(ghostscript函数库实现了对PostScript语言的图形操作)和PDF文件的解释器。【没必要】

    ghostscript font是一些PostScript™字体,ghostscript解释器要用到这些字体。同时,这些字体也是ghostscript和X11共享的。【没必要】

    mpage把纯文本的文件和PostScript™文件输出到PostScript打印机上,可以在一张纸上打印多于一页的内容。【没必要,我们的服务器上没装打印机】

    rhs-printfilter包括一组打印驱动,这主要是和RedHat的pinttool结合使用的。。【没必要,我们的服务器上没装打印机】

    Applications/System:

    arpwatch包括arpwatch和arpsnmp两个程序。arpwatch和arpsnmp都是网络监控程序。都是用来监控以太网和FDDI网络流量并且建立以太网网址(物理地址)和IP地址之间对应关系的数据库,如果两者的对应关系发生变化了,会自动用email报告。【没必要】

    bind-utils包括一套工具用来查询DNS(域名服务器)以获得Internet上主机的信息。【在后面的章节我们会自己编译】

    knfsd-clients包括showmount程序。showmount查询远程主机的mount daemon以获取远程主机上的NFS信息。【安全隐患】

    procinfo命令可以从/proc(Linux内核虚拟出来的目录)目录获取系统信息,并用适当的格式显示在标准输出上。【没必要,我们用别的方法】

    rdate根据RFC 868协议可以从网络中的其它计算机上获取日期和时间信息。【安全隐患】

    rdist程序维护多台主机上相同文件的多个拷贝。如果可能,rdist会保留文件的owner,group,mode和mtime这些属性,而且它还可以动态的更新正在运行的程序。【安全隐患】

    ucd-snmp包括各式各样的用于UCD-SNMP网络管理的实用工具。【安全隐患,没必要】

    screen工具允许你在一个终端上,同时登录多次。screen对于使用telnet登录远程服务器或使用哑终端的用户比较有用。【没必要】

    Documentation:

    indexhtml包括一些HTML文件以及一些图片,在你成功安装RedHat Linux之后,作为浏览器的欢迎界面。【没必要】

    System Environment/Base:

    chkfontpath是简单的命令行程序,用来添加、删除和列出X Window的字体路径。【没必要】

    NIS为网络上的所有计算机提供网络信息,如:登录名、口令、家目录和组信息。(有点象NT的Domain这个概念)【安全隐患】

    System Environment/Daemons:

    XFree86-xfs是XFree86的字体服务程序。能为远程的X server提供字体。(xfs支持TrueType™字体)【没必要】

    lpr提供管理打印服务的基本工具。【没必要,我们的服务器上不装打印机】

    portmapper是一个安全工具,可以防止别人盗用NIS、NFA和其它敏感的信息。portmapper管理RPC(远程调用)连接。象NFS和NIS这些协议都要用到RPC。【没必要,安全隐患】

    pidentd包含identd。identd是用来实现RFC1413身份验证服务的。identd查询TCP/IP连接,返回用户名以及其它一些关于连接进程的信息。【没必要,网络上几乎不会要求发送端运行identd,因为很多计算机都没有安装identd而且很多人把它关掉】

    routed是路由daemon,接受RIP并且对外广播网络路由情况的RIP,这样才能维护当前的路由表。路由表对网络上的计算机是很重要的。有了路由表,计算机才能知道往哪儿发IP包。【没必要,安全隐患】

    rusers允许用户查询连接在本地网络的计算机上的已登录用户的信息。rusers命令的输出格式很像who命令,但是列出的是一组或所有局域网上计算机的登录用户信息。【安全隐患】

    rwho命令的输出格式也很像who命令,不过它可以显示那些运行rwho daemon的本地网上的计算机的登录用户信息。【安全隐患】

    tftp提供TFTP协议的用户界面,允许用户上传和下传远程计算机上的文件。TFTP(Trivial File Transfer)协议通常用在启动无盘工作站。【安全隐患,没有必要】

    ucd-snmp提供对SNMP协议的支持。SNMP(Simple Network Management Protocol)是一个网络管理协议。【安全隐患,没有必要】

    System Environment/Libraries:

    XFree86-libs包含X程序运行所需要的共享库,这些共享库统一放在一个软件包里是为了减少磁盘空间。(X Window的Client/Server结构,允许本机不装X Server而运行X程序—也就是X客户。如果想要运行X程序,在本机上就要装这个库)。【没有必要,我们不打算使用X程序】

    libpng是用来处理PNG(Portable Network Graphics)图形文件的函数库。PNG是类似GIF的位图文件格式。【没有必要】

    User Interface/X:

    XFree86-75dpi-fonts是用于X Window的75dpi字体。

    uwr-fonts是免费的35种标准PostScript™字体。主要用于ghostscript。【没有必要】

    下面安装程序开始格式化分区了,格式化完成之后,开始安装软件包。

    怎样使用rpm命令
    这一节主要介绍如何使用rpm命令在Linux系统上安装、卸载、升级、查询、列出清单、检查和编译RPM软件包。

    l 安装RPM包:

    [root@deep]# rpm -ivh foo-1.0-2.i386.rpm

    RPM包的文件名的含义是这样的:比如,foo-1.0-2.i386.rpm,软件包的名字是foo,版本1.0,发布号2,适用于i386体系结构。

    l 卸载RPM包:

    [root@deep]# rpm -e foo

    注意:用软件包的名字(foo)而不是文件名(foo-1.0-2)。

    l 升级RPM包:

    [root@deep]# rpm -Uvh foo-1.0-2.i386.rpm

    这个命令自动卸载旧的foo软件包,再安装新的。通常都是用“rpm –Uvh”来安装软件包,因为即使没有安装过旧版本的软件,它能正常运行,不受丝毫影响。

    l 查询RPM包:

    [root@deep]# rpm -q foo

    这个命令显示已安装的软件包的名字、版本、发布号。同时,这个命令还可以用来查看软件包是否安装。

    l 显示软件包信息:

    [root@deep]# rpm -qi foo

    这个命令显示软件包的信息,包括:名字,版本以及软件的描述。

    l 显示软件包中的文件:

    [root@deep]# rpm -ql foo

    列出RPM包中文件的清单。

    l 检查软件包的签名:

    [root@deep]# rpm --checksig foo

    这个命令用来检查软件包的PGP签名,以确保软件包的完整性以及没有被别人改动过。PGP的配置信息必须从配置文件中读入。在把软件包安装到系统中之前,要用这个命令先检查一下软件包。使用这个命令要求你先安装GnuPG或pgp。

    l 用以源代码发布的RPM包来安装软件:

    [root@deep]# rpm -ivh --rebuild foo.src.rpm

    这个命令会编译“foo”这个软件包,在“/usr/src/redhat/RPMS/i386/”目录下生成二进制的RPM包。然后,你就可以用上面介绍的命令,正常地安装软件包了。

    启动和停止daemon服务
    init是内核在引导的时候运行的程序。它负责管理那些在引导的时候要启动的进程。这些进程包括:Apache daemon、网络daemon和其它你想在引导时运行的进程。

    那么init是怎么启动和停止服务呢?每一个启动脚本都有可以接受一个参数,参数的值为:“start”或“stop”。这些脚本在“/etc/rc.d/init.d/”目录下。你也可以手工运行这些脚本,用类似下面的命令:

    例如:

    l 在Linux上手工启动httpd Web服务器。

    [root@deep]# /etc/rc.d/init.d/httpd start

    l 停止httpd Web服务器

    [root@deep]# /etc/rc.d/init.d/httpd stop

    可以在“/etc/rc.d/init.d/”目录下查看一下有什么服务,然后,用参数“start”或“stop”,启动或停止服务。

    安装完服务器之后必须卸载的软件
    RedHat Linux在默认情况下会安装一些预置的软件,而且在安装的过程中,不能够选择不安装。因此,必须在安装完成之后卸载下面这些软件:

    pump
    apmd
    isapnptools
    redhat-logos

    mt-st
    kernel-pcmcia-cs
    setserial
    redhat-release

    eject
    linuxconf
    kudzu
    gd

    bc
    getty_ps
    raidtools
    pciutils

    mailcap
    setconsole
    gnupg


    用下面的rpm命令卸载这些软件:

    [root@deep]# rpm -e softwarenames

    softwarename在这里指的是软件包的名字,如:foo。

    apmd、kudzu和sendmail是daemon进程,在卸载它们之前最好先停止这些进程。

    停止这些进程用如下的命令:

    [root@deep]# /etc/rc.d/init.d/apmd stop
    [root@deep]# /etc/rc.d/init.d/sendmail stop
    [root@deep]# /etc/rc.d/init.d/kudzu stop

    现在你可以象卸载其它程序那样卸载它们,步骤如下:

    第一步

    卸载这些软件包。

    [root@deep]# rpm -e pump mt-st eject bc mailcap apmd kernel-pcmcia-cs linuxconf getty_ps setconsole isapnptools setserial kudzu raidtools gnupg redhat-logos redhat-release gd pciutils

    第二步

    手工删除linux.conf-installed文件。

    [root@deep]# rm -f /etc/conf.linuxconf-installed

    注意:这是和linuxconf程序相关的的配置文件,必须手工删除。

    如果你有IDE硬盘,hdparm程序是必须要的,所以一定要保留下来。否则,你可以把它从硬盘中卸载掉。

    kdbconfig、mouseconfig和timeconfig是用来设置键盘类型、鼠标类型和时区的。在这些都设置好之后,就很少有机会再用到它们了。所以,可以把它们卸载掉。等需要改变键盘、鼠标和时区的时候,可以再从CD-ROM用rpm命令安装。

    sendmail、procmail和mailx在通常情况下是必须要的。因为服务器上运行的各种各样的服务会用这些程序发消息给root用户,以建立系统日志(syslog)。

    sendmail是一个强大的邮件传送代理(Mail Transport Agent,简称MTA),可以把邮件从一台计算机发送到另一台计算机。它实际上所起的作用就是通过网络或Internet把email传送到email的目的地。sendmail有很多不同的配置方式:可以做为一个把邮件转给邮件集中服务器(Mail Hub Server)的内部邮件服务器,也可以做为单独的mail服务器,或者做为网络上所有sendmail服务器的中央邮件集中服务器(Central Mail Hub Server)。因此,可以根据需要配置不同的sendmail服务器。所以,你要先把sendmail卸载掉,参考本书sendmail的配置和安装的相关章节,根据需要建立自己的sendmail服务器。

    sendmail并不是自己处理邮件的分发,它是通过运行其它程序来完成这项工作。procmail是RedHat Linux用于本地邮件分发的分发代理(delivery agent)。因此,procmail只要装在中央邮件集中服务器(Central Mail Hub Server)上就行了。所以,没有必要在内部所有运行sendmail服务的计算机上都安装procmail程序。因为,这些内部的计算机会通过“/bin/mail”或sendmail把邮件转发到中央邮件集中服务器上。

    Pump DHCP(Dynamic Host Configuration Protocol)和BOOTP(Boot Protocol)协议允许在IP网络上的设备,从服务器上获取它们的网络配置信息(IP地址、子网掩码、广播地址,等等)。【没有必要】

    mt-st软件包包括mt和st磁带机驱动管理程序。mt(用于磁性磁带驱动器(magnetic tape drivers))和st(用于SCSI磁带驱动器)可以控制磁带的回卷、弹出、跳过文件或块以及其它。【没有必要】

    eject程序允许用户用软件弹出可移动的介质,如:CD-ROM、软盘以及Jaz或Zip盘。【没有必要】

    bc软件包包括:bc和dc两个应用程序,bc是一种非常精确的用于处理算术运算的语言。dc是基于堆栈的交互式计算器,是用在文本模式下的。【没有必要】

    mailcap文件是用于metamail程序的。metamail通过读mailcap文件来确定怎么显示非文本的和多媒体的邮件信息。【没有必要】

    apmd是高级能源管理(Advanced Power Management)daemon和实用工具。它可以监控笔记本电脑的电池使用情况。当电池电压过低的时候,它会给出警告。【没有必要】

    所有支持PCMCIA的笔记本电脑都要用到kernel-pcmcia-cs软件包。PCMCIA卡是很小的卡片,可以是SCSI卡或是modem。【没有必要】

    linuxconf是非常好的系统配置工具。linuxconf提供四种界面供你选择:命令行、文本菜单、X Window的图形界面和基于Web的界面。【没有必要,有bug的程序】

    getty_ps软件包包括getty和uugetty两个程序,这两个程序是RedHat Linux系统中实现进程登录的基本程序。getty和uugetty是用于接受控制台或终端的登录请求。【没有必要】

    setconsole是基本的系统工具,用在为一个新的控制台创建/etc/inittab、/dev/systty和/dev/console文件。控制台可以是本地的终端(直接通过显示卡连接到系统上)或是通过串口连接的控制台。【没有必要】

    ispnptools软件包包括用于配置ISA接口的即插即用(Plug-and-Play)卡,符合PnP ISA Specification 1.0a标准。【没有必要】

    kudzu是系统引导的时候运行的硬件探测程序,可以检测到哪些硬件从系统中删除或添加到系统中。【没有必要】

    raidtools软件包包括在Linux系统中建立和维护软件RAID(磁盘阵列,用于容错和提高性能,需要两个以上的磁盘)。【取决于你用不用RAID】

    GnuPG是GNU的数据通讯和存储的安全工具。它可以用来加密数据和创建数字签名。包括高级的密匙管理工具,而且遵循RFC2440中描述的OpenPGP的国际标准。【我们会在后面的章节介绍如何自己编译】

    redhat-logos包括RedHat “Shawdow Man”和RPM的标志图片。【没有必要】

    redhat-release是RedHat Linux的发行文件。【没有必要】

    gd是处理gif文件的图形函数库。gd可以用于显示图像(线条、弧、文本、多种颜色、从其它图像中剪切和粘贴、填充),并把结果保存为gif文件。【没有必要】

    pciutils包括各种各样的工具,用于检测和设置连接到PCI总线上的设备。【我们用其它的方法】

    kbdconfig是文本模式的程序,提供了设置键盘映像的一个简单的界面。【没有必要】

    mousconfig是基于文本模式的鼠标设置程序。mouseconfig在RedHat Linux系统中,创建配置和使用鼠标所需要的文件和链接。【没有必要】

    timeconfig包括:timeconfig和setclock。timeconfig提供了一个简单的文本模式的工具,用来配置/etc/sysconfig/clock和/etc/localtime中的时间参数。【没有必要】

    procmail是RedHat Linux用于处理本地邮件发送的程序。除了发送邮件,procmail还可以用于自动过滤、排序和其它处理mail的工作。而且,procmail是SmartList邮件列表程序的基础。【只用在邮件集中服务器上】

    安装完服务器之后必须安装的软件
    为了可以在你的服务器上编译软件,你还必须安装下面的RPM软件包。这部分安装是非常重要的,要求你安装所有如下所述的软件包。所有的这些软件都在RedHat 6.1第一张光盘的“/RedHat/RPMS”目录下,而且都是使你的Linux系统能够编译程序所必须要的。

    l 第一步

    首先,先mount 上CD-ROM驱动器,转到“RPMS”子目录下。

    mount上CD-ROM驱动器和转到RPMS目录用下面的命令:

    [root@deep]# mount /dev/cdrom /mnt/cdrom/
    [root@deep]# cd /mnt/cdrom/RedHat/RPMS/

    下面是我们需要安装的软件包,只有安装了这些软件包才在Linux系统上编译程序。请记住,这不过是能够编译“.tar.gz”软件最少必须的软件包。有一些软件的编译可能还需要用到别的特殊的软件包。这些特殊的软件包在RedHat的光盘中都能找到。所以,编译程序的时候,如果出错了,可以先看看需要编译的软件包的README文件。

    autoconf-2.13-5.noarch.rpm
    m4-1.4-12.i386.rpm
    automake-1.4-5.noarch.rpm
    dev86-0.14.9-1.i386.rpm
    bison-1.28-1.i386.rpm
    byacc-1.9-11.i386.rpm
    cdecl-2.5-9.i386.rpm
    cpp-1.1.2-24.i386.rpm
    cproto-4.6-2.i386.rpm
    ctags-3.2-1.i386.rpm
    egcs-1.1.2-24.i386.rpm
    ElectricFence-2.1-1.i386.rpm
    flex-2.5.4a-7.i386.rpm
    gdb-4.18-4.i386.rpm
    kernel-headers-2.2.12-20.i386.rpm
    glibc-devel-2.1.2-11.i386.rpm
    make-3.77-6.i386.rpm
    patch-2.5-9.i386.rpm

    注意:最好把这些软件一起全装了,省得在安装这些RPM包的时候总出现一些相关出错的信息。

    l 第二步

    安装所有这些软件只要用一个命令就够了。这个命令是:

    [root@deep]# rpm -Uvh autoconf-2.13-5.noarch.rpm m4-1.4-12.i386.rpm automake-1.4-5.noarch.rpm dev86-0.14.9-1.i386.rpm bison-1.28-1.i386.rpm byacc-1.9-11.i386.rpm cdecl-2.5-9.i386.rpm cpp-1.1.2-24.i386.rpm cproto-4.6-2.i386.rpm ctags-3.2-1.i386.rpm egcs-1.1.2-24.i386.rpm ElectricFence-2.1-1.i386.rpm flex-2.5.4a-7.i386.rpm gdb-4.18-4.i386.rpm kernel-headers-2.2.12-20.i386.rpm glibc-devel-2.1.2-11.i386.rpm make-3.77-6.i386.rpm patch-2.5-9.i386.rpm

    l 第三步

    为了让所有的改变都生效,必须退出再重新登录。退出的命令是:

    [root@deep]# exit

    安装和编译完在服务器上需要的所有软件之后,最好把上面几步安装的软件包都卸掉,除非有什么特殊的需要。这样做,其中一个原因是:如果黑客成功地入侵了你的服务器,他也不可能用上面这些软件来编译软件或改变二进制程序。同时,把它们卸载掉也释放了很多磁盘空间,这样当进行系统的安全性和一致性检查的时候,可以加快扫描所有文件的时间(文件少了)。

    当然,有很多建立服务器的方法和策略,我在这本书中介绍的不过是我自己的观点,我的观点如下:

    第一:每台服务器最好只安排一个特定的任务。你不应该把所有的服务都放在一台服务器上,否则,这台服务器的速度会受到影响(系统的资源要同时分给很多个进程),而且会降低系统的安全(在同一台服务器上运行太多的服务,黑客就有更多的机会找到系统的安全漏洞)。

    第二:不同的服务器完成不同的任务。这样有利于简化管理(你可以清楚地知道每台服务器具体的用途、运行哪些服务、客户计算机(client)可以访问哪些端口,你也可以知道在日志文件中会看到什么,等等),而且还可以更好更灵活地控制每台服务器(专门用于邮件、Web、数据库、开发、备份,等等)。

    举一个例子,一台专门用作开发和测试的服务器,就没有必要象上面介绍的那样,每一次装软件之前都要先装编译器,装完软件之后又把编译器卸掉,完全可以把编译器保留着。如果想知道更多的编译器的信息,请参考第八章《编译器的功用》。

    服务器上已经安装的程序
    因为我们选择定制安装我们的Linux系统, 下面是服务器上已安装的程序列表。这个列表必须和“/tmp”目录下的“install.log”文件一致,否则你就是没装全。不要忘了装全上一节《安装完服务器之后必须安装的软件》中的那些软件包,不然你编译一些程序的时候就会遇到问题。

    Installing setup.
    Installing filesystem.
    Installing basesystem.
    Installing ldconfig.
    Installing glibc.
    Installing shadow-utils.
    Installing mktemp.
    Installing termcap.
    Installing libtermcap.
    Installing bash.
    Installing MAKEDEV.
    Installing SysVinit.
    Installing XFree86-SVGA.
    Installing chkconfig.
    Installing apmd.
    Installing arpwatch.
    Installing ncurses.
    Installing info.
    Installing fileutils.
    Installing grep.
    Installing ash.
    Installing at.
    Installing authconfig.
    Installing bc.
    Installing bdflush.
    Installing binutils.
    Installing bzip2.
    Installing sed.
    Installing console-tools.
    Installing e2fsprogs.
    Installing rmt.
    Installing cpio.
    Installing cracklib.
    Installing cracklib-dicts.
    Installing crontabs.
    Installing textutils.
    Installing dev.
    Installing diffutils.
    Installing ed.
    Installing eject.
    Installing etcskel.
    Installing file.
    Installing findutils.
    Installing gawk.
    Installing gd.
    Installing gdbm.
    Installing getty_ps.
    Installing glib.
    Installing gmp.
    Installing gnupg.
    Installing gpm.
    Installing groff.
    Installing gzip.
    Installing hdparm.
    Installing initscripts.
    Installing ipchains.
    Installing isapnptools.
    Installing kbdconfig.
    Installing kernel.
    Installing kernel-pcmcia-cs.
    Installing kudzu.
    Installing ld.so.
    Installing less.
    Installing libc.
    Installing libstdc++.
    Installing lilo.
    Installing pwdb.
    Installing pam.
    Installing sh-utils.
    Installing redhat-release.
    Installing linuxconf.
    Installing logrotate.
    Installing losetup.
    Installing lsof.
    Installing mailcap.
    Installing mailx.
    Installing man.
    Installing mingetty.
    Installing mkbootdisk.
    Installing mkinitrd.
    Installing modutils.
    Installing mount.
    Installing mouseconfig.
    Installing mt-st.
    Installing ncompress.
    Installing net-tools.
    Installing netkit-base.
    Installing newt.
    Installing ntsysv.
    Installing passwd.
    Installing pciutils.
    Installing perl.
    Installing procmail.
    Installing procps.
    Installing psmisc.
    Installing pump.
    Installing python.
    Installing quota.
    Installing raidtools.
    Installing readline.
    Installing redhat-logos.
    Installing rootfiles.
    Installing rpm.
    Installing sash.
    Installing sendmail.
    Installing setconsole.
    Installing setserial.
    Installing setuptool.
    Installing shapecfg.
    Installing slang.
    Installing slocate.
    Installing stat.
    Installing sysklogd.
    Installing tar.
    Installing tcp_wrappers.
    Installing tcpdump.
    Installing tcsh.
    Installing time.
    Installing timeconfig.
    Installing timed.
    Installing tmpwatch.
    Installing traceroute.
    Installing utempter.
    Installing util-linux.
    Installing vim-common.
    Installing vim-minimal.
    Installing vixie-cron.
    Installing which.
    Installing zlib.

    给终端加点颜色
    给终端加一点颜色,可以帮助区分目录、文件、设备、符号连接和可执行文件。我认为加上颜色可以让人少犯错误,并且可以让人感觉Linux更好用。

    编辑“profile”文件(vi /etc/profile)加入下面这些行:

    # Enable Colour ls
    eval ’dircolors /etc/DIR_COLORS –b’
    export LS_OPTIONS=’-s -F -T 0 --color=yes’

    编辑“bashrc”文件(vi /etc/bashrc),加入下面这一行:

    alias ls=’ls --color=auto’

    退出,再重新登录,与颜色相关的环境变量就设定好了。

    使软件保持最新的版本
    为了使你的软件保持最新的版本,请定期查看RedHat Linux的勘误网页:http://www.redhat.com/corp/s
    发布人:netbull 来自:LinuxAid