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不但限制了使用者的權限,而且還将每,希望以上的提高Linux系統安全性的招數對大家有用。