OpenBSD

OpenBSD 是一個類 Unix 計算機作業系統，是加州大學伯克利分校所開發的 Unix 衍生系統伯克利軟體套件（BSD）的一個後繼者。它是在 1995 年尾由荷裔加拿大籍專案領導者西奧・德・若特從 NetBSD 分支而出。除了作業系統，OpenBSD 專案也為旗下的眾多子系統編寫了可移植版本，其中最值得注意的是 PF 防火牆、OpenSSH 和 OpenNTPD，作為軟體包，它們在其他作業系統中隨處可見。

該計劃以其對開放原始碼的堅持、高質量的文件、寬鬆的軟體許可證和專注於系統安全及程式碼質量而聞名。該專案的開發人員遍佈世界各地，並由德・若特在加拿大阿爾伯塔省卡爾加里的家中所協調。它的標誌和吉祥物是一隻河豚，名為普菲（Puffy）。

OpenBSD 包含了一些在其他作業系統缺少或是列為選擇性的安全特性，至今開發者仍然保有審計原始碼以發現程式錯誤和安全問題的傳統。該專案對軟體許可證有嚴格限制，並傾向於使用開源的 BSD 許可證或其變種 —— 過去還曾對許可證進行了全面的審計，並移除或替換掉以難以接受的許可證釋出的程式碼。

與大多數基於 BSD 的作業系統一樣，OpenBSD 的核心和使用者空間程式，如 shell 和 cat 及 ps 之類的通用工具，都在同一個原始碼庫共同開發。第三方軟體可從 Ports 中編譯，若架構受支援，亦可直接從映象源安裝專案組編譯的二進位制軟體包。

OpenBSD 專案在歷史上有過 20 多種可運行於不同硬體平臺的移植版，現今其中的一部分平臺，諸如 SGI, Sharp Zaurus，32 位的 Sun SPARC，HP PA-RISC, DECstation 以及 VAX 等由於裝置逐漸停產及開發人員興趣減退之故已不再被維護。當前仍在被活躍維護的平臺包括 DEC Alpha、英特爾 i386、x86-64，riscv64, ARM，ARM64, SPARC64, Loongson 2F 等。

OpenBSD 基金會曾被接納為 2014 年 Google 程式設計之夏的指導組織。

應用

OpenBSD 的安全增強功能，內建的加密功能和 pf 包過濾器使它在安全領域應用廣泛，例如作為防火牆、入侵檢測系統和虛擬專用網閘道器。

幾個廠家的專有系統都基於 OpenBSD 開發，包括 Armorlogic 的裝置（Profense 網路應用防火牆）、Calyptix Security、GeNUA mbH、RTMX Inc 和.vantronix GmbH。較新版本的微軟 Services for UNIX 可擴充套件 Windows 作業系統的類 Unix 功能，其中由 Softway 系統公司開發的 Interix 互動套件使用了許多 OpenBSD 的程式碼，該公司於 1999 年被微軟收購。Windows 的安全類產品 Core Force 則基於 OpenBSD 的 PF 防火牆。

OpenBSD 自帶 X 視窗系統，適合於桌面使用。許多流行的桌面工具包可供選擇，包括桌面環境如 Lumina 和 GNOME、KDE 及 Xfce，網路瀏覽器如 Konqueror、Firefox 及 Chromium，和多媒體程式 MPlayer、VLC 多媒體播放器及 xine。該計劃奉行極簡視窗管理理念，其在主要發行版中為 cwm 堆疊式視窗管理器提供了支援。

開源軟體諮詢公司的 “M:tier” 為許多財富 500 強公司在他們的企業環境中部署了 OpenBSD 的伺服器、桌上型電腦和防火牆。

OpenBSD 帶有全套伺服器套件，很容易配置為郵件伺服器、網路伺服器、FTP 伺服器、DNS 伺服器、路由器、防火牆或 NFS 檔案伺服器。此外軟體包系統也含有提供其他服務協議的軟體，如 SMB（Samba）。

OpenBSD 元件計劃

儘管團隊規模小，及 OpenBSD 使用率偏低，該計劃已成功地將基本系統的許多元件分拆，單獨成為有廣泛用途的可移植版本，其中包括：

