由於Linux操作系統是一個開放源代碼的免費操作系統,因此受到越來越多用戶的歡迎。隨著Linux操作系統在我國的不斷普及,有關的政府部門更是將基於Linux開發具有自主版權的操作系統提高到保衛國家信息安全的高度來看待,因此我們不難預測今後Linux操作系統在我國將得到更快更大的發展。 雖然Linux與UNIX很類似,但它們之間也有一些重要的差別。對於眾多的習慣了UNIX和Windows NT的系統管理員來講,如何保證Linux操作系統的安全將面臨許多新的挑戰。本文介紹了一系列實用的Linux安全管理經驗。
一、文件系統在Linux系統中,分別為不同的應用安裝單獨的主分區將關鍵的分區設置為只讀將大大提高文件系統的安全。這主要涉及到Linux自身的ext2文件系統的只添加(只添加)和不可變這兩大屬性。◆文件分區Linux的文件系統可以分成幾個主要的分區,每個分區分別進行不同的配置和安裝,一般情況下至少要建立/、/usr/local、/var 和/home等分區。/usr可以安裝成只讀並且可以被認為是不可修改的。如果/usr中有任何文件發生了改變,那麼系統將立即發出安全報警。當然這不包括用戶自己改變/usr中的內容。/lib、/boot和/sbin的安裝和設置也一樣。在安裝時應該盡量將它們設置為只讀,並且對它們的文件、目錄和屬性進行的任何修改都會導致系統報警。當然將所有主要的分區都設置為只讀是不可能的,有的分區如/var等,其自身的性質就決定了不能將它們設置為只讀,但應該不允許它具有執行權限。◆擴展ext2使用ext2文件系統上的只添加和不可變這兩種文件屬性可以進一步提高安全級別。不可變和只添加屬性只是兩種擴展ext2文件系統的屬性標志的方法。一個標記為不可變的文件不能被修改,甚至不能被根用戶修改。一個標記為只添加的文件可以被修改,但只能在它的後面添加內容,即使根用戶也只能如此。可以通過chattr命令來修改文件的這些屬性,如果要查看其屬性值的話可以使用lsattr命令。要想了解更多的關於ext2文件屬性的信息,可使用命令man chattr來尋求幫助。這兩上文件屬性在檢測黑客企圖在現有的文件中安裝入侵後門時是很有用的。為了安全起見,一旦檢測到這樣的活動就應該立即將其阻止並發出報警信息。如果你的關鍵的文件系統安裝成只讀的並且文件被標記為不可變的,入侵者必須重新安裝系統才能刪除這些不可變的文件但這會立刻產生報警,這樣就大大減少了被非法入侵的機會。◆保護log文件當與log文件和log備份一起使用時不可變和只添加這兩種文件屬性特別有用。系統管理員應該將活動的log文件屬性設置為只添加。當 log被更新時,新產生的log備份文件屬性應該設置成不可變的,而新的活動的log文件屬性又變成了只添加。這通常需要在log更新腳本中添加一些控制命令。二、備份在完成Linux系統的安裝以後應該對整個系統進行備份,以後可以根據這個備份來驗證系統的完整性,這樣就可以發現系統文件是否被非法竄改過。如果發生系統文件已經被破壞的情況,也可以使用系統備份來恢復到正常的狀態。◆CD-ROM備份當前最好的系統備份介質就是CD-ROM光盤,以後可以定期將系統與光盤內容進行比較以驗證系統的完整性是否遭到破壞。如果對安全級別的要求特別高,那麼可以將光盤設置為可啟動的並且將驗證工作作為系統啟動過程的一部分。這樣只要可以通過光盤啟動,就說明系統尚未被破壞過。如果你創建了一個只讀的分區,那麼可以定期從光盤映像重新裝載它們。即使象/boot、/lib和/sbin這樣不能被安裝成只讀的分區,你仍然可以根據光盤映像來檢查它們,甚至可以在啟動時從另一個安全的映像重新下載它們。◆其它方式的備份雖然/etc中的許多文件經常會變化,但/etc中的許多內容仍然可以放到光盤上用於系統完整性驗證。其它不經常進行修改的文件,可以備份到另一個系統(如磁帶)或壓縮到一個只讀的目錄中。這種辦法可以在使用光盤映像進行驗證的基礎上再進行額外的系統完整性檢查。既然現在絕大多數操作系統現在都在隨光盤一起提供的,制作一個CD-ROM緊急啟動盤或驗證盤操作起來是十分方便的,它是一種十分有效而又可行的驗證方法。三、改進系統內部安全機制可以通過改進Linux操作系統的內部功能來防止緩沖區溢出攻擊這種破壞力極強卻又最難預防的攻擊方式,雖然這樣的改進需要系統管理員具有相當豐富的經驗和技巧,但對於許多對安全級別要求高的Linux系統來講還是很有必要的。◆Solaris Designer的安全Linux補丁Solaris Designer用於2.0版內核的安全Linux補丁提供了一個不可執行的棧來減少緩沖區溢出的威脅,從而大大提高了整個系統的安全性。緩沖區溢出實施起來是相當困難的,因為入侵者必須能夠判斷潛在的緩沖區溢出何時會出現以及它在內存中的什麼位置出現。緩沖區溢出預防起來也十分困難,系統管理員必須完全去掉緩沖區溢出存在的條件才能防止這種方式的攻擊。正因為如此,許多人甚至包括Linux Torvalds本人也認為這個安全Linux補丁十分重要,因為它防止了所有使用緩沖區溢出的攻擊。但是需要引起注意的是,這些補丁也會導致對執行棧的某些程序和庫的依賴問題,這些問題也給系統管理員帶來的新的挑戰。不可執行的棧補丁已經在許多安全郵件列表(如[email protected])中進行分發,用戶很容易下載到它們等。◆StackGuardStackGuard是一個十分強大的安全補丁工具。你可以使用經StackGuard修補過的gcc版本來重新編譯和鏈接關鍵的應用。StackGuard進行編譯時增加了棧檢查以防止發生棧攻擊緩沖區溢出,雖然這會導致系統的性能略有下降,但對於安全級別要求高的特定應用來講StackGuard仍然是一個十分管用的工具。現在已經有了一個使用了SafeGuard的Linux版本,用戶使用StackGuard將會更加容易。雖然使用StackGuard會導致系統性能下降約10~20%,但它能夠防止整個緩沖區溢出這一類攻擊。◆增加新的訪問控制功能Linux的2.3版內核正試圖在文件系統中實現一個訪問控制列表,這要可以在原來的三類(owner、group和other)訪問控制機制的基礎上再增加更詳細的訪問控制。在2.2和2.3版的Linux內核中還將開發新的訪問控制功能,它最終將會影響當前有關ext2文件屬性的一些問題。與傳統的具有ext2文件系統相比它提供了一個更加精確的安全控制功能。有了這個新的特性,應用程序將能夠在不具有超級用戶權限的情況下訪問某些系統資源,如初始套接等。◆基於規則集的訪問控制現在有關的Linux團體正在開發一個基於規則的訪問控制(RSBAC)項目,該項目聲稱能夠使Linux操作系統實現B1級的安全。RSBAC是基於訪問控制的擴展框架並且擴展了許多系統調用方法,它支持多種不同的訪問和認證方法。這對於擴展和加強Linux系統的內部和本地安全是一個很有用的。四、設置陷井和蜜罐所謂陷井就是激活時能夠觸發報警事件的軟件,而蜜罐(honey pot)程序是指設計來引誘有入侵企圖者觸發專門的報警的陷井程序。通過設置陷井和蜜罐程序,一旦出現入侵事件系統可以很快發出報警。在許多大的網絡中,一般都設計有專門的陷井程序。陷井程序一般分為兩種:一種是只發現入侵者而不對其采取報復行動,另一種是同時采取報復行動。設置蜜罐的一種常用方法是故意聲稱Linux系統使用了具有許多脆弱性的IMAP服務器版本。當入侵者對這些IMAP服務器進行大容量端口掃瞄就會落入陷井並且激發系統報警。另一個蜜罐陷井的例子就是很有名的phf,它是一個非常脆弱的Web cgi-bin腳本。最初的phf是設計來查找電話號碼的,但它具有一個嚴重的安全漏洞:允許入侵者使用它來獲得系統口令文件或執行其它惡意操作。系統管理員可以設置一個假的phf腳本,但是它不是將系統的口令文件發送給入侵者,而是向入侵者返回一些假信息並且同時向系統管理員發出報警。另外一類蜜罐陷井程序可以通過在防火牆中將入侵者的IP地址設置為黑名單來立即拒絕入侵者繼續進行訪問。拒絕不友好的訪問既可以是短期的,也可以是長期的。Linux內核中的防火牆代碼非常適合於這樣做。五、將入侵消滅在萌芽狀態入侵者進行攻擊之前最常做的一件事情就是端號掃瞄,如果能夠及時發現和阻止入侵者的端號掃瞄行為,那麼可以大大減少入侵事件的發生率。反應系統可以是一個簡單的狀態檢查包過濾器,也可以是一個復雜的入侵檢測系統或可配置的防火牆。◆Abacus Port SentryAbacus Port Sentry是開放源代碼的工具包,它能夠監視網絡接口並且與防火牆交互操作來關閉端口掃瞄攻擊。當發生正在進行的端口掃瞄時,Abacus Sentry可以迅速阻止它繼續執行。但是如果配置不當,它也可能允許敵意的外部者在你的系統中安裝拒絕服務攻擊。Abacus PortSentry如果與Linux中透明的代理工具一起使用可以提供一個非常有效地入侵防范措施。這樣可以將為所有IP地址提供通用服務的未使用端口重定向到Port Sentry中,Port Sentry可以在入侵者采取進一步行動之前及時檢測到並阻止端口掃瞄。Abacus Port Sentry能夠檢測到慢掃瞄(slow scan),但它不能檢測到結構化攻擊(strUCtured attack)。這兩種方式最終目的都要試圖掩蓋攻擊意圖。慢掃瞄就是通過將端口掃瞄分散到很長的時間內來完成,而在結構化的攻擊中,攻擊者試圖通過掃瞄或探測多個源地址中來掩蓋自己的真實攻擊目標。正確地使用這個軟件將能夠有效地防止對IMAP服務大量的並行掃瞄並且阻止所有這樣的入侵者。Abacus Sentry與Linux 2.2內核的IPChains工具一起使用時最有效,IPChains能夠自動將所有的端口掃瞄行為定向到Port Sentry。Linux 2.0內核可以使用IPChains進行修補,Abacus Port Sentry也可以與早期的2.0版內核中的ipfwadm工具一起使用,ipfwadm在2.2版本以後被IPChains取代了。Abacus Port Sentry還可以被配置來對Linux系統上的UDP掃瞄作出反應,甚至還可以對各種半掃瞄作出反應,如FIN掃瞄,這種掃描試圖通過只發送很小的探測包而不是建立一個真正的連接來避免被發現。當然更好的辦法就是使用專門的入侵檢測系統,如ISS公司的RealSecure等,它們可以根據入侵報警和攻擊簽名重新配置防火牆。但這樣的產品一般價格較高,普及的用戶承受起來有困難。六、反攻擊檢測系統主要通過阻止入侵企圖來防止入侵,而反攻擊系統則可以反向進行端口掃瞄或發起其它的攻擊,這一著讓入侵者不僅入侵陰謀未能得逞,反而“引狼入室”,招致反攻擊。有些安全系統如Abacus Sentry具有一定的反攻擊能力。比如有的站點有了防止用戶通過telnet進行連接,在應答telnet連接請求時,系統將返回一些不受歡迎的惡意信息。這只是一種最簡單也是最輕微的反攻擊措施。一般情況下並不提倡使用反攻擊功能,因為這樣的反攻擊措施很容易被非法利用來攻擊其它的系統。七、改進登錄服務器將系統的登錄服務器移到一個單獨的機器中會增加系統的安全級別,使用一個更安全的登錄服務器來取代Linux自身的登錄工具也可以進一步提高安全。在大的Linux網絡中,最好使用一個單獨的登錄服務器用於syslog服務。它必須是一個能夠滿足所有系統登錄需求並且擁有足夠的磁盤空間的服務器系統,在這個系統上應該沒有其它的服務運行。更安全的登錄服務器會大大削弱入侵者透過登錄系統竄改日志文件的能力。◆安全syslog即使使用單獨的登錄服務器,Linux自身的syslog工具也是相當不安全的。因此,有人開發了所謂的安全log服務器,將密碼簽名集成到日志中。這會確保入侵者即使在竄改系統日志以後也無法做到不被發現。現在最常用的用於取代syslog的安全log服務器稱為“安全syslog (ssyslong)”,用戶可以從Core SDI站點http://www.core-sdi.com/ssylog處下載這個工具。這個守護程序實現一個稱為PEQ-1的密碼協議來實現對系統日志的遠程審計。即使在入侵者獲得系統超級用戶權限的情況下也仍然可以進行審計,因為協議保證了以前以及入侵過程中的的log信息沒有審計者(在遠程可信任的主機上)的通知無法被修改。◆syslog-ng另一個取代syslog的工具是syslog-ng(下一代的syslog)。這是一個更加可配置的守護進程,它提供了密碼簽名來檢測對日志文件的竄改。密碼安全登錄服務器和遠程審計功能一起可以使入侵者極難進行日志竄改並且非常容易被檢測到這樣的不良企圖。用戶可以從 www.babit.hu/products/syslog-ng.Html處下載這個工具。八、使用單一登錄系統維護分散的大網絡環境中的多個用戶帳號對於系統管理員來講是一件非常頭疼的事情。現在有一些單一的登錄(sign on)系統不僅可以減輕管理員的負擔,而同時還提高了安全級別。網絡信息服務(NIS)是一個很好的單一登錄系統,它在Sun公司的Yellow Page服務的基礎上發展來的,它的基本安全特性不夠健狀,由於不斷有一些bug和脆弱性被公布,因此有人戲稱它為網絡入侵者服務(Network Intruder Service)。NIS的更新版本NIS+原NIS的不足進行了改進,現在已經有了用於Linux的NIS+版本。Kerberos也是一種非常有名的單一登錄系統。Kerberos v4具有一些很有名的安全漏洞,如入侵者可以離線進行窮盡攻擊Kerberos cookie而不會被發現。Ketberos v5大大進行了改進,不會再有v4的問題。在大的網絡中,象NIS和Kerberos這樣的單一的登錄系統雖然有有利的一面,但也有它不利的一面。一方面,在不同系統上都具有認證機制有助於隔離該功能並且減少它與其它服務相互之間的影響。另一方面,一旦一個系統中的某個帳號被破壞,所有可通過這個帳號訪問的系統都將同樣遭到破壞。因此在單一的登錄系統中特別要求具有較高防猜測水平的口令字。基於 Windows的網絡在Windows NT域系統中有自己的單一登錄系統。Linux系統可以根據Windows系統進行認證。這允許用戶在Windows系統下修改、維護和管理它們的帳號和口令字並且修改結果會在同時在UNIX登錄中得到體現。如使用pam_smb,Linux系統可以根據Windows SMB Domain進行認證。這在以Windows網絡管理為中心的網絡中是相當方便的,但它也帶來了Windows認證系統自身的一些不安全性。九、掌握最新安全產品和技術作為一個系統管理員,還必須時刻跟蹤Linux安全技術的發展動向,並且適時采用更先進的Linux安全工具。目前國際上有許多有關Linux安全的研究和開發項目,目前至少有三個安全Linux項目已經啟動,每個項目的目標都有自己的側重點,它們分別是:◆安全Linux(Secure Linux)安全Linux(www.reseau.nl/securelinux)項目的目標是提供一個用於Internet服務器系統的安全的Linux分發。該項目管理者正尋求在這個產品中集成強大的密碼和一些額外的Web服務器功能。既然它是在美國之外創建的,人們可望能夠得到改進的密碼安全而不會受到美國安全產品出口法律的限制。◆Bastille LinuxBastille Linux(www.bastille-linux.org)項目尋求在Linux環境中建立一個類似OpenBSD的標准。該項目宣稱的目標是為台式機創建一個安全的分發,使網絡管理者可以不用擔心用戶的安全。◆Kha0s LinuxKha0s Linux(www.kha0s.org)正尋求創建了一個具有強加密和類似OpenBSD的安全政策的最小的安全Linux分發。該小組目前正在它的Web站點上請求全球用戶和廠商的參與和合作。除此之外,下面兩點對於管理員提高Linux安全管理水平也是十分有用的:訪問安全Linux郵件列表現在有許多關於Linux安全的郵件列表,如[email protected]、Kh [email protected]等,經常訪問這些郵件列表可以得到大量的安全信息。還有另一個通用的郵件列表是[email protected],它是專門討論源代碼的安全審計的。這個列表可能與其它的郵件列表有大量的重復,但如果想了解源代碼審計和相關的安全問題的話還是很值得一讀的。十、多管齊下任何一種單一的安全措施其防范能力都是有限的,一個安全的系統必須采取多種安全措施,多管齊下才能更好的保證安全。假如一個Linux系統采取了以上各種安全措施,那麼要想侵入你的系統,攻擊者將不得不繞過防火牆、避開入侵檢測系統、跳過陷井程序、通過系統過濾器、逃過你的日志監視器、修改文件系統屬性、破壞安全登錄服務器才能最終達到目的。由於其中任何一個環節都可能激發報警,因此入侵者要想侵入這樣的系統而又不被發現幾乎是不可能的。
更多內容請看ADO.NET實用技巧 FreeBSD系統安全管理 Linux安全專題,或