日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

SELinux Linux安全新高度 安全增強Linux 剖析

簡介
公共網(wǎng)絡(比如 Internet)充滿著危險 。只要將電腦連接到 Internet(即使只連接很短的時間),您就會感受到這一點 。攻擊者可以利用不安全性來獲得對一個系統(tǒng)的訪問,獲得對信息的未授權訪問,或者對一臺計算機進行改造,以利用它發(fā)送垃圾郵件或攻擊其他高端系統(tǒng)(使用 SYN 泛洪攻擊,一種分布式拒絕服務攻擊) 。
分布式拒絕服務攻擊(DDoS)通過 Internet 上的多個系統(tǒng)來實現(xiàn)(所以也稱為僵尸電腦),這些系統(tǒng)消耗目標系統(tǒng)上的資源,(利用 TCP 的三向握手)使其不能被合法的用戶訪問 。一種帶有 cookie 的四向握手協(xié)議(Stream Control Transmission Protocol [SCTP])可以防御這種攻擊 。
SELinux 的起源
SELinux 是一個面向政府和行業(yè)的產(chǎn)品,由 NSA、Network Associates、Tresys 以及其他組織設計和開發(fā) 。盡管 NSA 將其作為一個補丁集引入,但從 2.6 版開始,它就被加入到 Linux 內(nèi)核中 。
GNU/Linux 非常安全,但它也非常動態(tài):所做的更改會為操作系統(tǒng)帶來新的漏洞,這些漏洞可能被攻擊者利用,盡管人們都非常關心阻止未授權訪問,但是發(fā)生入侵后會發(fā)生什么呢?
本文將探究 SELinux 背后的思想及其基本架構(gòu) 。關于SELinux 的完整描述涉及一整本書的內(nèi)容,所以本文只關注其基本原理,使您了解 SELinux 的重要性及其實現(xiàn)過程 。
訪問控制方法
大多數(shù)操作系統(tǒng)使用訪問控制來判斷一個實體(用戶或程序)是否能夠訪問給定資源 ?;?UNIX?的系統(tǒng)使用一種自主訪問控制(discretionary access control,DAC)的形式 。此方法通常根據(jù)對象所屬的分組來限制對對象的訪問 。例如,GNU/Linux 中的文件有一個所有者、一個分組和一個權限集 。權限定義誰可以訪問給定文件、誰可以讀取它、誰可以向其寫入,以及誰可以執(zhí)行它 。這些權限被劃分到三個用戶集中,分別表示用戶(文件所有者)、分組(一個用戶組的所有成員)和其他(既不是文件所有者,又不是該分組的成員的所有用戶) 。
很多這樣的訪問控制都會帶來一個問題,因為所利用的程序能夠繼承用戶的訪問控制 。這樣,該程序就可以在用戶的訪問層進行操作 。與通過這種方式定義約束相比,使用最小特權原則 更安全:程序只能執(zhí)行完成任務所需的操作 。例如,如果一個程序用于響應 socket 請求,但不需要訪問文件系統(tǒng),那么該程序應該能夠監(jiān)聽給定的 socket,但是不能訪問文件系統(tǒng) 。通過這種方式,如果該程序被攻擊者利用,其訪問權限顯然是最小的 。這種控制類型稱為強制訪問控制(MAC) 。
另一種控制訪問的方法是基于角色的訪問控制(RBAC) 。在 RBAC 中,權限是根據(jù)安全系統(tǒng)所授予的角色來提供的 。角色的概念與傳統(tǒng)的分組概念不同,因為一個分組代表一個或多個用戶 。一個角色可以代表多個用戶,但它也代表一個用戶集可以執(zhí)行的權限 。
SELinux 將 MAC 和 RBAC 都添加到了 GNU/Linux 操作系統(tǒng)中 。下一節(jié)將探討 SELinux 實現(xiàn),以及如何將安全增強透明地添加到 Linux 內(nèi)核中 。
Linux 安全實現(xiàn)
在早期的 SELinux 中,它還是一個補丁集,它提供了自己的安全性框架 。這存在著一些問題,因為它將 GNU/Linux 限制到一個單獨的訪問控制架構(gòu) 。Linux 內(nèi)核繼承了一種通用框架,將策略從實現(xiàn)中分離了出來,而不是采用單一的方法 。該解決方案就是 Linux 安全模塊(Linux Security Module,LSM)框架 。LSM 提供了一種通用的安全框架,允許將安全模型實現(xiàn)為可載入內(nèi)核模塊(參見圖 1) 。
圖 1. SELinux 將安全策略和實施分離
[1][2];[3];下一頁
在訪問內(nèi)部對象之前對內(nèi)核代碼進行修改,以調(diào)用一個代表實施函數(shù)的鉤子,該實施函數(shù)實現(xiàn)安全策略 。該函數(shù)根據(jù)預定義的策略驗證操作能否繼續(xù)進行 。安全函數(shù)存儲在一個安全操作結(jié)構(gòu)中,該結(jié)構(gòu)包含必須受到保護的基本操作 。例如,security_socket_create 鉤子(security_ops->socket_create)在創(chuàng)建新 socket 之前檢查權限,并考慮協(xié)議集、類型、協(xié)議,以及 socket 是在內(nèi)核中創(chuàng)建還是在用戶空間中創(chuàng)建 。清單 1 提供了 socket.c 中用于創(chuàng)建 socket 的示例代碼 。

推薦閱讀