OpenBGPD，自由的邊界閘道器協議第 4 版（BGP-4）實現
OpenOSPFD，自由的開放式最短路徑優先路由協議實現
OpenNTPD，ntp.org 的網路時間協議守護程序的簡單替代
，自由的簡單郵件傳輸協議（SMTP）守護程序，支援 IPv4/IPv6、PAM，Maildir 和虛擬域
OpenSSH，自由的 Secure Shell 協議實現
，自由的因特網金鑰交換協議實現 (僅支援 ikev2)
（CARP），自由的思科專利 HSRP/ VRRP 伺服器冗餘協議替代
PF (防火牆)，IPv4/IPv6 雙協議有狀態防火牆，支援 NAT、PAT、QoS、流量整形
，PF 防火牆的防火牆狀態同步協議，支援透過 CARP 提供高可靠性
，支援灰名單的垃圾郵件過濾器，設計與 PF 防火牆協同工作
tmux，自由、安全、可維護的 GNU Screen 終端複用器替代
，緊湊的音訊和 MIDI 框架
，定製的 X.Org 編譯基礎
cwm，堆疊式視窗管理器
doas，sudo 指令的替代品，使使用者可以以其他身份執行命令
LibreSSL，自由的傳輸層安全性協定實作，2014 年心臟出血漏洞被發現後自 OpenSSL 分支而出，旨在改進其程式碼質量從而提高安全性

OpenBSD 的一些元件已被其他 BSD 專案納入其基本系統中，並且上述所有軟體都可在其它類 Unix 系統中作為軟體包獲得。一些元件甚至被移植到了 Microsoft Windows 上。

基本系統中的第三方元件

LLVM/Clang 13.0.0，帶補丁
X.org，帶計劃自己的補丁的 X 視窗環境。用 x*.tgz 安裝檔案集安裝
GCC 4.2.1 或 3.3.6（取決於平臺，帶補丁），GNU C 編譯器。作為 comp*.tgz 檔案集的一部分安裝
Perl，帶 OpenBSD 團隊的補丁和修改
NSD，權威 DNS 伺服器
Ncurses
Binutils，帶補丁
gdb，帶補丁
Awk
Expat 2.5.0

開發和釋出流程

專案採用連續開發模式，和開放、分層的團隊管理。只要有合適的技術，任何人都有可能被擇優授予提交權利，其中德・若特擔任協調員。團隊每年釋出兩個官方版本，版本號每次遞增 0.1，且為每個版本提供十二個月的支援。快照（snapshot）版的更新非常頻繁。受支援版本的維護補丁可以手動應用到系統上，或定期以 CVS 倉庫的補丁分支來更新系統。

另外，如果系統管理員希望儘快使用新新增的功能，則可以選擇升級到快照版，再用 CVS 倉庫的 “當前” 分支對系統更新。

專案強烈建議所有人使用由專案維護的標準通用 OpenBSD 核心，同時定製的核心不受專案的支援，因為 “企圖透過自定義或‘最佳化’核心來解決問題，反而會產生更多的問題。“

對於主系統外的第三方軟體，OpenBSD 專案組維護了名為 Ports 的 CVS 倉庫，其中包括了用於在 OpenBSD 上編譯第三方軟體的 Makefile 指令和針對 OpenBSD 的補丁。Ports 倉庫的維護工作由維護者（又名 porter）個人承擔。包的 porter 負責更新軟體的當前分支，同時也要修復錯誤及為受支援的版本提供維護補丁。因為專案缺乏人手，ports 不能像主系統那樣得到不間斷的嚴格審計。

每種架構的二進位制包由 ports 樹集中編譯。當前版本、受支援版本、快照版本都採用這種方式。專案建議系統管理員使用包管理器，而不是從 ports 樹中編譯軟體，除非需要執行自己修改過的原始碼。

新版本釋出的同時也會發布一首歌。

歷史和知名度

中與他人性格不合。

1995 年 10 月，德・若特從 NetBSD 1.0 復刻了一個新專案，創立 OpenBSD。初始版本 OpenBSD 1.2 於 1996 年 7 月釋出，緊接著同年十月釋出了 OpenBSD 2.0。從那時起，該計劃一直遵循每半年釋出新版本的進度，並且為每個版本提供一年的維護和支援。

