PF防火牆
PF (Packet Filter ,常縮寫為 pf)是一個以 BSD 許可發布的,常被用於 BSD 系統的防火牆軟件。類似於其他系統中的 netfilter (iptables)、 ipfw 或 ipfilter。
原作者 | Daniel Hartmeier |
---|---|
開發者 | OpenBSD 項目組 |
首次發布 | 2001年12月1日 |
源代碼庫 | cvsweb |
編程語言 | C |
操作系統 | OpenBSD 及其他移植平台 |
類型 | 防火牆 |
許可協議 | BSD許可證 |
網站 | www |
歷史
PF 的開發始於 OpenBSD 開發人員不滿 Darren Reed 開發的 IPFilter 防火牆所用的許可證,而在 IPFilter 於 2001 年 5 月 30 日被從 OpenBSD 的 CVS 源碼樹中刪除後,PF 被設計來取代 IPFilter。它的大部分規則語法也都源自 IPFilter。[1]
PF 的最初版本由 Daniel Hartmeier 編寫, [2]並隨 OpenBSD 3.0 於 2001 年 12 月 1 日發布[3],在此後 Henning Brauer 和 Ryan McBride [4]對其進行了深度的重新設計,大部分代碼由 Henning Brauer 編寫。目前 Henning Brauer 是 PF 的主要開發者。
特徵
語法方面,PF 的過濾語法與 IPFilter 類似,但進行了一些修改以使其更清晰。
功能方面,PF 支持 SMP(對稱多處理)和 STO(狀態跟蹤選項),也集成了常見的網絡地址轉換 (NAT) 和服務質量 (QoS) 管理模塊。在擴展方面,PF 支持用於故障轉移和冗餘的 pfsync 和 CARP 、用於會話身份驗證的 authpf ,以及使配置複雜的 FTP 協議防火牆更容易的 ftp-proxy 等。
PF 的日誌記錄是眾多創新功能之一。用戶可在 pf.conf 中按規則進行配置 PF 的日誌記錄,被記錄的日誌會由 PF 通過名為 pflog 的偽網絡接口(pseudo-network interface)向應用程序提供。這是從內核態將數據提取至用戶態程序的唯一方法。記錄下的日誌既可以通過 tcpdump (該實用程序在 OpenBSD 中已專門為此目的進行了擴展) 等常見工具來監視,也可以使用 pflogd 守護程序以 tcpdump / pcap 二進制格式保存到磁盤。
其他平台上的移植版本
除了在其開發平台 OpenBSD 上運行之外,PF 還被移植到了許多其他操作系統,但功能上存在重大差異。有些移植版的歷史可以追溯到很多年前,因此與當下 OpenBSD 上擁有最多功能的最新版本差異巨大。
PF 目前被用於:
- Snow Leopard (Mac OS X 10.6) 及以上版本的 Apple macOS [6]
- 所有 iPhone 和 iPad 使用的 Apple iOS 和 iPadOS
- NetBSD 3.0 及以上版本[7]
- DragonFly BSD 1.1 及以上版本[8]
- Debian GNU/kFreeBSD
- 甲骨文Solaris [9]
- QNX 及許多搭載搭載 QNX 的黑莓智能手機型號
另見
參考
- ^ de Raadt, Theo. CVS: cvs.openbsd.org: src; Remove ipf.. 2001-05-30 [2018-08-20]. (原始內容存檔於2022-04-10).
- ^ Hartmeier, Daniel. A new stateful packet filter for OpenBSD. 2017-09-26 [2018-08-20]. (原始內容存檔於2023-03-25).
- ^ OpenBSD 3.0. 2001-12-01 [2018-08-20]. (原始內容存檔於2018-10-08).
- ^ Brauer, Henning. Henning Brauer Consulting: pf. [2018-08-20]. (原始內容存檔於2020-08-10).
- ^ FreeBSD/amd64 5.3-RELEASE Release Notes. 2004-11-03 [2018-08-20]. (原始內容存檔於2010-12-23).
- ^ xnu/xnu-1456.1.26/bsd/net/pf.c.auto.html. Apple, Inc. 2008-12-05 [2018-08-20]. (原始內容存檔於2023-07-16).
- ^ Changes and NetBSD News in 2005: 23 Dec 2005 - NetBSD 3.0 released. [2018-08-20]. (原始內容存檔於2020-01-17).
- ^ pf(4) manual page. DragonFly Kernel Interfaces Manual. 2011-01-02 [2018-08-20]. (原始內容存檔於2022-04-10).
- ^ Introduction to Packet Filter. Securing the Network in Oracle® Solaris 11.3. Oracle Corporation. March 2018 [2018-08-20]. (原始內容存檔於2022-12-22).
圖書
- Hansteen, Peter N.M. Book of PF: A No-Nonsense Guide to the OpenBSD Firewall 3. No Starch Press. October 2014: 248 [2023-09-18]. ISBN 978-1-59327-589-1. (原始內容存檔於2023-05-07).
- Jeremy C. Reed (編). The OpenBSD PF Packet Filter Book: PF for NetBSD, FreeBSD, DragonFly, and OpenBSD. Reed Media Services. August 2006 [2023-09-18]. ISBN 978-0-9790342-0-6. (原始內容存檔於2014-05-04).
- Artymiak, Jacek. Building Firewalls with OpenBSD and pf. Selbstverlag. 2003 [2023-09-18]. ISBN 978-8391665114. (原始內容存檔於2022-04-10).
外部連結
- OpenBSD內核接口(Kernel Interfaces)手冊頁 –
- OpenBSD系統管理(System Manager's)手冊頁 –
- The OpenBSD PF guide (頁面存檔備份,存於網際網路檔案館)
- Firewalling with PF (頁面存檔備份,存於網際網路檔案館): PF tutorial by Peter N. M. Hansteen
- OpenBSD/pf Firewalling For the Less Gifted (頁面存檔備份,存於網際網路檔案館)