世界を動かす技術を、日本語で。

PFの書, 第4版

概要

  • OpenBSD のパケットフィルタ「 PF」の最新ガイドブック紹介
  • IPv6対応 やトラフィックシェーピング、NAT、無線LAN、冗長化など幅広い内容
  • 実践的なルールセット作成 や可視化、ログ管理方法を網羅
  • OpenBSD 7.x、FreeBSD 14.x、NetBSD 10.x 対応
  • 著者 Peter N. M. Hansteen の略歴と関連リソース案内

OpenBSD Firewall「PF」ガイド概要

  • PF(Packet Filter) は、OpenBSDおよびFreeBSDのネットワーク管理に不可欠なファイアウォール
  • 現代的なネットワーク要件 (高帯域・セキュリティ強化)に対応した管理者必須スキル
  • 第4版では IPv6やデュアルスタック構成、最新のトラフィックシェーピング、NAT、リダイレクト、無線LAN、スパム対策、冗長化、ログ管理などを解説
  • PFのルールセット作成、NAT越え、DMZやブリッジ、広域ネットワーク対応
  • 無線LANの設定、authpfによるアクセス制限
  • CARPやrelaydでの冗長化、リダイレクトによるサービス可用性向上
  • 攻撃者・スパマー対策の自動防御、適応型ファイアウォール構築
  • 最新トラフィックシェーピング (OpenBSD)、ALTQ・Dummynet(FreeBSD)の活用
  • NetFlow等によるトラフィック監視・可視化
  • OpenBSD 7.x、FreeBSD 14.x、NetBSD 10.x に対応

本書で学べる主な内容

  • IPv4/IPv6両対応 のルールセット作成ノウハウ
  • NATやDMZ、ブリッジ、広域ネットワーク での応用例
  • 無線LANのアクセスポイント構築 とauthpfによる制御
  • 冗長化構成 (CARP、relayd)、リダイレクト
  • 攻撃・スパム対策の自動化
  • トラフィックシェーピング によるネットワーク最適化
  • ログ・モニタリング・可視化 の最新手法
  • ハードウェア対応や追加リソース の紹介