2007 年 7 月 25 日，OpenBSD 開發者鮑勃・貝克宣佈成立 OpenBSD 基金會，它是一個加拿大非營利組織，目的是 “當有個人和組織想要支援 OpenBSD 時，可以有一個法律實體作為聯絡點來處理相關事務”。

很難確定究竟 OpenBSD 的使用有多廣泛：它的開發者既不公佈、也不收集使用情況的統計資訊，且少有其他的資料來源。2005 年 9 月，新成立的 BSD 認證小組進行了一項調查，其中顯示 32.8％的 BSD 使用者（4330 位受訪者中的 1420 位）使用 OpenBSD，佔有率為四大 BSD 變種的第二位，次於 FreeBSD 的 77％，優於 NetBSD 的 16.3％。

開放原始碼和開放文件

OpenBSD 建立之初，西奧・德・若特認為任何人在任何時間都應該可以方便地獲得原始碼，因此在查克・克拉納的協助下，他建立了一個公共、匿名的 CVS 伺服器。 這是同類軟體開發界的頭一個：當時的傳統是，只有一小隊開發人員才有機會檢視專案的原始碼庫。查克和德・若特認為，這種做法 “違背了開源的哲學”，對於貢獻者也不方便。德・若特的決定使得使用者可以 “更有作為”，堅定了計劃開放和公開訪問原始碼的信念。

OpenBSD 的開發人員不容許原始碼樹中包含閉源的二進位制驅動，不願簽署保密協議。因為在 OpenBSD 3.7 釋出前的截止時間內沒有得到說明文件，對 Adaptec AAC RAID 控制器的支援被從標準 OpenBSD 核心中移除了出去。

OpenBSD 對開放的政策延伸到了硬體文件：2006 年 12 月的幻燈片顯示，德・若特解釋道，如果沒有它 “開發人員在編寫驅動程式就會經常犯錯誤”，並指出 “像天哪，這能行的盲目開發很難成功，有的開發者乾脆就此放棄”。他接著說，OpenBSD 不能接受廠商的二進位制驅動，“不能相信執行在我們核心中的廠商二進位制檔案”，並說 “當出現問題時…… 根本沒辦法修復他們”。

許可

OpenBSD 計劃的目標是 “保持原先伯克利 Unix 的版權精神”，即 “相對無擔保的 Unix 原始碼”。其中一個有名的例子是 OpenBSD 都會盡量使用 ISC 許可證。為此，對於新寫的程式碼，首選網際網路系統協會（ISC）許可證，其為 BSD 許可證的一種簡化版本，但去除了根據伯爾尼公約而不必要的語句，但 MIT 或 BSD 許可證也可接受。與之相比，廣泛使用的 GNU 通用公共許可證被認為條款過於嚴格。

2001 年 6 月，因達倫・裡德對 IPFilter 的修改引起了開發者的擔憂，OpenBSD 展開了對 ports 和原始碼樹的系統許可證審計。在整個系統中發現了有一百多個檔案，其中的程式碼沒有許可證、許可含糊不清，或是違反了許可。為確保許可證都能被嚴格遵守，開發者聯絡了所有與之相關的版權持有人：一些程式碼片段被刪除，許多程式碼被替換，其他的如多播路由工具 mrinfo 和 map-mbone，原先施樂公司只允許研究性的使用目的，被重新授權，以使 OpenBSD 可以繼續使用它們；審計過程中還刪除了所有丹尼爾伯・恩斯坦所寫的軟體。當時，伯恩斯坦要求在再發布他的程式碼的所有修改版本前都須經過他的批准，而 OpenBSD 的開發者都不願意花時間和精力這麼做。刪除這些軟體引發了與伯恩斯坦的衝突，後者認為這種行為完全是多餘。他舉例說，網景網頁瀏覽器的許可證更加不自由，並指責偽善的 OpenBSD 的開發者保留了網景瀏覽器，同時卻刪除了他的軟體。OpenBSD 計劃的觀點是，雖然網景瀏覽器不開源，但其許可證的條件卻更易遵守。他們聲稱伯恩斯坦對衍生品的控制慾會浪費大量的額外精力，而符合他要求的最合適方式就是刪除。

