Linux不論在功能上、價(jià)格上或性能上都有很多優(yōu)點(diǎn),然而,作為開放式操作系統(tǒng),它不可避免地存在一些安全隱患。關(guān)于如何解決這些隱患,為應(yīng)用提供一個(gè)安全的操作平臺(tái),本文會(huì)告訴你一些最基本、最常用,同時(shí)也是最有效的招數(shù)。
Linux是一種類Unix的操作系統(tǒng)。從理論上講,Unix本身的設(shè)計(jì)并沒有什么重大的安全缺陷。多年來,絕大多數(shù)在Unix操作系統(tǒng)上發(fā)現(xiàn)的安全問題主要存在于個(gè)別程序中,所以大部分Unix廠商都聲稱有能力解決這些問題,提供安全的Unix操作系統(tǒng)。但Linux有些不同,因?yàn)樗粚儆谀骋患覐S商,沒有廠商宣稱對(duì)它提供安全保證,因此用戶只有自己解決安全問題。
Linux是一個(gè)開放式系統(tǒng),可以在網(wǎng)絡(luò)上找到許多現(xiàn)成的程序和工具,這既方便了用戶,也方便了黑客,因?yàn)樗麄円材芎苋菀椎卣业匠绦蚝凸ぞ邅頋撊隠inux系統(tǒng),或者盜取Linux系統(tǒng)上的重要信息。不過,只要我們仔細(xì)地設(shè)定Linux的各種系統(tǒng)功能,并且加上必要的安全措施,就能讓黑客們無機(jī)可乘。
一般來說,對(duì)Linux系統(tǒng)的安全設(shè)定包括取消不必要的服務(wù)、限制遠(yuǎn)程存取、隱藏重要資料、修補(bǔ)安全漏洞、采用安全工具以及經(jīng)常性的安全檢查等。本文教你十種提高Linux系統(tǒng)安全性的招數(shù)。雖然招數(shù)不大,但招招奏效,你不妨一試。
第1招:取消不必要的服務(wù)
早期的Unix版本中,每一個(gè)不同的網(wǎng)絡(luò)服務(wù)都有一個(gè)服務(wù)程序在后臺(tái)運(yùn)行,后來的版本用統(tǒng)一的/etc/inetd服務(wù)器程序擔(dān)此重任。Inetd是Internetdaemon的縮寫,它同時(shí)監(jiān)視多個(gè)網(wǎng)絡(luò)端口,一旦接收到外界傳來的連接信息,就執(zhí)行相應(yīng)的TCP或UDP網(wǎng)絡(luò)服務(wù)。
由于受inetd的統(tǒng)一指揮,因此Linux中的大部分TCP或UDP服務(wù)都是在/etc/inetd.conf文件中設(shè)定。所以取消不必要服務(wù)的第一步就是檢查/etc/inetd.conf文件,在不要的服務(wù)前加上“#”號(hào)。
一般來說,除了http、smtp、telnet和ftp之外,其他服務(wù)都應(yīng)該取消,諸如簡單文件傳輸協(xié)議tftp、網(wǎng)絡(luò)郵件存儲(chǔ)及接收所用的imap/ipop傳輸協(xié)議、尋找和搜索資料用的gopher以及用于時(shí)間同步的daytime和time等。
還有一些報(bào)告系統(tǒng)狀態(tài)的服務(wù),如finger、efinger、systat和netstat等,雖然對(duì)系統(tǒng)查錯(cuò)和尋找用戶非常有用,但也給黑客提供了方便之門。例如,黑客可以利用finger服務(wù)查找用戶的電話、使用目錄以及其他重要信息。因此,很多Linux系統(tǒng)將這些服務(wù)全部取消或部分取消,以增強(qiáng)系統(tǒng)的安全性。
Inetd除了利用/etc/inetd.conf設(shè)置系統(tǒng)服務(wù)項(xiàng)之外,還利用/etc/services文件查找各項(xiàng)服務(wù)所使用的端口。因此,用戶必須仔細(xì)檢查該文件中各端口的設(shè)定,以免有安全上的漏洞。
在Linux中有兩種不同的服務(wù)型態(tài):一種是僅在有需要時(shí)才執(zhí)行的服務(wù),如finger服務(wù);另一種是一直在執(zhí)行的永不停頓的服務(wù)。這類服務(wù)在系統(tǒng)啟動(dòng)時(shí)就開始執(zhí)行,因此不能靠修改inetd來停止其服務(wù),而只能從修改/etc/rc.d/rc[n].d/文件或用Runleveleditor去修改它。提供文件服務(wù)的NFS服務(wù)器和提供NNTP新聞服務(wù)的news都屬于這類服務(wù),如果沒有必要,最好取消這些服務(wù)。
第2招:限制系統(tǒng)的出入
在進(jìn)入Linux系統(tǒng)之前,所有用戶都需要登錄,也就是說,用戶需要輸入用戶賬號(hào)和密碼,只有它們通過系統(tǒng)驗(yàn)證之后,用戶才能進(jìn)入系統(tǒng)。
與其他Unix操作系統(tǒng)一樣,Linux一般將密碼加密之后,存放在/etc/passwd文件中。Linux系統(tǒng)上的所有用戶都可以讀到/etc/passwd文件,雖然文件中保存的密碼已經(jīng)經(jīng)過加密,但仍然不太安全。因?yàn)橐话愕挠脩艨梢岳矛F(xiàn)成的密碼破譯工具,以窮舉法猜測出密碼。比較安全的方法是設(shè)定影子文件/etc/shadow,只允許有特殊權(quán)限的用戶閱讀該文件。
在Linux系統(tǒng)中,如果要采用影子文件,必須將所有的公用程序重新編譯,才能支持影子文件。這種方法比較麻煩,比較簡便的方法是采用插入式驗(yàn)證模塊(PAM)。很多Linux系統(tǒng)都帶有Linux的工具程序PAM,它是一種身份驗(yàn)證機(jī)制,可以用來動(dòng)態(tài)地改變身份驗(yàn)證的方法和要求,而不要求重新編譯其他公用程序。這是因?yàn)镻AM采用封閉包的方式,將所有與身份驗(yàn)證有關(guān)的邏輯全部隱藏在模塊內(nèi),因此它是采用影子檔案的最佳幫手。
此外,PAM還有很多安全功能:它可以將傳統(tǒng)的DES加密方法改寫為其他功能更強(qiáng)的加密方法,以確保用戶密碼不會(huì)輕易地遭人破譯;它可以設(shè)定每個(gè)用戶使用電腦資源的上限;它甚至可以設(shè)定用戶的上機(jī)時(shí)間和地點(diǎn)。
Linux系統(tǒng)管理人員只需花費(fèi)幾小時(shí)去安裝和設(shè)定PAM,就能大大提高Linux系統(tǒng)的安全性,把很多攻擊阻擋在系統(tǒng)之外。
第3招:保持最新的系統(tǒng)核心
由于Linux流通渠道很多,而且經(jīng)常有更新的程序和系統(tǒng)補(bǔ)丁出現(xiàn),因此,為了加強(qiáng)系統(tǒng)安全,一定要經(jīng)常更新系統(tǒng)內(nèi)核。
Kernel是Linux操作系統(tǒng)的核心,它常駐內(nèi)存,用于加載操作系統(tǒng)的其他部分,并實(shí)現(xiàn)操作系統(tǒng)的基本功能。由于Kernel控制計(jì)算機(jī)和網(wǎng)絡(luò)的各種功能,因此,它的安全性對(duì)整個(gè)系統(tǒng)安全至關(guān)重要。
早期的Kernel版本存在許多眾所周知的安全漏洞,而且也不太穩(wěn)定,只有2.0.x以上的版本才比較穩(wěn)定和安全,新版本的運(yùn)行效率也有很大改觀。在設(shè)定Kernel的功能時(shí),只選擇必要的功能,千萬不要所有功能照單全收,否則會(huì)使Kernel變得很大,既占用系統(tǒng)資源,也給黑客留下可乘之機(jī)。
在Internet上常常有最新的安全修補(bǔ)程序,Linux系統(tǒng)管理員應(yīng)該消息靈通,經(jīng)常光顧安全新聞組,查閱新的修補(bǔ)程序。
第4招:檢查登錄密碼
設(shè)定登錄密碼是一項(xiàng)非常重要的安全措施,如果用戶的密碼設(shè)定不合適,就很容易被破譯,尤其是擁有超級(jí)用戶使用權(quán)限的用戶,如果沒有良好的密碼,將給系統(tǒng)造成很大的安全漏洞。
在多用戶系統(tǒng)中,如果強(qiáng)迫每個(gè)用戶選擇不易猜出的密碼,將大大提高系統(tǒng)的安全性。但如果passwd程序無法強(qiáng)迫每個(gè)上機(jī)用戶使用恰當(dāng)?shù)拿艽a,要確保密碼的安全度,就只能依靠密碼****程序了。
實(shí)際上,密碼****程序是黑客工具箱中的一種工具,它將常用的密碼或者是英文字典中所有可能用來作密碼的字都用程序加密成密碼字,然后將其與Linux系統(tǒng)的/etc/passwd密碼文件或/etc/shadow影子文件相比較,如果發(fā)現(xiàn)有吻合的密碼,就可以求得明碼了。
在網(wǎng)絡(luò)上可以找到很多密碼****程序,比較有名的程序是crack。用戶可以自己先執(zhí)行密碼****程序,找出容易被黑客****的密碼,先行改正總比被黑客****要有利。
第5招:設(shè)定用戶賬號(hào)的安全等級(jí)
除密碼之外,用戶賬號(hào)也有安全等級(jí),這是因?yàn)樵贚inux上每個(gè)賬號(hào)可以被賦予不同的權(quán)限,因此在建立一個(gè)新用戶ID時(shí),系統(tǒng)管理員應(yīng)該根據(jù)需要賦予該賬號(hào)不同的權(quán)限,并且歸并到不同的用戶組中。
在Linux系統(tǒng)上的tcpd中,可以設(shè)定允許上機(jī)和不允許上機(jī)人員的名單。其中,允許上機(jī)人員名單在/etc/hosts.allow中設(shè)置,不允許上機(jī)人員名單在/etc/hosts.deny中設(shè)置。設(shè)置完成之后,需要重新啟動(dòng)inetd程序才會(huì)生效。此外,Linux將自動(dòng)把允許進(jìn)入或不允許進(jìn)入的結(jié)果記錄到/rar/log/secure文件中,系統(tǒng)管理員可以據(jù)此查出可疑的進(jìn)入記錄。
每個(gè)賬號(hào)ID應(yīng)該有專人負(fù)責(zé)。在企業(yè)中,如果負(fù)責(zé)某個(gè)ID的職員離職,管理員應(yīng)立即從系統(tǒng)中刪除該賬號(hào)。很多入侵事件都是借用了那些很久不用的賬號(hào)。
在用戶賬號(hào)之中,黑客最喜歡具有root權(quán)限的賬號(hào),這種超級(jí)用戶有權(quán)修改或刪除各種系統(tǒng)設(shè)置,可以在系統(tǒng)中暢行無阻。因此,在給任何賬號(hào)賦予root權(quán)限之前,都必須仔細(xì)考慮。
Linux系統(tǒng)中的/etc/securetty文件包含了一組能夠以root賬號(hào)登錄的終端機(jī)名稱。例如,在RedHatLinux系統(tǒng)中,該文件的初始值僅允許本地虛擬控制臺(tái)(rtys)以root權(quán)限登錄,而不允許遠(yuǎn)程用戶以root權(quán)限登錄。最好不要修改該文件,如果一定要從遠(yuǎn)程登錄為root權(quán)限,最好是先以普通賬號(hào)登錄,然后利用su命令升級(jí)為超級(jí)用戶。
第6招:消除黑客犯罪的溫床
在Unix系統(tǒng)中,有一系列r字頭的公用程序,它們是黑客用以入侵的武器,非常危險(xiǎn),因此絕對(duì)不要將root賬號(hào)開放給這些公用程序。由于這些公用程序都是用.rhosts文件或者h(yuǎn)osts.equiv文件核準(zhǔn)進(jìn)入的,因此一定要確保root賬號(hào)不包括在這些文件之內(nèi)。
由于r字頭指令是黑客們的溫床,因此很多安全工具都是針對(duì)這一安全漏洞而設(shè)計(jì)的。例如,PAM工具就可以用來將r字頭公用程序的功力廢掉,它在/etc/pam.d/rlogin文件中加上登錄必須先核準(zhǔn)的指令,使整個(gè)系統(tǒng)的用戶都不能使用自己home目錄下的.rhosts文件。
第7招:增強(qiáng)安全防護(hù)工具
SSH是安全套接層的簡稱,它是可以安全地用來取代rlogin、rsh和rcp等公用程序的一套程序組。SSH采用公開密鑰技術(shù)對(duì)網(wǎng)絡(luò)上兩臺(tái)主機(jī)之間的通信信息加密,并且用其密鑰充當(dāng)身份驗(yàn)證的工具。
由于SSH將網(wǎng)絡(luò)上的信息加密,因此它可以用來安全地登錄到遠(yuǎn)程主機(jī)上,并且在兩臺(tái)主機(jī)之間安全地傳送信息。實(shí)際上,SSH不僅可以保障Linux主機(jī)之間的安全通信,Windows用戶也可以通過SSH安全地連接到Linux服務(wù)器上。
第8招:限制超級(jí)用戶的權(quán)力
我們?cè)谇懊嫣岬,root是Linux保護(hù)的重點(diǎn),由于它權(quán)力無限,因此最好不要輕易將超級(jí)用戶授權(quán)出去。但是,有些程序的安裝和維護(hù)工作必須要求有超級(jí)用戶的權(quán)限,在這種情況下,可以利用其他工具讓這類用戶有部分超級(jí)用戶的權(quán)限。Sudo就是這樣的工具。
Sudo程序允許一般用戶經(jīng)過組態(tài)設(shè)定后,以用戶自己的密碼再登錄一次,取得超級(jí)用戶的權(quán)限,但只能執(zhí)行有限的幾個(gè)指令。例如,應(yīng)用sudo后,可以讓管理磁帶備份的管理人員每天按時(shí)登錄到系統(tǒng)中,取得超級(jí)用戶權(quán)限去執(zhí)行文檔備份工作,但卻沒有特權(quán)去作其他只有超級(jí)用戶才能作的工作。
Sudo不但限制了用戶的權(quán)限,而且還將每次使用sudo所執(zhí)行的指令記錄下來,不管該指令的執(zhí)行是成功還是失敗。在大型企業(yè)中,有時(shí)候有許多人同時(shí)管理Linux系統(tǒng)的各個(gè)不同部分,每個(gè)管理人員都有用sudo授權(quán)給某些用戶超級(jí)用戶權(quán)限的能力,值得注意的是,sudo并不能限制所有的用戶行為,尤其是當(dāng)某些簡單的指令沒有設(shè)置限定時(shí),就有可能被黑客濫用。例如,一般用來顯示文件內(nèi)容的/etc/cat指令,如果有了超級(jí)用戶的權(quán)限,黑客就可以用它修改或刪除一些重要的文件。
第9招:追蹤黑客的蹤跡
當(dāng)你仔細(xì)設(shè)定了各種與Linux相關(guān)的組態(tài),并且安裝了必要的安全防護(hù)工具之后,Linux操作系統(tǒng)的安全性的確大為提高,但是卻并不能保證防止那些藝高人膽大的網(wǎng)絡(luò)黑客的入侵。
在平時(shí),網(wǎng)絡(luò)管理人員要經(jīng)常提高警惕,隨時(shí)注意各種可疑狀況,并且按時(shí)檢查各種系統(tǒng)日志文件,包括一般信息日志、網(wǎng)絡(luò)連接日志、文件傳輸日志以及用戶登錄日志等。在檢查這些日志時(shí),要注意是否有不合常理的時(shí)間記載。例如:
•正常用戶在半夜三更登錄;
•不正常的日志記錄,比如日志只記錄了一半就切斷了,或者整個(gè)日志文件被刪除了;
•用戶從陌生的網(wǎng)址進(jìn)入系統(tǒng);
•因密碼錯(cuò)誤或用戶賬號(hào)錯(cuò)誤被擯棄在外的日志記錄,尤其是那些一再連續(xù)嘗試進(jìn)入失敗,但卻有一定模式的試錯(cuò)法;
•非法使用或不正當(dāng)使用超級(jí)用戶權(quán)限su的指令;
•重新開機(jī)或重新啟動(dòng)各項(xiàng)服務(wù)的記錄。
第10招:共同防御,確保安全
從計(jì)算機(jī)安全的角度看,世界上沒有絕對(duì)密不透風(fēng)、百分之百安全的計(jì)算機(jī)系統(tǒng),Linux系統(tǒng)也不例外。采用以上的安全守則,雖然可以使Linux系統(tǒng)的安全性大大提高,使順手牽羊型的黑客和電腦玩家不能輕易闖入,但卻不一定能阻擋那些身懷絕技的武林高手,因此,企業(yè)用戶還需要借助防火墻等其他安全工具,共同防御黑客入侵,才能確保系統(tǒng)萬無一失。