For the complete documentation index, see llms.txt. This page is also available as Markdown.

书评:The Book of PF: A No-Nonsense Guide to the OpenBSD Firewall

The Book of PF: A No-Nonsense Guide to the OpenBSD Firewall

  • Peter N.M. Hansteen

  • No Starch Press,2014 年第 3 版

  • ISBN 159-3275897

  • 248 页

常常有人问我,为什么我更喜欢用 FreeBSD,它相比 Linux 又有什么优势。原因之一是 FreeBSD 自带了一款现代化、高性能的防火墙,并且由专注安全开发的开发者持续维护。自 2001 年发布以来,OpenBSD 的 PF 包过滤器为系统和网络管理员提供了一套设计严谨、有状态的防火墙,其语法极为简洁,规则编写与调试都十分轻松。如果到目前为止还不明显的话——我是 PF 的铁杆粉丝,因此我对《The Book of PF:OpenBSD 防火墙实战指南》的书评可能略显偏颇。但如果你从未接触过 PF,却不幸在 Linux 上用过 iptables,你很快就能理解我偏爱的由来。

Peter N. M. Hansteen 的《The Book of PF》确实是一本“OpenBSD 防火墙实战指南”,内容涵盖从配置基础一路到构建高可用、冗余网络的全部要点。如今已是第 3 版,全书经过彻底修订,覆盖了 OpenBSD 5.6、FreeBSD 10.0 与 NetBSD 6.1 中的最新进展。本书还扩充了篇幅,深入讲解了 OpenBSD 5.5 中取代旧 ALTQ 系统的全新优先级与队列机制。

前两章面向初学者,专注于让读者快速上手 PF。本书只要求读者具备基本的 Unix 管理经验和少许 TCP/IP 网络知识,内容以教程风格呈现,通俗易懂、便于跟进。从第三章起,本书涵盖多种部署场景,从保护工作站的简单防火墙,一直到足以媲美数十万美元商业方案的高可用网络。

我格外欣赏本书的一点(这在技术书中并不多见):在简短介绍之后,Hansteen 直奔主题、毫不拖沓。你还在为必须运行 FTP 服务器而苦恼吗?这里有你需要做的。想在办公室内网主机与连接互联网的主机之间做些隔离?这里有一个可按需调整的配方。所有内容都直击要害,没有冗余,也不浪费篇幅去讲解如何在七大 Linux 发行版上编译软件——后者在当今技术书中实在太过常见。本书仅 248 页,读起来很快,但我猜你的书很快就会被翻卷——因为你需要反复阅读各章,并不断回过头来当作参考查阅。

我对 PF 格外欣赏的一点,也是 Hansteen 表现出色的地方,在于 PF 是一个很好的基础,可在此基础上借助其他软件构建简单而高效的解决方案,大幅扩展 PF 的能力。《The Book of PF》用整整一章讨论“主动防御”,给出了简单示例,演示如何搭建自适应防火墙来应对监听服务上的暴力破解攻击。如果你曾把运行 SSH 的机器直接连到互联网,相信你一定见过无数暴力破解尝试塞满日志文件的场景。现有许多方案试图解决这些问题,但大多数都需要你以 root 身份运行某个文档匮乏的 Perl 脚本,解析日志文件并添加规则来封禁违规 IP。我热爱 PF 的原因之一,是它拥有大量与之无缝集成的附加工具,能以极为优雅的方式处理这些麻烦。

也许你运营着自己的邮件服务器,每天都会看到无数试图中继垃圾邮件的机器发来的连接。应对垃圾邮件几乎和电子邮件本身一样古老,人们提出了数不清的方案,成效各异。分析邮件内容或检查发件人是否被列入黑名单,往往只能在短期内奏效,垃圾邮件发送者很快会变聪明并更换手法。你会陷入一场无休止的军备竞赛——这也正是 OpenBSD 开发者在网络层面用 PF 与 spamd 应战的原因。Hansteen 花了大量篇幅介绍各种让垃圾邮件发送者难堪的方法,甚至还能以每秒 1 字节的速度回应他们、最终再拒收邮件,从中取乐。即使你不运营邮件服务器,搭建 spamd 并看着垃圾邮件发送者因为等待 EHLO 而被困数小时,也是一件令人十分愉悦的事。

一旦把 PF 部署到生产环境,时刻关注其动态总是明智之举。视配置复杂程度而定,你可能会产生海量数据,从中筛选信息会成为一项艰巨任务。所幸作者用整整一章讨论日志、监控与统计收集。它不仅涵盖内置的分析手段,还介绍了一些可从 Ports 树安装的第三方工具,能提供额外的实时洞察与历史趋势,助你掌控网络。

撰写本书时,我相信 Hansteen 的初衷是让你在调试时手边常备一本。本书结尾部分帮助你在部署到生产环境前把配置调试到位。虽然 PF 开箱即用的默认配置已足够健全,能覆盖典型部署场景,但他仍就一些可调参数给出了实用建议,也指出另一些参数最好别动。纵览全书,Hansteen 始终提供各种建议与技巧,帮助构建普通人也能调试的网络;而最后一章则深入探讨了测试与调试规则集的进阶方法——当情况看似不如预期运转时,这些方法会派上用场。

本书主要聚焦 OpenBSD 上 PF 的功能集,但在必要时,作者也十分详尽地描述了在 FreeBSD 与 NetBSD 上使用 PF 时会遇到的不同之处。所举示例均基于现实问题——这些是你迟早要解决的难题——因此便于跟进,也为你在实际将 PF 部署到生产环境时打下了扎实基础。

Hansteen 为《The Book of PF》设定的目标是“帮助你构建所需的网络”:从少许理论起步,逐步推进到越来越复杂的配置,并配有大量示例,演示如何在一个数据包试图穿越你的网络时控制它。我相信他不仅达成了目标,而且超额完成。我强烈向所有系统或网络管理员推荐本书。本书会带你走过常见的坑,为你节省时间、避免挫败。如果你在任何平台上使用 PF,都该在书架上放一本。如果你有朋友整日与 iptables 苦战,这本书是送给他们的绝佳礼物——正好让他们见识一下自己错过了什么。

Steven Kreuzer 是 FreeBSD 开发者兼 Unix 系统管理员,对复古计算与风冷大众汽车情有独钟。他与妻子和狗住在纽约皇后区。

最后更新于