查看完整版本: 如何提高Linux系統安全性的十大招數

danny 2009-4-24 11:40

如何提高Linux系統安全性的十大招數

作者:IHH  http://tech.ccidnet.com/art/302/20051011/348445_1.html

Linux是一種類Unix的作業系統。從理論上講,Unix本身的設計並沒有什麼重大的安全缺陷。多年來,絕大多數在Unix作業系統上發現的安全問題主要存在於個別程式中,所以大部分Unix廠商都聲稱有能力解決這些問題,提供安全的Unix作業系統。

但Linux有些不同,因為它不屬於某一家廠商,沒有廠商宣稱對它提供安全保證,因此用戶只有自己解決安全問題。Linux不論在功能上、價格上或性能上都有很多優點,然而,作為開放式作業系統,它不可避免地存在一些安全隱患。關於如何解決這些隱患,為應用提供一個安全的操作平臺,本文會告訴你一些最基本、最常用,同時也是最有效的招數。

Linux是一種類Unix的作業系統。從理論上講,Unix本身的設計並沒有什麼重大的安全缺陷。多年來,絕大多數在Unix作業系統上發現的安全問題主要存在於個別程式中,所以大部分Unix廠商都聲稱有能力解決這些問題,提供安全的Unix作業系統。但Linux有些不同,因為它不屬於某一家廠商,沒有廠商宣稱對它提供安全保證,因此用戶只有自己解決安全問題。

Linux是一個開放式系統,可以在網路上找到許多現成的程式和工具,這既方便了用戶,也方便了駭客,因為他們也能很容易地找到程式和工具來潛入 Linux系統,或者盜取Linux系統上的重要資訊。不過,只要我們仔細地設定Linux的各種系統功能,並且加上必要的安全措施,就能讓駭客們無機可乘。

一般來說,對Linux系統的安全設定包括取消不必要的服務、限制遠端存取、隱藏重要資料、修補安全漏洞、採用安全工具以及經常性的安全檢查等。本文教你十種提高Linux系統安全性的招數。雖然招數不大,但招招奏效,你不妨一試。

第1招:取消不必要的服務

早期的Unix版本中,每一個不同的網路服務都有一個服務程式在後臺運行,後來的版本用統一的/etc/inetd伺服器程式擔此重任。Inetd是 Internetdaemon的縮寫,它同時監視多個網路埠,一旦接收到外界傳來的連接資訊,就執行相應的TCP或UDP網路服務。

由於受inetd的統一指揮,因此Linux中的大部分TCP或UDP服務都是在/etc/inetd.conf文件中設定。所以取消不必要服務的第一步就是檢查/etc/inetd.conf檔,在不要的服務前加上“#”號。

一般來說,除了http、smtp、telnet和ftp之外,其他服務都應該取消,諸如簡單檔傳輸協定tftp、網路郵件存儲及接收所用的imap/ipop傳輸協定、尋找和搜索資料用的gopher以及用於時間同步的daytime和time等。

還有一些報告系統狀態的服務,如finger、efinger、systat和netstat等,雖然對系統查錯和尋找用戶非常有用,但也給駭客提供了方便之門。例如,駭客可以利用finger服務查找用戶的電話、使用目錄以及其他重要資訊。因此,很多Linux系統將這些服務全部取消或部分取消,以增強系統的安全性。

Inetd除了利用/etc/inetd.conf設置系統服務項之外,還利用/etc/services檔查找各項服務所使用的埠。因此,用戶必須仔細檢查該檔中各埠的設定,以免有安全上的漏洞。

在Linux中有兩種不同的服務型態:一種是僅在有需要時才執行的服務,如finger服務;另一種是一直在執行的永不停頓的服務。這類服務在系統啟動時就開始執行,因此不能靠修改inetd來停止其服務,而只能從修改/etc/rc.d/rc[n].d/檔或用Run level editor去修改它。提供檔服務的NFS伺服器和提供NNTP新聞服務的news都屬於這類服務,如果沒有必要,最好取消這些服務。

2招:限制系統的出入

在進入Linux系統之前,所有用戶都需要登錄,也就是說,用戶需要輸入用戶帳號和密碼,只有它們通過系統驗證之後,用戶才能進入系統。

與其他Unix作業系統一樣,Linux一般將密碼加密之後,存放在/etc/passwd檔中。Linux系統上的所有用戶都可以讀到 /etc/passwd檔,雖然檔中保存的密碼已經經過加密,但仍然不太安全。因為一般的用戶可以利用現成的密碼破譯工具,以窮舉法猜測出密碼。比較安全的方法是設定影子檔/etc/shadow,只允許有特殊許可權的用戶閱讀該檔。

