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 (页面存档备份,存于互联网档案馆)