首页>参考读物>计算机科学与技术>安全

UNIX与Internet安全实践指南(原书第3版)
作者 : Simson Garfinkel, Gene Spafford, Alan Schwartz
译者 : 王倩莉 殷海波 等
出版日期 : 2005-10-18
ISBN : 7-111-16559-4
定价 : 95.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 811
开本 : 16开
原书名 : Practical Unix & Internet Security
原出版社: O'Reilly & Associates
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

有25万的Unix系统管理员和用户认为这本经典的书的早期版本是帮助他们保护外部和内部攻击的不可缺少的参考书。这个全新的版本是一个很全面的更新,它为现在的主机安全和网络问题提供了更多必须的涵盖。在当今微机四伏的世界中,它对系统、网络、web安全有关的读者来说,是一本必备参考书。
  
  本书主要针对四种最流行的Unix系统——Solaris、Mac OS X、Linux以及FreeBSD,并包含了有关下列内容的一些新信息:PAM(可插入认证模块)、LDAP、SMB/Samba、反窃贼技术、嵌入式系统、无线和便携机问题、法律辩论、入侵检测、cbroot陷阱、电话扫描器以及防火墙、虚拟和加密文件系统、WebNFS、内核安全级别、外包、法律问题、新的Internet协议和加密算法以及其他内容。

  本书提供了一些有帮助的文字、脚本、检查单、提示以及警告信息,它是Unix系统管理员和任何需要保护他们的系统和数据免受威胁的读者的权威参考。

  “本书的以前版本已经成为实际Unix系统安全以及更多系统的权威参考,本版本的更新将会受到广泛的欢迎。本书的作者再次证实了,只有理解一些工作机理,才可以更好地使得系统变得安全。如果你使用的是Unix或Unix类似的系统,你一定需要本书。”
——Wietse Venem,TCP Wrappers、SATAN以及Posix的作者

  “当本书第一版面世的时候,这本著作立即变成经典。实际上,自从本书面世以后,它彻底击败了所有的竞争者,没有一本涵盖同样内容的书能够与它媲美。也许矛盾的是,主机安全不仅仅需要考虑,而且实际上,在如今的网络时代,它显得更加重要。本书的第三版是这类书中最好的一本书,它包含了更好理解安全以及使得系统变得安全的所有基础知识。”
——Dan Farmer,安全研究人员

图书特色

图书前言

从《UNIX安全实践》出版至今业已十一年,《UNIX & Internet 安全实践》也已出版六年,在此期间,计算机领域已经发生了巨大的变化!
  1991年,大多数美国人对Unix和Internet唯一的认识就是:1988年时它是“计算机病毒”的肆虐之地。到1996年,当本书第二版出版时,Internet的革命浪潮刚刚兴起,超过一千万的美国人在使用Internet发送电子邮件、浏览万维网甚至购物。
  今天,对世界上许多地方的人来说回忆Internet之前的时代越来越难。现在全世界大约有5亿人在使用Internet,同时更多甚或几十亿的人以某种方式被Internet所影响。在美国,对于半数以上的人口来说,使用Internet已成为他们的日常生活。我们已经看到Internet革命转变成了“.com”风暴,然后这股风暴随之破灭。不再有人会想起1988年的Internet蠕虫——在那时,大部分的Internet用户都要遭受网络蠕虫的日常攻击。
  尽管我们对网络更加依赖,但是与1991年相比,Internet的安全性并没有得到改善。相反,Internet更加不安全。在全世界,Internet上的安全事故仍然占据着报纸的头版。不幸的是,只能适应、调和这些缺陷,而不能改正它们。而后果越来越严重。例如,在本书的第二版中提到过:在一起安全事故中有2万个人的信用卡号码被人从Internet服务提供商那里偷盗出来;而在本书第三版付印之前,攻击者闯入一个为加利福尼亚州运行的系统,下载了262000个州雇员的个人信息。里面总共包括姓名、地址、社会保险号码等身份窃取所需要的所有信息。
  计算机犯罪和计算机恐怖主义的威胁仍然是一个不断增长的问题。每年计算机安全研究所(Computer Security Institute, CSI)和洛杉矶联邦调查局计算机入侵小组都要调查许多组织目前的计算机犯罪及入侵的水平。2002年的调查从美国的公司、政府机构、金融机构、医药机构以及大学中,收到了503份反馈。这次调查的结果包括:
  ●在调查之前的12个月内,90%的反馈者(主要是大公司和政府机构)检测到计算机的安全遭受了破坏。
  ●80%承认因系统安全遭破坏而蒙受损失。
  ●223家被调查者每年的经济损失合计超过45600万美元。其中17100万美元是因为机密信息被偷窃而造成,11600万美元是因为金融诈骗而在成。
  ●与传统的观点相反,内部人员的威胁比外部人员更大,74%的被调查者称他们的Internet连接经常遭受攻击,而有33%称它们的内部系统经常遭受攻击。(当然,内部人员可以通过Internet进行攻击,伪装是外部人员。)
  ●三分之一多(34%)的被调查者向执法机关报告了入侵——而在1996年是16%。

 被报告的事故包括:
  ■计算机病毒(85%)
  ■员工滥用Internet连接,例如下载色情材料或盗版软件,或发送垃圾邮件(78%)
  ■来自公司外部的入侵(40%)
  ■服务拒绝(DOS)攻击(40%)
  ■非法访问或错误使用公司的web站点(38%)
  四分之一的被调查者称他们经历过2-5次的安全事故;39%说他们经历过10次甚至更多的安全事故。据报道每家公司每年平均的财务损失超过200万美元。

  对UNIX而言,这些数字意味着什么呢?可以肯定,如今使用的大部分系统都是基于微软的Windows操作系统的。Unix及其变种肯定比Windows安全,原因我们将在本书讨论。而且,经验告诉我们,管理不善的Unix计算机与一般的Windows系统一样的危险:如果存在一个已知的缺陷,那么攻击者就可以发现它,并利用它攻击你的机器,最终接管你的计算机。在本书我们的目的是向你说明如何防止你遭受此等命运——如果你正在经受这种命运,我们的目标是告诉你如何处理它。

UNIX“安全”?
  1991年本书的第一版出版时,许多人认为“UNIX安全”这个词自相矛盾——也就是其中的两个词互相冲突,就象“巨大的小虾”或“国会的行动”。那时一个UNIX专家可以很轻松地侵入一个系统、取得系统的控制权并造成破坏,这种故事广为流传。有些人甚至无法想象一台运行UNIX的机器可以获得安全性。
  从本书的第一版出版以后,计算机世界改变了很多。现在,许多人认为UNIX是一个相对安全的操作系统,至少他们自以为是安全的。如今,全世界上百万的人和成千的公司都在使用UNIX,都没有遇到过严重的问题。虽然UNIX的设计中并没有考虑到军用的安全级别,它仍然被设计成能够抵御有限的外部攻击并且保护用户免受其他用户偶然行为或恶意行为的影响。几年来,对UNIX系统的使用和研究增强了该操作系统的安全可靠性,因为大多数的UNIX安全问题都被公诸于世并得到及时弥补。
  但是事实上,UNIX的安全性并没有随着该系统的日益流行而提高很多。在操作系统的设计和使用的相互作用中,仍然存在一些基本的缺陷。UNIX的“超级用户”一直是攻击的核心点:任何入侵者或者内部用户只要能成为UNIX的超级用户,他就可以接管系统、在系统的程序中设置陷阱、控制计算机的用户——有时用户对此甚至一无所知。
  UNIX世界的发展和改变使得我们在一些方面得到了提高,一个方面就是我们对如何保证一台计算机相对安全性的认识上有了提高。近年来,出现了一系列的工具和技术用于辅助系统管理员保证UNIX机器的安全性。另一个得以提高的方面是系统管理员对UNIX的理解水平:现在公司和其他组织较容易聘请到一个专业的系统管理员。
  安全的Unix系统与不安全的Unix系统差别很大;知识丰富并有保护系统安全动机的管理员,与没有相关知识或缺乏动机的系统管理员差别也很大。本书将在这些方面提供帮助!

