I n t e r n e t上任何一台计算机都是网络黑客试图攻击的对象,安全问题显得尤为重要。特别
是对于企业和教育单位的网络服务器而言,地址和服务项目的公开使得黑客的攻击有了目标
和可能利用的漏洞,例如,对于未作防范的计算机,只需要简单地通过 t e l n e t就可以知道正在
使用的L i n u x版本号,就像这样:
Red Hat Linux release 5.2 (Appolo)
Kernel 2.0.36 on an i686
L o g i n :
黑客可以利用版本的漏洞有针对性地发起攻击。特别是有些低版本的 L i n u x,其安全性漏
洞已经广为流传,黑客可以很容易地侵入。而网络服务器往往储存了大量的重要信息,或向
大量用户提供重要服务;一旦遭到破坏,后果不堪设想。所以,网站建设者更需要认真对待
有关安全方面的问题,以保证服务器的安全。
10.1 服务器安全管理
10.1.1 安全防护的主要内容
对于网站管理人员而言,日常性的服务器安全保护主要包括四方面内容:
文件存取合法性:任何黑客的入侵行为的手段和目的都可以认为是非法存取文件,这些
文件包括重要数据信息、主页页面 H T M L文件等。这是计算机安全最重要的问题,一般说来,
未被授权使用的用户进入系统,都是为了获取正当途径无法取得的资料或者进行破坏活动。
良好的口令管理(由系统管理员和用户双方配合),登录活动记录和报告,用户和网络活动的周
期检查都是防止未授权存取的关键。
用户密码和用户文件安全性:这也是计算机安全的一个重要问题,具体操作上就是防止
已授权或未授权的用户相互存取相互的重要信息。文件系统查帐、 s u登录和报告、用户意识、
加密都是防止泄密的关键。
防止用户拒绝系统的管理:这一方面的安全应由操作系统来完成。操作系统应该有能力
应付任何试图或可能对它产生破坏的用户操作,比较典型的例子是一个系统不应被一个有意
使用过多资源的用户损害(例如导致系统崩溃)。
防止丢失系统的完整性:这一方面与一个好系统管理员的实际工作 (例如定期地备份文件
系统,系统崩溃后运行f s c k检查、修复文件系统,当有新用户时,检测该用户是否可能使系统
崩溃的软件)和保持一个可靠的操作系统有关(即用户不能经常性地使系统崩溃)。
10.1.2 Linux系统的文件安全
L i n u x的文件系统是由文件和目录构成的树形结构,每个文件目录记录包括下面内容
(域):
第1 0章 服务器的安全性概述用用211
下载 * 文件名 * 文件类型
* 文件大小
* 文件创建修改时间
* 文件所有者和所有组
* 文件相关权限
任何一项内容遭受未授权的修改,文件安全性都遭到破坏。保护文件系统的安全性,应
该从以下几个方面入手。
1. 文件相关权限的设置
L i n u x的文件权限决定了用户对该文件的操作能力和操作允许范围。下面这一段是在某个
L i n u x用户目录的文件列表(ls -l),注意,其中第一栏表示了文件权限。
d r w x r w x r - x 3 b l u o b l u o 1 0 2 4 Apr 7 17:07 php/
d r w x r - x r - x 1 6 b l u o b l u o 4 0 9 6 Apr 8 12:46 php-3.0.12/
- r w - r w - r - - 1 b l u o b l u o 1 8 5 7 1 6 5 Apr 8 12:37 php-3.0.12.tar.gz
d r w x r - x r - x 1 2 b l u o b l u o 4 0 9 6 Apr 8 11:51 php-4.0b1/
- r w - r w - r - - 1 b l u o b l u o 1 3 0 4 4 1 5 Apr 7 12:11 php-4.0b1.tar.gz
- r w - r - - r - - 1 b l u o b l u o 2 0 2 3 4 2 4 Dec 28 21:10 php.pdf
- r w - r - - r - - 1 b l u o b l u o 4 4 4 0 9 Mar 16 22:34 pre_video.jpg
d r w x r - x r - x 3 b l u o b l u o 1 0 2 4 Apr 10 11:30 public_html/
文件权限通过设置文件权限标志位实现。标志位由十位构成。第一位是文件类型,一般
文件该位为“ -”,目录该位为“ d”(如上面的1、2、4、8行)。余下的九位三位一组,第二
位到第四位依次为文件所有者对此文件的可读、可写、可执行权利标志位;第五到第七位分
别为与该用户同组的用户对此文件的可读、可写、可执行的权利标志位:第八到第十位分别
为其他用户对此文件的可读、可写、可执行的权利标志位。比如:上面的第一个目录中,
“d r w x r w x r- x”就表示这是一个目录,文件所有者 (用户b l u o )可以对文件进行任何操作 (读、
写、执行),同组用户可读、写、执行,其他用户可读和执行。而“ - r w - r- - r- -”表示普通文
件,文件所有者可读、写,其他用户只可读此文件。当一些关键的系统文件的属性被错误设
置时,就会导致不可挽回的破坏。对文件属性一定要非常小心,否则可能导致致命的安全漏
洞。
2. SUID和SGID程序
与文件有关的还有两个附加权限位 S U I D和S G I D。S U I D是S e t U s e r I D (设置用户标识)的缩
写,S G I D是S e t G r o u p I D (设置组标识)的缩写。带有这种权限的程序运行时就会带来很大的安
全性漏洞。因为当运行一个 S U I D程序时,它的有效U I D被设置为拥有该程序的用户I D,而不
管实际上是哪个用户在运行,S G I D与此类似。所以虽然S U I D程序是必需的,但应该尽量减少
使用机会,并且要尽最大努力保证此程序安全。作为管理员还应该经常使用 f i n d命令来浏览自
己的文件系统以检查新的S U I D程序,详细语法请参考文件权限章节中的相关内容。
10.1.3 用户访问安全
1. 口令安全
每个L i n u x的用户都拥有一个帐号,通过登录到这个帐号才能有限制地使用系统。而保护
自身的文件安全的惟一屏障就是口令,一旦这道屏障被突破,此用户及整个系统的安全便无
212使用L i n u x网站建设技术指南
下载 法得到保证。
从安全角度看,口令最好是随机产生的,并且不断变换的。但实际上任何一个用户都不
愿意成天花费时间去记忆刚刚更换过的口令,这是一对矛盾。所以用户应该做到尽可能保
持频繁的口令更换频率,并且聪明地选择自己的口令保证其安全。切忌选用与自己有关的
一些数字、名词、住址、配偶名称、宠物名称、电话号码等,更不要选用字典中的词汇作
为口令。因为当今使用的很多破解口令程序都是通过一定的加密算法将字典中的词汇一个
一个与口令作比较,以期闯入系统。另外从概率角度讲,口令位数每增加一位,被破解的
可能性就会相差很多数量级,因此在系统允许的范围内尽可能长地设置自己的口令实为明
智之举。
那么怎么选择一个好口令呢?这里推荐三种常用方法:一是选择一个自己比较熟悉的短
语或者是谚语,取出每个单词或者某短句中每个汉字对应的拼音的第一或者某一位组合起来
形成口令,这样一来形成的口令接近于随机字符序列,但同时也容易记忆。比如:好好学习
天天向上。得到的口令就是:h h x x t t x s。二是选择两个较短的单词,其间用符号或者某特定的
字母加以连接,比如:d e a r- u s e r- l i n u x。还有一种方法是采用一个故意拼写错误的单词,比如:
L i m u x;或者使用故意加入语法错误的短语,比如: a - g i r l s。这样产生的口令被破解的机会就
小多了。
最后最关键的是用户应当牢牢记住自己的口令,最好不要把口令写在任何地方,只有自
己的脑袋是保险的。如果实在是对记忆能力缺乏信心,那么也建议将口令藏在某个不起眼的
短句中。比如:口令是b o x!H e r e,那么将D o n ’t touch the top of box!H e r e!写到一张纸条上,
贴在电源上就显得非常自然。
2. 登录安全
如果用户口令得到了良好的保证,那么紧接着的第二部分就是登录和帐号的安全性问题。
这便涉及在系统中查找可能有安全问题的帐号并及时处理。
首先很多黑客是使用没有口令的帐号进入计算机系统的,作为管理员应该经常检查口令
文件,查找这种帐号,一旦发现,应该立刻通知用户或者禁止其使用。
其次对于不使用的帐号应该及时删除,使之不至于成为黑客进入的通道。即使不删除此
帐号,至少也应该在口令字段写入符号,暂时停止此帐号的使用。
再次,对于几个标准系统帐号,一般情况下应该禁止这些帐号的使用。因为这些帐号几
乎是每个非法闯入者的目标,即使使用再好的口令,也有被破解的可能,所以最安全的办法
就是禁止其使用。还有一些软件在安装过程中会自动在系统中创建帐号,所以一定要注意禁
止这些帐号的使用。
对于匿名访问者帐号 ( g u e s t ),一般情况下是不建议使用的。这种帐号是为来访者提供的
帐号,使他们能够使用本机上的某些资源,获得部分权限。但同时由于 g u e s t帐号一般不设密
码,所以也是进入系统的捷径。黑客进入系统以后可以进一步获得更高的权限,可能导致安
全性灾难。黑客将尽力取得r o o t权限,同时以此为基点进攻网络上其他的机器,这使得追查其
来源更加不容易。所以尽可能不要使用g u e s t帐号。
系统中还有几个命令帐号,也就是运行给定命令然后退出。这些帐号没有口令,虽然它
们并不运行s h e l l,但是从安全方面也是极其危险的。比如使用 f i n g e r登录时,f i n g e r程序便运
行起来,显示该系统用户,显示后结束运行。类似的帐号还有 s y n c和d a t e。这种帐号可能会泄
第1 0章 服务器的安全性概述用用213
下载 露系统的有关信息。系统安全实际上是由登录帐号和对应口令共同保证的,如果入侵者获得
了系统用户的帐号,那他已经成功了一半。
最后是关于组帐号的问题。组帐号是供多人使用的同一个帐号。这对系统安全是极为不
利的。因为如果组帐号被人闯入,那么寻找泄露口令的用户是非常困难的。所以建议创建帐
号时遵循“一个帐号一个用户”的原则。
10.1.4 日常安全注意事项
1) 删除系统所有默认的帐号和密码,这些帐号往往是黑客攻击时的第一目标,特别注意
保护r o o t用户密码。
2) 在用户合法性得到验证前不要显示公司题头、在线帮助以及其他信息,使黑客试图侵
入前获得的信息尽可能少。
3) 废除“黑客”可以攻击系统的所有不在使用的网络服务,如匿名 f t p等,每一项网络服
务程序都包括这样那样的漏洞,启用的服务越多,系统安全漏洞也就越多。
4) 使用6到8位的字母数字混合的密码,并经常更换密码。可以设置用户密码的安全等级
和有效期限,注意,安全等级过高的系统,用户密码的设置会非常麻烦。
5) 限制用户尝试登录到系统的次数,防止黑客通过“穷举法”破译密码。在密码输入错
误次数达到某限制值时,帐号将被锁定。
6) 记录违反安全性的情况并对安全记录进行复查。
7) 对于重要信息,上网传输前要先进行加密。现在已经有了很多的加密传输协议,并且
有了相关标准,可以根据需要选用。
8) 重视专家提出的建议,安装他们推荐的系统“补丁”。各种版本的L i n u x都在不断地推
出各种“补丁”程序,它们有的修正系统 B U G,有的提供功能扩展,还有的修改系统安全漏
洞,这就是安全管理所需要的内容。
9) 限制不需密码即可访问的主机文件。
10) 修改网络配置文件,以便将来自外部的 T C P连接限制到最少数量的端口。不允许诸如
t f t p、s u n r p c、p r i n t e r、r l o g i n或r e x e c之类的协议。
11) 用u p a s代替s e n d m a i l。s e n d m a i l有太多已知漏洞,很难修补完全。
12) 去掉对操作并非至关重要又极少使用的程序。
13) 使用c h m o d将所有系统目录变更为 7 11模式。这样,攻击者们将无法看到它们当中有
什么东西,而用户仍可执行。
14) 只要可能,就将磁盘安装为只读模式。其实,仅有少数目录需读写状态。
15) 将系统软件升级为最新版本。老版本可能已被研究并被成功攻击,其安全漏洞早已广
为流传,最新版本一般包括了这些问题的补丁,高版本总是更加稳定可靠的。
10.1.5 服务器被侵入后的处理
虽然采取了很多安全措施,但是还是有可能被侵入。一旦服务器遭到网络黑客的攻击,
应该及时采取下述行动:
首先设法使服务器进入安全状态,即将入侵者清理出系统,如果实在没有办法,就断开
所有网络连接(拔掉网线或者关闭调制解调器)。
214使用L i n u x网站建设技术指南
下载 不要急于恢复系统,那样可能覆盖掉黑客入侵的行动记录和留下的蛛丝马迹,而这些东
西是将来反黑客的重要线索。一定要设法寻找出入侵者是如何进入的,然后弥补好这个漏洞
以免被再次侵入。如果不能弥补,宁愿关闭掉该项服务,否则即有可能继续遭到攻击。另外
要特别注意用户文件和口令,防止黑客为下次攻击留下“后门”。
然后要通过系统备份来恢复被损坏或者删除的文件,这是必须要做的,系统恢复以后就
可以重新网络开始服务了。
最后,如果入侵继续发生,则求救于本地的其他管理员,寻求技术支持。有时甚至需要
通过法律手段来保护网站安全。
10.2 防火墙、I P伪装和代理服务器 10.2.1 什么是防火墙 防火墙是汽车中一个部件的名称。在汽车中,利用防火墙把乘客和引擎隔开,汽车引擎
一旦着火,防火墙不但能保护乘客安全,同时还能让司机继续控制引擎。在电脑中,防火墙
是一种装置,可使个别网络不受公共部分(整个I n t e r n e t )的影响。
本文将防火墙电脑称为“防火墙”,它能同时连接受到保护的局域网络和I n t e r n e t两端。这
样受到保护的网络无法连接到 I n t e r n e t,I n t e r n e t也无法连接到受到保护的网络。如果要从受到
保护的网络内部接到I n t e r n e t网络,就得t e l n e t到防火墙,然后从防火墙连上 I n t e r n e t。最简单
的防火墙是dual homed系统(具有两个网络联结的系统)。只要配置一台L i n u x主机(配置时将I P
forwarding/gatewaying 设为O F F ),并为每人设一帐户,他们就能登录这一主机,使用 t e l n e t、
F T P,阅读电子邮件和使用所有这台主机提供的任何其他服务。根据这项配置,这一网络中惟
一能与外界联系的电脑便是这个防火墙。
Linux 2.2.x内核用i p c h a i n s代替了原来2 . 0内核中的i p f w a d m。i p c h a i n s较之以前的i p f w a d m
语法变动很大,如果想了解更多的命令和语法,可以参考 ipchains howto (http://www. h n c d
. g o v. c n / l i n u x ),或者运行ipchains -help。
10.2.2 防火墙分类
1. IP过滤防火墙 I P过滤防火墙在I P层工作。它依据起点、终点、串口号和每一数据包中所含的数据包种
类信息控制数据包的流动。这种防火墙非常安全,但是缺少有用的登录记录。它阻挡别人进
入个别网络,但不能记录何人进入公共系统,或何人从内部进入网际网。过滤防火墙是绝对
性的过滤系统。即使要让外界的一些人进入私有服务器,用户也无法让每一个人进入服务器。
L i n u x从1 . 3 . x版开始就在内核中包含了数据包过滤软件。
2. 代理服务器 代理服务器允许通过防火墙间接进入网际网。最好的例子是 t e l n e t到系统,然后从该处再
t e l n e t到另一个系统。在有代理服务器的系统中,这项工作就完全自动完成。利用客户端软件 连接代理服务器后,代理服务器启动它的客户端软件 (代理),然后传回数据。由于代理服务器
重复所有通信,因此能够记录所有进行的工作。只要配置正确,代理服务器就绝对安全,这
是它最可取之处。由于没有直接的I P通路,它阻挡任何人进入。
第1 0章 服务器的安全性概述用用215
下载 10.2.3 Linux防火墙实现策略
一般而言,实现L i n u x防火墙功能有两种策略:
一种是首先全面禁止所有的输入/输出/转发包,然后根据需要逐步打开所要求的各项服务,
这种方式最安全,但必须全面考虑到自己所要使用的各项服务功能,不能有任何遗漏。如果
用户对要实现的某种服务和功能不能清楚地知道应该打开哪些服务和端口,就会比较麻烦。
第二种方式是首先默认打开所有的输入 /输出包,然后禁止某些危险包、 I P欺骗包、广播
包、I C M P服务类型攻击等,对于应用层服务像 h t t p、s e n d m a i l、p o p 3、f t p等,若不打算提供
某些服务,就不要启动它,或者根本就不要安装。这种方式虽然没有第一种方式更安全,但
是比较方便,容易配置,用户不必过多地了解该如何打开一种服务所需要执行的 i p c h a i n s命令
细节就能配置一个比较安全的防火墙系统。