1、4.1 操作系统安全性概述操作系统安全性概述4.1.1 操作系统安全的重要性操作系统安全的重要性对操作系统安全构成威胁的问题主要有以下对操作系统安全构成威胁的问题主要有以下几种。几种。(1)计算机病毒)计算机病毒(2)特洛伊木马)特洛伊木马特洛伊木马必须具有以下几项功能才能成特洛伊木马必须具有以下几项功能才能成功地入侵计算机系统:功地入侵计算机系统:入侵者要写出一段程序进行非法操作,入侵者要写出一段程序进行非法操作,程序的行为方式不会引起用户的怀疑;程序的行为方式不会引起用户的怀疑;必须设计出某种策略使受骗者接受这段必须设计出某种策略使受骗者接受这段程序;程序;必须使受骗者运行该程序;必须使受
2、骗者运行该程序;入侵者必须有某种手段回收由特洛伊木入侵者必须有某种手段回收由特洛伊木马发作而为他带来的实际利益。马发作而为他带来的实际利益。(3)隐蔽通道)隐蔽通道(4)天窗)天窗4.1.2 操作系统的安全服务操作系统的安全服务操作系统的安全服务主要包括以下两个方面。操作系统的安全服务主要包括以下两个方面。1用户管理的安全性用户管理的安全性账号账号/密码的认证方案普遍存在着安全的隐患和密码的认证方案普遍存在着安全的隐患和不足之处,具体有如下几种。不足之处,具体有如下几种。(1)认证过程的安全保护不够健壮,登录的认证过程的安全保护不够健壮,登录的步骤没有进行集成和封装,而是暴露在外,容步骤没有进
3、行集成和封装,而是暴露在外,容易受到恶意入侵者或系统内部特洛伊木马的干易受到恶意入侵者或系统内部特洛伊木马的干扰或者截取。扰或者截取。(2)密码的存放与访问没有严格的安全保护。密码的存放与访问没有严格的安全保护。(3)认证机制与访问控制机制不能很好地相认证机制与访问控制机制不能很好地相互配合和衔接,使得通过认证的合法用户进互配合和衔接,使得通过认证的合法用户进行有意或无意的非法操作的机会大大增加。行有意或无意的非法操作的机会大大增加。2访问控制访问控制访问控制系统一般包括以下几个实体。访问控制系统一般包括以下几个实体。主体(主体(Subject)客体(客体(Object)安全访问政策安全访问政
4、策访问控制常用的实现方法主要有以下几种。访问控制常用的实现方法主要有以下几种。(1)访问控制矩阵()访问控制矩阵(Access Matrix)File1File2File3JohnOwnRWRAliceROwnRWWBobRWR表4.1访问控制矩阵(2)访问能力表()访问能力表(Access Capability List)(3)访问控制表()访问控制表(Access Control List)图4.1 访问能力表 图4.2 访问控制表(4)授权关系表()授权关系表(Authorization Relations List)主主 体体访访 问问 权权 限限客客 体体JohnOwnFile1Jo
5、hnRFile1JohnWFile1JohnRFile3AliceRFile1AliceOwnFile2AliceRFile2AliceWFile2AliceWFile3BobRFile1BobWFile1BobWFile2表表4.2授权关系表授权关系表在访问控制策略方面,计算机系统常采用以在访问控制策略方面,计算机系统常采用以下两种策略。下两种策略。(1)自主访问控制()自主访问控制(Discretionary Access Control,DAC)(2)强制访问控制()强制访问控制(Mandatory Access Control,MAC)4.1.3 操作系统安全性的设计原则与一般结构操作
6、系统安全性的设计原则与一般结构(1)最小特权)最小特权(2)机制的经济性)机制的经济性(3)开放系统设计)开放系统设计(4)完备的存取控制机制)完备的存取控制机制(5)基于)基于“允许允许”的设计原则的设计原则(6)权限分离)权限分离(7)避免信息流的潜在通道)避免信息流的潜在通道(8)方便使用)方便使用图图4.3 安全操作系统的一般结构安全操作系统的一般结构4.1.4 安全操作系统的发展状况安全操作系统的发展状况KSOS(Kernelized Secure Operating System)是美国国防部研究计划局)是美国国防部研究计划局1977年发年发起的一个安全操作系统研制项目,目标是为起
7、的一个安全操作系统研制项目,目标是为PDP-11/70机器开发一个可投放市场的安全操机器开发一个可投放市场的安全操作系统,系统的要求如下:作系统,系统的要求如下:与贝尔实验室的与贝尔实验室的UNIX操作系统兼容;操作系统兼容;实现多级安全性和完整性;实现多级安全性和完整性;正确性可以被证明。正确性可以被证明。OSF/1是开放软件基金会于是开放软件基金会于1990年推出年推出的一个安全操作系统,被美国国家计算机安的一个安全操作系统,被美国国家计算机安全中心(全中心(NCSC)认可为符合)认可为符合TCSEC的的B1级,级,其主要安全性表现如下:其主要安全性表现如下:系统标识;系统标识;口令管理;
8、口令管理;强制存取控制和自主存取控制;强制存取控制和自主存取控制;审计。审计。UNIX SVR4.1ES是是UI(UNIX国际组织)国际组织)于于1991年推出的一个安全操作系统,被美国年推出的一个安全操作系统,被美国国家计算机安全中心(国家计算机安全中心(NCSC)认可为符合)认可为符合TCSEC的的B2级,除级,除OSF/1外的安全性主要表外的安全性主要表现如下:现如下:更全面的存取控制;更全面的存取控制;更小的特权管理;更小的特权管理;可信通路;可信通路;隐蔽通道分析和处理。隐蔽通道分析和处理。DTOS原型系统以原型系统以Mach为基础,具有以为基础,具有以下设计目标。下设计目标。政策灵
9、活性。政策灵活性。Mach兼容性。兼容性。DTOS内核的性能应该与内核的性能应该与Mach内核的性能内核的性能相近。相近。4.2 Windows NT/2000的安全的安全4.2.1 Windows NT/2000的安全模型的安全模型图图4.4 Windows NT/2000的安全模型的安全模型1登录过程(登录过程(Logon Process)2本地安全认证(本地安全认证(Local Security Authority,LSA)3安全账号管理器(安全账号管理器(Security Account Manager,SAM)4安全参考监视器(安全参考监视器(Security Reference M
10、onitor,SRM)4.2.2 Windows NT/2000的登录控制的登录控制1登录过程登录过程(1)本地登录过程(如图)本地登录过程(如图4.5所示)所示)图4.5 本地登录过程 用户按用户按Ctrl+Alt+Del键,引起硬件中断,被键,引起硬件中断,被系统捕获,这样使操作系统激活系统捕获,这样使操作系统激活WinLogon进进程。程。WinLogon进程通过调用标识与鉴别进程通过调用标识与鉴别DLL,将登录窗口(账号名和口令登录提示符)展示将登录窗口(账号名和口令登录提示符)展示在用户面前。在用户面前。WinLogon进程发送账号名和加密口令到本进程发送账号名和加密口令到本地安全认
11、证(地安全认证(LSA)。)。如果用户具有有效的用户名和口令,则本如果用户具有有效的用户名和口令,则本地安全认证产生一个访问令牌,包括用户账地安全认证产生一个访问令牌,包括用户账号号SID和用户工作组和用户工作组SID。WinLogon进程传送访问令牌到进程传送访问令牌到Win32模块,模块,同时发出一个请求,以便为用户建立登录进同时发出一个请求,以便为用户建立登录进程。程。登录进程建立用户环境,包括启动登录进程建立用户环境,包括启动Desktop Explorer和显示背景等和显示背景等。(2)网络登录过程(如图)网络登录过程(如图4.6所示)所示)图图4.6 网络登录网络登录Windows
12、 NT/2000服务器的过程服务器的过程 用户将用户名和口令输入到网络客户机用户将用户名和口令输入到网络客户机软件的登录窗口。软件的登录窗口。该客户机软件打开该客户机软件打开NetBIOS,连接到服,连接到服务器的务器的NetLogon服务上,该客户机软件对服务上,该客户机软件对口令加密,发送登录证书到服务器的口令加密,发送登录证书到服务器的WinLogon进程。进程。服务器的服务器的WinLogon进程发送账号名和进程发送账号名和加密口令到本地安全认证。加密口令到本地安全认证。如果用户具有有效的用户名和口令,则本如果用户具有有效的用户名和口令,则本地安全认证产生一个访问令牌,包括用户账地安全
13、认证产生一个访问令牌,包括用户账号号SID和用户工作组和用户工作组SID。访问令牌也得到用。访问令牌也得到用户的特权(户的特权(LUID),然后该访问令牌传送回),然后该访问令牌传送回WinLogon进程。进程。WinLogon进程将访问令牌传送到进程将访问令牌传送到Windows NT/2000的的Server服务,它将访问令服务,它将访问令牌与被客户机打开的牌与被客户机打开的NetBIOS连接联系起来。连接联系起来。在具有访问令牌所建证书的服务器上,可完在具有访问令牌所建证书的服务器上,可完成任何在成任何在NetBIOS连接时所发送的其他操作连接时所发送的其他操作(如读文件、打印请求等)。
14、(如读文件、打印请求等)。2安全标识符(安全标识符(SID)3访问令牌访问令牌(1)访问令牌保存全部安全信息,可以加速访问令牌保存全部安全信息,可以加速访问验证过程。当某个用户进程要访问某个访问验证过程。当某个用户进程要访问某个对象时,安全子系统检查进程的访问令牌,对象时,安全子系统检查进程的访问令牌,判断该用户的访问特权。判断该用户的访问特权。(2)每个进程均有一个与之相关联的访问令每个进程均有一个与之相关联的访问令牌,因此,每个进程都可以在不影响其他代牌,因此,每个进程都可以在不影响其他代表该用户运行的进程的条件下,在某种可允表该用户运行的进程的条件下,在某种可允许的范围内修改进程的安全特
15、征。许的范围内修改进程的安全特征。4.2.3 Windows NT/2000的访问控制的访问控制1Windows NT/2000访问控制访问控制Windows NT/2000的安全性达到了橘皮的安全性达到了橘皮书书C2级,实现了用户级自主访问控制,它的级,实现了用户级自主访问控制,它的访问机制如图访问机制如图4.7所示。所示。图图4.7 Windows NT的客体访问示意图的客体访问示意图 图图4.8 安全性描述符的构成安全性描述符的构成 对访问控制列表判断的规则如下。对访问控制列表判断的规则如下。(1)从访问控制列表的头部开始,检查每个从访问控制列表的头部开始,检查每个访问控制项,看是否显式
16、地拒绝用户或工作访问控制项,看是否显式地拒绝用户或工作组的访问。组的访问。(2)继续检查,看进程所要求的访问类型是继续检查,看进程所要求的访问类型是否显式地授予用户或工作组。否显式地授予用户或工作组。(3)重复步骤(重复步骤(1)、()、(2),直到遇到拒绝),直到遇到拒绝访问,或是累计到所有请求的权限均被满足访问,或是累计到所有请求的权限均被满足为止。为止。(4)如果对某个请求的访问权限在访问控制如果对某个请求的访问权限在访问控制表中既没有授权也没有拒绝,则拒绝访问。表中既没有授权也没有拒绝,则拒绝访问。2NTFS文件系统文件系统(1)文件和目录的权限)文件和目录的权限(2)文件内容的加密)
17、文件内容的加密4.2.4 Windows NT/2000的安全管理的安全管理1用户和用户组用户和用户组2域和委托域和委托3活动目录(活动目录(Active Directory)下面介绍活动目录的结构和活动目录的安全下面介绍活动目录的结构和活动目录的安全服务。服务。(1)活动目录的结构)活动目录的结构提供支持分布式网络环境的多主复制机制。提供支持分布式网络环境的多主复制机制。层次式组织层次式组织 面向对象存储面向对象存储 多主复制多主复制(2)活动目录的安全性服务)活动目录的安全性服务活动目录使用以下方法增强安全性。活动目录使用以下方法增强安全性。通过向网络资源提供单一的集成、高性能通过向网络资
18、源提供单一的集成、高性能且对终端用户透明的安全服务,改进密码的且对终端用户透明的安全服务,改进密码的安全性和管理。安全性和管理。通过根据终端用户角色锁定桌面系统配置通过根据终端用户角色锁定桌面系统配置来防止对特定客户主机操作进行访问,保证来防止对特定客户主机操作进行访问,保证桌面系统的功能性,例如软件安装或注册项桌面系统的功能性,例如软件安装或注册项编辑。编辑。通过提供对安全的通过提供对安全的Internet标准协议和身标准协议和身份验证机制的内建支持,如份验证机制的内建支持,如Kerberos,公开,公开密钥基础设施(密钥基础设施(PKI)和安全套接字协议层)和安全套接字协议层(SSL)之上
19、的轻量目录访问协议()之上的轻量目录访问协议(LDAP),),加速电子商务的部署。加速电子商务的部署。通过对目录对象和构成它们的单独数据元通过对目录对象和构成它们的单独数据元素设置访问控制特权来控制访问。素设置访问控制特权来控制访问。4安全审计安全审计图图4.9 审计子系统结构图审计子系统结构图4.3 UNIX/Linux的安全的安全4.3.1 UNIX用户账号与口令安全用户账号与口令安全1UNIX登录认证机制登录认证机制通过终端登录通过终端登录UNIX操作系统的过程可描述如操作系统的过程可描述如下:下:(1)init进程确保为每个终端连接(或虚拟进程确保为每个终端连接(或虚拟终端)运行一个终
20、端)运行一个getty程序;程序;(2)gettygetty监听对应的终端并等待用户准备登录;监听对应的终端并等待用户准备登录;监听对应的终端并等待用户准备登录;监听对应的终端并等待用户准备登录;(3)gettygetty输出一条欢迎信息(保存在输出一条欢迎信息(保存在输出一条欢迎信息(保存在输出一条欢迎信息(保存在/etc/issue/etc/issue中)中)中)中),并提供用户输入用户名,最后运行,并提供用户输入用户名,最后运行,并提供用户输入用户名,最后运行,并提供用户输入用户名,最后运行loginlogin程序;程序;程序;程序;(4)loginlogin以用户作为参数,提示用户输入
21、口令;以用户作为参数,提示用户输入口令;以用户作为参数,提示用户输入口令;以用户作为参数,提示用户输入口令;(5)如果用户名和口令相匹配,则如果用户名和口令相匹配,则如果用户名和口令相匹配,则如果用户名和口令相匹配,则loginlogin程序为该程序为该程序为该程序为该用户启动用户启动用户启动用户启动shellshell;否则,;否则,;否则,;否则,loginlogin程序退出,进程终止;程序退出,进程终止;程序退出,进程终止;程序退出,进程终止;(6)initinit进程注意到进程注意到进程注意到进程注意到loginlogin进程已终止,则会再次为进程已终止,则会再次为进程已终止,则会再次
22、为进程已终止,则会再次为该终端启动该终端启动该终端启动该终端启动gettygetty程序。程序。程序。程序。2UNIX的口令文件的口令文件各字段的含义分别如下。各字段的含义分别如下。(1)登录名。)登录名。(2)加密口令。)加密口令。(3)用户标识号()用户标识号(User ID,UID)(4)组标识()组标识(Group ID,GID)(5)登录名的说明)登录名的说明(6)用户的主目录位置。)用户的主目录位置。(7)用户的命令行解释器()用户的命令行解释器(shell)。)。3UNIX操作系统的口令安全操作系统的口令安全安全的口令应遵循以下的规则。安全的口令应遵循以下的规则。(1)选择长的口
23、令,口令越长,黑客猜中选择长的口令,口令越长,黑客猜中的概率就越低。的概率就越低。(2)口令最好是英文字母和数字的组合。口令最好是英文字母和数字的组合。(3)不要使用英语单词,因为很多人喜欢不要使用英语单词,因为很多人喜欢使用英文单词作为口令,口令字典收集了使用英文单词作为口令,口令字典收集了大量的口令,有意义的英语单词在口令字大量的口令,有意义的英语单词在口令字典出现的概率比较大。典出现的概率比较大。(4)用户若可以访问多个系统,则不要使用户若可以访问多个系统,则不要使用相同的口令。用相同的口令。(5)不要使用名字作为口令,如自己的名不要使用名字作为口令,如自己的名字,家人的名字,宠物的名字
24、等。字,家人的名字,宠物的名字等。(6)别选择记不住的口令,这样会给自己别选择记不住的口令,这样会给自己带来麻烦,用户可能会把它放在什么地方带来麻烦,用户可能会把它放在什么地方(7)使用使用UNIX安全程序安全程序4.3.2 UNIX的文件访问控制的文件访问控制1文件(或目录)访问控制文件(或目录)访问控制图图4.10 文件存取权限示意图文件存取权限示意图2更改权限更改权限3特殊权限位特殊权限位4.3.3 UNIX安全的管理策略安全的管理策略1系统管理员的安全管理系统管理员的安全管理以下是一些系统管理员的安全管理策略。以下是一些系统管理员的安全管理策略。(1)保持系统管理员个人的登录安全)保持
25、系统管理员个人的登录安全 不要作为不要作为root或以自己的登录账户运行或以自己的登录账户运行其他用户的程序,首先用其他用户的程序,首先用su命令进入用户命令进入用户的账户。的账户。绝不要把当前工作目录放在绝不要把当前工作目录放在PATH路径路径表的前边,那样会吸引特洛伊木马。表的前边,那样会吸引特洛伊木马。输入输入/bin/su执行执行su命令。命令。不要未注销账户就离开终端,特别是作为不要未注销账户就离开终端,特别是作为不要未注销账户就离开终端,特别是作为不要未注销账户就离开终端,特别是作为rootroot用户用户用户用户时更不能这样。时更不能这样。时更不能这样。时更不能这样。不允许不允许
26、不允许不允许rootroot在除控制台外的任何终端登录(这是在除控制台外的任何终端登录(这是在除控制台外的任何终端登录(这是在除控制台外的任何终端登录(这是loginlogin编译时的选项),如果有编译时的选项),如果有编译时的选项),如果有编译时的选项),如果有loginlogin源码,就将登录名源码,就将登录名源码,就将登录名源码,就将登录名rootroot改成别的名字,使破坏者不能在改成别的名字,使破坏者不能在改成别的名字,使破坏者不能在改成别的名字,使破坏者不能在rootroot登录名下猜登录名下猜登录名下猜登录名下猜测各种可能的口令,从而非法进入测各种可能的口令,从而非法进入测各种可
27、能的口令,从而非法进入测各种可能的口令,从而非法进入rootroot的账户。的账户。的账户。的账户。经常改变经常改变经常改变经常改变rootroot的口令。的口令。的口令。的口令。确认确认确认确认susu命令记下的企图运行命令记下的企图运行命令记下的企图运行命令记下的企图运行susu的记录的记录的记录的记录/usr/adm/sulog/usr/adm/sulog,该记录文件的存取权限是,该记录文件的存取权限是,该记录文件的存取权限是,该记录文件的存取权限是600600,并属,并属,并属,并属rootroot所有。所有。所有。所有。不要让系统管理员以外的人作为不要让系统管理员以外的人作为不要让系
28、统管理员以外的人作为不要让系统管理员以外的人作为rootroot登录,哪怕是登录,哪怕是登录,哪怕是登录,哪怕是几分钟,即使有系统管理员在一旁注视着也不行。几分钟,即使有系统管理员在一旁注视着也不行。几分钟,即使有系统管理员在一旁注视着也不行。几分钟,即使有系统管理员在一旁注视着也不行。(2)保持整个系统的安全)保持整个系统的安全 保持账号安全。保持账号安全。保持账号安全。保持账号安全。保持口令安全。保持口令安全。保持口令安全。保持口令安全。设置口令时效。设置口令时效。设置口令时效。设置口令时效。保持文件系统安全。保持文件系统安全。保持文件系统安全。保持文件系统安全。启动记账系统。启动记账系统
29、。启动记账系统。启动记账系统。查出不寻常的系统使用情况,如大量地占用磁盘、查出不寻常的系统使用情况,如大量地占用磁盘、查出不寻常的系统使用情况,如大量地占用磁盘、查出不寻常的系统使用情况,如大量地占用磁盘、大量地使用大量地使用大量地使用大量地使用CPUCPU时间、大量的进程、大量地使用时间、大量的进程、大量地使用时间、大量的进程、大量地使用时间、大量的进程、大量地使用susu的企图、大量无效的登录、大量的到某一系统的网的企图、大量无效的登录、大量的到某一系统的网的企图、大量无效的登录、大量的到某一系统的网的企图、大量无效的登录、大量的到某一系统的网络传输或奇怪的络传输或奇怪的络传输或奇怪的络传
30、输或奇怪的uucpuucp请求等。请求等。请求等。请求等。修改修改shell,使其等待了一定时间而无任务,使其等待了一定时间而无任务时终止运行。时终止运行。修改修改login,使其打印出用户登录的最后时,使其打印出用户登录的最后时间,三次无效登录后,将通信线挂起,以便间,三次无效登录后,将通信线挂起,以便系统管理员能查出是否有人非法进入系统。系统管理员能查出是否有人非法进入系统。修改修改su,使得只有,使得只有root能通过能通过su进入某一户进入某一户头。头。当安装来源不可靠的软件时,要检查源码当安装来源不可靠的软件时,要检查源码和和makefile文件,查看特殊的子程序调用或命文件,查看特
31、殊的子程序调用或命令。令。为了系统的安全,还应该注意以下事项。为了系统的安全,还应该注意以下事项。(1)即使是安装来源可靠的软件,也要检查即使是安装来源可靠的软件,也要检查是否有是否有SUID(SGID)程序,确认这些许可)程序,确认这些许可的确是必要的。的确是必要的。(2)如果系统在办公室中,门应上锁,将重如果系统在办公室中,门应上锁,将重要数据保存在软盘上或磁带上,并锁起来。要数据保存在软盘上或磁带上,并锁起来。(3)如果系统管理员认为系统已经泄密,则如果系统管理员认为系统已经泄密,则应当设法查出肇事者。应当设法查出肇事者。2用户的安全管理用户的安全管理(1)保证用户口令的安全。)保证用户
32、口令的安全。(2)防止用户自己的文件和目录被非授权)防止用户自己的文件和目录被非授权读写。读写。(3)防止运行特洛伊木马。)防止运行特洛伊木马。(4)用)用crypt命令加密不愿让任何用户(包命令加密不愿让任何用户(包括超级用户)看到的文件。括超级用户)看到的文件。(5)在离开终端时,确保用)在离开终端时,确保用Ctrl+D或或Exit命令退出系统。命令退出系统。4.3.4 UNIX网络服务的安全管理网络服务的安全管理1网络访问控制网络访问控制(1)关闭不必要的服务)关闭不必要的服务(2)有选择地允许主机建立连接)有选择地允许主机建立连接2一些常用网络服务的安全性一些常用网络服务的安全性(1)FTP服务服务(2)Telnet服务服务(3)用户等价和主机等价)用户等价和主机等价(4)NFS服务服务(5)NIS服务服务图图4.11 攻击攻击NIS原理原理4.3.5 UNIX的安全审计的安全审计这些日志可分为以下这些日志可分为以下3类。类。(1)连接时间日志,由多个程序执行。)连接时间日志,由多个程序执行。(2)进程统计日志,由系统内核执行。)进程统计日志,由系统内核执行。(3)错误日志,由)错误日志,由syslogd执行。执行。