这本书提供什么
  本书是一本UNIX安全的实用指南。针对用户,本书解释了计算机安全的定义,描述了用户可能会面对的一些危险,同时说明了如何保证数据的安全可靠。针对系统管理员,本书详细解释了UNIX安全机制的工作情况,说明了如何配置和管理计算机才能达到最安全的目的。任何一位读者都可以从本书中了解到一些UNIX的内部机制、UNIX的历史以及如何避免引火烧身。
  本书适合你吗?可能适合。如果你管理着一个UNIX系统,那么可以从本书中学到很多技巧来更加安全地运行你的系统。即使你只是偶尔地使用UNIX系统,你也应该阅读此书。如果你是一个UNIX的新手,你会从本书中受益,因为书中包含了对UNIX操作系统的全面概述。如果你是一个开发人员,这本书会给你一些有价值的细节,这些细节可能在其他地方很难找到——你甚至可以给你一个开发新的安全产品的灵感。
  书中汇集了一些帮助你保护计算机UNIX系统免受内部和外部威胁的有用信息。书中大多数材料是针对UNIX系统管理员的。大多数情况下,本书只给出了有关材料和需要用的命令,但并不详细解释命令的执行情况。对于某些情况,本书只是简单指出了所用命令的特征以及需要检查的文件。一个称职的系统管理员是熟悉系统中的这些命令和文件的,或者至少有可用的帮助手册。

注意你的手册
  一些人认为,一本计算机安全书中要求读者阅读自己的系统手册是一种逃避问题的做法。事实并非如此。事实上,计算机厂商不断修改软件(同时并没有对此进行通告),而书籍的新版本印刷根本就跟不上这一改变速度。如果你想要安全地运行你的机器,那么就应该花一些额外的时间来阅读系统手册,以验证本书所述的内容是否正确。还应该在运行的系统上进行实验,以确定程序能以书中所述的方式正确运行。
  因此,我们推荐每隔数月,重新通读一遍你的系统手册以保证对系统的熟悉。有时,在获得新经验之后重读系统手册会带来对系统新的领悟。另外系统手册还能让你重温一遍尚未使用过的有用特征。许多成功的系统管理员都认为每6-12个月重读一次系统手册是很重要的。

  考虑到读者中可能有一些初学者,本书中的一些关键章节写得较为详细。这样做的原因有两个:一是保证全面地解释UNIX安全中重要的概念;同时某些重要的章节能够独立成篇,独立阅读(如“文件许可”和“密码”部分)。这样读者可以根据提示直接阅读相关章节,例如 “阅读第四章学习如何设置密码” 。

本书不提供什么?
  本书不是一本UNIX手册。本书也不是一本系统管理手册——另外有一些更合适的书专门讲述这些内容 (参加附录C)。一个好的系统管理员不只需要懂得系统安全。本书可以作为教科书或是系统管理员手册的辅助读物。
附注:记住可以传阅本书或是另外买一本书来读。如果对书中页面影印发行的话,将是一种严重的侵权行为。这是一种违法行为,同时也是与安全策略相违背的!
  本书不是一本普通的计算机安全教科书——书中会尽量少说一些形式主义的话。同时,虽然本书中有一章说明了如何编写更安全的程序,但是本书不会帮助你设计新的UNIX安全机制。
  
  书中尽量避免作出下列建议:
  ●系统中标准命令的替换
  ●对内核的修改
  ●其他一些保护系统的编程实践
  这样做的原因涉及到“实用”的定义。有效的安全措施应该是普遍适用的。大多数商业系统的用户无权访问系统源码,许多用户甚至无权访问系统的编译器。而不同厂商在系统中会增加许多特殊的特征,那些替换命令的公共域资源也不可能支持这些特殊特征。如果书中建议对系统进行变更,那么这些措施就不可能在每种情况下都适用。
  还有一个问题,就是大范围变更引起的管理问题。不仅是变更本身使得系统难以维护,而且对不同地理位置不同配置下的数十种体系结构的系统甚至是不可能的。这个问题也给厂商的维护增加了困难——试想当厂商收到一个关于软件错误报告,但是该软件根本不是由厂商提供的,你说厂商该如何应对呢?
  最后,互联网上曾经张贴过许多不正确甚至是危险的程序和修补建议。而对这些,许多商业和学术系统的管理员缺乏必要的专业知识来评估这些对系统内核、体系结构或是命令的变更会对系统安全产生多大的影响。如果照常地下载并安装这些第三方提纲的补丁和程序来改善系统的安全,那么系统的全局安全最终可能变得更糟。
  因为以上这些原因,书中所使用的大多都是操作系统所提供的工具。如果有例外的地方,我们会解释原因。

第三方的安全工具
  你可以使用许多的程序、系统和其他形式的软件工具,提高计算机系统的安全。其中许多工具并不是来自你自己的公司或者你的制造商,相反,他们可能来自第三方。在最近几年,一些公司、大学、个人甚至是计算机本科生都提供第三方软件。
  当我们出版本书的第一版时,那时很少有第三方的安全工具。因为那时存在的工具都很重要,而且提供独一无二的功能,所以我们采取包容性的观点,对每个我们认为重要的工具都进行了描述。当本书第二版出版时,我们试图采取同样的方法,但是我们遇到了困难。这种工具太多了,我们的描述很快就会过时。
  在《实用Unix和Internet安全》第三版时,我们采用了根本不相同的方法。如今,这些工具不停的改朝换代,速度之快以致在书中介绍它们会完全没有实用价值。而且,许多较好的工具已经嵌入操作系统之中。因此,在本版中,绝大部分时间,我们将只讨论那些嵌入操作系统中的工具。我们不会浪费时间(和纸张)去解释如何下载和安装第三方软件或修改补丁

本书范围
  本书分为六个部分;它包括26章和5个附录:
  第一部分 计算机安全基础  简单介绍计算机安全,UNIX操作系统,以及安全策略。所含章节对用户和系统管理员均适用。
  第1章,介绍:一些基础问题,简单浏览几个基本问题:什么是计算机安全?什么是操作系统?什么是实施环境?同时本章也将介绍一些本书所使用的基本术语。
  第2章,Unix历史和演化,探索UNIX操作系统的历史,并讨论Unix的历史如何影响Unix的安全。
  第3章,策略和准则,说明建立良好的安全策略对保护系统所起到的指导作用。同时讲述了综合考虑花费、风险和相应的收益时,所必须做出的一些折衷。
