熟悉Linux系统安全和优化(下)

发表于:2007-07-01来源:作者:点击数: 标签:
rimmer·Gerhard Mourani 部件安装(选择软件包组) 上面都完成了之后,该选择安装哪些软件包了。在默认情况下, Linux 是一个强大的操作系统,可以提供很多服务。但是,这些服务大多数都是没有必要的,而且会造成 安全 隐患。 安装Linux的正确方法是:安装


rimmer·Gerhard Mourani
部件安装(选择软件包组)

上面都完成了之后,该选择安装哪些软件包了。在默认情况下,Linux是一个强大的操作系统,可以提供很多服务。但是,这些服务大多数都是没有必要的,而且会造成安全隐患。
安装Linux的正确方法是:安装一个稳定和安全的系统。首先,你只要必要的部件,也就是软件包组。通过选上“Select individual package”这个单选框,在后面的安装过程中,你可以选中或不选单独的软件包。
因为我们安装的是Linux服务器,所以没有必要安装图形界面(XFree86)。在服务器上安装图形界面意味着:更低的处理能力,更少的CPU时间,更少的内存,更多的安全问题,以及等等。图形界面一般只在工作站上使用。选择安装下面的软件包组:
* Networked Workstation
* Network Management Workstation
* 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(tm)解释器、C语言的函数库(ghostscript函数库实现了对PostScript语言的图形操作)和PDF文件的解释器。【没必要】
ghostscript font是一些PostScript(tm)字体,ghostscript解释器要用到这些字体。同时,这些字体也是ghostscript和X11共享的。【没必要】
mpage把纯文本的文件和PostScript(tm)文件输出到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(tm)字体)【没必要】
lpr提供管理打印服务的基本工具。【没必要,我们的服务器上不装打印机】
portmapper是一个安全工具,可以防止别人盗用NIS、NFA和其它敏感的信息。portmapper管理RPC(远程调用)连接。象NFS和NIS这些协议都要用到RPC。【没必要,安全隐患】
pidentd包含identd。identd是用来实现RFC1413身份验证服务的。identd查询TCP/IP连接,返回用户名以及其它一些关于连接进程的信息。【没必要,网络上几乎不会要求发送端运行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(tm)字体。主要用于ghostscript。【没有必要】

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


怎样使用rpm命令

这一节主要介绍如何使用rpm命令在Linux系统上安装、卸载、升级、查询、列出清单、检查和编译RPM软件包。
* 安装RPM包
[root@deep]# rpm -ivh foo-1.0-2.i386.rpm
RPM包的文件名的含义是这样的:比如:foo-1.0-2.i386.rpm,软件包的名字是foo,版本1.0,发布号2,适用于i386体系结构。

* 卸载RPM包
[root@deep]# rpm -e foo
注意:用软件包的名字(foo)而不是文件名(foo-1.0-2)。

* 升级RPM包
[root@deep]# rpm -Uvh foo-1.0-2.i386.rpm
这个命令自动卸载旧的foo软件包,再安装新的。通常都是用“rpm -Uvh”来安装软件包,因为即使没有安装过旧版本的软件,它能正常运行,不受丝毫影响。

* 查询RPM包
[root@deep]# rpm -q foo
这个命令显示已安装的软件包的名字、版本、发布号。同时,这个命令还可以用来查看软件包是否安装。

* 显示软件包信息
[root@deep]# rpm -qi foo
这个命令显示软件包的信息,包括:名字,版本以及软件的描述。

* 显示软件包中的文件
[root@deep]# rpm -ql foo
列出RPM包中文件的清单。

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

* 用以源代码发布的RPM包来安装软件
[root@deep]# rpm -ivh --rebuild foo.src.rpm
这个命令会编译“foo”这个软件包,在“/usr/src/redhat/RPMS/i386/”目录下生成二进制的RPM包。然后,你就可以用上面介绍的命令,正常地安装软件包了。

原文转自:http://www.ltesting.net