IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【2021-07-27更新】【梳理】简明操作系统原理 第十八章 操作系统安全引论(docx) -> 正文阅读

[系统运维]【2021-07-27更新】【梳理】简明操作系统原理 第十八章 操作系统安全引论(docx)

配套教材:
Operating Systems: Three Easy Pieces Remzi H. Arpaci-Dusseau Andrea C. Arpaci-Dusseau Peter Reiher
参考书目:
1、计算机操作系统(第4版) 汤小丹 梁红兵 哲凤屏 汤子瀛 编著 西安电子科技大学出版社

在线阅读:
http://pages.cs.wisc.edu/~remzi/OSTEP/
University of Wisconsin Madison 教授 Remzi Arpaci-Dusseau 认为课本应该是免费的
————————————————————————————————————————
这是专业必修课《操作系统原理》的复习指引。
需要掌握的概念在文档中以蓝色标识,并用可读性更好的字体显示 Linux 命令和代码。代码部分语法高亮。
文档下载地址:
链接:https://pan.baidu.com/s/1JnlPXr-xKFJo8Qarwe5JqA
提取码:0000

十八 操作系统安全引论

计算机系统安全这个话题的必要性正在不断提升。计算机系统的安全问题不但会在经济上造成严重损失,还可能会使人们的生命受到威胁。计算机系统的每个部件都可以成为受到攻击的对象,但操作系统安全是特别重要的一环。如果操作系统不安全,那么在它之上运行的一切都不会安全。你可能不是Web服务器或数据库系统的管理员,因此不关心它们的安全问题;但几乎每个人的所有计算机都会安装操作系统,而且可供选用的操作系统并不多。操作系统还负责对CPU、内存和外围设备等硬件的最终控制。只有操作系统具备了足够的安全性,这些硬件才会正常运行。操作系统的内存管理、调度、文件系统和同步等机制如果受到破坏,也有概率带来非常严重的后果。
代码越长,具有漏洞的几率越大。而操作系统的代码量都是非常多的,因此,操作系统的安全性,是一个大而复杂的问题。假如所有进程都是可信的,操作系统的安全自然就不会如此棘手。但我们实际上不可能面对这样的情况。当从网络上下载一个脚本并运行的时候,我们并不希望它直接杀光其它全部进程,将磁盘格式化并覆写,或者像其他人发送垃圾邮件,甚至向网络发送大量的机密文件或儿童色情影像,让自己进局子。
操作系统提供必要的安全机制,使得应用程序可以在假设这些机制正常的条件下,达成自己的安全目标。如果操作系统无法提供这些安全机制,安全的任务就落到了应用程序上,给开发者带来极其严重的负担;实际上,仅凭应用程序本身是无法达到需要的安全目标的,因为它们依赖的虚拟内存等底层机制根本不可信任。

一个典型的商用操作系统,对所在计算机的几乎所有硬件都具有完全的控制权。也就是说,它至少能够:
·读写任意进程的内存。
·在任何已连接的存储介质上,读取、写入、删除或破坏任何文件。
·调度或暂停进程的执行。
·将任何信息发送到任何地方,无论进程期望与否。
·启用或禁用任意的已连接外围设备。
·赋予任意进程访问其它进程的资源的权限。
·任意取走原本由一个进程控制的任何资源。
·响应带有极大的恶意欺诈目的的系统调用。
本质上,进程是由操作系统支配的。如果操作系统本身是恶意的(如果你怀疑你的系统本身具有恶意的目的,那么是时候尽快更换新的操作系统了),进程将无法保护自己的任何部分。一般认为,操作系统本身不具备恶意,但系统漏洞可以使一个恶意的进程令操作系统变得恶意:进程可能通过漏洞获得操作系统的全部力量。不但在设计上就要确保操作系统的安全性,再发现操作系统具有安全漏洞以后,还要及时打上补丁,使得运行这个操作系统的计算机上的一切都免受安全威胁。

