操作系统安全.docx
《操作系统安全.docx》由会员分享,可在线阅读,更多相关《操作系统安全.docx(42页珍藏版)》请在冰豆网上搜索。
操作系统安全
第2章操作系统安全
学习目的
●了解操作系统安全现状。
●了解计算机安全等级及信息安全技术评估准则。
●熟悉常用的服务器操作系统。
●掌握WindowsServer2003的安全配置操作。
●了解操作系统的注册表操作。
2.1操作系统安全概述
2.1.1操作系统安全现状
操作系统是管理整个计算机硬件与软件资源的程序,操作系统是网络系统的基础,是保证整个互联网实现信息资源传递和共享的关键,操作系统的安全性在网络安全中举足轻重。
一个安全的操作系统能够保障计算资源使用的保密性、完整性和可用性,可以提供对数据库、应用软件、网络系统等提供全方位的保护。
没有安全的操作系统的保护,根本谈不上网络系统的安全,更不可能有应用软件信息处理的安全性。
因此,安全的操作系统是整个信息系统安全的基础。
长期以来我国广泛应用的主流操作系统都是从国外引进直接使用的产品,这些系统的安全性令人担忧。
从认识论的高度看,人们往往首先关注对操作系统的需要、功能,然后才被动地从出现的漏洞和后门,以及不断引起世界性的“冲击波”和“震荡波”等安全事件中,注意到操作系统本身的安全问题。
操作系统的结构和机制不安全,以及PC机硬件结构的简化,系统不分执行“态”,内存无越界保护等等,这些因素都有可能导致资源配置可以被篡改,恶意程序被植入执行,利用缓冲区溢出攻击以及非法接管系统管理员权限等安全事故发生;导致了病毒在世界范围内传播泛滥,黑客利用各种漏洞攻击入侵,非授权者任意窃取信息资源,使得安全防护体系形成了防火墙、防病毒和入侵检测老三样的被动局面。
目前的操作系统安全主要包括系统本身的安全、物理安全、逻辑安全、应用安全以及管理安全等。
物理安全主要是指系统设备及相关设施受到物理保护,使之免受破坏或丢失;逻辑安全主要指系统中信息资源的安全;管理安全主要包括各种管理的政策和机制。
操作系统是整个网络的核心软件,操作系统的安全将直接决定网络的安全,因此,要从根本上解决网络信息安全问题,需要从系统工程的角度来考虑,通过建立安全操作系统构建可信计算基(TCB),建立动态、完整的安全体系。
而其中,操作系统的安全技术是最为基本与关键的技术之一。
2.1.2操作系统安全所涉及的几个概念
1.标识与鉴别
操作系统自动会为每个用户都设置了一个安全级范围,标识一下用户的安全等级;系统除了进行身份和口令的判别外,还要进行安全级判别,以保证进入系统的用户具有合法的身份标识和安全级别,即身份及口令的鉴别。
2.审计
审计就是用于监视和记录操作系统中有关安全性的活动,可以有选择地设置哪些用户、哪些操作(或系统调用)以及对哪些敏感资源的访问需要审计。
这些事件的活动(主要包括事件的类型、用户的身份、操作的时间、参数和状态等)会在系统中留下痕迹,管理者通过检查审记日志可以发现有无危害安全性的活动。
3.自主存取控制
自主存取控制用于实现操作系统用户自己设定的存取控制权限。
系统用户可以说明其私有的资源允许本系统中哪些用户以何种权限进行共享,系统中的每个文件、消息队列、信号量集、共享存储区、目录、和管道等都可具有一个存取控制表,用来说明允许系统中的用户对该资源的存取方式。
4.强制存取控制
强制存取控制是提供基于信息机密性的存取控制方法,用于将系统中的用户和信息进行分级别、分类别管理,强制限制信息的共享和流动,使不同级别和类别的用户只能访问到与其相关的、指定范围的信息,从根本上防止信息的泄密和非授权访问等现象。
5.设备安全性
设备安全性主要用于控制文件卷、打印机、终端等设备I/O信息的安全级范围。
2.1.3信息技术安全评价通用准则
1.信息安全技术等级标准
美国国防部计算机安全中心于1985年推出可信计算机系统的评估标准,该标准使用户可以对其计算机系统内的敏感信息安全操作的可信程度做出评估,根据这一标准将计算机安全等级划分为七个等级:
D、C1、C2、B1、B2、B3、A1。
(1)D级
D级是最低级安全性,保留D级的目的是为了将一切不符合更高标准的系统,统统归于D级。
整个计算机系统是不可信任的,硬件和操作系统很容易被侵袭。
任何人都可以自由地使用该计算机系统,不对用户进行验证。
系统不要求用户进行登记(要求用户提供用户名)或使用密码(要求用户提供唯一的字符串来进行访问)。
任何人都可以坐在计算机的旁边并使用它。
如DOS就是操作系统中安全级别为D级的例子,它具有操作系统的基本功能,如文件管理、进程调度等,但在安全方面几乎没有什么专门的机制来保障。
(2)C1级
C1级要求硬件有一定的安全保护(如硬件有带锁装置,需要钥匙才能使用计算机)。
用户在使用计算机系统前必须先登录。
另外,作为C1级保护的一部分,允许系统管理员为一些程序或数据设立访问许可权限。
能够实现对用户和数据的分离,进行自主存取控制,保护和限制用户权限的传播。
现有的商业系统往往稍作改进即可满足C1级的要求,如UNIX系统、Novell3.x或更高版本、WindowsNT都属于C1级兼容计算机操作系统。
(3)C2级
C2级实际是安全产品的最低档次,以个人身份注册,负责并实施审计和资源隔离,具有进一步限制用户执行某些命令或访问某些文件的权限,而且还加入了身份认证级别。
很多商业产品已经达到C2级认证,如UNIX、Microsoft的WindowsNT3.5等。
(4)B1级
B1级提供标记安全保护。
对系统的数据进行标记,对标记的主体和客体实施强制存取控制以及审计等安全机制。
B1级能够较好的满足大型企业或一般政府部门对于数据的安全要求,这一级别的产品才是真正意义上的安全产品。
满足这一级别的产品通常有“安全(Security)”或“可信的(Trusted)”标记,作为区别于普通产品的安全产品出售。
(5)B2级
B2级提供结构化保护。
建立形式化的安全策略模型并对系统内的所有主体和客体实施自主存取控制和强制存取控制。
(6)B3级
B3级提供安全域。
该级的TCB必须满足访问监视器的需求,审计跟踪能力更强,并提供系统恢复过程。
(7)A1级
A1级提供验证设计,最高级安全。
即提供B3级保护产品的同时给出系统形式化的设计说明和验证以确信各安全保护真正实现。
实际上,A1级产品根本没有。
2.1.4操作系统的安全管理
1.操作系统的安全要素
操作系统安全涉及到多个方面,美国专家对系统安全提出六个方面,称为操作系统安全六要素。
(1)保密性
保密性是指可以允许授权的用户访问计算机中的信息。
(2)完整性
完整性是指数据的正确性和相容性,保证系统中保存的信息不会被非授权用户修改,且能保持一致性。
(3)可用性
可用性是指对授权用户的请求,能及时、正确、安全地得到响应,计算机中的资源可供授权用户随时访问。
(4)真实性
真实性是指系统中的信息要能真实的反映现实世界,数据具有较强的可靠性。
(5)实用性
实用性是指系统中的数据要具有实用性,能为用户提供基本的数据服务。
(6)占有性
占有性是指系统数据被用户拥有的特性。
2.安全管理
安全管理按照级别可以分为系统级安全管理、用户级安全管理和文件级安全管理。
1)系统级安全管理
系统级安全管理是管理计算机环境的安全性,其任务是不允许未经核准的用户进入系统,从而也就防止了他人非法使用系统的资源。
主要采用的手段有:
(1)注册:
系统设置一张注册表,记录了注册用户的账户和口令等信息,使系统管理员能掌握进入系统的用户的情况,并保证用户各在系统中的唯一性。
(2)登录:
用户每次使用时,都要进行登录,通过核对用户账户和口令,核查该用户的合法性。
口令很容易泄密,要求用户定期修改口令,以进一步保证系统的安全性。
一些网络管理员在创建账号的时候往往用公司名、计算机名,或者将一些容易猜测到的字符做用户名,然后又把这些账户的密码设置得比较简单,比如:
“welcome”、“Iloveyou”、“letmein”或者和用户名相同的密码等。
这样的账户应该要求用户首次登录的时候更改成复杂的密码,还要注意经常更改密码。
一个好密码的定义是安全期内无法破解出来的密码就是好密码,也就是说,如果得到了密码文档,必须花43天或者更长的时间才能破解出来,密码策略是42天必须改密码。
设置安全强壮密码的一般原则是:
Ø所有安全强壮的密码至少要有下列四方面内容的三种:
✓大写字母:
ABCDEF……
✓小写字母:
abcdef……
✓数字:
1234567890
✓非字母数字的字符:
@#.%&^!
……
Ø安全的密码还要符合下列的规则
✓不使用普通的名字或昵称
✓不使用普通的个人信息,如生日日期
✓密码里不含有重复的字母或数字
✓至少使用八个字符
2)用户级安全管理
用户级安全管理,是为了给用户文件分配文件“访问权限”而设计的。
用户对文件访问权限的大小,是根据用户分类、需求和文件属性来分配的。
例如,UNIX中,将用户分成三类:
文件主、授权用户和一般用户。
在系统中登录过的用户都具有指定的文件访问权限,访问权限决定了用户对哪些文件能执行哪些操作。
当对某用户赋予其访问指定目录的权限时,他便具有了对该目录下的所有子目录和文件的访问权。
通常,对文件可以定义的访问权限有:
建立、删除、打开、读、写、查询和修改。
3)文件级安全管理
文件级安全性是通过系统管理员或文件主对文件属性的设置,来控制用户对文件的访问。
通常可对文件设置以下属性:
执行、隐含、修改、索引、只读、写、共享等。
2.2常用的服务器操作系统
操作系统是大型数据库系统的运行平台,为数据库系统提供一定程度的安全保护。
目前操作系统平台大多数集中在WindowsNT和UNIX,目前服务器常用的操作系统有:
UNIX、Linux、WindowsServer2000/2003/2008等。
这些操作系统都是符合C2级安全级别的操作系统。
2.2.1UNIX系统
UNIX操作系统是由美国贝尔实验室开发的一种多用户、多任务的通用网络操作系统。
它从一个实验室的产品发展成为当前使用普遍、影响深远的主流操作系统。
UNIX诞生于20世纪60年代末期,贝尔实验室的研究人员于1969年开始在GE645计算机上实现一种分时操作系统的雏形,后来该系统被移植到DEC的PDP-7小型机上。
1970年给系统正式取名为UNIX操作系统。
到1973年,UNIX系统的绝大部分源代码都用C语言重新编写过,大大提高了UNIX系统的可移植性,也为提高系统软件的开发效率创造了条件。
UNIX操作系统经过20多年的发展后,已经成为一种成熟的主流操作系统,并在发展过程中逐步形成了一些新的特色,其中主要特色包括5个方面,如可靠性高、极强的伸缩性、网络功能强、强大的数据库支持功能以及开放性好等特色。
2.2.2Linux系统
Linux是一套可以免费使用和自由传播的类UNIX操作系统,用户可以免费获得其源代码,并能够随意修改,主要用于基于Intelx86系列CPU的计算机上。
这个系统是由全世界各地的成千上万的程序员设计和实现的。
其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的UNIX兼容产品。
Linux最早开始于一位名叫LinusTorvalds的计算机业余爱好者,当时他是芬兰赫尔辛基大学的学生。
目的是想设计一个代替Minix(是由一位名叫AndrewTannebaum的计算机教授编写的一个操作系统示教程序)的操作系统。
这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有UNIX操作系统的全部功能。
Linux是在共用许可证GPL(GeneralPublicLicense)保护下的自由软件,也有好几种版本,如RedHatLinux、Slackware,以及国内的XteamLinux、红旗Linux等等。
Linux的流行是因为它具有许多优点,典型的优点有7个,如完全免费、完全兼容POSIX1.0标准、多用户多任务、良好的界面、丰富的网络功能、可靠的安全稳定性能以及支持多种平台等。
2.2.3Windows系统
Windows系统是当今最流行的操作系统,发展经过Win9X、WinMe、WinXP、NT3.0、NT40、NT5.0(Windows2000)和NT6.0(Windows2003)等众多版本,并逐步占据了广大的中小网络操作系统的市场。
WindowsNT以后的版本的操作系统使用了与Windows9X完全一致的用户界面和完全相同的操作方法,使用户使用起来比较方便。
与Windows9X相比,WindowsNT及后续版本的网络功能更加强大并且安全。
WindowsNT以后的操作系统具有以下三方面的优点:
1.支持多种网络协议
由于在网络中可能存在多种客户机,如AppleMacintosh、UNIX、OS/2等等,而这些客户机可能使用了不同的网络协议,如TCP/IP协议、IPX/SPX等。
WindowsNT以后的操作系统操作支持几乎所有常见的网络协议。
2.内置Internet功能
随着Internet的流行和TCP/IP协议组的标准化,WindowsNT以后的操作系统内置了IIS(InternetInformationServer),可以使网络管理员轻松的配置等服务。
3.支持NTFS文件系统
Windows9X所使用的文件系统是FAT,在NT中内置同时支持FAT和NTFS的磁盘分区格式。
使用NTFS的好处主要是可以提高文件管理的安全性,用户可以对NTFS系统中的任何文件、目录设置权限,这样当多用户同时访问系统的时候,可以增加文件的安全性。
2.3Windows操作系统安全——注册表
2.3.1注册表的由来
注册表源于Windows3.x操作系统,在早期的Windows3.x操作系统中,注册表是一个极小文件,其文件名为Reg.dat,里面只存放了某些文件类型的应用程序关联,而操作系统大部分的设置是放在Win.ini、System.ini等多个初始化INI文件中。
由于这些初始化文件不便于管理和维护,时常出现一些因INI文件遭到破坏而导致系统无法的启动的问题。
为了使系统运行得更为稳定、健壮,Windows95/98设计师们借用了WindowsNT中的注册表的思想,将注册表引入到Windows95/98操作系统中,而且将INI文件中的大部分设置也移植到注册表中,因此,注册表在Windows95/98及之后的操作系统启动、运行过程中起着重要的作用。
2.3.2注册表的作用
注册表是一个记录32位驱动的设置和位置的数据库。
当操作系统需要存取硬件设备时,操作系统需要知道从哪里找到它们,文件名、版本号、其他设置和信息,没有注册表对设备的记录,它们就不能被使用。
当一个用户准备运行一个应用程序,注册表提供应用程序信息给操作系统,这样应用程序可以被找到,正确数据文件的位置被规定,其他设置也都可以被使用。
注册表保存了安装信息(比如说日期),安装软件的用户,软件版本号和日期,序列号等,根据安装软件的不同,它包括的信息也不同。
它同样也保存了关于缺省数据和辅助文件的位置信息、菜单、按钮条、窗口状态和其他可选项。
通过修改注册表,我们可以对系统进行限制、优化。
比如可以设置与众不同的桌面图标和开始菜单,设置不同权限的人查看我的电脑资料,限制别人远程登录我的电脑,或修改我的注册表等等,我们可以修改注册表来达到目的。
本章后面的实训部分很多都可以采用改动注册表的办法来维护操作系统的安全。
2.3.3注册表中相关的术语
●HKEY:
“根键”或“主键”,它的图标与资源管理器中文件夹的图标有点儿相像。
●key(键):
它包含了附加的文件夹和一个或多个值。
●subkey(子键):
在某一个键(父键)下面出现的键(子键)。
●branch(分支):
代表一个特定的子键及其所包含的一切。
一个分支可以从每个注册表的顶端开始,但通常用以说明一个键和其所有内容。
●valueentry(值项):
带有一个名称和一个值的有序值。
每个键都可包含任何数量的值项。
每个值项均由三部分组成:
名称,数据类型,数据。
●字符串(REG_SZ):
顾名思义,一串ASCII码字符。
如“HelloWorld”,是一串文字或词组。
在注册表中,字符串值一般用来表示文件的描述、硬件的标识等。
通常它由字母和数字组成。
注册表总是在引号内显示字符串。
●二进制(REG_BINARY):
如F03D990000BC,是没有长度限制的二进制数值,在注册表编辑器中,二进制数据以十六进制的方式显示出来。
●双字(REG_DWORD):
从字面上理解应该是DoubleWord,双字节值。
由1-8个十六进制数据组成,我们可用以十六进制或十进制的方式来编辑。
如D1234567。
●Default(缺省值):
每一个键至少包括一个值项,称为缺省值(Default),它总是一个字串。
2.3.4注册表的结构
注册表是Windows程序员建造的一个复杂的信息数据库,它是多层次式的。
由于每台计算机上安装的设备、服务和程序有所不同,因此一台计算机上的注册表内容可能与另一台有很大不同。
依次单击“开始”→“运行”,输入regedit.exe打开“注册表编辑器”,就能在其左侧看到注册表的分支结构。
Windows2003注册表由5个根键组成。
1.HKEY_LOCAL_MACHINE(HKLM)
包含操作系统及硬件相关信息(如计算机总线类型、系统可用内存、当前装载了哪些设备驱动程序以及启动控制数据等)的配置单元。
实际上,HKLM保存着注册表中的大部分信息,因为另外四个配置单元都是其子项的别名。
不同的用户登录时,此配置单元保持不变。
HKEY_LOCAL_MACHINE(HKLM)的子树:
HARDWARE:
在系统启动时建立,包含了系统的硬件的信息;
SAM:
包含了用户账号和密码信息;
SECURITY:
包含了所有的安全配置信息;
SOFTWARE:
包含应用程序的配置信息;
SYSTEM:
包含了服务和设备的配置信息。
2.HKEY_CURRENT_USER
配置单元包含着当前登录到由这个注册表服务的计算机上的用户的配置文件。
其子项包含着环境变量、个人程序组、桌面设置、网络连接、打印机和应用程序首选项,存储于用户配置文件的ntuser.dat中。
优先于HKLM中相同关键字。
这些信息是HKEY_USERS配置单元当前登录用户的SecurityID(SID)子项的映射。
3.HKEY_USER(HKU)
配置单元包含的子项含有当前计算机上所有的用户配置文件。
其中一个子项总是映射为HKEY_CURRENT_USER(通过用户的SID值)。
另一个子项HKEY_USERS\DEFAULT包含用户登录前使用的信息。
4.HKEY_CLASSES_ROOT(HKCR)
配置单元包含的子项列出了当前已在计算机上注册的所有COM服务器和与应用程序相关联的所有文件扩展名。
这些信息是HKEY_LOCAL_MACHINE\SOFTWARE\Classes子项的映射。
5.HKEY_CURRENT_CONFIG(HKCC)
配置单元包含的子项列出了计算机当前会话的所有硬件配置信息。
硬件配置文件出现于WindowsNT版本4,它允许你选择在机器某个指定的会话中支持哪些设备驱动程序。
这些信息是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet子项的映射。
2.3.5注册表的维护
Windows系统运行一段时间后就会逐渐变慢,甚至会慢到令人难以忍受的程度,似乎除了重做系统就没有其他的选择了。
其实大多数时候系统变慢,只是太多的临时文件和注册表垃圾造成的。
Windows的注册表实际上是一个很庞大的数据库,包含了系统初始化、应用程序初始化信息等一系列Windows运行信息和数据。
在一些不需要的软件卸载后,Windows注册表中有关已经卸载的应用程序参数往往不能清除干净,会留下大量垃圾,使注册表逐步增大,臃肿不堪。
手动清理注册表是一件繁琐而又危险的事情,一般不予提倡自己手动清理注册表的垃圾,可以使用注册表维护软件,非常方便。
注册表清理软件多种多样,如超级兔子、Mircosoft的RegCleaner、WiseRegistryCleaner等。
实训一:
账户安全配置和系统安全设置
实训目的
熟练掌握网络操作系统WindowsServer2003的各种基本操作,包括WindowsServer2003的账户安全配置、系统安全设置等基础及高级安全配置方法。
实训步骤
1.账户安全配置
1)账户授权
一个安全操作系统的基本原则是:
最小的权限+最少的服务=最大的安全,因此对不同用户应授予不同的权限,尽量降低每个非授权用户的权限,使其拥有和身份相应的权限。
设置用户权限原则:
在使用之前将每个硬盘根加上Administrators用户为全部权限(可选加入SYSTEM用户),删除其他用户。
(1)打开“资源管理器”,右击某个磁盘盘符如“F盘”,选择“属性”,单击“安全”标签,如图2-1所示。
图2-1磁盘安全性设置
(2)选择其中一个用户,再选择需要设置的“允许”或“拒绝”权限下的复选框,如图2-2。
图2-2设置用户权限
(3)如果没有此用户,单击图2-2的“添加”按钮,弹出“选择用户、计算机或组”的图,在图2-3中,单击“高级”,选择右边的“立即查找”,随后在空白的窗体中出现本机中所有的用户信息,如图2-4;选择其中一个对象名称如“user”,双击后“user”即为要选择的用户,单击“确定”,“user”添加到图2-5所示的组或用户名称列表中,修改其合适的权限。
图2-3选择用户、计算机或组
图2-4查找用户
图2-5添加用户
(4)如果要删除某个用户,直接在图2-5中单击“删除”即可。
2)停用Guest用户
由于Guest账号的存在往往会给系统的安全带来危害,比如:
别人偷偷把你的guest激活后作为后门账号使用,更隐蔽的是直接克隆成了管理员账号,基于大多情况下该账号是不必要的,所以我们可以直接删除之以提高系统的安全性,遗憾的是在NT技术架构的Windows系统中不允许删除直接guest账号。
但是我们可以在计算机管理的用户里面把Guest账号停用,任何时候都不允许Guest账号登录系统,这样可以避免上面的现象发生,设置方法如图2-6所示。
为了保险起见,最好给Guest加一个复杂的密码,可以打开记事本,在里面输入一串包含特殊字符、数字、字母的长字符串,用它作为Guest账号的密码;并且修改Guest账号的属性,设置拒绝远程访问,如图2-7所示。
图2-6禁用guest账户
图2-7设置guest属性
3)重命名或禁用Administrator账户
Administrator账户是服务器上Administrators组的成员。
永远也不可以从Administrators组删除Administrator账户,但可以重命名或禁用该账户。
(1)重命名:
由于已知道管理员账户存在于所有Windows 2000Server、Windows 2000Professional、Windows XPProfessional和WindowsServer 2003家族的计算机上,所以重命名该账户可以使XX的人员在猜测此特权用户名和密码组合时难度更大一些。
Windows2003中的Administrator账号也不能被停用,但是把Administrator账户改名是可以的,因此可以有效的防止这一点。
不要使用