OpenBSD

OpenBSD是一個類Unix計算機作業系統，是加州大學伯克利分校所開發的Unix衍生系統伯克利軟體套件的一個後繼者。它是在1995年尾由荷裔加拿大籍專案領導者西奧·德·若特從NetBSD分支而出。除了作業系統，OpenBSD專案也為旗下的眾多子系統編寫了可移植版本，其中最值得注意的是PF防火牆、OpenSSH和OpenNTPD，作為軟體包，它們在其他作業系統中隨處可見。該計劃以其對開放原始碼的堅持、高質量的文件、寬鬆的軟體許可證和專注於系統安全及程式碼質量而聞名。該專案的開發人員遍佈世界各地，並由德·若特在加拿大阿爾伯塔省卡爾加里的家中所協調。它的標誌和吉祥物是一隻河豚，名為普菲。OpenBSD包含了一些在其他作業系統缺少或是列為選擇性的安全特性，至今開發者仍然保有審計原始碼以發現程式錯誤和安全問題的傳統。該專案對軟體許可證有嚴格限制，並傾向於使用開源的BSD許可證或其變種——過去還曾對許可證進行了全面的審計，並移除或替換掉以難以接受的許可證釋出的程式碼。與大多數基於BSD的作業系統一樣，OpenBSD的核心和使用者空間程式，如shell和cat及ps之類的通用工具，都在同一個原始碼庫共同開發。第三方軟體可從Ports中編譯，若架構受支援，亦可直接從映象源安裝專案組編譯的二進位制軟體包。OpenBSD計劃維護著20種不同硬體平臺的移植版，包括DEC Alpha、英特爾i386、惠普PA-RISC、x86-64及摩托羅拉 68000處理器、蘋果PowerPC、Sun SPARC和SPARC64計算機和Sharp Zaurus。OpenBSD基金會被接納為2014年Google程式設計之夏的指導組織。應用.OpenBSD的安全增強功能，內建的加密功能和pf包過濾器使它在安全領域應用廣泛，例如作為防火牆、入侵檢測系統和虛擬專用網閘道器。幾個廠家的專有系統都基於OpenBSD開發，包括Armorlogic的裝置、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。OpenBSD元件計劃.儘管團隊規模小，及OpenBSD使用率偏低，該計劃已成功地將基本系統的許多元件分拆，單獨成為有廣泛用途的可移植版本，其中包括：OpenBSD 的一些元件已被其他 BSD 專案納入其基本系統中，並且上述所有軟體都可在其它類Unix系統中作為軟體包獲得。一些元件甚至被移植到了 Microsoft Windows 上。開發和釋出流程.專案採用連續開發模式，和開放、分層的團隊管理。只要有合適的技術，任何人都有可能被擇優授予提交權利，其中德·若特擔任協調員。團隊每年釋出兩個官方版本，版本號每次遞增0.1，且為每個版本提供十二個月的支援。快照版的更新非常頻繁。受支援版本的維護補丁可以手動應用到系統上，或定期以CVS倉庫的補丁分支來更新系統。另外，如果系統管理員希望儘快使用新新增的功能，則可以選擇升級到快照版，再用CVS倉庫的“當前”分支對系統更新。專案強烈建議所有人使用由專案維護的標準通用OpenBSD核心，同時定製的核心不受專案的支援，因為“企圖透過自定義或‘最佳化’核心來解決問題，反而會產生更多的問題。“對於主系統外的第三方軟體，OpenBSD 專案組維護了名為 Ports 的 CVS 倉庫，其中包括了用於在 OpenBSD 上編譯第三方軟體的 Makefile 指令和針對 OpenBSD 的補丁。Ports 倉庫的維護工作由維護者個人承擔。包的porter負責更新軟體的當前分支，同時也要修復錯誤及為受支援的版本提供維護補丁。因為專案缺乏人手，ports不能像主系統那樣得到不間斷的嚴格審計。每種架構的二進位制包由ports樹集中編譯。當前版本、受支援版本、快照版本都採用這種方式。專案建議系統管理員使用包管理器，而不是從ports樹中編譯軟體，除非需要執行自己修改過的原始碼。新版本釋出的同時也會發布一首歌。歷史和知名度.1994年12月，NetBSD聯合創始人西奧·德·若特被要求從NetBSD高階開發人員和核心團隊成員的位置上辭職。箇中原因並不完全清楚，但據傳這是由於他在NetBSD專案和其郵件列表中與他人性格不合。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使用者使用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許可證。為此，對於新寫的程式碼，首選網際網路系統協會許可證，其為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.，目的是尋找並利用可能存在的軟體安全漏洞。這與若特自己的興趣愛好不謀而合，這樣的強強聯手使得OpenBSD2.3計劃進展飛速，同時研究重點放在了系統安全上。OpenBSD的特點是極度注重系統安全。這包含了附加的API，例如"strlcat"和"strlcpy"函式；工具鏈的選擇，如靜態範圍檢查器；用來防止無效訪問的記憶體保護技術，如ProPolice和W^X分頁保護特性；以及密碼和隨機數生成技術。為了減少漏洞和錯誤配置所導致允許許可權提升的風險，在編寫新程式和改寫原有程式時會注意特權分離、許可權撤銷和使用chroot。受到最小許可權原則的啟發，OpenBSD率先開發了許可權分離技術，它將程式分離成兩個或者多個部分，其中一個執行需要特權的操作，其他大部分的程式碼則執行那些無須特權的。許可權撤銷與它類似，其為在程式結束需要許可權的操作後就將許可權撤銷。chroot包括將應用程式對檔案系統的訪問限制在某一部分，禁止其訪問存有私人或者系統檔案的區域。開發者將這些特性應用到了通用軟體的OpenBSD版中，包括tcpdump和Apache網頁伺服器。OpenBSD開發者建立了並維護著一個Telnet的安全型替代品OpenSSH。OpenSSH基於原有的SSH套件，並由OpenBSD團隊進一步開發。它首次出現於OpenBSD 2.6中，現在許多作業系統都採用了OpenSSH這個最流行的SSH實現。專案有對問題程式碼的持續審計的政策，開發者馬克·埃斯皮將其描述為“永不結束的過程……不單單是對於某個特定問題的修復”。他接著列舉了發現問題後的幾個典型操作，包括檢查整個原始碼樹是否存在相似問題，“[力圖]求證是否需要修訂文件”，以及研究是否“需要修改編譯器以提醒注意這個問題”。調查可能的FBI後門.在2010年10月11日，格里高利·佩裡給德·若特寄了一封電子郵件，稱FBI早在10年前就給了一些OpenBSD前開發者一筆錢，讓他們在OpenBSD加密框架中加入自己的後門。12月14日，德·若特透過openbsd-tech郵件列表將這封信公之於眾，並且建議對IPsec程式碼庫進行審計。事實上德·若特對後門之說抱有懷疑態度，他邀請所有的開發者獨立複審相關程式碼。之後的幾周內一些程式問題得到了修復，但並未發現任何存在後門的證據。標語.OpenBSD網站一直都在強調預設安裝的安全記錄。直到2002年6月前，OpenBSD的網站上都如此宣告：2002年6月，OpenSSH中發現了一個遠端漏洞，可使遠端攻擊者獲取OpenBSD的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官方版於1996年10月釋出，現已發展到2023年4月10日釋出的OpenBSD 7.3。