深度探索 OpenBSD作業系統(轉)

BSDLite發表於2007-08-15
深度探索 OpenBSD作業系統(轉)[@more@]OpenBSD 很可能是世界上最安全的作業系統。在其之上的每一步開發過程都重點關注於構建一個安全、開放和免費的平臺。UNIX® 和 Linux® 管理員請注意:您可能在日常工作中已經使用了從 OpenBSD 中移植的工具,只是您並不知道而已。或許,現在我們應該對整個作業系統進行更深入的研究。
當安全性作為最重要的考慮因素時,有必要研究產生現在安全遠端訪問方面的標準 OpenSSH (Open Secure Shell) 的作業系統。OpenSSH 只是 OpenBSD 中的一部分,而該分發版從底層開始著重強調了安全性,它實現了建立一個預設安全 的類 UNIX® 作業系統的目標。這種立場與現在大多數的作業系統有所不同,對於這些作業系統,在實際使用之前需要耗費大量的時間和精力對其環境進行加強。事實上,OpenBSD 是如此的安全,以至於在 DEF CON 競賽中曾一度禁止使用它,在這個競賽中,破解高手們 對所有其他的系統進行攻擊。

BSD 概述

Berkeley Software Distribution (BSD) 是歷史最悠久和最流行的 UNIX 版本之一。現在,它被分為許多不同的版本,其中有三種比較常見的開放原始碼分發版:

FreeBSD
OpenBSD
NetBSD
儘管 FreeBSD 在這三種釋出版中使用得最廣泛,但每個版本都有其顯著的優勢,這使得選擇正確的解決方案成為一項重要的決策。FreeBSD 是三者中最常見的系統,廣泛應用於 i386 環境。當安全性成為最重要的考慮因素時,OpenBSD 則是合適的分發版。NetBSD 提供了一種小規模的、高度可移植的選擇,它可以執行於各種各樣的體系結構中。

OpenBSD 稽核處理

OpenBSD 稽核處理可能是該分發版中一致安全性的最大因素。一組有經驗的開發人員重點對進入原始碼樹的每段程式碼進行了稽核。分析程式碼中的安全缺陷和一般性錯誤(它們可能並不會影響到整體功能,但可能會作為安全缺陷而被利用)。對每個錯誤進行認真和及時的處理。這種積極主動的處理方法使得 OpenBSD 免受各種未知攻擊的影響,而其他的分發版則在發現攻擊後緊急對系統進行保護。

OpenBSD:使用地點與時間

在任何強調安全性的環境中,都可以安裝 OpenBSD。現在,大家的安全意識越來越強,計算機需要全天候連線到 Internet 上,無論是在家庭、政府或企業環境中,很少有人把安全性問題不當回事。金融巨頭依賴 OpenBSD 以確保企業網路和客戶記錄的安全。與其他的類 UNIX 作業系統相比,OpenBSD 可能並不擁有廣泛的使用者基礎,但是在許多網路中的最關鍵的地方通常都安裝了該作業系統。

作為 NetBSD 的近親,OpenBSD 也可以執行於各種各樣的硬體之上。下面具體來了解一下:

Alpha:基於 Digital Alpha 的系統
amd64:基於 AMD64 的系統
Cat:StrongARM 110 評估板 (Evaluation Board)
hp300:Hewlett-Packard HP 9000 系列的 300 和 400 工作站
HP/PA:Hewlett-Packard Precision Architecture (PA-RISC) 系統
i386:基於 Intel® i386 體系結構和相容處理器的標準計算機
luna88k:Omron LUNA-88K 和 LUNA-88K2 工作站
mac68k:基於 Motorola 680x0 的帶 MMU 的 Apple Macintosh
macppc:從 iMac 開始,基於 Apple PowerPC 的計算機
mvme68k:基於 Motorola 680x0 的 VME 系統
mvme88k:基於 Motorola 881x0 的 VME 系統
SGI:基於 SGI MIPS 的工作站
SPARC:Sun sun4-、sun4c- 和 sun4m 級的 SPARC 系統
SPARC64:Sun UltraSPARC 系統
VAX:基於 Digital VAX 的系統
Zaurus:Sharp Zaurus C3x00 PDA
OpenBSD 核心包和特性

既然已經確定了 OpenBSD 是否適合於您的硬體平臺,下面讓我們更仔細地瞭解一下 OpenBSD 中一些重要的部分。

OpenSSH