出於對寬鬆許可證的重視，OpenBSD 團隊會選擇是從頭開發許可證更寬鬆的軟體。例如，早年間 OpenBSD 團隊由於不滿 IPFilter 防火牆所用之許可證，而獨立開發了 PF。現在這個首次出現在 OpenBSD 3.0 上的防火牆已被 DragonFly BSD、NetBSD 和 FreeBSD 使用。其他類似的案例包括 OpenBGPD 路由守護程序和 OpenNTPD 時間服務守護程序。

募資

雖然作業系統及其可移植的元件廣泛應用於商業產品，德・若特卻表示，商業公司幾乎沒有給予它們任何資金支援：“傳統上，我們的資金全都來自於使用者的捐贈和使用者購買的 CD（其他產品並不賺錢），顯然，這點錢並不多。”

本世紀初，該計劃得到了 DARPA 為期兩年的資助，使他們 “僱了 5 名完全的全職工，花了 3 萬美元購買硬體，並舉辦了 3 場比賽。”

德・若特表示了對資金來源不平衡的擔心：“我認為，捐款首先應來源於是廠商，其次是企業使用者，再次是個人使用者。但事實幾乎完全相反，只有非常少的人捐了 15 至 1 美元。對於這些人，感謝你們！”

2014 年 1 月 14 日，鮑勃・貝克釋出了一個公告，請求人們捐款以支付電費。貝克說，如果沒有持續的資金來源，那麼 OpenBSD 就不得不關閉。計劃很快就收到了米爾恰・波佩斯庫價值兩萬美元的比特幣捐款，他是羅馬尼亞的 MPEx 比特幣交易所的建立者。 該專案希望募集到 150000 美元以支付賬單，並解除短期的資金顧慮。

安全與程式碼審計

在 OpenBSD 創立後不久，當地的一家軟體安全公司 Secure Networks, Inc.（簡稱 SNI）與西奧・德・若特取得聯絡了。他們正在開發一個 “網路安全審計工具” 名為 Ballista（在被網路聯盟收購後改名為 Cybercop Scanner SNI），目的是尋找並利用可能存在的軟體安全漏洞。這與若特自己的興趣愛好不謀而合，這樣的強強聯手使得 OpenBSD2.3 計劃進展飛速，同時研究重點放在了系統安全上。

OpenBSD 的特點是極度注重系統安全。這包含了附加的 API，例如 strlcat 和 strlcpy 函式；工具鏈的選擇，如靜態範圍檢查器；用來防止無效訪問的記憶體保護技術，如 ProPolice 和 W^X（W xor X）分頁保護特性；以及密碼和隨機數生成技術。

為了減少漏洞和錯誤配置所導致允許許可權提升的風險，在編寫新程式和改寫原有程式時會注意特權分離、許可權撤銷和使用 chroot。受到最小許可權原則的啟發，OpenBSD 率先開發了許可權分離技術，它將程式分離成兩個或者多個部分，其中一個執行需要特權的操作，其他大部分的程式碼則執行那些無須特權的。許可權撤銷與它類似，其為在程式結束需要許可權的操作後就將許可權撤銷。chroot 包括將應用程式對檔案系統的訪問限制在某一部分，禁止其訪問存有私人或者系統檔案的區域。開發者將這些特性應用到了通用軟體的 OpenBSD 版中，包括 tcpdump 和 Apache 網頁伺服器。

OpenBSD 開發者建立了並維護著一個 Telnet 的安全型替代品 OpenSSH。OpenSSH 基於原有的 SSH 套件，並由 OpenBSD 團隊進一步開發。它首次出現於 OpenBSD 2.6 中，現在許多作業系統都採用了 OpenSSH 這個最流行的 SSH 實現。

專案有對問題程式碼的持續審計的政策，開發者馬克・埃斯皮將其描述為 “永不結束的過程…… 不單單是對於某個特定問題的修復”。他接著列舉了發現問題後的幾個典型操作，包括檢查整個原始碼樹是否存在相似問題，“力圖求證是否需要修訂文件”，以及研究是否 “需要修改編譯器以提醒注意這個問題”。