在Linux系統中,如果要採用影子檔,必須將所有的公用程式重新編譯,才能支援影子檔。這種方法比較麻煩,比較簡便的方法是採用插入式驗證模組 (PAM)。很多Linux系統都帶有Linux的工具程式PAM,它是一種身份驗證機制,可以用來動態地改變身份驗證的方法和要求,而不要求重新編譯其他公用程式。這是因為PAM採用封閉包的方式,將所有與身份驗證有關的邏輯全部隱藏在模組內,因此它是採用影子檔案的最佳幫手。

此外,PAM還有很多安全功能:它可以將傳統的DES加密方法改寫為其他功能更強的加密方法,以確保用戶密碼不會輕易地遭人破譯;它可以設定每個用戶使用電腦資源的上限;它甚至可以設定用戶的上機時間和地點。

Linux系統管理人員只需花費幾小時去安裝和設定PAM,就能大大提高Linux系統的安全性,把很多攻擊阻擋在系統之外。

第3招:保持最新的系統核心

由於Linux流通管道很多,而且經常有更新的程式和系統補丁出現,因此,為了加強系統安全,一定要經常更新系統內核。

Kernel是Linux作業系統的核心,它常駐記憶體,用於載入作業系統的其他部分,並實現作業系統的基本功能。由於Kernel控制電腦和網路的各種功能,因此,它的安全性對整個系統安全至關重要。

早期的Kernel版本存在許多眾所周知的安全漏洞,而且也不太穩定,只有2.0.x以上的版本才比較穩定和安全,新版本的運行效率也有很大改觀。在設定 Kernel的功能時,只選擇必要的功能,千萬不要所有功能照單全收,否則會使Kernel變得很大,既佔用系統資源,也給駭客留下可乘之機。

在Internet上常常有最新的安全修補程式,Linux系統管理員應該消息靈通,經常光顧安全新聞組,查閱新的修補程式。

第4招:檢查登錄密碼

設定登錄密碼是一項非常重要的安全措施,如果用戶的密碼設定不合適,就很容易被破譯,尤其是擁有超級用戶使用權限的用戶,如果沒有良好的密碼,將給系統造成很大的安全漏洞。

在多用戶系統中,如果強迫每個用戶選擇不易猜出的密碼,將大大提高系統的安全性。但如果passwd程式無法強迫每個上機用戶使用恰當的密碼,要確保密碼的安全度,就只能依靠密碼破解程式了。

實際上,密碼破解程式是駭客工具箱中的一種工具,它將常用的密碼或者是英文字典中所有可能用來作密碼的字都用程式加密成密碼字,然後將其與Linux系統的/etc/passwd密碼檔或/etc/shadow影子檔相比較,如果發現有吻合的密碼,就可以求得明碼了。

在網路上可以找到很多密碼破解程式,比較有名的程式是crack。用戶可以自己先執行密碼破解程式,找出容易被駭客破解的密碼,先行改正總比被駭客破解要有利。

第5招:設定用戶帳號的安全等級

除密碼之外,用戶帳號也有安全等級,這是因為在Linux上每個帳號可以被賦予不同的許可權,因此在建立一個新用戶ID時,系統管理員應該根據需要賦予該帳號不同的許可權,並且歸併到不同的用戶組中。

在Linux系統上的tcpd中,可以設定允許上機和不允許上機人員的名單。其中,允許上機人員名單在/etc/hosts.allow中設置,不允許上機人員名單在/etc/hosts.deny中設置。設置完成之後,需要重新啟動inetd程式才會生效。此外,Linux將自動把允許進入或不允許進入的結果記錄到/rar/log/secure檔中,系統管理員可以據此查出可疑的進入記錄。

每個帳號ID應該有專人負責。在企業中,如果負責某個ID的職員離職,管理員應立即從系統中刪除該帳號。很多入侵事件都是借用了那些很久不用的帳號。

在用戶帳號之中,駭客最喜歡具有root許可權的帳號,這種超級用戶有權修改或刪除各種系統設置,可以在系統中暢行無阻。因此,在給任何帳號賦予root許可權之前,都必須仔細考慮。

Linux系統中的/etc/securetty檔包含了一組能夠以root帳號登錄的終端機名稱。例如,在RedHatLinux系統中,該檔的初始值僅允許本地虛擬控制臺(rtys)以root許可權登錄,而不允許遠端用戶以root許可權登錄。最好不要修改該檔,如果一定要從遠端登錄為root許可權,最好是先以普通帳號登錄,然後利用su命令升級為超級用戶。