第一個值得關注的包是 OpenSSH,所有的 UNIX 和 Linux® 使用者對它都很熟悉。然而,許多人可能並不知道它來自於 OpenBSD 開發人員。OpenSSH 最初用於 OpenBSD,後來成為標準的安全 Shell (SSH) 包,並移植到幾乎所有版本的 UNIX、Linux 和 Microsoft® Windows® 作業系統。OpenSSH 包括用於安全登入的 ssh、用於安全複製的 scp 和 sftp,後者是 ftp 的安全替代方法。所有的原始碼都符合開放原始碼 BSD 許可,必須遵守 OpenBSD 的規程以杜絕在該分發版中出現任何專用程式碼和限制性許可計劃(這是建立新版本的 SSH 的原動力)。OpenBSD 中所包含的每個軟體部分都是完全免費的,並且在使用上沒有任何限制。

加密

因為 OpenBSD 專案是在加拿大進行的,所以其中應用的加密技術不受美國的出口限制,這使得該分發版可以充分利用各種現代的加密演算法。幾乎可以在該作業系統的任何地方找到加密處理,從檔案傳輸到檔案系統,乃至網路。OpenBSD 中還包含偽隨機數生成器,它可以確保無法根據系統狀態預測隨機數。其他的特性還包括加密雜湊函式、加密轉換庫和加密硬體支援。

OpenBSD 中另一個主要的部分是 IP 安全協議 (IPSec),該作業系統中沒有依賴先天不安全的 TCP/IP Version 4 (IPV4),而使用了這個協議。(IPV4 選擇信任所有的人和所有的事物。)IPSec 對資料包進行加密和驗證以保護資料的保密性,並確保在傳輸過程中不會對資料包進行任何更改。隨著 TCP/IP Version 6 (IPV6) 的引入,IPSec 成為標準的 Internet 協議中不可或缺的部分,這使得未來的 Internet 在預設情況下 更加安全。

OpenBSD 可以作為防火牆

因為 OpenBSD 很小並且很安全,所以 OpenBSD 實現的最常見目標之一是用作防火牆。防火牆從底層對大多數安全單元進行操作,並且 OpenBSD 的包過濾實現是非常優秀的。Packet Filter (PF),OpenBSD 開發社群設計的開放原始碼解決方案,它是 OpenBSD 所選擇的方法。與 OpenBSD 軟體的其他許多部分一樣,這種方法非常成功,以至於其他的 BSD 變種紛紛將其移植到自己的分發版中。

OpenBSD 配置為預設安全,所以在設定堅如磐石的防火牆時,您無需關閉過多的服務。您需要啟用第二個 Ethernet 介面,並根據需要配置 PF。有關介紹如何將 OpenBSD 伺服器設定為防火牆的文章連結,請參見參考資料部分。



加密和隨機數

大多數作業系統很少在其關鍵組成部分中包含加密處理,這使得它們先天就缺乏安全性。導致這種缺陷的一個重要原因是,大多數的作業系統來自美國,不允許開發人員出口健壯的加密軟體。OpenBSD 中的加密雜湊庫包括 MD5、SHA1 和 RIPEMD160。OpenBSD 中的加密轉換庫包括 Blowfish、資料加密標準 (DES)、3DES 和 Cast。

大部分加密處理都在底層進行,這樣一來,使用者就不用為了保護系統安全而必須成為加密方面的專家。OpenBSD 開發團隊很清楚,大多數管理員並不是安全方面的專家,並且不應該指望他們煞費周折地加強他們的環境。那些認為 OpenBSD 不是使用者友好的作業系統的人,大部分是受到了誤導。如果大多數管理員願意花時間使用 OpenBSD 的預設安全措施來替代任何其他的分發版,那麼他們很可能會改變其思維方式。

隨機數是確保安全性的重要組成部分。OpenBSD 核心使用中斷資訊建立不斷變化的熵池,它可以為加密函式提供種子資料,併為事務 ID 提供數值。例如,偽隨機數可用於程式 ID 和包 ID,這使得那些想要進行攻擊的人很難進行欺騙。OpenBSD 甚至在 bind(2) 系統呼叫中使用了隨機埠分配。大多數源於 UNIX 的作業系統要麼建立順序的 ID,要麼使用可預測其結果的簡單演算法。

OpenBSD 團隊仍在進一步廣泛地研究檔案系統的加密,並且在系統中所有可能的地方都對資料進行了加密。將交換分割槽分為一些小的區域,每個部分使用單獨的金鑰進行加密,以便確保不會將敏感資料洩漏到系統中不安全的部分,這是傳統的基於 UNIX 或 Linux 的系統中常見的問題。如果希望對使用者資料進行加密,那麼您可以使用 OpenBSD 中的加密檔案系統 (CFS)。CFS 工作於使用者級,透過網路檔案系統 (NFS) 與核心進行通訊。該系統允許使用者透明地訪問經過加密的目錄,所以他們可以選擇要對哪些資料進行加密,而不用受加密/解密過程的困擾。

注意:有關 OpenBSD 中加密方面的更多資訊,請參見參考資料部分。

安裝 OpenBSD