著者 Peter N. M. Hansteenについて

  • Bergen(ノルウェー)拠点 のDevOpsコンサルタント・技術ライター
  • Freenix推進者 としてOpenBSD、FreeBSD関連の講演実績多数
  • ネットワーク技術に関するブログ (https://bsdly.blogspot.com/)運営
  • RFC 1149実装チーム 参加経験
  • 本書は 人気オンラインPFチュートリアル (https://home.nuug.no/~peter/pf/)の拡張版

目次(抜粋)

  • 序文、謝辞、導入
  • 第1章: 必要なネットワークの構築
  • 第2章: PF設定の基本
  • 第3章: 実践的な応用
  • 第4章: 無線ネットワークの簡単構築
  • 第5章: 大規模・複雑なネットワーク
  • 第6章: 攻撃者対策・プロアクティブ防御
  • 第7章: トラフィックシェーピング
  • 第8章: 冗長化とリソース可用性
  • 第9章: ログ・モニタリング・統計
  • 第10章: 最適なセットアップ
  • 付録: リソース、ハードウェア対応、索引

参考リソース

  • 著者ブログ: https://bsdly.blogspot.com/
  • PFチュートリアル: https://home.nuug.no/~peter/pf/
  • OpenBSD公式FreeBSD公式NetBSD公式 ドキュメント
  • ISBN-13: 9781718504707

Hackerたちの意見

No Starchに対するリスペクトがすごい!君の本は最高だね!

もっとたくさん持ってたらいいな。私は本物の紙で作った控えめな図書館を持ってるんだけど、No Starchの本は質のいい紙と素晴らしい製本で本当に嬉しい。最近のオンデマンド印刷のO'Reillyの本もいくつか持ってるけど、なんか自分で印刷した安っぽいものみたいに感じる。残念ながら高いから、選ぶのにすごく慎重にならざるを得ないんだよね。

そうそう。私のお気に入りは、複雑なシステムプロジェクトをゼロから実装するためのガイドブックだね。Nora Sandlerの「Cコンパイラを書く」とか、Sy Brandの「デバッガを作る」とか。もっとたくさん出してほしいな。

マーシャル・カーク・マックキューシック博士によると(最近のBSDカンファレンスの一つで発表されたことだけど)、No Starch Pressが「FreeBSDオペレーティングシステムの設計と実装」の第3版を今年の後半に出版するらしいよ。

NostarchやLeanpubみたいな出版社から直接電子書籍を買ってるよ。(実際、この本の古い版も持ってる。)著者が直接売ってる本もいくつかあるし、どれもDRMフリーだよ。自分を消費者/読者として尊重しない出版社や販売者は避けるようにしてる。みんなもっと良い条件を求めるべきだよ、そうしないと、購入した本を簡単に削除する独占企業ができちゃうから。

スターチは最高だね!彼らからたくさん学んだよ。

nftablesに関する同じような本があったらいいな。誰かおすすめある?No StarchにLinux Firewallの本があるのは見たけど、2008年のものでiptablesベースなんだよね。

nftablesのドキュメントサイトはすごく良いよ。https://wiki.nftables.org/wiki-nftables/index.php/Main_Page。どんな本にも頼らない方がいいね。

スティーブ・スーリングの「Linux Firewalls」にはnftablesが載ってるよ。基本を知るには良い本だね。

PF = パケットフィルタ

タイトルを読んで、一瞬Pathfinderのエディションを全部見逃したかと思ったよ。

いい本だよね。昔の版を持ってたことがあって、ファイアウォールの設定やロードバランシング、トラフィックシェーピングなんかでかなり助けられた。FreeBSDのルートキット設計に関する本も持ってたけど、すごく勉強になった。残念ながら、今はデジタル情報に頼るミニマリストな生活をしているから、全部の本を手放しちゃったんだ。これについてどう感じるべきか分からないな。

電子書籍リーダーとDRMフリーの電子図書館があるよね。

自分も同じことをしようとしたことがあって、今でもやろうかなって考えてる!OpenBSDを学び始めた頃に買った小さな山の中にこの本の古い版がどこかにあるんだ。最近は全然参照してないけど、棚にあるOpenBSDのエリアはいい感じだよ。

みんなの現代PFの生産での経験はどう?それと、聖戦を始めるつもりはないけど、現代PFとnftablesについてどう思う?自分はnftablesしか使ったことがないし(しかもかなりシンプルなシナリオでだけど)、PFの世界にも興味があったんだよね。

nftablesより遅いよ。

約400のルールを持つpf.confを管理してるけど、直感的で作業してて楽しいよ。ソースコードを編集してるみたいな感じで、最初にホスト、ネットワーク、ポートの宣言があって、次にNATと出口用のセクション、その後に各VLANのpass in/pass outルールがあるんだ。tmuxセッションでpflog0インターフェースをtailして、pass/blockを監視してるし、ルールセットを簡単に編集して再読み込みできる便利な関数を.profileに入れてるよ。function pfedit { vi /etc/pf.conf && \ pfctl -f /etc/pf.conf && \ { c=pfctl -s rules | wc -l | tr -d ' '; printf 'loaded %s rules\n' "$c"; } } これでファイルを編集用に開いて、ルールセットを再読み込み(これでバリデーションもされる)、成功したらルールの数を返してくれるんだ。

彼らのBDFLはBCブレイクが素晴らしいと思ってるみたいで、「もっと良い場所に行ける」って言ってたのを覚えてる。ルールの構文を変えてpfを何度も壊すことを許可してるから、以前の版の本は突然古くなっちゃって、無数のチュートリアルやフォーラムの投稿も同様にね。これだけはM$が正しいと思うけど、ビジネス環境ではそんなことしないよね。自宅ラボ以外でpfを使うことはないな。

何年もLinuxをゲートウェイとして使ってないから、pfとiptablesの比較しかできないけど、二つの大きな違いはルールの適用方法とログの取り方だね。pfのルールはiptablesとはちょっと逆に動く。パケットは全てのルールセットを通過して、最後にマッチしたルールが勝つ感じ。これを「quick」ディレクティブでショートカットできるけど、iptablesから来るとちょっと慣れが必要かも。pfのログはiptablesみたいにsyslogと自動で統合されないから、自分の使い方に合わせたログシステムを設定することが求められるよ。やり方はいくつかあって、プロダクション環境ではどちらにしてもやることになるけど、honelabのセットアップだと余計な心配が増えるね。pfは好きだけど、ファイアウォールに不慣れな人にはあまりおすすめしないかな。

パケットフィルターだけが必要なら問題ないけど、2026年には多くのプロダクション環境がパケットフィルターだけで済むとは思えないな。ホストファイアウォールとしてはもちろん大丈夫だと思うけど、質問はpfをネットワークファイアウォールとして使うことについてだよね。脅威の状況を考えると、通常は脅威保護が必要だよ。少なくとも、レピュテーションリストからのほぼリアルタイムの更新が必要だね。pfでそれをスクリプト化することもできるけど、あんまり楽しくないよ。実際には、プロトコルの解析や、場合によってはボックス上での復号化とペイロード分析ができることが重要だと思う。最近では単にパケットフィルタリングをするだけではあまり意味がないし、コンプライアンスが必要なプロダクション環境や本気で気にするものは、IPSやレイヤー7ファイアウォール機能の背後に置くべきだよ。pfはそれをやらないからね。これを実現するのにPalo AltoやCiscoを使う必要はないけど、パケットフィルタリングだけが必要なら良い選択肢だと思うよ。

iptablesを扱わなくて済むのは嬉しいけど、iptables -Aのクソみたいな内容が無数のチュートリアルやLLM FFNヘッドの重みの中に埋め込まれてるから、これから何十年も頭に留めておかないといけないだろうね。

自分の経験では、PFはフィルタリングやNATの考え方において商用ファイアウォールにもっと近いと思う。Linuxでは、nftablesを使っても「チェーン」の概念があって、これはipchainsの時代まで遡るんだよね。個人的には、これが特に役立つ見方だとは思えないな。PFでは、単に入出力やインターフェースに基づいてポリシーの決定ができるし。あと、プレルーティングやポストルーティングのチェーンにポリシーを適用する理由が、PFの他の場所でより簡単に達成できない限り、役に立つアプリケーションを見たことがないんだ。さらに、設定ファイルからではなく、単にポリシーを挿入したり削除したりするコマンドにはあまり好感を持っていないよ。(nftの「config」ファイルは、実際にはコマンドを順次実行するスクリプトに過ぎない。)そういうのが欲しい人の気持ちはわかるけど(プログラム的な作業が楽になるだろうし)、自分にはあまりメリットがなかったな。まあ、こういうことをやるのは久しぶりだから、細かいところは疎くなってるかもしれないけど、間違ってたら教えてほしいな(笑)。

ところで、この本はFreeBSD 14をカバーしてるけど、FreeBSD 15(12月にリリース)ではPFが大きなアップデートを受けたみたいだよ。[0] - [0] https://www.netgate.com/blog/updates-to-the-pf-packet-filter...