年の瀬も押し迫ってきた今回は、「PF(Packet Filter)」について。そもそもはOpen BSDで登場したパケットフィルター/ファイアウォール実装であり、OS XではLion以降のシステムに標準装備されている。高い機能と豊富な実績を有しているが目立たない存在のため、サードパーティー製GUIツールを使うなどして脚光をあてよう、という次第だ。

What's PF?

PF(Packet Filter)とは、TCP/IPのトラフィックをフィルタリングする実装系のこと。それ自体ネットワークアドレス変換処理(NAT)機能を備え、ファイアウォールとして活用できる。かつてOpenBSDでは別のファイアウォール/NAT実装を採用していたが、2001年リリースのOpenBSD 3.0からPFを標準カーネルに取り込み利用している。

PFはLionのときOS Xに導入され、Mavericksの現在も標準装備されている。CUIベースのツールのため目立たないが、設定を行えば帯域調整も可能な高機能ファイアウォール/NATとして利用できる。なお、以前からあるCUIベースのファイアウォール実装(ipfw)は、Lion以降は非推奨扱い(deprecated)となっている。

PFを利用するには、/etc/pf.confなどの設定ファイルをシステムの実情にあわせて編集する必要がある。あらかじめOS X向けの「/etc/pf.anchors/com.apple」も用意されており、管理者権限で「pfctl」コマンドを実行すれば動作するが、launchd(各種サービス/デーモンの起動管理を担うOS Xのスーパーサーバ)用の設定ファイルを自力で用意しなければならないなど、安定運用開始へのハードルはかなり高いのが実情だ。

なお、OS XにはPFとは別のファイアウォール実装がある。システム環境設定の「セキュリティとプライバシー」パネルにある、オン/オフとわずかなオプションが用意された「ファイアウォール」タブがそれだ。こちらは/usr/libexec/ApplicationFirewallディレクトリにある「socketfilterfw」により機能が提供され、アプリケーションごとにアクセスを許可するかどうか設定できる。つまり、アプリケーション単位の管理で足りるのならばシステム標準(socketfilterfw)のファイアウォールを使えばいいだろうし、通信ポートごとに通信を制限するなど高度な使い方が必要ならばPFという選択肢がある、ということだ。

OS X標準のファイアウォール機能。このように、アプリケーションまたはサービスごとにしか接続の許可/不許可を設定できなかった

Lion以降のシステムには、AirDropなどOS Xの機能に対応した設定ファイルがあらかじめ用意されているが……

PF設定の必需品「IceFloor」

そのようなPFだが、導入のハードルを一気に下げることができる。GUIベースのPF管理ツール「IceFloor」を利用し、初期設定を行えばいいのだ。日本語ローカライズはされていないが、ウィザード式の導入支援機能が用意されているので、画面の指示に沿って作業を進めれば/etc/pf.confなどの設定ファイルと格闘する必要はなくなる。しかも先日のアップデートでMavericksに対応、最新環境でも安心して利用できるようになった。

PFに初めて触れるという場合は、起動直後に表示されるHelpタブから「Configuration Wizard」を起動しよう。このウィザードを使えば、OS Xに接続してこようとする通信(inbound)、OS Xが外部へ接続しようとする通信(outbound)それぞれをAFPやSMBといったサービスごとに決定できるのだ。作業はチェックボックスをオン/オフする程度なので迷うことはないだろう。ウィザード最後の画面でPFを起動すれば、PFによるファイアウォールが有効になる。

なお、IceFloorはあくまでPFのGUIフロントエンドだ。常時起動しておく必要はなく、設定が完了次第終了してもかまわない。PFを有効にしたとき、システムブート時に起動するようPF起動用スクリプトをインストールするかとたずねられるので、Yesと答えれば設定変更の必要が生じない限りIceFloorのお世話になることもなくなる。

Helpタブにある「Configuration Wizard」を使えば、はじめてPFに触れる場合でもラクに設定できる

チェックボックスをオン/オフする程度で、サービスごとの接続を許可するかどうか設定できる

あらかじめ用意された設定(プリセット)を利用する手もある。「Presets」タブには、ほどほどのセキュアな設定が施された「default」、SSHなどパワーユーザ/デベロッパーの環境を想定した「developer's_macpro」など5種類のプリセットが用意されているので、いずれかを選び「Enable selected preset」ボタンをクリック、その後「Firewall」タブ右上にある「Start PF」ボタンをクリックすればPFが動作を開始する。

5種類用意されたプリセットを利用する方法もある。「default」でも十分強力だ

右端の「Start PF」ボタンをクリックすると、「Presets」タブで選択したプリセットが読み込まれPFが起動する