如果不能全面瞭解 OpenBSD 的優點,新使用者可能會傾向於使用熟悉的 Linux 分發版,因為他們對 BSD 複雜的安裝過程感到害怕。大多數使用者可能對這個安裝過程並不熟悉,本文將對其進行簡要的概述,以說明這個安裝過程是非常簡單的。花一點時間瞭解 OpenBSD 的安裝過程可以節省鎖定 Linux 分發版所花費的大量時間,因為 Linux 分發版不是預設安全的,這樣做通常是很實際的選擇。

有幾種不同的安裝方法,根據平臺的不同,其具體步驟也有所區別。我主要介紹透過建立您自己的一套 CD 在 i386 伺服器(例如,一臺執行 IBM 伺服器的計算機)上基於 CD-ROM 進行安裝。在官方的 FAQ 中並沒有介紹這個過程。

第 1 步. 獲得該分發版

首先,請訪問 OpenBSD.org 下載頁面(請參見參考資料部分),選擇列表中的任何映象,然後轉到 /3.9/i386/。如果您習慣於安裝 Linux 分發版,那麼從這裡開始您將發現一些不同之處。唯一的 .iso 檔案是一個 5MB 的、名為 cd39.iso 的檔案。是這個檔案嗎?不用擔心:在 OpenBSD 的安裝過程中,這個啟動 CD 只是基本核心,您可以下載相關檔案並將其燒錄到附加 CD(或從 OpenBSD.org 購買一套 CD 以幫助支援該專案)中,其餘的內容將從這些檔案中提取。請確保您下載了 cd39.iso 以及所有的 .tgz 檔案、bsd、bsd.rd 和 bsd.mp。(或者,要簡化這個過程,只需下載該目錄中的所有內容。)

第 2 步. 建立安裝媒體

從 cd39.iso 建立啟動 CD,並將其標註為 Disk 1,如清單 1 所示。使用 /3.9/i386/ 目錄中所有其他的檔案建立一張常規的 CD,並將其標註為 Disk 2,如清單 2 所示。其他的可選方法包括購買一套 CD、執行網路安裝或構建自定義 .iso 檔案,但我發現這種兩張 CD 的方法最簡單。


清單 1. 使用 cd39.iso 建立啟動 CD

cd39.iso 02-Mar-2006 03:10 4.6M




清單 2. 將下列檔案放入到 Disk 2 上名為 /3.9/i386/ 的目錄中

base39.tgz 02-Mar-2006 03:10 38.6M
bsd 02-Mar-2006 03:10 5.2M
bsd.mp 02-Mar-2006 03:10 5.2M
bsd.rd 02-Mar-2006 03:10 4.5M
comp39.tgz 02-Mar-2006 03:10 71.8M
etc39.tgz 02-Mar-2006 03:10 1.1M
game39.tgz 02-Mar-2006 03:10 2.5M
man39.tgz 02-Mar-2006 03:10 7.1M
misc39.tgz 02-Mar-2006 03:10 2.2M
xbase39.tgz 10-Mar-2006 12:04 10.1M
xetc39.tgz 10-Mar-2006 12:04 88k
xfont39.tgz 10-Mar-2006 12:04 31.7M
xserv39.tgz 10-Mar-2006 12:04 19.0M
xshare39.tgz 10-Mar-2006 12:04 2.0M





第 3 步. 開始進行安裝

在建立了這些安裝 CD 之後,從 Disk 1 啟動新伺服器。命令提示符將指導您完成相應的安裝過程。您可以在 OpenBSD FAQ(請參見參考資料部分)的第 4 部分中找到詳細的說明。

其中最複雜的部分是設定磁碟 部分,但透過選擇將所有的磁碟用於 OpenBSD(如果您不需要保留任何其他的分割槽),您可以跳過其中大量的資訊。無論您的分割槽決定如何,請確保按照建立磁碟標籤 部分中的說明一步一步地進行安裝,如果需要,您只需單獨建立更大的 /usr 和 /home 分割槽。請注意 OpenBSD 中的兩層 分割槽系統。第 1 步設定了傳統的 fdisk 可視分割槽,而第 2 步磁碟標籤設定了 OpenBSD 的子分割槽。

除此之外,唯一需要進行調整的地方(對於使用兩張 CD 安裝套件的方法)是在下面的步驟中切換 CD:

Let's install the sets!
Location of sets? (cd disk ftp http or 'done') [cd]

從 Disk 1 切換到 Disk 2(包含 /3.9/i386/ 中所有檔案的 CD)。

第 4 步. 開始使用該系統!

在對所有的內容進行了設定之後,您就可以開始使用該系統了。

聽起來很不錯,現在我應該如何使用它呢?

與瞭解如何確保系統安全相比(它已經具有了許多合理的預設設定),在您作為一個新的 OpenBSD 使用者開始管理您的系統之前,可能希望弄清楚一些相關的步驟。

