新聞中心
維護(hù)一個(gè)完全安全的系統(tǒng)是不可能的。然而,只要勤奮,則有可能使 Linux 機(jī)器足夠安全,并讓大多數(shù)偶爾出現(xiàn)的駭客、腳本小子(script- kiddies)以及其它的“壞家伙”止步而去騷擾其他人。請(qǐng)記?。簝H僅遵循本教程不會(huì)產(chǎn)生一個(gè)安全的系統(tǒng)。

為龍灣等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及龍灣網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、龍灣網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
相反,我們希望您接觸到主要主題的多個(gè)方面,并向您提供一些有關(guān)如何入門(mén)的有用示例。
Linux 系統(tǒng)安全性可分為兩個(gè)部分:內(nèi)部安全性和外部安全性。內(nèi)部安全性指預(yù)防用戶無(wú)意或惡意地破壞系統(tǒng)。外部安全性指防止未授權(quán)用戶獲得對(duì)系統(tǒng)的訪問(wèn)。
本章將首先介紹內(nèi)部安全性,然后介紹外部安全性,最后介紹一些常規(guī)指導(dǎo)原則和技巧。
日志文件的文件權(quán)限
內(nèi)部安全性可以是很大的任務(wù),這要看您對(duì)用戶的信任程度。這里介紹的指導(dǎo)原則是設(shè)計(jì)用來(lái)防止偶然用戶訪問(wèn)敏感信息和防止不公平地使用系統(tǒng)資源。
至于文件權(quán)限,您可能希望修改以下三種情況的權(quán)限:
首先,/var/log 中的日志文件不需要是所有人都可以讀取的。沒(méi)有理由讓非 root 用戶窺視日志。為了創(chuàng)建具有適當(dāng)權(quán)限的日志。
root 用戶其它文件的文件權(quán)限
其次,root 用戶的點(diǎn)文件對(duì)于普通用戶應(yīng)是不可讀的。檢查 root 用戶主目錄中的文件(ls -la)以確保它們受到適當(dāng)?shù)谋Wo(hù)。甚至可以使整個(gè)目錄僅對(duì) root 用戶可讀:
# cd |
用戶文件的文件權(quán)限
最后,用戶文件在缺省情況下通常被創(chuàng)建為所有人可讀。那可能不是用戶所期望的,而且它當(dāng)然不是最好的策略。應(yīng)該使用與下面類(lèi)似的命令在 /etc/profile 中設(shè)置缺省的 umask:
if [ "$UID" = 0 ]; then |
應(yīng)該查詢 umask(2) 和 bash(1) 手冊(cè)頁(yè)以獲取有關(guān)設(shè)置 umask 的更多信息。請(qǐng)注意:umask(2) 手冊(cè)頁(yè)涉及 C 函數(shù),但它所包含的信息也適用于 bash 命令。
查找 SUID/SGID 程序
尋求 root 訪問(wèn)權(quán)的惡意用戶總是會(huì)在系統(tǒng)上尋找設(shè)置了 SUID 或 SGID 位的程序。就象我們?cè)?LPI 101 系列第 3 部分中討論的那樣,這些位使程序始終作為擁有該文件的用戶或組運(yùn)行。有時(shí)這是程序正確運(yùn)行所必需的。問(wèn)題是任何程序都可能包含允許用戶在不正確地使用程序時(shí)獲得特權(quán)的錯(cuò)誤。
應(yīng)該仔細(xì)考慮每個(gè)程序以確定是否需要將其 SUID 或 SGID 位打開(kāi)。系統(tǒng)上有些 SUID/SGID 程序可能是根本不需要的。
要搜索具有這樣性質(zhì)的程序,可使用 find 命令。例如,可以在 /usr 目錄中啟動(dòng)對(duì) SUID/SGID 程序的搜索:
# cd /usr |
在這個(gè)清單中,我已經(jīng)發(fā)現(xiàn)了需要更仔細(xì)檢查的侯選對(duì)象:lppasswd 是 CUPS 打印軟件分發(fā)版的一部分。因?yàn)闆](méi)有在系統(tǒng)上提供打印服務(wù),所以我會(huì)考慮除去 CUPS,那也會(huì)除去 lppasswd 程序。lppasswd 中可能沒(méi)有危及安全性的錯(cuò)誤,但為什么要在不使用的程序上冒險(xiǎn)呢?同樣地,應(yīng)該關(guān)閉所有不使用的服務(wù)。您總是可以在需要時(shí)再啟用它們。
用 ulimit 設(shè)置用戶限制
bash 中的 ulimit 命令提供了限制特定用戶的資源使用情況的方法。一旦限制降低,則在進(jìn)程的生命期內(nèi)無(wú)法提高該限制。此外,該限制會(huì)被所有子進(jìn)程繼承。結(jié)果是:可以在 /etc/profile 中調(diào)用 ulimit,而限制將以不能撤消的方式應(yīng)用于所有用戶(假設(shè)用戶正在運(yùn)行 bash 或另一個(gè) shell,該 shell 在登錄時(shí)運(yùn)行 /etc/profile)。
要檢索當(dāng)前限制,可使用 ulimit -a:
# ulimit -a |
以一種能實(shí)際提高系統(tǒng)安全性而不會(huì)對(duì)合法用戶造成麻煩的方式設(shè)置這些限制是相當(dāng)復(fù)雜的,所以調(diào)整這些設(shè)置時(shí)要小心。
用 ulimit 設(shè)置 CPU 時(shí)間限制
作為 ulimit 的一個(gè)示例,我們嘗試將一個(gè)進(jìn)程的 CPU 時(shí)間設(shè)置為 1 秒鐘,然后用一個(gè)忙循環(huán)使它超時(shí)。一定要確保啟動(dòng)新的 bash 進(jìn)程(象我們?cè)谙旅孀龅哪菢?,以在其中進(jìn)行嘗試;否則將被注銷(xiāo)!
# time bash |
在上面的示例中,“user”時(shí)間加上“sys”時(shí)間等于該進(jìn)程所用的全部 CPU 時(shí)間。當(dāng) bash 進(jìn)程到達(dá) 2 秒標(biāo)記時(shí),Linux 斷定它超過(guò) 1 秒的限制,因此該進(jìn)程被殺掉??岚??
注:一秒鐘只是示例而已。不要對(duì)您的用戶這樣做!即使幾小時(shí)也是不對(duì)的,因?yàn)?X 真地很消耗時(shí)間(我當(dāng)前的會(huì)話已用掉了 69+ 小時(shí)的 CPU 時(shí)間)。在實(shí)際的實(shí)現(xiàn)中,您可能要對(duì)某些項(xiàng)而不是 CPU 時(shí)間執(zhí)行 ulimit。
入侵預(yù)防
外部安全性可分為兩類(lèi):入侵預(yù)防和入侵檢測(cè)。采取入侵預(yù)防手段是為了防止未授權(quán)用戶訪問(wèn)系統(tǒng)。如果這些手段失敗,那么入侵檢測(cè)在確定何時(shí)發(fā)生未授權(quán)訪問(wèn)以及造成什么損壞方面或許有用。
完全的 Linux 安裝是巨大且復(fù)雜的系統(tǒng)。跟蹤已安裝的每一項(xiàng)是很困難的,而配置每個(gè)包的安全性特征就更困難了。安裝的包越少,則問(wèn)題就變得越簡(jiǎn)單。入侵預(yù)防的第一步是除去不需要的包。
關(guān)閉未使用的網(wǎng)絡(luò)服務(wù)(超級(jí)服務(wù)器)
關(guān)閉未使用的網(wǎng)絡(luò)服務(wù)一直是提高入侵預(yù)防能力的好方法。例如,如果正在運(yùn)行因特網(wǎng)超級(jí)服務(wù)器(如本教程前面描述的 inetd 或 xinetd),那么 in.rshd、in.rlogind 和 in.telnetd 通常都在缺省情況下啟用。這些網(wǎng)絡(luò)服務(wù)幾乎都已被更安全的替代項(xiàng)(如 ssh)所取代。
要在 inetd 中禁用服務(wù),只需在 /etc/inetd.conf 中在適當(dāng)?shù)男星懊婕由稀?”將其注釋掉;然后重新啟動(dòng) inetd 即可。(這在本教程前面已有描述,若需要復(fù)習(xí),可返回幾頁(yè)快速瀏覽。)
要在 xinetd 中禁用服務(wù),可以執(zhí)行與 /etc/xinetd.d 中適當(dāng)?shù)拇a片段相似的工作。例如,要禁用 telnet,可以將 /etc/xinetd.d/telnet 文件的整個(gè)內(nèi)容注釋掉,或簡(jiǎn)單地刪除該文件。重新啟動(dòng) xinetd 以完成此過(guò)程。
如果正在結(jié)合 inetd 使用 tcpd,或如果正在使用 xinetd,還可以選擇限制與可信的主機(jī)進(jìn)行的進(jìn)入連接。對(duì)于 tcpd,可參閱本教程的前幾章。對(duì)于 xinetd,可在 xinetd.conf(5) 手冊(cè)頁(yè)中搜索“only_from”。
關(guān)閉未使用的網(wǎng)絡(luò)服務(wù)(獨(dú)立服務(wù)器)
有些服務(wù)器并不由 inetd 或 xinetd 啟動(dòng),但卻作為“獨(dú)立”服務(wù)器始終運(yùn)行著。這樣的服務(wù)器通常是 atd、lpd、sshd、 nfsd 和其它服務(wù)器。事實(shí)上,inetd 和 xinetd 本身都是獨(dú)立服務(wù)器,如果在它們各自的配置文件中注釋掉所有的服務(wù),就選擇了將它們完全關(guān)閉。
獨(dú)立服務(wù)器通常在系統(tǒng)引導(dǎo)或更改運(yùn)行級(jí)別時(shí)由 init 系統(tǒng)啟動(dòng)。如果不記得運(yùn)行級(jí)別是如何工作的,可以看看 LPI 101 系列第 4 部分。
要使 init 系統(tǒng)不再啟動(dòng)服務(wù)器,在每個(gè)運(yùn)行級(jí)別目錄中找到指向該服務(wù)器啟動(dòng)腳本的符號(hào)鏈接,然后刪除它。運(yùn)行級(jí)別目錄的名稱(chēng)通常為 /etc/rc3.d 或 /etc/rc.d/rc3.d(針對(duì)運(yùn)行級(jí)別 3)。還需要檢查其它運(yùn)行級(jí)別。
除去服務(wù)的運(yùn)行級(jí)別符號(hào)鏈接后,仍需要關(guān)閉當(dāng)前運(yùn)行的服務(wù)器。最好用服務(wù)的初始化腳本完成這一操作,通常可以在 /etc/init.d 或 /etc/rc.d/init.d 中找到這一腳本。例如,要關(guān)閉 sshd:
# /etc/init.d/sshd stop |
測(cè)試更改
在修改 inetd 或 xinetd 配置以禁用或限制服務(wù),或用服務(wù)器初始化腳本關(guān)閉該服務(wù)器后,應(yīng)該對(duì)所做的更改加以測(cè)試??梢允褂?telnet 客戶機(jī)通過(guò)指定服務(wù)名稱(chēng)或號(hào)碼來(lái)測(cè)試 tcp 端口。例如,要驗(yàn)證 rlogin 已被禁用:
# grep ^login /etc/services |
除了標(biāo)準(zhǔn) telnet 客戶機(jī)以外,還應(yīng)考慮使用實(shí)用程序以測(cè)試系統(tǒng)“開(kāi)放程度”的可能性。我們推薦使用 netcat 和 nmap。
ncat 是“網(wǎng)絡(luò)瑞士軍刀”:它是使用 TCP 或 UDP 協(xié)議、跨越網(wǎng)絡(luò)連接讀寫(xiě)數(shù)據(jù)的簡(jiǎn)單 UNIX 實(shí)用程序。nmap 是用于網(wǎng)絡(luò)探測(cè)或安全性審計(jì)的實(shí)用程序。具體而言,nmap 掃描端口以確定哪個(gè)端口打開(kāi)了。
本文題目:Linux操作系統(tǒng)內(nèi)部和外部安全性綜合概述
地址分享:http://www.5511xx.com/article/dpohghi.html


咨詢
建站咨詢
