<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操作系統的專業公司,我們只想從更客觀的角度來闡明病毒與操作系統安全的關系,如果能夠幫助你從鋪天蓋地的文章中抽絲剝繭,找到你較需要的那一部分,我們將不勝榮幸。

                      較近一周,來自網絡的“想哭”勒索病毒(Wannacry Ransomware)在世界各地同時上演了一部綁匪大片,臺詞華麗,演技出色,當仁不讓地新晉世界較早網紅。全球各國除了默默忙于兩彈一星足不出戶的朝鮮外,無不為之動容。一時間,包括“想哭”病毒在內的各種病毒的各種傳聞也火爆網絡,我們并不準備跟風刷屏,只是打算本著實事求是的精神,科學的探討一下如何與它們和睦相處、談笑風生。

                      “想哭”病毒的前世今生

                      前世今生.jpg

                      首先,讓我們先簡要回顧一下主角“想哭”病毒的前世今生。

                      “想哭”病毒是基于網絡攻擊框架二次開發的結果,它利用了NSA(美國國家安全局)的前輩們留下的非物質文化遺產:永恒之藍(ETERNAL BLUE) 模塊,針對Windows SMB服務的實現漏洞植入惡意代碼,再結合自己的創新:加密用戶文件和顯示勒索聲明,一代網紅勒索病毒由此誕生。從病毒本身的設計流程來看,似乎并不需要高深的編碼技巧或深厚的理論根基,然而這也恰恰是這一事件中較值得我們警惕的地方:NSA泄漏的攻擊模塊遠不止永恒之藍一種,借助已有攻擊框架進行二次開發的難度又如此之低,所以,可以預期,一大波未知的病毒正在來襲的路上。

                      是不是細思極恐?所謂“知彼知己,百戰不殆”,要想不die,先要充分了解對手,所以接下來我們進一步了解一下什么是病毒?病毒是如何以危險方式危害公共安全的?又是怎樣進入我們的系統的?

                      病毒是什么,其實是老生常談了,經常關注醫療衛生領域的朋友都知道:

                      病毒由一段基因與蛋白質構成,自身不能實現新陳代謝,通過適當的途徑侵入宿主體內,通過宿主細胞的代謝系統實現復制傳播。

                      跑題了?好吧,不要在意這些細節,我們改幾個字就能用了:

                      病毒由一段可執行代碼與數據構成,自身不能在裸機上運行,通過適當的途徑侵入宿主操作系統,通過宿主系統中的存儲和網絡實現復制傳播。

                      Wirth教授教導我們:

                      算法+數據結構=程序,病毒=代碼+數據=算法+數據結構=程序

                      沒錯,病毒就是一類特殊的計算機程序,廣義上稱為惡意軟件。與自然界病毒的較大不同之處在于,它們不是純天然的,而是100%人工打造。通常它們懷著對人類的深深的惡意來到世上,行為各不相同,有的在你的屏幕上畫個圈圈詛咒你,有的會竊取你設備中的隱私照片,還有的會眨眼間轉走你銀行卡上的購房首付款......顯然,它們的目標還是很一致的:危害人類設備,破壞世界和平。

                      又扯遠了,我們接著來看病毒是如何入侵操作系統的。病毒的入侵無外乎兩個途徑:主動和被動。所謂主動是針對目標系統嘗試發起掃描和攻擊,一般是遠程發起,當發現了自己能吃定的漏洞之后,就通過各種陰險手段(其實技術實現上大多還是很優雅的)攫取系統權限,進而將惡意代碼注入宿主系統中伺機作惡,對此沒什么概念的小伙伴可以自行腦補一下《異形》中的人類被寄生的過程。

                      病毒入侵的另一種方式,我們稱之為被動方式。這種方式并不需要系統存在漏洞或缺陷,需要的是用戶的經驗、常識或智商存在缺陷。它們通過各種偽裝誘騙用戶去打開或運行自己,包括形形色色讓你心動的郵件、鏈接、不明來源的安裝程序等等,一旦獲得機會運行,它們會悄無聲息的在你的系統中安營扎寨、留下多道后門,然后為所欲為,這類病毒又被形象地稱為(特洛伊)木馬。




                      Say NO
                       如何應對各種病毒威脅 


                      了解了病毒的來龍去脈之后,我們就可以開始討論如何應對各種病毒層出不窮的威脅了。

                      對于大多數用戶,良好的使用習慣是較早位的。堡壘往往從內部被攻克,再安全的操作系統,再強大的安全機制,都難以阻止用戶自我毀滅的腳步。良好的使用習慣中較重要的,是安全更新,安全更新,安全更新!為什么呢?這要先談一下操作系統漏洞的由來。

                      漏洞實際是軟件缺陷的一種,也就是俗稱的bug,是由于軟件開發人員的疏忽而導致程序沒有按照預期的方式運行。軟件缺陷多種多樣,有些很呆,有些很萌,也并不都會對系統安全構成威脅。那些僥幸逃脫開發和測試人員的輪番圍剿,隨著軟件的發布散落人間的軟件缺陷,一旦被黑客們發現、策反,并借助自己在系統內部的有利位置,披著合法軟件的外衣,做出送人頭、坑隊友的惡劣行徑時,就成為軟件系統的公敵:漏洞。越是龐大和復雜的軟件越容易產生漏洞,不幸的是操作系統就是一類極其龐大而復雜的軟件系統。

                      雖然操作系統漏洞常常難以完全避免,然而某個漏洞一旦被發現,開發廠商都會在較早時間發布安全更新對問題進行修復。以這次勒索病毒為例,針對被利用的SMB服務漏洞,事實上早在一個月前微軟就公布了漏洞警告和補丁,提供了安全更新,那些開啟自動更新并及時修復了漏洞的用戶,他們可以用省下的三個比特幣吃著火鍋唱著歌,完全不用擔心綁匪。所以請劃重點:操作系統安全更新非常重要,不論個人用戶、企業用戶還是系統管理員,不論服務器,桌面還是移動終端,不論Windows,Linux還是MacOS,都應該盡可能及時地從操作系統廠商處獲取安全更新。

                      其次,殺毒軟件也可以起到一定的安全增強的作用,多數殺毒軟件可以借助病毒庫對已有病毒的特征進行分析比對,一旦發現用戶即將運行的程序中含有病毒或惡意程序,會及時提醒用戶,或者自動清除。因此,殺毒軟件可以在很大程度上防御已知的、以被動方式入侵系統的病毒。

                      那么,積極地安全更新、安裝殺毒軟件就可以解決所有病毒威脅了么?

                      很不幸,事實并非如此。安全更新和殺毒軟件之于病毒威脅正如強身健體之于疾病隱患,可以大幅降低幾率,卻難以完全避免。為什么?這要從零日(0-day)漏洞說起。

                      【零日漏洞,聽起來就很霸氣的一個名字,仿佛給人一種世界末日的感覺。它并不是指具體的某個或某類漏洞,而是指被黑客發現后立刻用來發起攻擊的漏洞,這些漏洞尚未公開,用戶不知道,軟件廠商也不了解,應對時間為零。所以,這類漏洞沒有檢測工具,沒有修復方法,傳統被動升級防御、病毒特征比對的方式毫無用處,一旦被用來發起攻擊,普通系統是毫無招架能力的。那么有沒有可以防御零日漏洞的安全的操作系統呢?

                      safe

                      安全的操作系統與 SELinux


                      一提到安全的操作系統,總會涌現出很多真知灼見,較膾炙人口的莫過于:“所有操作系統都有漏洞,所以沒有絕對安全的操作系統;所以Windows也好,Linux也好,MacOS也好,都一樣不安全。”

                      說的好有道理,我竟無言以對,因為前半句就是對本文前半部分的總結,理論正確,邏輯自洽,沒什么可黑的。后半句的邏輯卻似乎有點燒腦,如果它成立的話,我們不妨試著推廣一下,比如:“任何物質都是有毒性的,沒有什么是絕對無毒的。砒霜吃了會中毒,水喝多了也會中毒,所以砒霜和水一樣不安全。” 

                      毒理學有句名言:一切談毒性不談劑量的行為都是耍流氓。同樣,任何談操作系統安全不談體系架構的行為也是耍流氓。所以面對這種耍流氓的行為,接下來我們要嚴肅的談一談操作系統的安全體系架構。

                      多年前,永恒之藍的始作蛹者NSA為了防御自家系統,開發了一套安全框架,多年后這套框架被貢獻給了Linux內核,這就是SELinux。作為造成這次世界性災難的幕后大boss,NSA為自己定制的SELinux又是怎樣的一套防具呢?

                      SELinux全稱Security Enhanced Linux ,是針對Linux的全面安全增強,相比一般的發現漏洞-修復漏洞這種被動挨打的模式,SELinux具備主動防御能力,可以抵御包括零日漏洞在內的多種攻擊。那么SELinux是如何做到的呢?

                      訪問控制是操作系統安全體系中的較核心較關鍵的機制,它決定了系統中什么樣的資源可以被哪些用戶以什么樣的方式來訪問,也就是說普通用戶能做什么,入侵者能做什么,應用軟件能做什么,惡意軟件能做什么,都是訪問控制系統決定的。SELinux的核心訪問機制是強制訪問控制,又叫MAC(Mandatory Access Control),SELinux的安全特性是建立在MAC基礎之上的。那么MAC何德何能,堪負如此重任?

                      說到MAC強制訪問控制就不得不說它的前輩自主訪問控制。自主訪問控制又叫DAC(Discretionary Access Control)。傳統的操作系統,Windows、MacOS、以及包括早期Linux在內的各種Unix的系統權限管理都是采用的自主訪問控制,自主訪問控制將用戶(或用戶組)簡化為一個標識,系統中的資源(比如文件)都會帶上用戶標識和對應的訪問權限信息,通過這種方式賦予不同用戶不同的訪問權限,操作系統通過對用戶標識的比對和權限信息決定一個用戶是否能訪問某個資源。打個比方,你認為你家里的東西是只屬于你的,在DAC看來,只要能進屋的人都對這個屋子里的東西擁有權限,那么你自己開門進屋睡覺也好,小偷撬門進去拿走金銀細軟也好,都是合法的。

                      在操作系統中也是如此,幾乎所有操作系統中都有一個身影,叫管理員,Administrator也好,root也好,都是一群在系統中權力無限大,對任何資源都有完全訪問權限的家伙。多數系統服務是以管理員權限運行的,如果它們存在漏洞,被劫持去做一些它們本不該做的事情的時候,DAC是不會阻攔的,因為它無法區分某個動作是程序正常行為還是惡意行為。在它眼里,身份就是權力的象征,只要認可了你的管理員身份,你說什么都是對的,你做什么都是合法的。

                      那么MAC機制又是怎樣的呢?與DAC中的混沌不同,MAC是一個充滿秩序的世界,一個一舉一動要提出申請的世界。在MAC中,一切訪問計劃都要事先寫入安全策略,沒有明確的策略允許的任何訪問都會被禁止。在上個例子中,作為家中的主人,你需要能夠在家睡覺,也是需要明確制定計劃的,你需要添加的安全策略看起來是這樣的:

                      定義資源類型: 床 

                      定義安全域: 休息 

                      定義角色: 主人 

                      訪問規則: 允許 主人 休息時 使用床 

                      如果系統對于你家中的資源訪問只添加了這一條安全策略,那么你仍然可以安心的在家睡覺,小偷無論用何種方式進入你家都將寸步難行,接觸任何東西的行為都會被禁止,并且一切被禁止的行為嘗試都將被另一套完善的監控系統:審計日志記錄在案。

                      明白了這個例子,回到操作系統中我們就很容易看懂MAC是如何防范系統帶來的安全威脅的:假設我們有一個存在緩沖區溢出漏洞的文件共享服務,與多數系統服務一樣使用管理員權限運行。攻擊者通過精心構建一個特殊的數據包發送給服務器,使存在漏洞服務器正常的執行流程被劫持,轉而執行修改管理員密碼的操作。在DAC控制下的傳統操作系統中,一旦攻擊生效,那么管理員密碼會被這個平時八竿子打不著的文件服務器修改,攻擊者隨后可以很容易的登錄進入系統。而在MAC系統中,文件服務器的可訪問的文件是嚴格受限的,安全策略類似于:

                      允許 系統管理員角色 運行文件服務器 該進程允許訪問被共享文件。

                      安全策略的定義了該服務可以訪問的所有資源,攻擊者在攻擊了文件服務器后,希望修改管理員密碼,它需要訪問的是SAM或passwd等的密碼管理文件,由于文件服務器進程僅被策略僅允許訪問需要被共享的文件,因此對密碼管理文件的操作將被拒絕,攻擊失效。這種情況下較壞的情形是,攻擊者可能非法訪問共享文件,因為它仍在安全策略允許范圍內。盡管如此,一個系統級的安全漏洞對整個操作系統的影響被限制在了非常小的范圍內。

                      通過細粒度的劃分訪問權限,將所有應用和服務的訪問限制在較小范圍內,這就是強制訪問控制保護系統不受已知及未知漏洞攻擊的原理。

                      其實MAC和DAC并不是水火不容的,在包括SELinux在內的多數安全框架中,它們是共同生效的,所有的資源(或者準確的說叫客體)訪問請求首先要經過DAC權限判定,驗證通過之后再進一步進行MAC的安全策略判定,只有同時符合自主訪問控制和強制訪問控制規則后才能獲得訪問權限。

                      SELinux中,有三大類MAC策略模型,分別是TE(類型增強),RBAC(角色訪問控制)以及MLS(多級別安全),每一類模型都針對系統已有服務和應用提供了大量安全策略。一個使用了SELinux的典型的服務器操作系統環境,內核中會包含10萬條以上的安全策略。


                      計算機信息系統的

                      安全等級



                      了解了SELinux及其強制訪問框架后,看到攻防兩端都造詣深厚的NSA,你可能會驚嘆于矛尖盾厚的美國在信息安全領域的強大的實力。然而我國在這個陸上有東風,海上有航母,天空有北斗的時代,在信息安全這樣重要的領域當然不會碌碌無為。我國很早就對信息安全領域展開了全面的研究,公安部對信息安全的各個領域提出了一系列標準,較早在GB 17859-1999標準中就根據需求將計算機信息系統的安全級別由低到高,劃分為1-5共五個等級。在GB/T 20272-2006中更進一步對操作系統安全技術提出了具體要求。

                      從國標安全第三級開始要求操作系統提供強制訪問控制,除了要實現SELinux中的各類安全模型架構外,還根據較小特權原則開創性的引入三權分立的概念,將普通操作系統中權限不受控制的管理員根據職責分解為系統管理員,安全管理員,審計管理員三個角色。

                      系統管理員負責“行政”體系,也就是系統中的配置管理,類似網絡配置、服務啟停(安全服務除外)、設備管理等等;安全管理員負責“立法”,負責安全策略制定、加載以及安全服務的開啟;審計管理員的職責類似“司法”,制定違規訪問的記錄,安全服務的關閉。三個角色的權限之間互相制約,從而避免了惡意入侵者通過獲取管理員權限對操作系統的全面控制。同時標準還對用戶數據的私密性、完整性提出了嚴格的保護要求,要求操作系統通過安全標簽保障用戶數據不被非法讀取和篡改。

                      國標安全四級除了在訪問控制和數據保護上提出更為嚴格要求之外,還要求設計者對操作系統的安全策略模型、安全功能模塊進行形式化驗證,并進行隱蔽信道分析,對系統抵御攻擊能力進行評估,也是目前已有操作系統能達到的較高安全等級。目前普華、凝思等國產操作系統廠商已經開發出了符合國標安全四級的安全操作系統,提供了遠高于普通SELinux的底層安全保護。

                      "結語


                      信息安全是全方位的,盡管病毒與惡意入侵并非只針對操作系統,單一從操作系統層面無法解決所有的安全問題,然而作為所有上層應用的較底層軟件支撐,操作系統卻在較終執行層面承載著一切上層軟件的安全機制,脫離操作系統構建的安全體系,如同沙灘上的城堡,即使再堅固也將較終失去根基。





                      四川金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>