第6招:消除駭客犯罪的溫床

在Unix系統中,有一系列r字頭的公用程式,它們是駭客用以入侵的武器,非常危險,因此絕對不要將root帳號開放給這些公用程式。由於這些公用程式都是用.rhosts檔或者hosts.equiv檔核准進入的,因此一定要確保root帳號不包括在這些檔之內。

由於r字頭指令是駭客們的溫床,因此很多安全工具都是針對這一安全漏洞而設計的。例如,PAM工具就可以用來將r字頭公用程式的功力廢掉,它在 /etc/pam.d/rlogin檔中加上登錄必須先核准的指令,使整個系統的用戶都不能使用自己home目錄下的.rhosts文件。

第7招:增強安全防護工具

SSH是安全套接層的簡稱,它是可以安全地用來取代rlogin、rsh和rcp等公用程式的一套程式組。SSH採用公開密鑰技術對網路上兩台主機之間的通信資訊加密,並且用其密鑰充當身份驗證的工具。

由於SSH將網路上的資訊加密,因此它可以用來安全地登錄到遠端主機上,並且在兩台主機之間安全地傳送資訊。實際上,SSH不僅可以保障Linux主機之間的安全通信,Windows用戶也可以通過SSH安全地連接到Linux伺服器上。

第8招:限制超級用戶的權力

我們在前面提到,root是Linux保護的重點,由於它權力無限,因此最好不要輕易將超級用戶授權出去。但是,有些程式的安裝和維護工作必須要求有超級用戶的許可權,在這種情況下,可以利用其他工具讓這類用戶有部分超級用戶的許可權。Sudo就是這樣的工具。

Sudo程式允許一般用戶經過組態設定後,以用戶自己的密碼再登錄一次,取得超級用戶的許可權,但只能執行有限的幾個指令。例如,應用sudo後,可以讓管理磁帶備份的管理人員每天按時登錄到系統中,取得超級用戶許可權去執行文檔備份工作,但卻沒有特權去作其他只有超級用戶才能作的工作。

Sudo不但限制了用戶的許可權,而且還將每次使用sudo所執行的指令記錄下來,不管該指令的執行是成功還是失敗。在大型企業中,有時候有許多人同時管理Linux系統的各個不同部分,每個管理人員都有用sudo授權給某些用戶超級用戶許可權的能力,從sudo的日誌中,可以追蹤到誰做聳裁匆約案畝了系統的哪些部分 ?

值得注意的是,sudo並不能限制所有的用戶行為,尤其是當某些簡單的指令沒有設置限定時,就有可能被駭客濫用。例如,一般用來顯示檔內容的/etc/cat指令,如果有了超級用戶的許可權,駭客就可以用它修改或刪除一些重要的檔。

第9招:追蹤駭客的蹤跡

當你仔細設定了各種與Linux相關的組態,並且安裝了必要的安全防護工具之後,Linux作業系統的安全性的確大為提高,但是卻並不能保證防止那些藝高人膽大的網路駭客的入侵。在平時,網路管理人員要經常提高警惕,隨時注意各種可疑狀況,並且按時檢查各種系統日誌檔,包括一般資訊日誌、網路連接日誌、檔傳輸日誌以及用戶登錄日誌等。在檢查這些日誌時,要注意是否有不合常理的時間記載。例如:

•正常用戶在半夜三更登錄;

•不正常的日誌記錄,比如日誌只記錄了一半就切斷了,或者整個日誌檔被刪除了;

•用戶從陌生的網址進入系統;

•因密碼錯誤或用戶帳號錯誤被擯棄在外的日誌記錄,尤其是那些一再連續嘗試進入失敗,但卻有一定模式的試錯法;

•非法使用或不正當使用超級用戶許可權su的指令;

•重新開機或重新啟動各項服務的記錄。

第10招:共同防禦,確保安全

從電腦安全的角度看,世界上沒有絕對密不透風、百分之百安全的電腦系統,Linux系統也不例外。採用以上的安全守則,雖然可以使Linux系統的安全性大大提高,使順手牽羊型的駭客和電腦玩家不能輕易闖入,但卻不一定能阻擋那些身懷絕技的武林高手,因此,企業用戶還需要借助防火牆等其他安全工具,共同防禦駭客入侵,才能確保系統萬無一失。
頁: [1]
查看完整版本: 如何提高Linux系統安全性的十大招數