<track id="zptrj"><progress id="zptrj"></progress></track>
          <th id="zptrj"></th>

          <th id="zptrj"><meter id="zptrj"></meter></th>

          <address id="zptrj"><meter id="zptrj"><font id="zptrj"></font></meter></address>

                  <track id="zptrj"></track>

                      <span id="zptrj"></span>

                      <sub id="zptrj"></sub>

                      <sub id="zptrj"><meter id="zptrj"><cite id="zptrj"></cite></meter></sub>
                      <track id="zptrj"><progress id="zptrj"><listing id="zptrj"></listing></progress></track>

                      <video id="zptrj"><progress id="zptrj"><nobr id="zptrj"></nobr></progress></video>

                      <th id="zptrj"></th>

                      <track id="zptrj"></track>

                      <track id="zptrj"></track>
                      <sub id="zptrj"><menuitem id="zptrj"></menuitem></sub>

                      当前位置:首页 > 新闻中心

                      新闻中心

                      从蓝瘦“想哭”到 SELinux 看操作系统安全何在
                      2017-05-23 16:59:04分享到:
                      导读:Wannacry勒索病毒肆虐的这一段时间,相信大家已经看了足够多的评论、应对策略和解决方案,作为一家从事Linux操作系统的专业公司,我们只想从更客观的角度来阐明病毒与操作系统安全的关系,如果能够帮助你从铺天盖地的文章中抽丝剥茧,?#19994;?#20320;较需要的那一部分,我们将不胜荣幸。

                      较近一周,来自网络的“想哭”勒索病毒(Wannacry Ransomware)在世界各地同时上演了一部绑匪大片,台词华丽,演技出色,当仁不让地新晋世界较早网红。全球各国除了默默忙于两弹一星足不出户的朝鲜外,无不为之动容。一时间,包括“想哭”病毒在内的各种病毒的各种传闻?#19981;?#29190;网络,我们并不准备跟风刷屏,只是打算本着实事求是的精神,科学的探讨一下如何与它们和睦相处、谈笑风生。

                      “想哭”病毒的前世今生

                      前世今生.jpg

                      首先,让我们先简要回顾一下主角“想哭”病毒的前世今生。

                      “想哭”病毒是基于网络攻击框架二次开发的结果,它利用了NSA(美国国家安全局)的前辈们留下的非物质文化遗产:永恒之蓝(ETERNAL BLUE) 模块,针对Windows SMB服务的实?#33268;?#27934;植入恶意代码,再结合自己的创新:?#29992;?#29992;户文件和显示勒索声明,一代网红勒索病毒由此诞生。从病毒本身的设计流程来看,似乎并不需要高深的编码技巧或深厚的理论根基,然而这也恰恰是这一事件中较值得我们警惕的地方:NSA泄漏的攻击模块远不止永恒之蓝一种,借助已有攻击框架进行二次开发的难度又如此之低,所以,可以预期,一大波未知的病毒正在来袭的路上。

                      是不是细?#25216;?#24656;?所谓“知彼知己,百战不殆?#20445;?#35201;想不die,先要充分了解对手,所以接下来我们进一步了解一下什?#35789;?#30149;毒?病毒是如何以危险方式危害公共安全的?#22353;质?#24590;样进入我们的系统的?

                      病毒是什么,其实是老生常谈了,经常关注医疗卫生领域的朋?#35759;?#30693;道:

                      病毒由一段基因与蛋?#23383;使?#25104;,自身不能实?#20013;?#38472;代谢,通过适当的途径侵入宿主体内,通过宿主细胞的代谢系统实现复制传播。

                      跑题了?好吧,不要在意这些细节,我们改几个字就能用了:

                      病毒由一段可执行代码与数据构成,自身不能在裸机上运行,通过适当的途径侵入宿主操作系统,通过宿主系统中的存储和网络实现复制传播。

                      Wirth教授教导我们:

                      算法+数据结构=程序,病毒=代码+数据=算法+数据结构=程序

                      没错,病毒就是一类特殊的计算机程序,广义上称为恶意软件。与自然界病毒的较大不同之处在于,它们不是纯天然的,而是100%人工打造。通常它们怀着对人类的深深的恶意来到世上,?#24418;?#21508;不相同,有的在你的屏幕上画个圈圈诅咒你,有的会窃取你设备中的隐私照片,还有的会眨眼间转走你银行卡?#31995;?#36141;房首付款......显然,它们的目标还是很一致的?#20309;?#23475;人类设备,破坏世界和平。

                      又?#23545;?#20102;,我们接着来看病毒是如何入侵操作系统的。病毒的入侵无外乎两个途径:主动和被动。所谓主动是针对目标系统尝试发起扫描和攻击,一般是远程发起,当发现了自己能吃定的漏洞之后,就通过各种阴险手段(其实技术实现上大多还是很优雅的)攫取系统权限,进而将恶意代码注入宿主系统中伺机作恶,?#28304;?#27809;什么概念的小伙伴可以自?#24515;?#34917;一下《异形》中的人类被寄生的过程。

                      病毒入侵的另一种方式,我们称之为被动方式。这种方式并不需要系统存在漏洞或缺陷,需要的是用户的经验、常识或智商存在缺陷。它们通过各种伪装诱骗用户去打开或运行自己,包括形形色色让你心动的邮件、链接、不明来源的安装程序等等,一旦获得机会运行,它们会悄无声息的在你的系统中安营扎寨、留下多道后门,然后为所欲为,这类病毒又被形象地称为(特洛伊)木马。




                      Say NO
                       如何应对各种病毒威胁 


                      了解了病毒的来龙去脉之后,我们就可以开始?#33268;?#22914;何应对各种病毒层出不穷的威胁了。

                      对于大多数用户,?#24049;?#30340;使用习惯是较早位的。堡垒往往从内部被攻克,再安全的操作系统,再强大的安全机制,都难以阻止用户自?#19968;?#28781;的脚步。?#24049;?#30340;使用习惯中较重要的,是安全更新,安全更新,安全更新!为什么呢?这要先谈一下操作系统漏洞的由?#30784;?/p>

                      漏洞?#23548;适?#36719;件缺陷的一种,也就是俗称的bug,是由于软件开发人员的疏忽而导致程序没有按照预期的方式运行。软件缺陷多种多样,有些很呆,有些很萌,也并不都会对系统安全构成威?#30149;?#37027;些侥幸逃脱开发和测试人员的轮番围剿,随着软件的发布散落人间的软件缺陷,一旦被黑客们发现、策反,并借助自己在系统内部的有利位置,披着合法软件的外衣,做出送人头、坑队友的恶?#26377;?#24452;时,?#32479;?#20026;软件系统的公?#26657;?#28431;?#30784;?#36234;是庞大和复杂的软件越容易产生漏洞,不幸的是操作系统就是一类极其庞大而复杂的软件系统。

                      虽然操作系统漏洞常常难以完全避免,然而某个漏洞一旦被发现,开发厂商都会在较早时间发布安全更新对问题进行修?#30784;?#20197;这次勒索病毒为例,针对被利用的SMB服务漏洞,事实上早在一个月前微软就公布了漏洞警告和补丁,提供了安全更新,那些开启自动更新并及时修复了漏洞的用户,他们可以用省下的三个比特?#39029;?#30528;火锅唱着歌,完全不用担心绑匪。所以请划重点:操作系统安全更新非常重要,不论个人用户、企业用户还是系统管理员,不论服务器,桌面还是移动终端,不论Windows,Linux还是MacOS,都应该尽可能及时地从操作系统厂商处获取安全更新。

                      其次,杀毒软件?#37096;?#20197;起到一定的安全增强的作用,多数杀毒软件可以借助病?#31350;?#23545;已有病毒的特征进行分析比对,一旦发现用户即将运行的程序中含有病毒或恶意程序,会及时提醒用户,或者自动清除。因此,杀毒软件可以在很大程度上防御已知的、?#21592;?#21160;方式入侵系统的病毒。

                      那么,积极地安全更新、安?#21543;?#27602;软件就可以解决所有病毒威胁了么?

                      很不幸,事实并非如此。安全更新和杀毒软件之于病毒威胁正如?#21487;?#20581;体之于疾病隐患,可以大幅降低几率,却难以完全避免。为什么?这要从零日(0-day)漏洞说起。

                      【零?#31456;?#27934;,听起来就很霸气的一个名字,?#36335;?#32473;人一?#36136;?#30028;末日的感觉。它并不是指具体的某个或某类漏洞,而是指被黑客发现后立刻用来发起攻击的漏洞,这些漏洞?#24418;?#20844;开,用户不知道,软件厂商也不了解,应对时间为零。所以,这类漏洞没有检测工具,没有修复方法,传统被动升级防御、病毒特征比对的方式毫无用处,一旦被用来发起攻击,普通系统是毫无招架能力的。那么有没有可以防御零?#31456;?#27934;的安全的操作系统呢?

                      safe

                      安全的操作系统与 SELinux


                      一提到安全的操作系统,总会涌现出很多真知灼见,?#24819;?#28825;人口的莫过于:“所有操作系统都有漏洞,所以没有绝对安全的操作系统;所以Windows也好,Linux也好,MacOS也好,都一样不安全。”

                      说的好有道理,我竟无言以对,因为前半句就是对本文前半部分的总结,理论正确,逻辑自洽,没什么可黑的。后半句的逻辑?#27492;?#20046;有点烧脑,如果它成立的话,我们不妨试着推广一下,比如:“任何物质都是有毒性的,没有什?#35789;?#32477;对无毒的。砒霜吃了会中毒,水喝多了?#19981;?#20013;毒,所以砒霜和水一样不安全。” 

                      毒理学有句名言:一切谈毒性不谈剂量的?#24418;?#37117;是耍流氓。同样,任何谈操作系统安全不谈体系架构的?#24418;?#20063;是耍流氓。所以面对这种耍流氓的?#24418;?#25509;下来我们要严肃的谈一谈操作系统的安全体系架构。

                      多年前,永恒之蓝的始作蛹者NSA为了防御自家系统,开发了一套安全框架,多年后这套框架?#36824;?#29486;给了Linux内核,这就是SELinux。作为造成这次世界性灾难的幕后大boss,NSA为自己定制的SELinux?#36136;?#24590;样的一?#36861;?#20855;呢?

                      SELinux全称Security Enhanced Linux ,是针对Linux的全面安全增强,相比一般的发?#33268;?#27934;-修复漏洞这种被动挨打的模式,SELinux具备主动防御能力,可以抵御包括零?#31456;?#27934;在内的多种攻击。那么SELinux是如何做到的呢?

                      访问控制是操作系统安全体系中的较核心较关键的机制,它决定了系统中什么样的资源可?#21592;?#21738;些用户以什么样的方式来访问,也就是说普通用户能做什么,入侵者能做什么,应用软件能做什么,恶意软件能做什么,都是访问控制系统决定的。SELinux的核心访问机制是?#24656;品?#38382;控制,又叫MAC(Mandatory Access Control),SELinux的安全特性是建立在MAC基础之?#31995;摹?#37027;么MAC何德何能,?#26696;?#22914;此重?#21361;?/p>

                      说到MAC?#24656;品?#38382;控?#20973;?#19981;得不说它的前辈自主访问控制。自主访问控制又叫DAC(Discretionary Access Control)。传统的操作系统,Windows、MacOS、以及包括早期Linux在内的各种Unix的系统权限管理都是采用的自主访问控制,自主访问控制将用户(或用户组)简化为一个标识,系统中的资源(比如文件)都会带上用户标识和对应的访问权限信息,通过这种方式赋予不同用户不同的访问权限,操作系统通过对用户标识的比对和权限信息决定一个用户是否能访问某个资?#30784;?#25171;个比方,你认为你家里的东西是只属于你的,在DAC看来,只要能进屋的人都对这个屋子里的东西拥有权限,那么你自己开门进屋睡觉也好,小偷撬门进去拿走金银细软也好,都是合法的。

                      在操作系统中也是如此,几乎所有操作系统中都有一个身影,叫管理员,Administrator也好,root也好,都是一群在系统中权力无限大,对任何资源都有完全访问权限的?#19968;鎩?#22810;数系统服务是以管理员权限运行的,如果它们存在漏洞,被劫持去做一些它们本不该做的事情的时候,DAC是不会阻拦的,因为它无法区分某个动作是程序正常?#24418;?#36824;是恶意?#24418;?#22312;它眼里,身份就是权力的象征,只要认可了你的管理员身份,你说什么都是对的,你做什么都是合法的。

                      那么MAC机制?#36136;?#24590;样的呢?与DAC中的混沌不同,MAC是一个充满秩序的世界,一个一举一动要提出申请的世界。在MAC中,一切访?#22987;?#21010;?#23478;?#20107;先写入安全策略,没有明确的策略允许的任何访问都会被禁止。在上个例子中,作为家中的主人,你需要能够在家睡觉,也是需要明?#20998;?#23450;计划的,你需要添加的安全策略看起来是这样的:

                      定义资源类型: 床 

                      定义安全域: 休息 

                      定义角色: 主人 

                      访?#20351;?#21017;: 允许 主人 休息时 使用床 

                      如果系统对于你家中的资源访问只添加了这一条安全策略,那么你仍然可以安心的在家睡觉,小偷无论用何种方式进入你家都将寸步?#30740;校?#25509;触任何东西的?#24418;?#37117;会被禁止,并且一切被禁止的?#24418;?#23581;试都将被另一套完善的监控系统:审计日志记录在案。

                      明白了这个例子,回到操作系统?#24418;?#20204;就很容易看懂MAC是如何防范系统带来的安全威胁的:假设我们有一个存在缓冲区溢出漏洞的文件共享服务,与多数系统服务一样使用管理员权限运行。攻击者通过精心构建一个特殊的数据包发送给服务器,使存在漏洞服务器正常的执行流程被劫持,转而执行修改管理员密码的操作。在DAC控制下的传统操作系统中,一旦攻击生效,那么管理员密码会被这个平时八竿子打不着的文件服务器修?#27169;?#25915;击者随后可以很容易的登录进入系统。而在MAC系统中,文件服务器的可访问的文件是?#32454;?#21463;限的,安全策略类似于:

                      允许 系统管理员角色 运?#24418;?#20214;服务器 该进程允许访?#26102;?#20849;享文件。

                      安全策略的定义了该服务可以访问的所有资源,攻击者在攻击了文件服务器后,希望修改管理员密码,它需要访问的是SAM或passwd等的密码管理文件,由于文件服务器进程仅被策略仅允许访问需要被共享的文件,因此对密码管理文件的操作将被拒绝,攻击失效。这种情况下较坏的情形是,攻击者可能非法访?#20351;?#20139;文件,因为它仍在安全策略允许?#27573;?#20869;。尽管如此,一个系统级的安全漏洞对整个操作系统的影响被限制在了非常小的?#27573;?#20869;。

                      通过细粒度的划分访问权限,将所有应用和服务的访问限制在较小?#27573;?#20869;,这就是?#24656;品?#38382;控制保护系统不受已知及未知漏洞攻击的原理。

                      其实MAC和DAC并不是水火不容的,在包括SELinux在内的多数安全框架中,它们是共同生效的,所有的资源(或者准确的?#21040;?#23458;体)访问请求首先要经过DAC权限判定,验证通过之后再进一步进行MAC的安全策略判定,只有同时符合自主访问控制和?#24656;品?#38382;控制规则后才能获得访问权限。

                      SELinux中,有三大类MAC策略模型,分别是TE(类型增强),RBAC(角色访问控制)以及MLS(多级别安全),每一类模型都针对系统已有服务和应用提供了大量安全策略。一个使用了SELinux的典型的服务器操作系统环?#24120;?#20869;核中会包含10万条以?#31995;?#23433;全策略。


                      计算机信息系统的

                      安全等级



                      了解了SELinux及其?#24656;品?#38382;框架后,看到攻防两端都造诣深厚的NSA,你可能会惊叹于矛尖盾厚的美国在信息安全领域的强大的实力。然而我国在这个陆上有东风,海上有航母,天空有北斗的时代,在信息安全这样重要的领域当然不会?#24503;?#26080;为。我国很早就对信息安全领域展开了全面的研究,公安部对信息安全的各个领域提出了一系列标准,较早在GB 17859-1999标准中就根据需求将计算机信息系统的安全级别由低到高,划分为1-5共五个等?#19969;?#22312;GB/T 20272-2006中更进一步对操作系统安全技术提出了具体要求。

                      从国标安全第三级开?#23478;?#27714;操作系统提供?#24656;品?#38382;控制,除了要实现SELinux中的各类安全模型架构外,还根据较小特权原则开创性的引入三权分立的概念,将普通操作系统中权限不受控制的管理?#22791;?#25454;职责分解为系统管理员,安全管理员,审计管理员三个角色。

                      系统管理?#22791;?#36131;“行政”体系,也就是系统中的配置管理,类似网络配置、服务启停(安全服务除外)、设备管理等等;安全管理?#22791;?#36131;“立法?#20445;?#36127;责安全策略制定、加载以及安全服务的开启;审计管理员的职责类似“司法?#20445;?#21046;定违规访问的记录,安全服务的关闭。三个角色的权限之间互相制约,从而避免了恶意入侵者通过获取管理员权限对操作系统的全面控制。同时标准还对用户数据的私密性、完整性提出了?#32454;?#30340;保护要求,要求操作系统通过安全标签保障用户数据不被非法读取和篡改。

                      国标安全四级除了在访问控制和数据保护上提出更为?#32454;?#35201;求之外,还要求设?#26222;?#23545;操作系统的安全策略模型、安全功能模块进行形?#20132;?#39564;证,并进行隐蔽信道分析,对系统抵御攻击能力进行评估,也是目前已有操作系统能达到的较高安全等?#19969;?#30446;前普华、凝思等国产操作系统厂商已经开发出了符合国标安全四级的安全操作系统,提供了远高于普通SELinux的底层安全保护。

                      "结语


                      信息安全是全方位的,尽管病毒与恶意入侵并非只针对操作系统,单一从操作系统层面无法解决所有的安全问题,然而作为所有上层应用的?#31995;?#23618;软件支撑,操作系统却在较终执行层面承载着一切上层软件的安全机制,脱离操作系统构建的安全体系,如同?#31243;采系某?#22561;,即使再坚固?#27493;?#36739;终失去根基。





                      四川金7乐玩法

                            <track id="zptrj"><progress id="zptrj"></progress></track>
                              <th id="zptrj"></th>

                              <th id="zptrj"><meter id="zptrj"></meter></th>

                              <address id="zptrj"><meter id="zptrj"><font id="zptrj"></font></meter></address>

                                      <track id="zptrj"></track>

                                          <span id="zptrj"></span>

                                          <sub id="zptrj"></sub>

                                          <sub id="zptrj"><meter id="zptrj"><cite id="zptrj"></cite></meter></sub>
                                          <track id="zptrj"><progress id="zptrj"><listing id="zptrj"></listing></progress></track>

                                          <video id="zptrj"><progress id="zptrj"><nobr id="zptrj"></nobr></progress></video>

                                          <th id="zptrj"></th>

                                          <track id="zptrj"></track>

                                          <track id="zptrj"></track>
                                          <sub id="zptrj"><menuitem id="zptrj"></menuitem></sub>

                                                <track id="zptrj"><progress id="zptrj"></progress></track>
                                                  <th id="zptrj"></th>

                                                  <th id="zptrj"><meter id="zptrj"></meter></th>

                                                  <address id="zptrj"><meter id="zptrj"><font id="zptrj"></font></meter></address>

                                                          <track id="zptrj"></track>

                                                              <span id="zptrj"></span>

                                                              <sub id="zptrj"></sub>

                                                              <sub id="zptrj"><meter id="zptrj"><cite id="zptrj"></cite></meter></sub>
                                                              <track id="zptrj"><progress id="zptrj"><listing id="zptrj"></listing></progress></track>

                                                              <video id="zptrj"><progress id="zptrj"><nobr id="zptrj"></nobr></progress></video>

                                                              <th id="zptrj"></th>

                                                              <track id="zptrj"></track>

                                                              <track id="zptrj"></track>
                                                              <sub id="zptrj"><menuitem id="zptrj"></menuitem></sub>