經過十多年的發展,Linux的功能在不斷增強,其安全機制亦在逐步完善。按照TCSEC評估標准,目前Linux的安全級基本達到了C2,更高安全級別的Linux系統正在開發之中。
下面我們來看一看Linux已有的安全機制,這些機制有些已被標准的Linux所接納,有些只是提供了“補丁”程序。
PAM機制
PAM(Pluggable Authentication Modules)是一套共享庫,其目的是提供一個框架和一套編程接口,將認證工作由程序員交給管理員,PAM允許管理員在多種認證方法之間作出選擇,它能夠改變本地認證方法而不需要重新編譯與認證相關的應用程序。
PAM的功能包括:
● 加密口令(包括DES以外的算法);
● 對用戶進行資源限制,防止DOS攻擊;
● 允許隨意Shadow口令;
● 限制特定用戶在指定時間從指定地點登錄;
● 引入概念“client plug-in agents”,使PAM支持C/S應用中的機器——機器認證成為可能。
PAM為更有效的認證方法的開發提供了便利,在此基礎上可以很容易地開發出替代常規的用戶名加口令的認證方法,如智能卡、指紋識別等認證方法。
入侵檢測系統
入侵檢測技術是一項相對比較新的技術,很少有操作系統安裝了入侵檢測工具,事實上,標准的Linux發布版本也是最近才配備了這種工具。盡管入侵檢測系統的歷史很短,但發展卻很快,目前比較流行的入侵檢測系統有Snort、Portsentry、 Lids等。
利用Linux配備的工具和從因特網下載的工具,就可以使Linux具備高級的入侵檢測能力,這些能力包括:
● 記錄入侵企圖,當攻擊發生時及時通知管理員;
● 在規定情況的攻擊發生時,采取事先規定的措施;
● 發送一些錯誤信息,比如偽裝成其他操作系統,這樣攻擊者會認為他們正在攻擊一個Windows NT 或Solaris系統。
加密文件系統
加密技術在現代計算機系統安全中扮演著越來越重要的角色。加密文件系統就是將加密服務引入文件系統,從而提高計算機系統的安全性。有太多的理由需要加密文件系統,比如防止硬盤被偷竊、防止未經授權的訪問等。
目前Linux已有多種加密文件系統,如CFS、TCFS、CRYPTFS等,較有代表性的是TCFS(Transparent CryptogrAPhic File System)。它通過將加密服務和文件系統緊密集成,使用戶感覺不到文件的加密過程。TCFS不修改文件系統的數據結構,備份與修復以及用戶訪問保密文件的語義也不變。
TCFS能夠做到讓保密文件對以下用戶不可讀:
● 合法擁有者以外的用戶;
● 用戶和遠程文件系統通信線路上的偷聽者;
● 文件系統服務器的超級用戶。
而對於合法用戶,訪問保密文件與訪問普通文件幾乎沒有區別。
安全審計
即使系統管理員十分精明地采取了各種安全措施,但還會不幸地發現一些新漏洞。攻擊者在漏洞被修補之前會迅速抓住機會攻破盡可能多的機器。雖然Linux不能預測何時主機會受到攻擊,但是它可以記錄攻擊者的行蹤。
Linux還可以進行檢測、記錄時間信息和網絡連接情況。這些信息將被重定向到日志中備查。
日志是Linux安全結構中的一個重要內容,它是提供攻擊發生的唯一真實證據。因為現在的攻擊方法多種多樣,所以Linux提供網絡、主機和用戶級的日志信息。例如,Linux可以記錄以下內容:
● 記錄所有系統和內核信息;
● 記錄每一次網絡連接和它們的源IP地址、長度,有時還包括攻擊者的用戶名和使用的操作系統;
● 記錄遠程用戶申請訪問哪些文件;
● 記錄用戶可以控制哪些進程;
● 記錄具體用戶使用的每條命令。
在調查網絡入侵者的時候,日志信息是不可缺少的,即使這種調查是在實際攻擊發生之後進行。
強制訪問控制
強制訪問控制(MAC,Mandatory Access Control)是一種由系統管理員從全系統的角度定義和實施的訪問控制,它通過標記系統中的主客體,強制性地限制信息的共享和流動,使不同的用戶只能訪問到與其有關的、指定范圍的信息,從根本上防止信息的失洩密和訪問混亂的現象。
傳統的MAC實現都是基於TCSEC中定義的MLS策略,但因MLS本身存在著這樣或那樣的缺點(不靈活、兼容性差、難於管理等),研究人員已經提出了多種MAC策略,如DTE、RBAC等。由於Linux是一種自由操作系統,目前在其上實現強制訪問控制的就有好幾家,其中比較典型的包括SElinux、RSBAC、MAC等,采用的策略也各不相同。
NSA推出的SELinux安全體系結構稱為 Flask,在這一結構中,安全性策略的邏輯和通用接口一起封裝在與操作系統獨立的組件中,這個單獨的組件稱為安全服務器。SELinux的安全服務器定義了一種混合的安全性策略,由類型實施 (TE)、基於角色的訪問控制 (RBAC) 和多級安全(MLS) 組成。通過替換安全服務器,可以支持不同的安全策略。SELinux使用策略配置語言定義安全策略,然後通過checkpolicy 編譯成二進制形式,存儲在文件 /ss_policy中,在內核引導時讀到內核空間。這意味著安全性策略在每次系統引導時都會有所不同。策略甚至可以通過使用 security_load_policy 接口在系統操作期間更改(只要將策略配置成允許這樣的更改)。
RSBAC的全稱是Rule Set Based Access Control(基於規則集的訪問控制),它是根據Abrams和LaPadula提出的Generalized Framework for Access Control(GFAC)模型開發的,可以基於多個模塊提供靈活的訪問控制。所有與安全相關的系統調用都擴展了安全實施代碼,這些代碼調用中央決策部件,該部件隨後調用所有激活的決策模塊,形成一個綜合的決定,然後由系統調用擴展來實施這個決定。RSBAC目前包含的模塊主要有MAC、RBAC、ACL等。
MAC是英國的Malcolm Beattie針對Linux 2.2編寫的一個非常初級的MAC訪問控制,它將一個運行的Linux系統分隔成多個互不可見的(或者互相限制的)子系統,這些子系統可以作為單一的系統來管理。MAC是基於傳統的Biba完整性模型和BLP模型實現的,但作者目前似乎沒有延續他的工作。
防火牆
防火牆是在被保護網絡和因特網之間,或者在其他網絡之間限制訪問的一種部件或一系列部件。
Linux防火牆系統提供了如下功能:
● 訪問控制,可以執行基於地址(源和目標)、用戶和時間的訪問控制策略,從而可以杜絕非授權的訪問,同時保護內部用戶的合法訪問不受影響。
● 審計,對通過它的網絡訪問進行記錄,建立完備的日志、審計和追蹤網絡訪問記錄,並可以根據需要產生報表。
● 抗攻擊,防火牆系統直接暴露在非信任網絡中,對外界來說,受到防火牆保護的內部網絡如同一個點,所有的攻擊都是直接針對它的,該點稱為堡壘機,因此要求堡壘機具有高度的安全性和抵御各種攻擊的能力。
● 其他附屬功能,如與審計相關的報警和入侵檢測,與訪問控制相關的身份驗證、加密和認證,甚至VPN等