第二部分 安全的组成模块 介绍UNIX主机安全的基础。所包括的章节对于系统管理员和用户同样适用。
  第4章,用户,密码和认证,本章是关于UNIX用户帐号的。它讨论了密码的用途,解释了什么样是好的密码、什么样是不好的密码,同时还说明了密码加密系统是如何使用crypt()函数工作的。
  第5章,用户、组以及超级用户,说明了如何用UNIX的组来控制对文件和设备的访问。本章还讨论了UNIX的超级用户以及特殊用户所扮演的角色。本章也介绍了可插拔认证模块系统。
  第6章,文件系统和安全,讨论UNIX文件系统的安全规定,还说明了如何控制文件的所有者、用户组成员或是计算机系统中的所有用户对文件和目录的访问权。
  第7章,密码学基础,讨论了在安全中加密和消息摘要的作用。
  第8章,服务器的物理安全,如果有人受挫于你超级安全的系统,因而决定用大锤砸碎你的计算机,会怎样?本章描述计算机及其数据所面临的物理危险,并讨论防止的办法。
  第9章,人事安全,将探讨你所雇用的人员,以及他们如何融入到整个安全计划中。
  第三部分 网络和Internet安全 本书这一部分讨论UNIX计算机与其他机器或外部网络通信的方法,以及攻击者侵入系统进行破坏的方法。因为许多攻击来自外部,这一部分对那些连入网络的计算机将非常有用。
  第10章,Modem和拨号安全,讲述了调制解调器的工作原理,并且提供了逐步的测试方法,以确定系统中是否含有潜在安全问题。
  第11章,TCP/IP网络,提供了TCP/IP网络程序如何工作的背景并描述了由此产生的安全问题。
  第12章,TCP/IP服务,讨论UNIX系统中常见的IP网络服务,以及普遍存在的问题和缺陷。
  第13章,Sun RPC,本书最短的章节之一,简单的浏览了Sun公司在80年代开发的远程过程调用(RPC)系统。RPC系统是NFS和其他一些基于网络的服务的基础。
  第14章,基于网络的认证系统,讨论了通过网络对个人进行认证的服务:NIS,NIS+,Kerberos,和LDAP。并讨论PAM系统。
  第15章,NFS,描述了Sun 的网络文件系统和Windows兼容的服务器消息块(SMB)——特别是Samba系统。
  第16章,安全编程技术,给出一些在编写软件时常见的错误。本章还给出了一些提示,有助于编写能够抵御恶意用户攻击的鲁棒性软件。这些信息在开发网络服务器时特别重要。
  第四部分,安全操作。本部分主要是面向UNIX的系统管理员。它说明了如何配置UNIX以使得系统被入侵的可能性降至最小,以及减少一个非特权用户获得超级用户权限的机会。
  第17章,保持更新,讨论下载安全补丁以及保持操作系统更新的策略。
  第18章,备份,讨论如何对系统存储文件进行备份以及为什么要进行备份。本章针对不同类型的组织结构讨论了一些备份策略。
  第19章,保护帐号,描述计算机黑客可能采用什么方式来攻击你的计算机系统。如果你知道这些“后门”并关掉它们,系统的安全就会得到改善。
  第20章,完整性管理,讲述如何监测文件系统免受非法的更改。这包括了使用信息摘要和只读磁盘,以及Tripwire工具的配置和使用。
  第21章,审计、日志和取证,说明了UNIX的日志机制。该日志机制能辅助审计对计算机系统的使用和行为。
  第五部分,处理安全事件,本部分包括了如何对一旦计算机所遭受的安全破坏进行处理。 这一部分还能够帮助系统管理员保护系统,避免授权用户错误的使用其特权。
  第22章,发现入侵,一旦发现非授权用户在使用机器,可以逐步执行本章给出的指令。
  第23章,防御威胁性程序,讨论了计算机病毒、蠕虫以及特洛伊木马和其他威胁性程序。
  第24章,拒绝服务攻击与解决办法,讲述了一个合法、授权的用户使得系统瘫痪的方式;以及如何找出谁是肇事者,对此有什么解决办法等等。
  第25章,计算机犯罪。某些情况下你所能做的只是上诉或是试图把攻击者关进监狱。本章说明了在遭受安全犯罪之后,你所能求助的合法手段,同时还解释了为什么合法的途径通常毫无帮助。本章还涉及到了连接到一个广域网如Internet的服务站点上暴露出来的新的安全问题。
  第26章,你信任谁?这一章是总结章节,本章说明在任何地方,你都必须信任某些人或事。但是,你的信任正确么?
  第六部分 附录,包括了一些有用的清单和参考资料。
  附录A,UNIX安全检查列表,逐点列出了本书中给出的许多建议。
  附录B,UNIX进程,是关于UNIX系统是如何管理进程的技术讨论。还介绍了进程的一些特殊属性,如UID、GID和SUID。
  附录C,论文资源,列出了计算机安全相关的书籍、文章和杂志。
  附录D,电子资源,简要地列举了一些UNIX可用的重要安全工具,以及在Internet上何处可以找到这些工具。
  附录E,组织机构,介绍了一些专门从事计算机安全工作的组织,它们的名字、电话号码以及地址。

哪一种UNIX系统?
  UNIX的流行所带来的一个负面作用是由多种UNIX版本的存在。现在几乎每个计算机厂商都有自己的UNIX系统。当撰写本书的第一版本时,UNIX主要有两大家族“AT&T公司的System V以及Berkeley的BSD”。许多年来,在System V和BSD之间是泾渭分明的。System V是工业和政府的宠儿,因为该系统是一个具有良好技术支持,“官方”的UNIX版本。而BSD因为它的灵活、范围以及一些额外的特征,被学术界和开发商所喜爱。
  当撰写本书的第一版本时,只有AT&T公司出售的系统可以称为Unix,因为许可限制的原因。其他厂商采用其他一些名字,比如SunOS(Sun公司)、Solaris(Sun公司),Xenix(Microsoft),HP-UX(HP),A/UX(Apple),Dynix(Sequent),OSF/1(开放软件基金会),Linux(Linus Torvalds),Ultrix(DEC公司)以及AIX(IBM)。实际上,这些Unix或类似于Unix的操作系统对该操作系统做了一些修改。其中的一些修改很小,一些很大。某些修改存在巨大的安全隐患,并且,不幸的是,许多隐患并不容易被识别出来。并不是每个厂商在生产的时候意识到了这些安全隐患。
  近些年来,Unix正在经历一个快速的发展。该操作系统的商业版本已经不存在了,出现了大量的免费版本。近些年来,安全问题显得更为重要了,现在,所有发布Unix的公司、机构和个人都声称重视安全方面的问题。只是,某些机构可能更重视而已。

本书中涉及到的Unix版本
  本书第三版中涉及到的安全问题主要同下面4种最常用的Unix版本有关:Solaris, Linux, FreeBSD, 以及 MacOS X。Solaris, Linux通常被认为是基于系统V的操作系统,而FreeBSD, 以及 MacOS X则被认为是基于BSD的系统。但是,近些年来这些代码和概念的结合使得这些差别不再有关联。许多情况下,这些系统的基本理论和命令都非常类似,我们可以简单地将它们称为Unix世界,以代表所有这些系统。在无采用统称的时候,我们将明确具体的操作系统。
  本书的某些细节同特定的Unix命令、选项和负面影响有关,并且同作者在下面这些系统上的经验有关:AT&T System V Release 3.2 以及 4.0, Berkeley Unix Release 4.3 以及 4.4, Digital Unix, FreeBSD 3.0 到 4.5, Linux (不同版本), MacOS X, NeXTSTEP 0.9 到 4.0, Solaris 2.3 到 8, SunOS 4.0 以及 4.1, 以及 Ultrix 4.0。本书的技术复审人员对于其他一些系统具有很丰富的经验,如AIX、HP-UX还有UNIX,这一点对本书也很有帮助。因为这些系统代表了目前使用的主流UNIX系统,对于用户将要接触的大多数机器来说,书中的描述已经足够了。

注意
  整本书中,我们通常用SVR4来表示System V版本4。当书中说到Sun OS,却没有指明版本号时,缺省指的是SunOS 4.1.x。当提到Solaris 不带版本号时,缺省指的是Solaris 7以及以上版本。
  我们还提到运行在Linux内核之上的操作系统,比如Linux,尽管这些操作系统包括很多重要的部件,而这些部件是由第三方编写的。(例如,自由软件基金会负责编写GNU开发工具,没有这个部分,Linux系统可能无法编译。而MIT和X Windows委员会负责X Windows系统的创建和最初开发。)
  许多UNIX的厂商修改了一些系统命令的基本工作方式,而且存在着成千上万的UNIX厂商。因此我们不会试图说明每个制造商发布的每个版本中的每种特殊特征——那样这本书就会变得拖沓冗长、难以阅读。同时因为一些厂商频繁地修改他们的系统,如果试图说明每种特征的话,本书中就会出现不正确的内容。更进一步的说,我们也不愿意介绍一些我们尚未完全测试过的系统特殊特征。不管您是一个系统管理员还是一个普通用户,您都应该仔细阅读自己特定UNIX系统所提供的参考书,确保理解真实系统提供的命令与本书所提供的命令之间的语法差异,这一点是很重要的。特别是在需要通过程序的具体输出或执行情况来验证或改进系统的安全时,这一点就尤为重要。
  通过本书,我们希望能提供一些信息来帮助用户和系统管理员改进系统的安全。我们尽力保证书中内容的准确性和完整性。但是,正如我们一开始提到的,我们不能保证本书覆盖了所有方面的所有内容;我们也不可能了解每个UNIX派生系统的每个版本中的每个修改和变化。而且,存在着如此多不同的版本,有时候很相似但是却很不相同的版本之间相互造成混淆。因此我们不能保证只要您遵循了本书的建议,系统就能永远安全;但是我们可以肯定,系统被入侵的可能性减少了。如果读者发现自己的实际经验与本书例子存在一些不同之处,请告诉我们;在将来的版本中,我们会说明这些不同。