在以前,操作系统会控制所有连接到它所在计算机的硬件。但1990年代开始,硬件开发者们发现,有一些硬件应当隔离开来,不可以交由操作系统控制。这种硬件首先应用于对操作系统启动进程的保护。可信平台模块(trusted platform module,TPM),保证用户启动的一定是期望的操作系统,而不是恶意程序指定的操作系统。最近出现了更多的硬件,它们尝试控制机器可以完成的任务,通常是保护一些重要数据,这些数据也经常与加密有关。这些硬件成为安全区域(security enclaves),他们仅允许指定数据的安全使用,即便是操作系统中的最强大、最可信的代码,也不被允许对受保护的数据做出越权行为。它们常被用于支持云环境中的操作。云环境经常需要在相同的物理设备上运行许多种操作系统。
虽然这些手段往往也存在漏洞,但是,若要针对它们攻击成功,一般是很复杂、很困难的,通常要求已经能够在系统上运行特权级代码。所以,虽然这些安全硬件并不能100%保护系统,它们也提供了针对恶意操作系统代码的额外安全屏障。

如果我们希望一个系统是安全的,这通常意味着我们要求它具备:
·秘密性(confidentiality)。如果要求一些信息对其他人隐藏,那么其他人不应当发现它们。
·完整性(integrity)。如果要求一些信息存储在系统中的某个位置并且不变,那么直到下次由允许的用户提出改变之前,这些信息都不能变动。完整性的一个重要方面是真实性(authenticity):不但信息本身不能被篡改,信息也需要由可信的个人或组织创建。
·可用性(availability)。我要求一些信息或服务在指定条件下可用,就不能使得信息在需要被使用的时候由于恶意攻击等原因不可用。
有时候,计算机系统的安全还要求具备不可抵赖性(non-repudiation)。这意味着:当人员借助计算机系统做出了某些动作,之后就不能否认,声称他们没有做过这些动作。具体可以表现为:否认的成本非常高,或者很容易发现他们实际上有做出这些行为。
这些都是宏观上的目标。在典型的操作系统中,它们通常表现为更细节的内容。例如,如果要确保操作系统具有秘密性,就不能允许一个进程随意访问其它进程的内存空间。如果要求完整性,就意味着当权限用户写入具体的文件时,其它未授权的用户均不能对这些文件做出改变。如要确保可用性,就需要让进程不能长时间霸占CPU,阻止其它进程访问属于它们的CPU份额。
上面的这些表述有时还不够具体。举例来讲,如果有两个人在共同撰写一份报告,那么这两个人都应当被允许修改报告文档;而其它用户则不可以。通常需要阻止一个进程访问其它进程的地址空间(或其它独占资源),但有的时候又需要多个进程共享一段内存或其它系统资源(文件系统等),而这也会给安全性带来潜在隐患。操作系统的安全机制必须足够灵活,以应对实际应用中的种种复杂情况。一般地,操作系统只是提供一些通用的机制,使得最终能实现的安全策略可以多变。这就对安全机制的设计提出了很高的要求。

在计算机这个行业,很少有人会去做操作系统方向,甚至不会对自己使用的操作系统做出大幅改变。但是,绝大多数从业人员都会参与到大型软件系统的设计中。了解操作系统安全的一些原理,对设计其它大型软件也很有帮助。这些原则最初是由Jerome Saltzer和Michael Schroeder整理出来的,这里只简单讨论。
机制的经济性(economy of mechanism)。这基本上代表系统应当小而简单。简易的系统具有的bug更少,而且更容易明白它们的行为。如果连一个系统会表现出怎样的行为都不知道,就更不用说达到需要的系统安全目标了。
失败安全的默认值(fail-safe defaults)。如果策略会决定系统的行为,那么它们涉及的默认值应当是安全的。
完全仲裁(complete mediation)。对于同一个动作在他每次发生之前,都必须检查它是否符合已有的安全策略。不过,这条原则在许多系统中常被忽略,这是出于易用性(usability)与更低的额外开销(lower overhead)的考虑。在工程设计中,许多目标是相互冲突的,往往需要妥协。
开放的设计(open design)。总是假设你的敌对方知道你的设计的全部细节。这并不是说你要把这些细节都告诉所有人,而是假定攻击者对攻击的目标了如指掌。事实上,攻击者通常都是这样的。
特权隔离(separation of privilege)。在执行关键操作时,对可信度或隔离提出要求。常见的例子是双因子认证(two-factor authentication,两步验证)。你通常被要求同时验证密码和持有某种硬件(例如,输入手机验证码来确定你本人持有你自己的手机)。
最少特权(least privilege)。总是给予用户或进程尽可能少的特权。赋予的权力更多,就意味着更有可能被滥用权限,即便用户或组织是可信的。如果他们犯下过失,敌方就有可能利用他们的高权限来进行有害的操作。
最少通用机制(least common mechanism)。对不同用户或进程,使用单独的数据结构或机制来处理他们。比如每个进程都有自己的页表,防止它们不受控制地访问其它进程的页面。
可接受性(acceptability)。被保护的关键部分不能对许多编程人员都很重要。如果搞到用户不使用系统,系统最终也就没有价值。许多高安全性的系统被弃用,正是因为它们询问用户太多。