9.1 調查可能的 FBI 後門

在 2010 年 10 月 11 日，格里高利・佩裡給德・若特寄了一封電子郵件，稱 FBI 早在 10 年前就給了一些 OpenBSD 前開發者一筆錢，讓他們在 OpenBSD 加密框架中加入自己的後門。12 月 14 日，德・若特透過 openbsd-tech 郵件列表將這封信公之於眾，並且建議對 IPsec 程式碼庫進行審計。事實上德・若特對後門之說抱有懷疑態度，他邀請所有的開發者獨立複審相關程式碼。之後的幾周內一些程式問題得到了修復，但並未發現任何存在後門的證據。

9.2 標語

OpenBSD 網站一直都在強調預設安裝的安全記錄。直到 2002 年 6 月前，OpenBSD 的網站上都如此宣告：

2002 年 6 月，OpenSSH 中發現了一個遠端漏洞，可使遠端攻擊者獲取 OpenBSD（和當時其他執行著 OpenSSH 的系統）的 root 許可權。當然這個漏洞被迅速地修復了。與此同時網站上的宣告改成：

2007 年，OpenBSD 又被發現了一個與網路有關的遠端漏洞，同樣也被迅速修復。因此網站上的宣告又改成：

此標語沿用至今。

但這個宣告也遭到了批評，因為預設安裝下幾乎沒執行幾個系統服務，因此一些評論家認為其標語應該改成 “在預設安裝下，沒有可工作的應用程式！”—— 事實上大部分使用者會開啟更多的服務，安裝更多的軟體。而專案宣告說，將預設安裝有意最小化是為了確保無經驗的使用者 “不需要在一夜之間變成安全問題專家”，這也符合其將開源以及程式碼審計實務作為安全系統重要組成的宗旨。

發行及推廣

OpenBSD 可以從多種方式自由獲取：原始碼可以從匿名 CVS 中檢出，二進位制檔案和開發快照可以透過 FTP、HTTP、rsync 下載。這些和他們的藝術品和其他獎金一道組成了該計劃為數不多的收入來源，以負擔硬體、頻寬及支付其他費用。

對於 OpenBSD 6.0 及以前的版本，預先包裝好的 CD-ROM 集只需支付一小筆費用就可在網上購得，附帶各種各樣的貼紙和版本主題曲的複製，但現在 OpenBSD 計劃已不再銷售 CD-ROM。

同其他作業系統一樣，OpenBSD 提供了易於安裝和管理程式的軟體包管理系統，但它並不屬於基本作業系統的一部分。軟體包工具可以用軟體包來提取、管理和移除二進位制檔案。在 OpenBSD 上，軟體包的原始碼儲存於 port 系統中，其為一系列的 Makefile 檔案和編譯這個包所需的其他編譯基礎。OpenBSD 中 port 和基礎作業系統是一起開發和釋出的：這意味著和 4.6 一起釋出的 port 和軟體包不適合用於 4.5，反之亦然。

OpenBSD 最初採用 Phil Foglio 所繪的 BSD 小惡魔作為他們的吉祥物守護程序，後者後來由約翰・拉塞特修改，馬歇爾・柯克・麥庫西克持有版權。在後續版本中吉祥物有過更改，最終選定了 Puffy，他們稱之為一條河豚。從那時起 Puffy 就出現在各種 OpenBSD 宣傳材料中，在釋出歌曲和藝術品中也能看到。早期 OpenBSD 版本的宣傳資料並沒有一個統一的主題或設計，但後來每個版本的 CD-ROM、釋出歌曲、海報和 T 恤衫都有自己的單一風格和主題，有時其是由 Plaid Tongued Devils 的 Ty Semaka 所設計。這些都是倡導使用 OpenBSD 的一部分。每個版本會從道德或政治的角度闡述專案之所以重要的一個原因，通常是以戲仿的方式。

版本歷史

首個 OpenBSD 官方版（OpenBSD 2.0）於 1996 年 10 月釋出，現已發展到 2024 年 4 月 5 日釋出的 OpenBSD 7.5。