UNIX的“安全”版本  
  随着时间流逝,一些厂商推出了UNIX的“安全”版本,通常叫做“可信UNIX”。在这些系统中,包含了各种政府标准文件中提到的一些机制、改进以及约束。这些UNIX增强版本设计目的是希望系统能运行在多层次的安全级别(Multi-Level Security ,MLS)上以及能运行在隔离工作站模式环境(Compartmented-Mode Workstation ,CMW)中——在这种环境中,设计了严格的约束条件,能防止不同安全级别下(例如秘密和绝密)的数据和代码互相混淆。在2001年,HP实验室的Chris I. Dalton和Tse Huong Choo发布了称为可信Linux的系统。国家安全局也发布了一个称为“安全增强型Linux”的Linux变种。

“自由”UNIX的许多形式
  写本书的困难之一就是存在如此众多的UNIX版本。所有版本都各不相同:有些差别小、有些差别很大。我们的问题是,即使是两个操作系统之间的微小差异,也可能导致两个系统整体安全性的截然不同。简单的修改一个文件的保护设置就可能把一个安全的系统变得漏洞百出。
  在Linux系统中,事情就更复杂了。这是因为Linux是一个无政府管理、不断变化的操作系统。现在有许多Linux的不同版本。一些版本差别不大,例如只安装了一两个补丁。而另一些版本就截然不同:内核不同、驱动程序不同以及完全不同的安全模型。
  Linux不是唯一自由的UNIX形式。在Berkeley 4.3发布之后,Berkeley计算机系统研究小组(CSRG)(以及Internet上一组志愿者)就开始开发一个最终版本——BSD4.4,该版本中完全没有AT&T的系统代码。后来,这个项目分裂为几个不同的部分,产生了三个操作系统:BSD4.4、NetBSD以及FreeBSD。现在这些操作系统各自又都有了许多不同的版本。同时,还有一些系统基于Mach系统以及使用着不同来源的类似UNIX的应用程序。
  现在,自由UNIX世界已经成为了一个旋涡。如同有几千个不同的厂商在宣传、开发商业UNIX一样。因此,如果你想安全地运行Linux、NetBSD、FreeBSD或是其他这种系统,那么你必须正确地知道在你的计算机上,运行着何种软件,这一点是很重要的。仅仅是阅读手册是不够的!可能你还需要阅读源码!你还必须确认所阅读的源码在编译后,能产生目前运行的二进制代码。
  同时请牢记,我们不可能指明(甚至不可能知道)所有可能的变化和问题,因此不要认为书中包含了系统中所有细微的差别。如果你对任何事情存在疑问的话,应该亲自检验一下。
  在安全UNIX系统中通常增加了一些附加的特征,包括访问控制列表、数据标签以及增强的审计功能。同时这些系统还取消了一些UNIX的传统特征,例如超级用户的特殊访问权限以及对一些设备文件的访问。除了这些变化以外,安全系统与标准的UNIX还是大致相同的。可信Solaris的功能仍然同Solaris类似。
  除了一些指定的政府机构以外,这种安全系统并没有得到广泛传播。在我们看来,这种系统能否被大众的接受,是值得置疑的。因为在这种系统中,许多特征仅仅在军用安全策略的环境中才有意义。而另一方面,它们的一些增强特征在商业环境中也是有用的,C2安全特征已经被大多数现代UNIX版本所采用。
  现在,在这样一个需求纷繁复杂的环境中,可信UNIX系统通常更难用于各种变化的环境、更难移植程序,同时购买以及维护系统的代价也更高。因此,我们并不打算在本书中讲述这些系统的特征。如果你拥有的是这样的系统,那么我们建议你仔细反复地阅读厂商提供的文档。

排版约定
  本书中采用如下这些约定:
  斜体
  是用来表示UNIX的文件、目录、用户、命令、组名、系统调用、密码以及URL。斜体还用来强调一些新引入的术语和概念。
  常宽
  是用来表示例子代码以及系统输出。
  斜体常宽
  是用来表示各种的输入或输出(例如:文件名)。
  粗体常宽
  是用来表示用户输入的例子。
  横线
  是用来表示由用户键入但是系统并不回显的输入示例。主要用于表示键入的密码。
  call()
  用来表示一个系统调用,而不是命令。在本书的原版中,我们用command(1)  这种形式来表示命令,用call(2)和call(3)这种形式来表示系统调用;其中的数字表示在UNIX程序员手册的第几节中介绍了该命令或调用。现在,因为不同厂商文档小节编号各不相同,因此在本书中,我们没有使用那种约定。(你可以在自己的文档目录中,查询对应的章节)。call()这一约定有助于区分crypt命令和crypt()库函数。
  %
  是UNIX的C Shell提示符。
  $
  是UNIX的Bourne Shell和Korn Shell的提示符。
  #
  是UNIX超级用户的提示符(Korn、Bourne或C Shell)。通常在需要超级用户执行的例子中,我们使用这一提示符。
  一般来说,除了要说明一些C Shell独特的地方外,例子中使用的都是Bourne或Korn Shell。
  []
  用来表示一个程序语法中可选的值(不必键入括弧自身。)
  CTRL-X或^X
  表示使用控制字符。即在键入X字符的同时按住CONTROL键。
  除非特别说明,所有的命令示例后面都会跟着回车键(RETURN)。
  注意
  本标志表示注意事项,它是附近正文的重要的插入语。
  警告
  这个标志表示与附近正文有关的警告事项。

建议与评论
  我们已经尽了最大努力检查、审核了这本书的内容。但是在你读本书时,你也许发现书中的某些描述已经发生了改变(或者是我们出了差错!)。请将你发现的错误,以及对再版的建议告诉我们,联系地址是:
O’Reilly & Associates, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
(800)998-9938(美国或加拿大)
(707)827-7000(国际或本地)
(707)829-0104(传真)
  你也可以通过电子方式联系我们。如果需要张贴邮件列表或请求目录,可以发邮件到:
info@oreilly.com
  我们为本书建立了一个站点,其中有一些例子、勘误表以及再版的计划。站点地址是:
http://www.oreilly.com/catalog/puis3/
  询问技术问题,或是发表关于本书的意见,可以发邮件到:
bookquestions@oreilly.com
  关于本书以及其他更多的信息,可以访问O’Reilly网站:
http://www.oreilly.com

致谢
  在本书的各个版本中,我们得到了许多人的帮助,在此表示感谢。在下面几节中,除包括本版的致谢外,还包括以前各版的致谢。

第三版
  对于那些与我们一起共同完成本版的人,我们表示深深的感激。特别地,感谢Paco Hope,他回答了Uinx一些版本上的有关“jail”的问题;感谢Casey Schaufler,他回答了POSIX 1003.1e的有关问题;感谢Ed Finkler,他帮助测试和解释了第16章中的随机数脚本;感谢与MIT学生信息处理委员会有关的学生们,他们回答了有关Kerberos的问题,并且感谢Venema,他回答了有关TCP Wrappers的问题。
  许多人审查了本书的部分和全部章节,并为我们提供了有帮助的反馈信息,这使得本书更为优秀。我们特别感谢Brian Carrier,Dorothy Curtis,Linda McCathy,Clifford Neuman,Gregory D. Rosenberg(N9NNO),Danny Smith,Kevin Unrue,Wietse Venema和Keith Watson。我们还要特别感谢Ricis公司的Gregg Rosenberg,感谢他快速、彻底地审查本书所有章节。所有剩余的错误都是我们自己的过失。
  我们向Debby Russell表达不尽的感谢,他是本书在O’Reilly & Associates的编辑,没有他就没有本书的出版。
