パケット フィルタのログ記録

パケット フィルタのログ記録

OS X Mavericks を実行しており、「パケット フィルター」ファイアウォールを使用しています。ただし、「pflogd」は利用できないようです。

pflog0 という名前のインターフェースを作成し、tcpdump を使用して pf がドロップしたパケットを確認できることが分かりました。ただし、ログ ファイルが必要です。

私の解決策は、launchd plist を作成し、起動時にこのインターフェイスを作成し、tcpdump を (root として) 起動して、すべてを /var/pf.log に記録することでした。これは完璧に機能します。

しかし、tcpdump がバックグラウンドでルート モードで 1 日中実行されることに少し懸念があります。そうすべきでしょうか?

ありがとう

答え1

OS X Mavericks については知りませんが、OS X Mountain でテストしました (起動時ではありません) :

ファイルを編集/etc/sudoers

パスワードを要求されないようにするには、以下を追加します。

youruser ALL=(ALL) NOPASSWD: /usr/sbin/tcpdump

tcpdump をバックグラウンドで起動し、キャプチャ ファイルにログを記録します (ここでの主なポイントは、&コマンドをバックグラウンドで実行することです)。

sudo tcpdump -i pflog0 -s 0 -B 524288 -w ~/Desktop/myfile.pcap &

tcpdump を停止するには、プロセス ID を取得して tcpdump を強制終了します。

ps -ef
sudo kill pid

キャプチャファイルを開くには:

tcpdump -s 0 -n -e -x -vvv -r ~/Desktop/myfile.pcap

答え2

tcpdump はインターフェースでリッスンするときに sudo を必要としないことがわかりました (特別なオプションはありません)。必要だと思っていましたが...

とにかく、/Library/LaunchDaemons のスクリプトでインターフェースを作成し、~/Library/LaunchAgents の別のスクリプトで tcpdump を起動して、ログを有効にするだけです。すべてうまくいきます :)

関連情報