第一點,在預設情況下,wheel 組中不包含任何使用者,這意味著嘗試使用 su 命令將會失敗。使用 adduser 命令從命令列建立新的使用者,該命令將引導您透過簡單的提問和回答過程來設定預設值(一次性的過程),並建立您的第一個使用者。

比方說,您建立了一個名為 bsdadmin 的使用者。如果將 bsdadmin 作為主要的管理帳戶,那麼您需要能夠使用 su 命令快速地訪問 root 帳戶。要完成該任務,以 root 帳戶登入,然後編輯 /etc/group 檔案,以便在 wheel 組中包含 bsdadmin。只需將 bsdadmin 追加到第一行(這一行的內容為 wheel:*:0:root)。

第二點,檢查 /etc/ 目錄中系統的預設設定。在這裡進行小心地處理,因為出於某種原因,在預設情況下關閉了大多數服務。OpenBSD 使用 rc.conf 來啟動大多數的啟動守護程式。您將看到在預設情況下關閉了一些服務,如 httpd 和 nfs,甚至關閉了 PF。作為示例,您可以透過在 /etc/rc.conf 中新增 httpd=YES 這行程式碼,以便開啟 Apache (httpd)。

儘管 OpenBSD 沒有提供基於圖形的工具以幫助使用者進行系統管理,但 OpenBSD 開發人員非常關注於為該作業系統中的每個組成部分提供大量精確的 man 頁面。當您遇到疑問或需要了解某個新工具時,我建議您隨時使用可靠的 man 命令。

我還能用它完成其他哪些任務呢?

OpenBSD 預先打包了一組第三方元件,其目的同樣是關注於安全性和穩定性,而不是用來完成各種各樣的日常工作。下面是 OpenBSD Version 3.9 中包含的包的預設列表:

OpenSSH Version 4.3
X.org Version 6.9.0(i386 分發版中包含了 V3.3 XFree86 伺服器)
GCC Versions 2.95.3 和 3.3.5(預設情況下啟用了 Propolice 棧保護技術)
Perl Version 5.8.6(包含來自 OpenBSD 團隊的修補程式和改程式序)
Apache Version 1.3.29 Web 伺服器(包括 mod_ssl Version 2.8.16 和動態共享物件 (DSO) 支援)
OpenSSL Version 0.9.7g(包含來自 OpenBSD 團隊的修補程式和改程式序)
Groff Version 1.15
Sendmail Version 8.13.4(包含 libmilter)
BIND Version 9.3.1(包含對 chroot 操作和其他安全相關問題的改進)
Lynx Version 2.8.5rel.4(新增了對安全套接字層 (HTTPS) 的 HTTP 支援,幷包含來自 OpenBSD 團隊的修補程式)
Sudo Version 1.6.8p9
Ncurses Version 5.2
KAME IPv6
Heimdal Version 0.7(包含修補程式)
Arla Version 0.35.7
gdb Version 6.3
您還可以使用一些附加的第三方包,使用 OpenBSD 的 pkg_add 應用程式可以很容易地對其進行安裝。您可以在 OpenBSD 映象的 /3.9/packages/i386/ 目錄中找到完整的列表。pkg_add 應用程式接受包的名稱作為輸入,自動地確定依賴關係,並安裝所需的全部包。

儘管上面列出的這些包是專門為 OpenBSD 進行移植的,但該平臺的另一條原則是二進位制相容性。OpenBSD 支援透過二進位制模擬的方式來執行大多數為 Linux、Solaris、HP-UX 和其他格式的 BSD 編譯的軟體。這個功能在預設情況下是關閉的。要開啟該功能,只需在 /etc/sysctl.conf 的下面一行中刪除前面的註釋 (#) 字元,然後重新啟動您的系統:

#kern.emul.linux=1
# enable running Linux binaries

透過這種方法,您可以執行簡單的、靜態連結的 Linux 應用程式。要執行更多型別的軟體,還需要按照前面所描述的,使用 pkg_add 安裝 Redhat/base 包。

總結

OpenBSD 已經成為世界上最安全的 UNIX 派生系統,並且幾乎實現了所有相關的內容。其中的一些設計原則,如程式碼稽核、加密處理的廣泛使用以及仔細的配置選擇,它們組合在一起可以確保實現 OpenBSD 的預設安全 的思想。儘管 OpenBSD 安裝一般用於安全伺服器和防火牆,但 OpenBSD 廣泛的硬體和軟體支援使得該作業系統適用於各種各樣的目的。UNIX 和 Linux 專家都會發現對 OpenBSD 中的許多部分非常熟悉,並且他們很可能會重視其中一些有意偏離的領域。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-959397/,如需轉載,請註明出處,否則將追究法律責任。

相關文章