第二版
  对于那些帮助我们完成本书第二版本的人,我们深怀感激。这本书、以及完成本书所需要的工作量,远远超过了我们早期的估计。在1995年1月我们开始重新撰写本书,到1996年6月,我们完成了本书。这个完成日期比我们预期的时间晚了几个月。
  首先要感谢Purdue大学计算机科学技术系以及COAST实验室的人们,他们阅读并检查了本书的早期草稿。Mark Crosbie、 Bryn Dole、 Adam Hammer、 Ivan Krsul、 Steve Lodin、 Dan Trinkle、 and Keith A以及Sam Wagstaff,他们对每个章节都提出了意见。
  感谢我们的技术审校:Fred Blonder (NASA)、 Brent Chapman (Great Circle Associates)、 Michele Crabb (NASA)、 James Ellis (CERT/CC)、 Dan Farmer (Sun)、 Eric Halil (AUSCERT)、 Doug Hosking (Systems Solutions Group)、 Tom Longstaff (CERT/CC)、 Danny Smith (AUSCERT)、 Jan Wortelboer (University of Amsterdam)、 David Waitzman (BBN)、 and Kevin Ziese (USAF)。感谢我们的作品审校,他们仔细阅读了文章,找出一些存在的问题,同时增加了一些适用于特定UNIX版本的内容。他们是C.S. Lin (HP)、 Carolyn Godfrey (HP)、 Casper Dik (Sun)、 Andreas Siegert (IBM/AIX)、 and Grant Taylor (Linux)。
  一些人检查了特定的章节。如Peter Salus检查了“介绍”;Ed Ravin(NASA Goddard Institute for Space Studies)检查了“UUCP”一章;Adam Stein 以及Matthew Howard(Cisco公司)检查了网络章节;Lincoln Stein(MIT Whitehead Institute)检查了WWW章节;Wietse Venema 检查了关于封装的章节。在此一并表示感谢。
  《基本系统管理》(O’Reilly 出版社,1995年)一书的作者Eleen Frisch——慷慨地允许我们从她的书中引用有关访问控制列表的章节。
  还要感谢O’Reilly出版社的工作人员,是他们把手稿最终整理成一个完整的作品。Debby Russell指导了本书的校对工作,同时还组织了复查。在将本书从troff格式转换成FrameMaker的格式的过程中,Mike Sierra 以及Norman Walsh提供很大的的帮助,同时他们还帮助我们管理着大量复杂的框架和SGML工具。而Nicole Gipson Arigo则出色地完成了出版工作。在整个出版过程中,Clairemarie Fisher O’Leary都提供了帮助,并管理承包商的工作。Kismet McDonough-Chan是本书的质量审查员,Cory Willing校对了手稿。Nancy Priest完成了本书的内部设计。Chris Reilley制作了一些新的插图。Edie Freedman重新设计了封面。还有Seth Maislin,他为本书制作了一个精美、好用的目录。

  感谢Gene的妻子Kathy还有他的女儿Elizabeth,感谢他们这么长时间来一直容忍我们继续“这本书”并占据了那么多的夜晚以及周末。Kathy还参与了本书的校对工作。
  在本书的第一版和第二版之间,Simson与Elisabeth C. Rosenberg结婚了。因此还必须特别感谢她对这个项目所耗费时间的理解。
第一版
  最初是O’Reilly出版社的Victor Oppenheimer、Deborah Russell以及Tim O’Reilly建议我们撰写本书的第一版。
  衷心地感谢那些为第一版手稿校稿的人、他们是:Matt Bishop(UC Davis)、Bill ChesWick、Andrew Odlyzko以及Jim Reeds(AT&T 贝尔实验室)(同时还要感谢Andrew和Brian LaMacchia,他们对早期草稿中网络安全方面的章节提出了批评)、Paul Clark(Trusted Information Systems)、Tom Christiansen(Convex Computer Corporation)、Brian Kantor(UC San Diego)、Laurie Sefton(苹果公司)、Daniel Trinkle(Purdue大学计算机科学技术系)、Beverly Ulbrich(Sun Mricrosystem公司)以及Tim O’Reilly 和Jerry Peek(O’Reilly出版社)。同时还要感谢Chuck McManis 和Hal Stern(Sun Microsystem公司),他们审阅了NFS和NIS这几个章节。还要感谢助理律师William Cook以及Mike Godwin(Electronic Frontier Foundation),他们审阅了法律方面的章节,并对此提出了意见及注解。Fnz Jntfgnss (Purdue大学)就加密一章提出了一些有用的反馈信息。  Steve Bellovin(AT&T公司)、Cliff Stoll(Smithsonian)、Bill Cook以及Dan Farmer(CERT)等人,都提供了精神上的支持以及有用的意见。还必须感谢to Jan Wortelboer、 Mike Sullivan、 John Kinyon、 Nelson Fernandez、 Mark Eichin、 Belden Menkus以及 Mark Hanson等人,他们纠正了手稿中许多的拼写错误。同样还必须感谢Barry Z.Shein(Software Tool,已故),他是一个极好的UNIX历史学家。Steven Wadlow提供了一个Lazlo Hollyfeld的指南。书中引用了Dennis Ritchie的部分内容,这些内容都来自1990暑假,我们和Simson Garfinkel进行的一次会谈。
  O’Reilly出版社中的许多人都为本书第一版本的出版立下了汗马功劳。Debby Russell校订了本书。手稿的排版工作以及出版由Rosanne Wagger 以及Kismer McDonough完成。Chris Reilley制作了书中的图片。Edie Freedman 设计了封面以及内部结构。而Ellie Cutler完成了目录的编写。
  还必须特别感谢Kathy Heaphy(Gene Spafford的妻子)以及Georgia(Gene Spafford在Purdue大学计算机科学技术系的秘书),感谢她们在本书的编写期间所提供的支持!

对计算机攻击者的警告
  在写作本书的时候,我们尽量避免使本书成为系统攻击者的一本指导手册。如果你想从本书中寻找一些如何攻击系统的技巧,那么你不必购买此书。如果你是一个计算机黑客,那么请考虑用你的精力和创造力来解决一些当前大家都面对的问题、一些更有压力的问题,而不要再给那些辛苦工作的计算机用户和管理员增加新问题了。
  如今,入侵计算机早已不需要特别的技巧或智力。现在,仅需从一些web站点上下载一些脚本,然后点击一下按钮就行了。真正需要智慧的事情是修补系统,使它可以防御外部的攻击。为了证明一个安全漏洞而入侵别人的系统,即使你只是“看看”而已,这种行为也是很危险、具有破坏性的。
  本书中的系统和帐号名字只是一个示例,他们并不代表某一个机器或用户。在此我们明确地说明,不欢迎任何人攻击作者或是出版社的计算机或是本书中提到过的系统。任何非法企图,只要可能的话我们都会诉诸法律。我们知道大多数读者不会想到这样做,因此我们为这个声明向读者道歉。

作者简介

Simson Garfinkel, Gene Spafford, Alan Schwartz:Simson Garfinkel: Simson Garfinke(CISSP)是一个新闻记者,还是其他11本书的作者,同时是Sandstorm Enterprise的创立者,他开发了很多计算机安全工具。Gene Spafford博士(CISSP)是一个享有国际名望的科学家、教授,并是普度大学CERIAS(信息保险和安全教育和研究中心)的主任。Alan Schwartz博士是伊利诺斯州大学芝加哥分校医学教育和小儿科系的临床决策副教授。

译者简介

王倩莉 殷海波 等:暂无简介

译者序

随着互联网的逐渐普及,计算机犯罪已经成为一个日益严重的问题。在互联网里,每个计算机系统都是潜在攻击的目标。几乎每个月都会有一些新闻,报道某个主要网络或是公司的计算机被某个不知名的计算机罪犯所侵入。不久前,译者的机器就曾遭到黑客攻击。UNIX作为一种广泛使用的操作系统,必然是安全问题中的一个重要因素。必须增强安全意识、学习安全知识并且积极地进行安全实践才能够提高系统的安全性。
  目前市面上有许多关于UNIX安全的书籍,但是或者偏重于深奥难懂的理论知识,或者只是介绍几种“时髦”的工具。而本书并非如此。本书的让用户对计算机安全的基本原则有一个全面而基本的了解,在此基础上说明在UNIX操作系统中,这些原则是如何应用的,实际中该遵循哪些步骤以体现这些原则,最终达到提高系统安全性的目的。例如在保护帐号一章,作者首先指出了UNIX主机系统安全的访问控制机制是基于帐号的,说明了哪些是不好的帐号,应该怎样保护root帐号;帐号中的口令是用什么算法实现加密的、强度如何,联网时对一次性口令的考虑;最后是管理者应该如何通过为用户指定帐号、限制帐号等来进行帐号的管理。本书是对UNIX安全的一个实用指南,书中给出了大量有趣的案例说明,以及大量实用的命令、程序实例,这些都有助于读者理解UNIX安全并对安全实践予以指导。
  本书既注重管理者也注重用户。对用户来说,本书解释了计算机安全的定义,描述了用户可能会面对的一些危险,同时说明了如何安全可靠地存放、使用数据。对系统管理员,本书详细解释了UNIX安全机制的工作情况,说明了如何配置和管理计算机才能达到最安全的目的。我们相信,本书不仅对系统管理员有帮助,一个普通的UNIX用户也应该阅读本书。管理员可以从本书中学到许多技巧来提高系统的安全性,而用户阅读本书,可以加深对系统中的安全设置的理解,清楚自己的责任。
  但是,本书不是一个UNIX的手册,也不是一本系统管理手册。本书只是辅助读者入门和指导管理。书中也尽量避免涉及到有关如何攻击系统的知识。
  全书由王倩莉、殷海波、励志、叶小松、邓涛等进行翻译。本书最后由李林统稿。由于时间仓促,且译者的水平有限,在翻译过程中难免会出现一些错误,请读者批评指正。



