日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

76 FreeBSD連載:設(shè)置基本系統(tǒng)( 七 )


改變程序的根文件系統(tǒng)
當(dāng)不得不提供一些服務(wù)的時(shí)候,為了增加安全性,可以考慮提供chroot的服務(wù) 。chroot意味著改變運(yùn)行程序的根文件系統(tǒng),當(dāng)一個(gè)程序運(yùn)行在chroot的環(huán)境下時(shí),它所了解的文件系統(tǒng)只是chroot設(shè)置給它的某級(jí)目錄開始,它就不能訪問這個(gè)目錄之外文件系統(tǒng)中的內(nèi)容,使得即使這個(gè)程序出現(xiàn)安全問題,也不會(huì)影響文件系統(tǒng)中的其他重要數(shù)據(jù)的安全性 。顯然不是每種服務(wù)都適合這種形式,有的服務(wù)提供訪問的文件資源不固定在某個(gè)目錄下,就不能使用這個(gè)形式 。
由于設(shè)置一個(gè)服務(wù)程序使用chroot的時(shí)候,它就以為給它指定的目錄就是它的根目錄,因此它無論訪問哪個(gè)文件,都將在相對(duì)的目錄中查找,包括它要訪問的重要系統(tǒng)文件 。這樣就必須為這個(gè)chroot程序建立一個(gè)小的,但完全滿足其要求的系統(tǒng)目錄結(jié)構(gòu),這個(gè)目錄將和系統(tǒng)目錄結(jié)構(gòu)類似,也具有/etc/、/usr/、/var/、/dev/、/tmp/、/usr/lib/等等,并具備應(yīng)用程序要訪問的相應(yīng)文件 。
如果程序是動(dòng)態(tài)連接的,就需要/usr/lib目錄中存在動(dòng)態(tài)連接庫,應(yīng)用程序還可能會(huì)訪問/etc目錄下的配置文件,/dev目錄下的設(shè)備文件,以及其他可能的文件 。必須在應(yīng)用程序的新的根目錄下設(shè)置所有必須的目錄結(jié)構(gòu)和復(fù)制需要訪問的文件 。當(dāng)然文件內(nèi)容可以是系統(tǒng)原來文件的一個(gè)子集,而非原有的整個(gè)文件,以盡可能的保障安全 。例如服務(wù)程序要訪問的passwd文件只是系統(tǒng)passwd文件的一部分,等等 。
當(dāng)chroot的程序需要訪問某個(gè)用戶的口令數(shù)據(jù)時(shí),就需要將/etc/passwd文件中有關(guān)這個(gè)用戶的內(nèi)容復(fù)制到用戶chroot目錄下etc子目錄下,然而口令文件并不止passwd一個(gè)文件,將包括master.passwd,pwd.db及spwd.db 。由于pwd.db和spwd.db使用了數(shù)據(jù)庫形式,就使得復(fù)制部分用戶數(shù)據(jù)變得比較困難 。
改變根文件系統(tǒng)的服務(wù)程序有兩種類型,一種為本身不具備改變根文件系統(tǒng)的能力,但由于不訪問過多的文件,能使用系統(tǒng)的chroot命令來啟動(dòng)程序,使其運(yùn)行在某個(gè)目錄下 。另一種類型為程序本身就支持這個(gè)能力,這樣就不需要使用手工使用chroot命令,系統(tǒng)在特定條件下或使用一定參數(shù)啟動(dòng)時(shí)就自動(dòng)進(jìn)行chroot操作 。然而這些類型進(jìn)行目錄設(shè)置時(shí)需要進(jìn)行的操作是相同的 。而要設(shè)置網(wǎng)絡(luò)服務(wù)所使用的文件環(huán)境,就要對(duì)該服務(wù)程序有詳細(xì)的了解,這才是最為困難的問題 。
這里以配置改變根文件系統(tǒng)的namd為例,簡介設(shè)置改變根文件系統(tǒng)的網(wǎng)絡(luò)服務(wù)的步驟,這個(gè)設(shè)置步驟的原始文檔為http://www.psionic.com/papers/dns.HTML(這個(gè)適用于OpenBSD和FreeBSD,沒有使用Ports Collection,但給了較詳細(xì)的解釋),和http://www.antisocial.net/~modred/papers/named.html(使用了FreeBSD的Ports Collection,給出了詳細(xì)的步驟) 。以下只著重介紹操作過程,并沒有詳細(xì)給出操作步驟,需要設(shè)置chroot named的使用者可以參閱這些相關(guān)網(wǎng)頁的內(nèi)容 。
編譯靜態(tài)連接的named和namd-xfer,這需要增加編譯連接標(biāo)志-static,重新編譯bind8軟件 。這個(gè)過程也可以使用Ports Collecion來完成,然而要注意的是使用Ports Collection編譯的named和直接編譯的named對(duì)目錄結(jié)構(gòu)的處理有所不同,這將影響后面建立目錄結(jié)構(gòu)的處理過程 。使用靜態(tài)連接的執(zhí)行程序的好處是不必考慮為chroot環(huán)境復(fù)制對(duì)應(yīng)的動(dòng)態(tài)連接庫,簡化了chroot文件系統(tǒng)設(shè)置 。
建立chroot目錄結(jié)構(gòu),首先在根目錄下建立/chroot/named目錄,作為這個(gè)服務(wù)的根目錄,然后在這個(gè)目錄中建立dev,etc,etc/namedb,usr,usr/libexec,var, var/run等目錄,注意這些目錄結(jié)構(gòu)是與應(yīng)用軟件中的設(shè)置相關(guān)的,如果使用Ports Collection定制的named和named-xfer,它使用目錄結(jié)構(gòu)是與Bind8的缺省設(shè)置不同的,需要建立/usr/local/libexec而非/usr/libexec目錄 。

推薦閱讀