とあるお客様から「指定時間になったら定期的にパケットを取得して欲しい」と言われ、
急遽キャプチャ用PCとしてCentOS7を構築したのですが(ググりながら)、
そのときのものを備忘録として残します。
CentOS7のバージョンは以下
[smatsu@smatsu ~]$ cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
#やりたいこと
指定した時間にパケットキャプチャーを実行したい。
#手段
Wiresharkを実行するシェルスクリプトを作成して、スケジュール機能はCentoS7標準のcronを使用する。
#CentOSインストール
詳細は省略。
環境に合わせて仮想マシンを設定。
サウンドカード、フロッピー、プリンターなどは使わないのでこの時点で削除。
今回はGNOMEでインストールしています。
#Wiresharkをインストール
GUIなのでgnomeをつける。
$ sudo yum install -y wireshark-gnome
入りました。
[smatsu@smatsu ~]$ wireshark -v
wireshark 1.10.14 (Git Rev Unknown from unknown)
このままだと一般ユーザでは権限の問題でインターフェースが表示されませんので権限を与えます。
$ sudo groupadd wireshark
$ sudo usermod -aG wireshark [user]
GUIはあくまで確認用で、ここからはCLIで設定していきます。
#実行ファイルを作成
まずは作業用フォルダを作成。
$ mkdir pcap
$ cd pcap
次に実行ファイルを作成。
#!/bin/bash
/usr/sbin/tshark -i ens33 -w /home/smatsu/pcap/`date +\%Y\%m\%d`/`date +\%Y\%m\%d_\%H\%M`.pcapng -a duration:600
・tshark = コマンド版Wireshark
・gnomeをインストールすれば入っています
・ens33 = キャプチャーしたいインターフェース名
・ファイル名は日付フォルダ配下に"(日付).pcapng"で格納
・キャプチャ時間は600秒
実行権限を与えておく。
chmod +x pcap.sh
#スケジューリング設定
実行ファイルをスケジューリングするためcronを設定していく。
cronの状態を確認。
[smatsu@smatsu ~]$ systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-04-21 22:34:28 JST; 8min ago
※ここで有効化されてない場合は、有効化する。
$ systemctl start crond
crontabで実行するコマンドを編集。
$ crontab -e
0 6 * * * /usr/bin/mkdir /home/smatsu/pcap/`date +\%Y\%m\%d` # 毎朝6時に日付のフォルダを作成
0 7 * * * /home/smatsu/pcap/pcap.sh # 毎朝7時にキャプチャーファイルを実行
※ :wqで保存
cronの内容を確認。
[smatsu@smatsu pcap]$ crontab -l
0 6 * * * /usr/bin/mkdir /home/smatsu/pcap/`date +\%Y\%m\%d`
0 7 * * * /home/smatsu/pcap/pcap.sh
これで毎朝日付フォルダ配下にパケットキャプチャを保存できます。