要实现许多安全性,需要做的往往与用到的编程语言相关。开发人员应当多去查找相关的资料。

在典型的操作系统中,有不同的目标集合,围绕秘密性、完整性和可用性等方面。一些目标的实现,倾向于由操作系统模型内建;其它则由操作系统的所有者或用户控制。内建的目标是极度通用的,或者必须保证,以确保更具体的目标能够达成的。许多这些内建的目标,与控制进程访问硬件的特定部分相关。因为硬件被系统的所有进程共享。除非这种共享被小心控制,否则一个进程就有可能介入其它进程的安全目的。其它内建目标则与操作系统提供的服务有关,例如文件系统、内存管理和进程间通信。如果这些服务没有被小心控制,则进程可能破坏系统的安全目标。
很明显,许多系统安全都与进程处理有关。如果操作系统能够维持进程间的隔离,并且只能在操作系统的协助下解除部分隔离,则无论是共享的硬件还是操作系统服务,都不可以被用于破坏安全目标。这些需求蕴含着:操作系统需要警惕允许硬件与系统服务的使用。许多情况中,操作系统具有良好的机会来警惕。例如,操作系统会控制虚拟内存,使得完全控制哪些物理内存能够被哪些进程访问。硬件支持则阻止进程访问未映射到自己的虚拟内存空间的物理内存地址。
系统调用则为操作系统提供保护创造了更多机会,在许多操作系统中,进程必须通过显式的系统调用来访问系统服务。系统调用通过正确调用操作系统代码来同用户模式切换到特权模式。这段代码能够判定:哪个进程发起了系统调用,它需要请求哪些服务。访问外围设备需要通过设备驱动,驱动通常也通过系统调用来访问,因此该机制也能够保证硬件访问安全策略的正确应用。
进程执行系统调动时,操作系统将应用进程控制块(PCB)或相似结构中的PID(进程标识符),来确定进程的身份。然后,操作系统使用访问控制机制(access control mechanisms),来确定该进程是否被授权(authorized)执行需要的动作。如是,则操作系统代为执行,或安排该进程在不对系统产生更多干涉的条件下执行。若否,操作系统生成错误码。

在进行安全防护时,要留意最薄弱的环节。攻击者很可能很聪明,或者说很懒:他们不做不需要做的工作。比如,如果他们发现你只是简单地将“password”作为访问系统的密码,那么他们就不会费尽心思去寻找0day缓冲区溢出(zero-day buffer overflow)漏洞。
这个实用的推断,代表你应当花费较多的时间,去强化系统中安全性最弱的部分。一个运行中的系统最薄弱的地方,通常是使用者,而不是软件。改变人们的行为是很难的,但可以在设计软件的过程中,考虑到攻击者可能会糊弄合法用户。如果攻击者能够诱骗具有完全权限的用户,那么危险性显然远远大于只能破坏自己拥有的内容的用户。
考虑安全问题比考虑系统的其它设计问题有所不同,安全更具有对抗性。如果你想了解更多思考构建系统的安全的好方法,在这里推荐一本书《Secrets and Lies》,作者是Bruce Schneier。
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 08:14:35  更:2021-07-28 08:15:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 11:03:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计