浅谈Linux操作系统的安全毕业论文文档格式.docx
《浅谈Linux操作系统的安全毕业论文文档格式.docx》由会员分享,可在线阅读,更多相关《浅谈Linux操作系统的安全毕业论文文档格式.docx(44页珍藏版)》请在冰点文库上搜索。
2.1Linux与UNIX的异同15
2.2Linux和Windows的区别以及安全性的比较16
2.3Linux与其他操作系统的区别18
2.4Linux与其他系统的总体比较总结119
2.5Linux与Windows根本比较—内核21
2.6Linux的特性23
2.7Linux与其他操作系统的区别25
第三章Linux的安全性能分析以及增强27
3.1嵌入式Linux的特点27
3.2嵌入式Linux现有安全机制及分析29
3.3嵌入式Linux安全缺陷31
3.4小结33
结束语34
参考文献37
附录38
第一章Linux操作系统概述
Linux系统是一个类似UNIX的操作系统,Linux系统是UNIX在微机上的完整实现。
UNIX操作系统是1969年由KenThompson和DennisRitchie在美国贝尔实验室开发的一种操作系统。
由于其良好而稳定的性能迅速在计算机中得到广泛的应用,在随后几十年中也有了不断的改进。
本章对Linux的发展进行介绍,主要包括如下内容:
(1)Linux发展的历史,以时间为主线对Linux的诞生进行介绍;
(2)分析Linux和UNIX操作系统的异同;
(3)介绍常用的几种Linux发行版本的特点;
(4)对Linux操作系统的系统架构进行简单的介绍;
(5)介绍GNU通用公共许可证及其特点。
1.1Linux发展历史
1991年10月5日,赫尔辛基大学的一名研究生LinusBenedictTorvalds(李纳斯·
托沃兹)在一个Usenet新闻组(comp.os.minix)中宣布他编制出了一种类似UNIX的小操作系统,叫Linux。
新的操作系统是受到另一个UNIX的小操作系统——Minix的启发,该系统是由一名叫AndrewSTanenbaum的教师开发的。
读者也许猜想所发布的这个系统应该是Linux的0.01版本,实际上不是这样。
真正的Linux0.01版本并没有被发布,原因是0.01版本不实用。
Linus仅仅在第一个Linux的FTP站点(ftp:
//nic.funet.fi)上提供过这个版本的的源代码。
Torvalds于10月5日发布的这个Linux版本被称为0.02版,它能够运行GNU(通用公共许可证)BourneAgainShell(bash)和GNU的C编译程序(gcc)以及为数不多的其它语言。
Torvalds绝对没有想到他设想的一种能够针对高级业余爱好者和黑客们的操作系统已经产生,这就是人们所称的Linux。
李纳斯·
托沃兹因此被称为开源之父;
Linux发布时的版本是0.02,后来又有0.03版,然后又跳到0.10版。
因为世界各地越来越多的程序员都开始开发Linux,它已经达到0.95版。
这就意味着正式公布1.0版本的时间已经为期不远了。
正式的1.0版本是在1994年公布的
1.1.1Linux的诞生和发展
Linux和UNIX有密切的联系。
UNIX能成为世界范围内最有影响的操作系统之一,是由于它有庞大的支持基础和发行系统。
当初UNIX是作为小型机和大型机上的多任务操作系统而开发的,很快就发展成为广泛使用的操作系统。
从个人计算机到超级计算机系统,都有各种UNIX版本。
但这些版本都很昂贵,而且源代码是有专利的,所以很难在计算机爱好者中广泛使用。
然而,UNIX又正是他们所想要的操作系统。
于是,出现了一支由编程高手、业余计算机玩家、黑客们组成的“高手集团军”,他们独立地开发出在功能上毫不逊色于UNIX操作系统的全新的、免费的Linux系统。
Linux系统是由芬兰赫尔辛基大学的LinuxTorvalds先生于1991年开始开发的,Linux系统的开发得到了全世界的UNIX程序员和爱好者的帮助。
他们借助Internet参与Linux系统的开发。
Linux系统的核心部分是全新的代码,没有使用有专利的代码。
在操作系统的发展受到版权限制的时候,出现了Minix操作系统,这个操作系统由一本书来详细的描述它的实现原理。
由于书中对Minux操作系统的描述非常详细、并且很有条理性,当时几乎全世界的计算机爱好者都在看这本书来理解操作系统的原理,其中包括Linux系统的创始者LinusTorvalds。
1.1.2Linux名称的由来
Linux操作系统刚开始时并没有被称作Linux,Linus给他的操作系统取名为FREAX,其英文含义是怪诞的、怪物、异想天开等意思。
在他将新的操作系统上载到ftp,funet。
fi服务器上时,管理员AriLemke很不喜欢这个名称。
他认为既然是Linus的操作系统就取其谐音Linux作为该操作系统的目录吧,于是Linux这个名称就开始流传下来。
在Linus的自传《JustforFun》一书中,Linus解释说:
"
坦白地说,我从来没有想到过要用Linux这个名称发布这个操作系统,因为这个名字有些太自负了。
而我为最终发布版准备的是什么名字呢Freax。
实际上,内核代码中某些早期的Makefile-用于描述如何编译源代码的文件-文件中就已经包含有"
Freax"
这个名字了,大约存在了半年左右。
但其实这也没什么关系,在当时还不需要一个名字,因为我还没有向任何人发布过内核代码。
而AriLemke,他坚持要用自己的方式将内核代码放到ftp站点上,并且非常不喜欢Freax这个名字。
他坚持要用现在这个名字(Linux),我承认当时我并没有跟他多争论。
但这都是他取的名字。
所以我可以光明正大地说我并不自负,或者部分坦白地说我并没有本位主义思想。
但我想好吧,这也是个好名字,而且以后为这事我总能说服别人,就想我现在做的这样。
--LinusTorvalds《Justforfun》..........................来自网络
1.2Linux的发展要素
Linux操作系统是UNIX的一种典型的克隆系统。
在Linux诞生之后,借助于Internet网络,在全世界计算机爱好者的共同努力下,成为目前世界上使用者最多的一种类似UNIX的操作系统。
在Linux操作系统的诞生、成长和发展过程中,以下5个方面起到了重要的作用:
UNIX操作系统、Minix操作系统、GNU计划、POSIX标准和Internet网络。
1.2.1UNIX操作系统
UNIX,是一个强大的多用户、多任务操作系统,支持多种处理器架构,最早由KenThompson、DennisRitchie和DouglasMcIlroy于1969年在AT&
T的贝尔实验室开发。
经过长期的发展和完善,目前已成长为一种主流的操作系统技术和基于这种技术的产品大家族。
由于UNIX具有技术成熟、可靠性高、网络和数据库功能强、伸缩性突出和开放性好等特色,可满足各行各业的实际需要,特别能满足企业重要业务的需要,已经成为主要的工作站平台和重要的企业操作平台。
自从UNIX操作系统从实验室走出来之后,得到了长足的发展。
目前已经成为大型系统的主流操作系统,现在几乎每个主要的计算机厂商都有其自有版本的UNIX。
UNIX是一个功能强大、性能全面的、多用户、多任务的分时操作系统,在从巨型计算机到普通PC等多种不同的平台上,都有着十分广泛的应用。
通常情况下,比较大型的系统应用,例如银行、电信部门,一般都采用固定机型的UNIX解决方案:
在电信系统中以SUN的UNIX系统方案居多,在民航里以HP的系统方案居多,在银行里以IBM的系统方案居多。
Linux是一种UNIX的克隆系统,采用了几乎一致的系统API接口。
特别是网络方面,二者接口的应用程序几乎完全一致。
1.2.2Minix操作系统
Minix操作系统也是UNIX操作系统的一种克隆系统,它由荷兰Amsterdam的Vrije大学著名教授AndrewS.Tanenbaum于1987年开发完成。
Minux操作系统目的主要用于学生学习操作系统原理时教学使用。
在当时Minix操作系统在大学中是免费使用的,但是其他用途则需要收费。
目前Minix操作系统已经全部是免费的,可以从许多FTP上下载,目前主要有1.5版本和2.0版本在使用。
由于Minix操作系统提供源代码,并且与操作系统相结合,有一本高质量的书籍介绍其实现原理,在当时全世界的大学中形成了学习Minix操作系统的风气,Linus刚开始就是参照此系统在1991年开始开发Linux的。
实际上,Minix操作系统并不是很优秀,但是这个操作系统提供了C语言和汇编语言的源代码。
而当时的UNIX操作系统源代码除了极少的范围外一直是保密的,Minix操作系统对程序员来说是一个福音。
为了可以让学生在一个学期内能够学完操作系统的课程,AST保持了Minix操作系统的小型化,没有接受世界各界对Minix扩展的要求,而正是这个原因激发了Linus编写Linux操作系统。
1.2.3POSIX标准
POSIX(PortableOperatingSystemInterfaceforComputingSystems)是由IEEE和ISO/IEC开发的一组标准。
该标准基于现有的UNIX实践和经验,描述了操作系统的调用服务接口,用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植和运行。
它是在20世纪80年代早期一个UNIX用户组的工作基础上取得的。
该UNIX用户组原来试图将AT&
T的SystemV操作系统和BerkeleyCSRG的BSD操作系统的调用接口之间的区别重新调和集成,并于1984年制定了usr/group标准。
1.3操作系统类型选择和内核版本的选择
要在Linux环境下进行程序设计,首先要选择合适的Linux发行版本和Linux的内核,选择一款适合自己的Linux操作系统。
本节对常用的发行版本和Linux内核的选择进行了介绍,并简要讲解了如何定制自己的Linux操作系统。
1.3.1常见的不同公司发行的Linux异同
1.Debian
Debian是一个致力于创建一个自由操作系统的合作组织,由IanMurdock于1993年创建。
该组织创建的操作系统为DebianGNU/Linux,简称为Debian。
这是一个免费的Linux系统,拥有许多用户。
Debian的主要特点如下:
简单方便的安装过程:
可以通过光盘、DOS系统、软盘、网络来进行安装。
数量众多的软件包:
Debian拥有超过18733个软件包。
软件包的高度集成:
Debian软件包都是由同一个团体所包装,其deb格式具有某些超越rpm格式的优点,正是这种软件包之间的集成性让Debian成为更稳定强健的系统。
简单方便的升级程序:
由于Debian的包装系统升级到新的版本非常轻松,只需要运行apt-getupdate;
apt-getdist-upgrade,就可以在几分钟内通过光盘实现升级(或者将apt指向Debian映射站点,通过网络来升级)。
Debian系统分为3个版本:
unstable版(不稳定版):
为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。
testing版(测试版):
该版本都经过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。
stable版(稳定版):
一般只用于服务器,其中的软件包大部分都比较过时,但是稳定和安全性都非常的高。
DebianGNU/Linux不单是一个操作系统,它也包含一万多个软件包,它们是一些已经过编译的软件,并包装成一种容易安装的格式。
Debian的官方网站是.debian.org/,读者可通过该网站下载Debian最新版本进行安装。
2.Ubuntu
Ubuntu基于Debian,包括了大量来自Debian发行版的软件包,保留了Debian强大的软件包管理系统,以便简易地安装或彻底的删除程序。
与大多数发行版附带数量巨大的可用可不用的软件不同,Ubuntu的软件包清单只包含那些高质量的重要应用程序。
Ubuntu具有以下特色:
使用GNOME桌面环境:
Ubuntu的开发者与Debian和GNOME开源社区互相协作,因此其桌面环境采用了GNOME的最新版本,并且与GNOME项目同步发布。
安全性:
Ubuntu十分注重系统的安全性,采用Sudo工具,所有系统相关的任务均需使用此指令,并输入密码,比起传统以登入系统管理员账号进行管理工作有更佳的安全性。
可用性:
Ubuntu也十分注重系统的可用性,其设计为在标准安装完成后即可以让使用者投入使用的操作系统。
例如,完成系统的安装后,用户不需要另外安装网页浏览器、办公室软件、多媒体软件与绘图软件等日常应用的软件,因为这些软件已被安装,并可随时使用。
新增特性:
对于Ubuntu8.04版本还增加了许多新的功能,如,允许用户把Ubuntu8.04系统安装到Windows操作系统上,而不强制要求独立的硬盘分区。
将KVM虚拟化技术整合到Ubuntu8.04,通过管理员权限,用户可以更容易的创建和管理虚拟机,使用更易配置的防火墙程序。
Ubuntu对于桌面和服务器来说都是合适的。
当前,Ubuntu发布版支持PC(Intelx86)、64-bitPC(AMD64)和PowerPC(AppleiBook和Powerbook,G4和G5)架构。
Ubuntu主要分为桌面版和服务器版两种。
Ubuntu桌面版:
可以浏览网页、查阅电子邮件、撰写文件、分发表单、编辑图片以及进行许多其他操作。
Ubuntu服务器版:
建立在稳健的Debian服务器版基础之上,它在一个稳定、安全、被充分支持的平台上提供着最好的自由软件。
Ubuntu的版本号根据发布一个版本的日期而定。
版本号由该次发布的年份和月份组成,并未反映其实际版本。
例如,首次发布是在2004年10月,因此其版本号为4.10。
当前版本于2009年4月发布,因此版本号为9.04。
提示:
读者可从其官方网站
3.Slackware
Slackware由PatrickVolkerding创建于1992年,是历史最悠久的Linux发行版,曾经在所有发行版中拥有最多的用户数量。
与很多其他的发行版不同,它坚持KISS(KeepItSimpleStupid)的原则,即没有任何配置系统的图形界面工具。
对于Linux的初学者来说,配置系统通常都会有一些困难,但是对有经验的系统管理员,将会喜欢这种方式的透明性和灵活性。
SlackwareLinux的另一个突出的特性是符合KISS原则:
Slackware没有如RPM之类的成熟的软件包管理器。
Slackware的软件包都由通常的tgz(tar/gzip)格式文件和安装脚本组成。
对于有经验的用户来说,tgz格式文件的功能比RPM更为强大,可以避免RPM之类管理器的依赖性问题。
Slackware还有另外一个特性就是BSD风格的初始化脚本。
Slackware对所有的运行级(runlevel)任务都用同一个脚本,而不是在不同的运行级中建立一堆脚本的链接。
这样,让用户不必自己编写新的脚本就能很容易地调整系统。
由于Slackware系统比较简洁、干净,易于在它的基础上进行开发,因此基于Slackware衍生出了多个发行版和Live-CD项目。
所谓Live-CD,就是一个在光盘上运行的Linux系统。
从Slackware9.1开始,其第二张安装CD就是一个Live-CD。
Slackware的官方网站为.slackware.,读者可从该网站下载最新版本。
4.Fedora
Fedora项目是由RedHat赞助,由开源社区与RedHat工程师合作开发的项目,是一套从RedHatLinux发展出来的免费Linux系统。
目前,Fedora最新的版本是Fedora11。
对于Linux用户来说,RedHat应该是最熟悉的发行版。
RedHat最早由BobYoung和MarcEwing在1995年创建。
RedHat的发行版到RedHat9.0后就已停止技术支持。
因此,目前RedHat分为两个系列:
由RedHat公司提供收费技术支持和更新的RedHatEnterpriseLinux,以及由社区开发的免费的FedoraCore。
FedoraCore自第五版起直接更名为Fedora。
Fedora从2003年推出第一个发行版FedoraCore1开始,到2009年6月推出Fedora11,其更新速度很快。
Fedora的官方网站是fedoraproject.org,读者可从该网站下载最新版的Fedora安装使用。
5.RedHatEnterpriseLinux
前面已经介绍过,RedHat公司的免费发行版到RedHat9.0就结束了。
现在,RedHat公司全面转向RedHatEnterpriseLinux(简写为RHEL)的开发,和以往不同的是,新的RHEL要求用户先购买许可,RedHat承诺保证软件的稳定性、安全性,并且RHEL的二进制代码不再提供下载,而是作为RedHat服务的一部分。
但依据GNU的规定,其源代码依然是开放的。
RHEL从2003年3月推出开始,到2009年1月已经发行到RHEL5.3版本(2007年3月就发布了RHEL5)。
RHEL5基于Linux2.6.18内核,支持多核处理器,其版本主要分为Server和Desktop两个。
1.Server版
RHELServer版本是RHEL家族中最强的版本,支持大型服务器,包括最全面的支持服务,适用于大型企业部门及数据中心。
Server版本可分为RedHatEnterpriseLinuxAdvancedPlatform(对应以前的RedHatEnterpriseLinuxAS)和RedHatEnterpriseLinux(对应以前的RedHatEnterpriseLinuxAS)。
2.Desktop版
RHELDesktop版是RHEL的桌面版。
适合所有桌面部署,包括办公室软件、软件制作环境及一些ISV客户程序。
Desktop版本分为RedHatEnterpriseLinuxDesktop(对应以前的RedHatDesktop)和RedHatEnterpriseLinuxDesktopwithWorkstationoption(对应以前的RedHatEnterpriseLinuxWS)。
1.3.2内核版本的选择
内核是Linux操作系统的最重要的部分,从最初的0.95版本到目前的2.6.28.4版本,Linux内核开发经过了近20年的时间,其架构已经十分稳定。
Linux内核的编号采用如下编号形式:
主版本号.次版本号.主补丁号.次补丁号
例如2.6.26.3各数字的含义如下:
(1)第1个数字
(2)是主版本号,表示第2大版本;
(2)第2个数字(6)是次版本号,有两个含义:
既表示是Linux内核大版本的第6个小版本,同时因为6是偶数表示为发布版本(奇数表示测试版);
(3)第3个数字(26)是主版本补丁号,表示指定小版本的第26个补丁包;
(4)第4个数字(3)是次版本补丁号,表示次补丁号的第3个小补丁。
在安装Linux操作系统的时候,最好不要采用发行版本号中的小版本号是奇数的内核,因为开发中的版本没有经过比较完善的测试,有一些bug是未知的,有可能造成使用中不必要的麻烦。
注意:
DebianLinux内核的版本稍有不同,如2.6.18-3,可以发现多了一组数该数字是构建号。
每个构建号可以增加少量新的驱动程序或缺陷修复。
Linux内核版本的开发源代码树目前比较通用的是2.6.xx的版本,当然,有部分2.4的版本仍在使用。
与2.4版本的内核相比较,2.6版本内核具有如下的优势:
⏹支持绝大多数的嵌入式系统,加入了之前嵌入式系统经常使用的μClinux的大部分代码,并且子系统的支持更加细化可以支持硬件体系结构的多样性,可抢占内核的调度方式支持实时系统,可定制内核。
⏹支持目前最新的CPU,例如Intel的超线程、可扩展的地址空间访问。
⏹驱动程序框架变更,例如用.ko替代了原来的.o方式,消除内核竞争,更加透明的子模块方式。
⏹增加了更多的内核级的硬件支持。
本书中的环境对Linux的内核没有特殊要求,因此读者在选择内核版本的时候不需要重新编译内核,使用操作系统自带的内核就可以满足需要。
本书作者的操作系统内核为Linux-2.6.18.3-686。
1.4Linux的系统架构
Linux系统从应用角度来看,分为内核空间和用户空间两个部分。
内核空间是Linux操作系统的主要部分,但是仅有内核的操作系统是不能完成用户任务的。
丰富并且功能强大的应用程序包是一个操作系统成功的必要条件
1.4.1Linux内核的主要模块
Linux的内核主要由5个子系统组成:
进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。
(1)进程调度SCHED
进程调度指的是系统对进程的多种状态之间转换的策略。
Linux下的进程调度有3种策略:
SCHED_OTHER、SCHED_FIFO和SCHED_RR。
⏹SCHED_OTHER是用于针对普通进程的时间片轮转调度策略。
这种策略中,系统给所有的运行状态的进程分配时间片。
在当前进程的时间片用完之后,系统从进程中优先级最高的进程中选择进程运行。
⏹SCHED_FIFO是针对运行的实时性要求比较高、运行时间短的进程调度策略。
这种策略中,系统按照进入队列的先后进行进程的调度,在没有更高优先级进程到来或者当前进程没有因为等待资源而阻塞的情况下,会一直运行。
⏹SCHED_RR是针对实时性要求比较高、运行时间比较长的进程调度策略。
这种策略与SCHED_OTHER的策略类似,只不过SCHED_RR进程的优先级要高得多。
系统分配给SCHED_RR进程时间片,然后轮循运行这些进程,将时间片用完的进程放入队列的末尾。
由于存在多种调度方式,Linux进程调度采用的是“有条件可剥夺”的调度方式。
普通进程中采用的是SCHED_OTHER的时间片轮循方式,实时进程可以剥夺普通进程。
如果普通进程在用户空间运行,则普通进程立即停止运行,将资源让给实时进程;
如果普通进程运行在内核空间,需要等系统调用返回用户空间后方可剥夺资源。
(2)内存管理MMU
内存管理是多个进程间的内存共享策略。
在Linux系统中,内存管理的主要概念是虚拟内存。
虚拟内存可以让进程拥有比实际物理内存更大