译者
2004年10月

图书目录

第一部分 计算机安全基础
第1章 介绍:一些基础问题
1.1 什么是计算机安全?
1.2 什么是操作系统?
1.3 什么是部署环境
1.4 小结
第2章 UNIX的历史及家族
2.1 UNIX的历史
2.1.1 Multics: Unix的原型
2.1.2 Unix的诞生
2.1.3 自由Unix
2.1.4 第二代商业Unix系统
2.1.5 未来会怎样
2.2 安全以及UNIX
2.2.1 用户期望
2.2.2 软件质量
2.2.3 附加功能带来的问题
2.2.4 失败的Unix安全协议:P1003.1e/2c
2.3 本书的作用
2.4 总结
第3章 策略和准则
3.1 安全需求计划
3.1.1 安全的类型
3.1.2 可信
3.2 风险评估
3.2.1 风险评估的步骤
3.2.2 复查风险
3.3 费用-效益分析以及最佳实践
3.3.1 损失费用
3.3.2 风险的概率
3.3.3 预防需要的费用
3.3.4 累加数据
3.3.5 最佳实践
3.3.6 说服管理人员
3.4 策略
3.4.1 策略的角色
3.4.2 标准
3.4.3 指南
3.4.4 开发切实可行策略时的一些关键的思想
3.5 风险管理需要常识
3.6 合规性审计
3.7 选择外包
3.7.1 制定活动计划
3.7.2 选择卖主
3.7.3 监控服务
3.7.4 关于外包的最后几句
3.8 “掩盖”会引起安全问题
3.8.1 保守秘密
3.8.2 公诸于世秘密信息
3.9 总结
第二部分 安全的组成模块
第4章 用户、密码和认证
4.1 使用用户名和密码登录
4.1.1 用户名
4.1.2 用户认证
4.1.3 密码认证
4.2 密码的维护
4.2.1 糟糕的密码:门户大开
4.2.2 Joe帐号
4.2.3 好的密码:门户紧闭
4.2.4 密码同步:多台机器上使用相同的密码
4.2.5 写下密码
4.3 Unix密码系统的实现
4.3.1 /etc/passwd文件
4.3.2 UNIX加密密码系统
4.3.3 一次性密码
4.3.4 公钥认证
4.4 网络帐号和认证系统
4.4.1 使用网络认证系统
4.4.2 查看网络数据库中的帐号
4.5 可插拔认证模块(PAM)
4.6 总结
第5章 用户、组以及超级用户
5.1 用户和组
5.1.1 /etc/passwd文件
5.1.2 用户标识符(UID)
5.1.3 组以及组标识符(GID)
5.2 超级用户(root)
5.2.1 超级用户能做什么
5.2.2 超级用户不能做什么
5.2.3 任何用户名都可以成为超级用户
5.2.4 超级用户所存在的问题
5.2.5 su命令:切换用户
5.2.6 在su命令中使用真实和有效的UID
5.2.7 成为超级用户
5.2.8 小心使用su命令
5.2.9 使用su运行脚本中的命令
5.2.10 限制su
5.2.11 su日志
5.2.12 sudo:受到限制的su
5.3 限制超级用户
5.3.1 安全终端:限制超级用户的登录地址
5.3.2 BSD的内核安全级别
5.3.3 Linux权限系统
5.4 总结
第6章 文件系统和安全
6.1 理解文件系统
6.1.1 UFS和快速文件系统
6.1.2 虚拟文件系统接口
6.1.3 当前目录以及路径
6.2 文件的属性和权限
6.2.1 使用ls命令进行浏览
6.2.2 文件的时间
6.2.3 文件权限
6.2.4 一个例子:文件权限
6.2.5 目录权限
6.2.6 chmod:改变文件权限
6.2.7 修改文件的权限
6.2.8 访问控制表
6.2.9 Umask
6.2.10 Umask命令
6.2.11 常用的umask值
6.3 SUID与SGID
6.3.1 粘附位
6.3.2 SGID以及目录中的粘附位
6.3.3 文件的SGID位(只讨论System V UNIX):强制记录加锁
6.3.4 SUID的问题
6.3.5 SUID脚本
6.3.6 找出所有的SUID以及SGID文件
6.3.7 在安装的文件系统中关闭所有的SUID以及SGID
6.4 设备文件
6.4.1 非授权的设备文件
6.5 修改文件的所有者或组
6.5.1 chown:修改文件的所有者
6.5.2 chgrp:改变文件所属的组
6.6 小结
第7章 密码学
7.1 理解密码学
7.1.1 密码学起源
7.1.2 密码学的两种用途
7.1.3 加密示例
7.1.4 加密算法和函数
7.2 对称密钥算法
7.2.1 对称加密算法的加密强度
7.2.2 对称密钥算法的密钥长度
7.2.3 一般的对称密钥算法
7.2.4 攻击对称加密算法
7.2.5 公钥算法
7.2.6 公钥算法的用途
7.2.7 攻击公钥算法
7.2.8 消息摘要函数
7.2.9 消息摘要算法的工作方式
7.2.10 消息摘要函数的用途
7.2.11 HMAC
7.2.12 攻击消息摘要函数
7.3 总结
第8章 服务器的物理安全
8.1 一种被遗忘的危险
8.1.1 物理安全计划
8.1.2 灾难恢复计划
8.1.3 其他事故
8.2 计算机硬件保护
8.2.1 避免环境危险
8.2.2 事故防范
8.2.3 控制物理接触(`physical access)
8.2.4 防止蓄意破坏公用商品连接
8.2.5 抵抗战争和恐怖行为
8.3 防止窃贼
8.3.1 理解计算机窃贼
8.3.2 便携式计算机
8.3.3 便携机恢复软件和服务
8.3.4 内存窃贼
8.3.5 加密
8.4 保护数据
8.4.1 窃听
8.4.2 保护备份
8.4.3 处置存贮介质前清理数据
8.4.4 清理打印介质
8.4.5 本地存储区保护
8.4.6 空闲终端
8.4.7 屏幕锁定程序
8.4.8 按键开关(Key Switch)
8.5 故事:失败站点的例子
8.5.1 我们的发现
8.5.2 “不可能有任何损失?”
8.6 总结
第9章 人员安全
9.1 背景检查
9.1.1 仔细调查
9.1.2 复查
9.2 工作中
9.2.1 初始培训
9.2.2 日常培训与通告
9.2.3 表现评价和监视
9.2.4 访问审计
9.2.5 特权最小化和责任分离
9.3 离职
9.4 其他人员
9.5 总结
第三部分 网络和INTERNET安全
第10章 调制解调器和拨号安全
10.1 调制解调器:工作原理
10.1.1 串口
10.1.2 RS-232串口协议
10.1.3 发起连接与应答
10.1.4 波特率和比特率
10.2 调制解调器与安全
10.2.1 标语
10.2.2 来电显示和自动号码识别
10.2.3 单向电话线
10.2.4 防止窃听
10.2.5 通过电话扫描和电话防火墙,管理未授权的调制解调器
10.3 调制解调器与UNIX
10.3.1 调制解调器与计算机挂接
10.3.2 设置UNIX设备
10.3.3 检查调制解调器
10.3.4 调制解调器和线路的物理保护
10.4 调制解调器的其他安全考虑
10.5 总结
第11章 TCP/IP网络
11.1 网络
11.1.1 Internet
11.1.2 网络和UNIX
11.2 IP:Internet协议
11.2.1 Internet地址
11.2.2 路由
11.2.3 主机名
11.2.4 包与协议
11.2.5 客户端和服务器
11.2.6 名字服务
11.3 IP安全
11.3.1 使用加密防止IP网络被窃听
11.3.2 加强攻击防御
11.3.3 防火强和物理隔离
11.3.4 改善认证
11.3.5 诱饵系统
11.4 总结
第12章 安全TCP和UDP服务
12.1 理解UNIX的Internet服务器和服务
12.1.1 /etc/services文件
12.1.2 启动服务器
12.1.3 inetd程序
12.2 控制对服务器的访问
12.2.1 TCP Wrapper中的访问控制列表
12.2.2 使用基于主机的数据包防火墙
12.3 主要的UNIX网络服务
12.3.1 echo和chargen(TCP和UDP端口7和19)
12.3.2 systat(TCP端口11)
12.3.3 FTP:文件传输协议(TCP端口20和21)
12.3.4 SSH:安全Shell(TCP端口22)
12.3.5 TELNET(TCP端口23)
12.3.6 简单邮件传输协议(SMTP)(TCP端口25)
12.3.7 TACACS和TACACS+(UDP端口49)
12.3.8 域名系统(DNS)(TCP和UDP端口53)
12.3.9 BOOTP:Bootstrap协议和DHCP:动态主机配置协议(UDP端口67 68)
12.3.10 简单文件传输协议(TFTP)(UDP端口69)
12.3.11 finger(TCP端口79)
12.3.12 超文本传输协议(HTTP,HTTPS)(TCP端口80和443)
12.3.13 POP,POPS:邮局协议和IMAP,IMAPS:Internet消息访问协议(TCP端口109、110、143、993和995)
12.3.14 Sun RPC的端口映射器(UDP和TCP端口111)
12.3.15 标识协议(TCP端口113)
12.3.16 网络新闻传输协议(NNTP)(TCP端口119)
12.3.17 网络时间协议(NTP)(TCP端口123)
12.3.18 简单网络管理协议(SNMP)(UDP端口161和162)
12.3.19 rexec(TCP端口512)
12.3.20 rlongin和rsh(TCP端口513和514)
12.3.21 路由Internet协议(RIP routed)(UDP端口520)
12.3.22 X 窗口系统(TCP端口6000-6063)
12.3.23 RPC rpc.rexd(TCP端口512)
12.3.24 与MUD、IRC和即时消息进行通信
12.4 安全地管理服务
12.4.1 使用netstat监视网络
12.4.2 使用tcpdump监控你的网络
12.4.3 网络扫描
12.5 综合:一个例子
12.6 小结
第13章 SUN RPC
13.1 远程过程调用(RPC)
13.1.1 Sun的portmap/rpcbind
13.1.2 RPC认证
13.2 安全RPC(AUTH_DES)
13.2.1 安全RPC认证
13.2.2 在NIS下搭建安全RPC
13.2.3 使用安全RPC
13.2.4 安全RPC的局限
13.3 总结
第14章 基于网络的认证系统
14.1 Sun公司的网络信息服务(NIS)
14.1.1 NIS基础
14.1.2 NIS域
14.1.3 NIS网络组
14.1.4 NIS无意间泄漏的站点信息
14.2 Sun的NIS+
14.2.1 NIS+功能
14.2.2 NIS+表和其他对象
14.2.3 使用NIS+
14.2.4 NIS+的局限
14.3 Kerberos
14.3.1 Kerberos认证
14.3.2 安装Kerberos
14.3.3 使用Kerberos
14.3.4 Kerberos的局限
14.4 LDAP
14.4.1 LDAP:一种协议
14.4.2 LDAP的完整性和可靠性
14.4.3 使用LDAP进行认证
14.4.4 用nss_ldap来配置认证
14.5 其他网络认证系统
14.5.1 DCE
14.5.2 SESAME
14.6 总结
第15章 网络文件系统
15.1 理解NFS
15.1.1 NFS历史
15.1.2 文件句柄
15.1.3 MOUNT协议
15.1.4 NFS协议
15.1.5 NFS版本3
15.2 服务器端NFS安全
15.2.1 限制客户端访问:/etc/exports和/etc/dfs/dfstab文件
15.2.2 showmount命令
15.3 客户端NFS安全
15.4 提高NFS安全性
15.4.1 限制导出和装载的文件系统
15.4.2 只读导出
15.4.3 使用root身份
15.4.4 删除文件和目录的组可写权限
15.4.5 不要导出服务器自身的可执行程序
15.4.6 不要导出home目录
15.4.7 禁止用户登录服务器
15.4.8 使用fsirand
15.4.9 设置portmon变量
15.4.10 使用showmount –e
15.4.11 使用安全NFS
15.5 最后的注释
15.5.1 知名缺陷
15.5.2 实现真正的安全:不要使用NFS
15.6 理解SMB
15.6.1 SMB的历史
15.6.2 协议
15.6.3 Samba服务器配置
15.6.4 Samba服务器的安全
15.6.5 Samba客户端安全
15.6.6 提高Samba的安全
15.7 总结
第16章 安全编程技术
16.1 一个缺陷能毁坏你的一天……
16.1.1 Internet Worm(蠕虫)的教训
16.1.2 UNIX实用工具可靠性的实验研究
16.2 关于避免安全缺陷的提示
16.2.1 设计原则
16.2.2 编码标准
16.2.3 避免事项
16.2.4 在编码完成之前
16.3 关于编写网络程序的提示
16.3.1 应做事宜
16.3.2 避免事项
16.4 关于编写SUID/SGlD程序的提示
16.5 使用chroot()
16.6 使用密码的提示
16.7 产生随机数的提示
16.7.1 UNIX伪随机函数
16.7.2 挑选一个随机种子
16.7.3 一个好的随机种子产生器
16.8 总结
第四部分 安全操作
第17章 保持更新
17.1 软件管理系统
17.1.1 以软件包为基础的系统
17.1.2 以源代码为基础的系统
17.2 更新系统软件
17.2.1 了解补丁
17.2.2 更新发布的应用程序
17.2.3 敏感性的更新活动
17.3 总结
第18章 备份
18.1 为什么要建立备份?
18.1.1 备份系统的作用
18.1.2 应该备份哪些数据
18.1.3 备份类型
18.1.4 预防介质故障
18.1.5 备份应该保留多久
18.1.6 备份的安全
18.1.7 法律方面的问题
18.1.8 备份策略
18.1.9 个人工作站
18.1.10 由一些工作站和一台服务器构成的小型网络
18.1.11 预算较少的基于服务的大型网络
18.1.12 较多预算的基于服务的大型网络
18.2 备份系统文件
18.2.1 需要备份哪些文件?
18.2.2 建立一个自动备份系统
18.3 备份软件
18.3.1 简单的本地副本
18.3.2 简单存档
18.3.3 专用备份程序
18.3.4 通过网络备份
18.3.5 加密备份
18.4 总结
第19章 保护帐号
19.1 危险的帐号
19.1.1 没有密码的帐号
19.1.2 默认帐号
19.1.3 运行单一命令的帐号
19.1.4 公开帐号
19.1.5 带有chroot()监禁的受限文件系统
19.1.6 组帐号
19.2 监控文件格式
19.3 限制登录
19.4 管理静止帐号
19.4.1 通过修改密码禁用帐号
19.4.2 修改帐号的登录shell
19.4.3 寻找静止帐号
19.5 保护root帐号
19.5.1 安全终端
19.5.2 wheel组
19.5.3 sudo程序
19.5.4 可信路径以及可信计算基
19.6 一次性密码
19.6.1 在UNIX系统中集成一次性密码系统
19.6.2 令牌卡
19.6.3 密码书
19.7 传统密码的管理技术
19.7.1 为用户指定密码
19.7.2 密码限制
19.7.3 密码生成器
19.7.4 影子密码文件
19.7.5 密码老化以及过期
19.7.6 破译自己的密码
19.7.7 算法和库变更
19.7.8 再次访问用户帐号:使用别名以提高安全性
19.8 入侵检测系统
19.9 总结
第20章 完整性管理
20.1 完整性的必要性
20.2 完整性的保护
20.2.2 只读的文件系统
20.3 检测变更
20.3.1 完整性管理系统的致命伤
20.3.2 比较副本
20.3.3 检查表以及元数据
20.3.4 校验和以及签名
20.4 完整性检查工具
20.4.1 BSD的mtree和定期安全扫描
20.4.2 打包工具
20.4.3 Tripwire
20.5 小结
第21章 审计、日志和取证
21.1 Unix日志文件工具
21.1.1 基本日志文件
21.1.2 UNIX系统日志(syslog)工具
21.1.3 使用newsyslog记录日志
21.1.4 Swatch:一个日志文件分析工具
21.1.5 lastlog文件
21.1.6 utmp和wtmp文件
21.1.7 loginlog文件
21.2 进程记帐:acct/pacct文件
21.2.1 系统V记帐
21.2.2 BSD和Linux记帐
21.2.3 消息日志文件
21.3 特定程序的日志文件
21.3.1 aculog文件
21.3.2 sulog日志文件
21.3.3 xferlog日志文件
21.3.4 access_log日志文件
21.3.5 记录网络服务
21.3.6 其他日志
21.4 网站日志策略的设计
21.4.1 记录于何处
21.5 手写的日志
21.5.1 每个站点的日志
21.5.2 每台机器的记录
21.6 管理日志文件
21.7 Unix取证
21.7.1 shell历史记录
21.7.2 邮件
21.7.3 cron
21.7.4 网络设置
21.8 总结
第五部分 处理安全事件
第22章 发现入侵
22.1 引  言
22.1.1 原则#1:不要惊慌
22.1.2 原则#2:文档
22.1.3 规则#3:预先计划
22.2 发现入侵者
22.2.1 抓住活动中的攻击者
22.2.2 当抓获到入侵者时,需要做什么
22.2.3 联系入侵者
22.2.4 监控入侵者
22.2.5 跟踪连接
22.2.6 如何与你未知计算机的系统管理人员联系
22.2.7 摆脱入侵者
22.3 入侵后的清理工作
22.3.1 分析日志文件
22.3.2 保存证据
22.3.3 评估损害
22.3.4 除了硬拷贝外不要相信任何其他东西
22.3.5 恢复操作
22.3.6 损害控制
22.4 案例研究
22.4.1 Rootkit
22.4.2 冲突
22.5 总结
第23章 防御威胁性程序
23.1 威胁性程序:定义
23.1.1 安全扫描程序和其他工具
23.1.2 后门和陷阱门
23.1.3 逻辑炸弹
23.1.4 特洛伊木马
23.1.5 病毒
23.1.6 蠕虫
23.1.7 细菌和野兔
23.2 破坏
23.3 开发者
23.4 入口
23.5 自我保护
23.5.1 Shell特征
23.5.2 启动文件攻击
23.5.3 滥用自动机制
23.6 保护系统
23.6.1 文件保护
23.6.2 共享库
23.7 总结
第24章 拒绝服务攻击与解决方法
24.1 攻击的类型
24.2 破坏性的攻击
24.3 超载攻击
24.3.1 进程和CPU超载问题
24.3.2 交换空间问题
24.3.3 磁盘攻击
24.3.4 /tmp问题
24.3.5 软进程限制:防止意外的拒绝服务
24.4 网络拒绝服务攻击
24.4.1 服务超载
24.4.2 消息淹没
24.4.3 信号接地
24.4.4 阻塞(SYN淹没攻击)
24.4.5 死亡之ping,以及其他畸形的通信攻击
24.5 总结
第25章 计算机犯罪
25.1 入侵之后的法律选择
25.1.1 刑事诉讼
25.1.2 联邦计算机犯罪法律
25.1.3 刑事起诉的危险
25.1.4 报案的责任
25.2 犯罪的风险
25.3 犯罪主题
25.3.1 访问设备和专利软件
25.3.2 色情、猥亵和淫秽
25.3.3 专利产品
25.3.4 加密程序和出口控制
25.4 总结
第26章 你信任谁
26.1 能信任计算机吗?
26.1.1 哈里的编译器
26.1.2 深信不疑的信任
26.1.3 超级用户能做的和不能做的
26.2 能信任厂商吗?
26.2.1 硬件缺陷
26.2.2 发布磁盘上的病毒
26.2.3 有缺陷的软件
26.2.4 黑客的挑战
26.2.5 从未修复的安全缺陷
26.2.6 网络供应商
26.3 能信任人吗?
26.3.1 你的雇员?
26.3.2 系统管理员?
26.3.3 供应商?
26.3.4 顾问?
26.3.5 应急响应人员
26.4 总结

第六部分 附录
附录A UNIX安全检查列表
附录B UNIX进程
B.1 关于进程
B.1.1 进程和程序
B.1.2 ps命令
B.1.3 进程的属性
B.1.4 创建进程
B.2 信号
B.2.1 Unix信号和kill命令
B.2.2 同时杀死多个进程
B.2.3 捕获信号
B.2.4 杀死虚假或有问题的进程
B.3 控制和检查进程
B.3.1 gdb:控制一个进程
B.3.2 lsof:检查一个进程
B.3.3 /proc:直接检查进程
B.3.4 pstree:查看进程树
B.4 启动UNIX与登录
B.4.1 进程#1 :/etc/init
B.4.2 登录
B.4.3 运行用户的shell
附录C 论文资源
C.1 UNIX安全参考资料
C.2 其他计算机参考资料
C.2.1 计算机犯罪和法律
C.2.2 计算机相关风险
C.2.3 计算机病毒和威胁性程序
C.2.4 密码学书籍
C.2.5 密码学论文和其他出版物
C.2.6 通用的计算机安全
C.2.7 网络技术和安全
C.2.8 安全产品和服务信息
C.2.9 理解计算机安全“文化”
C.2.10 UNIX编程和系统管理
C.2.11 杂项
C.2.12 安全期刊
附录D 电子资源
D.1 邮件列表
D.1.1 响应组及供应商
D.1.2 邮件列表中的大问题
D.1.3 主要邮件列表
D.1.4 SANS Security Alert Consensus
D.2 WWW站点
D.2.1 CIAC
D.2.2 CERIAS
D.2.3 FIRST
D.2.4 NIST CSRC
D.2.5 Insecure.org
D.2.6 NIH
D.3 Usenet组
D.4 软件资源
D.4.1 chrootuid
D.4.2 COPS(计算机甲骨文(oracle)与密码系统)
D.4.3 ISS(Internet安全扫描器)
D.4.4 Kerberos
D.4.5 nmap
D.4.6 Nessus
D.4.7 OpenSSH
D.4.8 OpenSSL
D.4.9 portmap
D.4.10 portsentry
D.4.11 SATAN
D.4.12 Snort
D.4.13 Swatch
D.4.14 TCP Wrapper
D.4.15 Tiger
D.4.16 trimlog
D.4.17 Tripwire
D.4.18 wuarchive ftpd
附录E 组织机构
E.1 专业组织
E.1.1 计算机协会(ACM)
E.1.2 美国工业安全学会(ASIS)
E.1.3 计算机安全研究院(CSI)
E.1.4 电子前沿基金会(EFF)
E.1.5 电子隐私信息中心(EPIC)
E.1.6 高技术犯罪调查协会(HTCIA)
E.1.7 信息系统安全协会(ISSA)
E.1.8 国际信息系统安全认证联盟
E.1.9 Internet学会
E.1.10 IEEE计算机学会
E.1.11 IFIP第11技术委员会
E.1.12 系统管理和网络安全(SANS)
E.1.13 USENIX/SAGE
E.2 美国政府组织
E.2.1 国家标准与技术局(NIST)
E.2.2 国家安全局(NSA)
E.3 应急响应组织
E.3.1 司法局(DOJ)
E.3.2 联邦调查局(FBI)
E.3.3 美国情报局(USSS)
E.3.4 事件与响应安全小组论坛(FIRST)
E.3.5 计算机紧急响应小组协调中心(CERT/CC)

教学资源推荐
作者: 曾凡平 编著
作者: [美]肖恩-菲利普·奥里亚诺(Sean-Philip Oriyano)迈克尔·G. 所罗门(Michael G. Solomon)著
作者: [美] 威廉·斯托林斯(William Stallings)[澳] 劳里·布朗(Lawrie Brown) 著
参考读物推荐
作者: 钱林松 赵海旭 著
作者: 许光全 徐君锋 刘健 胡双喜 著
作者: David Rice
作者: 张威 张耀疆 赵锐 等编著