Pocket

tcpdumpでキャプチャファイルを定期的にローテートさせる方法

  • add this entry to hatena bookmark

tcpdump でパケットキャプチャを取得する際に、パケットキャプチャファイルのサイズを10分毎など定期的に切り替えたい場合があります。

その際のオプションとポイントを記載しています。

1.パケットキャプチャ条件

下記のような条件でパケットキャプチャを取得する事とします。

  • OSはCentOS
  • sudo で tcpdumpを実行する。
  • ユーザーは「admin」というアカウント名とします。
  • パケットキャプチャを取る対象ネットワークは、192.168.0.0/24 とします。
  • パケットキャプチャファイルは10分毎に切り替える事とします。
  • パケットキャプチャファイル名は日時情報を含ませる事とします。

パケットキャプチャ時は、ファイルサイズが大きくなる傾向がある為、条件を明確に絞れる際には絞ったほうが何かと便利です。

2.tcpdumpコマンド

sudo を使う場合のtcpdumpコマンド例は下記になります。

$ sudo tcpdump -i eth0 net 192.168.0.0 mask 255.255.255.0 -Z admin -G 600 -w /home/admin/tcpdump/logs/tcpdump_%Y%m%d_%H%M%S.cap

これで、指定の場所のパケットキャプチャが出力され、10分毎に切り替わっていきます。

バックグラウンドで起動したい場合は、コマンドの最後に「&」を指定してください。コマンド終了時は、Ctrl+Cか、killコマンドでtcpdumpコマンドを落とします。

3.オプション指定のポイント

ここで「-Z」オプションで実行ユーザーを指定しないと、10分後(-G 600)に、tcpdumpコマンドが「Permission denied」で終了してしまいます。

理由は、tcpdumpをrpmでインストール時に作成される「tcpdump」アカウント(shell権限を持たないアカウント)でtcpdumpコマンドを実行しようとして、ファイル作成の権限がない為に「Permission denied」となる為です。

その対策として、「-Z」オプションで実行ユーザーを指定します。指定するアカウントは「root」でも良いのですが、せっかくsudoで実行しているので、sudo実行ユーザー(この場合はadmin)を指定しています。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

チェックサイト RSS Feed読者登録はいかがでしょうか?RSS配信中です。