Why FreeBSD ? 當談到免費的Unix時,人們通常認為“就是Linux”。 當然,Linux應用十分廣泛,而且(幾乎)每個人都聽說過它。新用戶的數量一直在增長,媒體(不管是不是“專業”的)對它進行了很多宣傳。一個主要的原因是Linux專門運行在使用最廣泛的Intel兼容計算機上。當然,它還可以運行在許多其它處理器上,因為Unix的一個理念就是“我們不在意是什麼處理器”。然而,如果Linux僅僅為一個特殊的處理器進行開發,它可能不會獲得如此成功,或者,至少要艱難一些。
但免費的Unix並不是只有Linux:BSD家族也是。它有三個主要的分支:FreeBSD,NetBSD和OpenBSD。BSD是 “Berkeley Software Distribution”的縮寫。如果你想了解更多的關於Unix歷史的信息,你可以參考article 176。(經過考慮,那篇文章沒有討論關於BSD和System V之間的區別:那完全可以寫一本書了。)
每個分支都有自己的特色:
NetBSD幾乎可以在任何一種平台上運行,包括很多老計算機:姑且認為有30到40種不同的平台。NetBSD證明了我們前面提到的:Unix不在乎處理器。如果你在家裡或者在工作中有一台相當老的“垃圾”,這是你很好的選擇。我在Amiga和Intel機器上使用NetBSD很多年,並且我感覺不錯。
OpenBSD是最安全的Unix之一。它是一個很理想的服務器平台,當然,它也可以在許多處理器上運行。它可能是Internet上最多的被用作服務器的系統之一。但它作為家用用途卻不是很理想,不過,每個人根據自己喜好來做選擇……
FreeBSD是上面兩種BSD的“綜合體”。它專注於Intel和Alpha處理器,並且從OpenBSD那裡“繼承”了一部分安全體系。跟 Linux一樣,它運行於Intel處理器使它成為應用最廣泛的BSD之一。它也是家庭用戶的一個很好的選擇。但這並不是說你不能在工作中使用它!
這裡還有一些關於FreeBSD的事情:他們(譯注:指FreeBSD Core Team成員)與Apple公司“共享”Mac OS X的自由軟件部分。並且,我很喜歡OS X……順便說說,不要困惑:雖然OS X是基於BSD,但是它的內核跟FreeBSD的卻沒有任何關系。它使用的是已經在NeXTstep中使用的Mach內核,OS X的“父親”:很明顯,當NeXTstep於80年代末問世以來,這個內核發展了不少。
現在,我們見到了……讓我們進一步深入吧。
獲得並安裝FreeBSD 和大多數自由軟件一樣,FreeBSD可以從FreeBSD的web站點上下載。很明顯,這需要很高的連接速度。不用擔心:你可以在世界上的任何地方找到FreeBSD的CD。
目前(在寫本文的時候)的最新發行版是4.6。本文討論的是i386發行版。
從CD-ROM(或其它介質)上安裝FreeBSD十分簡單……雖然它並沒有圖形界面來完成安裝!你將會使用偽圖形界面。只需要按照提示做, FreeBSD就會被安裝到你的硬盤上。和通常的情況一樣,你需要將你的硬盤進行分區,配置一些東西,比如網絡連接或者甚至是內核(可選)。下面,你將見到sysinstall,就像它的名字暗示的一樣,它是一個很好的安裝工具。你可以選擇安裝全部packages或者僅僅安裝一部分。你可以在任何時候用任何方式添加它們。
它的包管理方式也很簡單。你可以象在Solaris下一樣使用pkg命令,或者你可以選擇使用ports。簡而言之,pkg命令就像Linux的rpm或者deb,而ports是一些需要通過make和make install進行編譯的文件。換句話說:FreeBSD的操作跟Linux的沒有什麼大的不同或者有困難的地方。
讓我們安裝一個Linux兼容包——你應該安裝它:它允許你在FreeBSD上編譯和運行Linux的應用程序。
所有事情都是很簡單的,並且為防萬一,FreeBSD准備了一個很好的手冊,它詳細解釋了每一個步驟。並且它有很多語言的版本(譯注:在/usr/share/doc目錄下可以看見以各個語言命名的目錄,不同語言的手冊就在相應的目錄中)。
因此,沒有必要在這上面花過多時間。
配置FreeBSD 再強調一次,我們的這篇文章不可能面面俱到。最重要的是知道核心文件在哪裡。跟往常一樣,你可以在/etc目錄找到它們。它們被命名為rc.something並且可以管理很多不同的部分:常規配置、防火牆、網絡、sysctl等。
rc.conf文件十分重要,正如它的名字一樣,可以在這裡調整系統配置。在這個文件中你可以告訴系統是否打開某些守護程序(sshd、sendmail 等),防火牆類型,你是否想激活內核級安全,你是否想激活IPv6等。在這裡有很多選項,令人驚訝的是,你可以在被稱作 /etc/defaults/rc.conf的默認文件中找到所有它們。不要誤會,這個文件包括了默認設置,而不是范例。也就是說, /etc/rc.conf/etc/rc.conf是不考慮這些默認設定的。換句話說就是,不要將/etc/defaults/rc.conf復制到 /etc.rc.conf,也不要嘗試修改/etc/defaults/rc.conf,應該在/etc/rc.conf中作更改。
在sysinstall所選擇的項目將會被自動加入到/etc/rc.conf中(網卡配置,主機名,安全等級等)。
請格外注意:FreeBSD默認沒有在/etc/inetd.conf中打開任何服務。這就是說,在第一次啟動系統的時候,由inetd管理的守護程序(Daemon)默認應該是關閉的。以我的愚見,每個Unix系統都應該這樣。無論如何,這是一個好主意!
另外的rc文件允許你配置防火牆或者sysctl,以及其他的東西。這理所當然的將我們引導到了調整FreeBSD的話題上。
調整FreeBSD 調整系統最好的工具之一是sysctl(在Linux下也一樣)。你可以通過命令行來定義某些特殊值,或者(同時也建議你)寫一個sysctl.conf文件,除非你使用命令行僅僅是來進行測試。
比如,如果你的機器被用作網關,通過命令sysctl -w net.inet.ip.forwarding=1可以使sysctl允許IP轉發。如果想獲得更高的安全性,你可以使用sysctl -w net.inet.ip.check_interface=1命令核對這些包是否到達目標IP所對應的網絡界面。你可以通過使用sysctl來控制你的系統的大部分行為:請參見man page。明顯地,如果你希望將這些寫入sysctl.conf文件,只需要將這些變量加入進去就可以了,而不必加入sysctl命令本身。 sysctl.conf文件使用variable = value格式。上面的例子可寫為: net.inet.ip.forwarding=1
net.inet.ip.check_interface=1
當然,你的sysctl.conf文件支持超過兩行的文件,因此它幾乎可以在內核級控制控制任何東西。
在本文的開頭,我們討論了安全級。有從-1到3四個不同的等級,3代表最高安全級。建議你在選擇之前了解每個等級。使用除了-1或者0之外的其它等級有可能導致系統無法象你希望的那樣運行。第一個缺點就是level 1將阻止你正常使用X服務器。你也不能加載或者卸載內核模塊。
無論如何,高安全等級對於需要高安全性的特殊服務器來說是很有用的。作為一個家庭用戶,你可以保持level 0,當然,這由你自己決定……
chflags命令也與安全等級有關。要想了解這個命令,請閱讀man page:它是一個很有用的命令。
如果繼續這個話題將把本文寫成一個“安全配置FreeBSD”的文章,因此,讓我們進入下一個章節。
升級FreeBSD 讓我們假設你剛購買了FreeBSD 4.5CD。幾天以後,FreeBSD 4.6就發布了。倒霉!
不必煩惱:FreeBSD有一個基於CVS的升級系統。你可以選擇使用匿名CVS或者CVSup。前者比較容易使用,而後者更有效率。通過這些工具,你可以獲得新的原碼樹(Source Tree),並且同步(Synchronize)它。
下面,你必須使用make buildworld命令編譯所有新代碼。如何進行編譯在FreeBSD Handbook裡已經十分詳細的進行了闡述(譯注:FreeBSD Handbook 1.73版中關於升級系統的部分Zer4tul已經完成了翻譯工作,正在進行校對)。最重要的一點是它使你擁有一個緊跟升級步伐的嶄新的系統。
但是,並不僅僅如此。跟通常情況一樣,自由軟件(Free Software)的弱點很快就會被發現,並且很快被修復。跟其它商業操作系統一個漏洞可以很久不被修復不同,自由軟件社區的人們會以最快速度為你提供補丁。很明顯,你的工作就是檢查系統中有什麼地方需要補丁。FreeBSD的Web站點上有一個安全公告區(Security Section)提供各發行版的安全公告。你可以從那裡下載.asc文件(文本文件)來獲得你所需要知道的信息:關於系統問題的系統問題的描述和解決的方法。其它Web站點為你提供的也是這些信息。比如linuxsecurity,CERT等。
這並不是說你必須升級你的系統。
更新FreeBSD 你並不想花過多的時間在了解系統漏洞上,是麼?和其它免費Unix系統一樣,FreeBSD為你提供了補丁。你可以直接獲取這些補丁並且使用它們。對於 Linux用戶來說,最大的不同就是你並非抓取一個修改過的包,而是一個補丁原碼。這就是說你必須在打補丁之後重新編譯內核,當然,這就意味著你的機器已經裝上補丁了。在Linux下也可以這樣,但是人們通常是下載修正過後的包,例如rpm包,至少對於應用程序是這樣,有時也下載被打過補丁的內核rpm 包。
Linux和FreeBSD最大的不同是內核。FreeBSD是基於BSD 4.4,並且沒有不像Linux一樣有不同的內核版本。這就是說,它的內核都是穩定版本,當然,它也受益於可加載模塊。缺點就是如果你想讓你的系統盡可能安全的話,你必須比在Linux下更頻繁的編譯內核。
無論如何,相比Linux的體系,我更喜歡這樣的方式,但這僅僅是我個人的意見。我並不認為三個不同的內核版本同時進行可以帶來很好的穩定性。應用程序必須從一個版本的內核“移植”到另外一個版本,特別是在安全方面。另外一個例子就是系統包:三個不同的內核版本,三個不同的軟件組合!當然還有其它問題。
我極為尊敬那些參與這個偉大工程的人們,但是這是否就是正確的方法呢?改進通常是必要的,但是這是否代表我們隨時隨刻都必須更改所有東西呢?不必擔心!
很明顯,你也可以編譯一個更符合你要求的內核……並且在那時,就跟在Linux下一樣。完成這項工作的方法在FreeBSD Handbook中已經很詳細的闡明了,因此,讓我們轉入其它話題。