技術を楽しもう!

IT(ネットワーク)業界を中心に、仕事や趣味等、色々な技術を記録します。

FortiGateのパケットキャプチャをGUIやCLIで取得

https://1.bp.blogspot.com/-rV_SrbPMEVM/W8mrGRh2uzI/AAAAAAABPjU/2wtou_0myos1DX8ayVzYIp5GOuUwz0FYwCLcBGAs/s180-c/computer_kurayami_man.png

物理機器(GUI

物理機器のFortiGateは、以下のように 「ネットワーク」→「パケットキャプチャ」という画面からGUIで、 パケットの取得からダウンロードまで実施することができます。 f:id:takashi-tobey:20200612090708p:plain

Wireshark等で参照できる形式(.pcap)でダウンロードできるので、そのままWiresharkで開くことができます。

VM版(CLI

VM版は「パケットキャプチャ」という項目が存在せず、GUIで取得することはできません。 f:id:takashi-tobey:20200612090731p:plain

VM版でパケットキャプチャを取得したい場合は、 以下のようなCLIを使用する必要があります。 なお、CLIを使用した手順は物理機器版でも可能です。

diag sniffer packet <interface> <'filter'> <verbose> <count> a

port1のicmpをキャプチャしたい場合は以下のような例になります。

diag sniffer packet port1 'icmp' 6 0 a

フィルタ等のオプションは下記のページが参考になります。 kb.fortinet.com

ただ、これはターミナルにパケット内容が出力されるので、目視するのは大変です。 f:id:takashi-tobey:20200612102001p:plain

Wiresharkで表示するには、以下のような手順が必要です。

1. Teraterm等のログ出力を有効にする

f:id:takashi-tobey:20200612095339p:plain

2. diagnose sniffer packet で取得開始し、取得したい通信後に「Ctrl」+「C」で終了する

※ログ出力も停止します

3. 取得したログから不要部分を削除する

取得したログの最上部と最下部に、不要な部分があるので削除して保存します。 以下のような箇所や、

diag sniffer packet any 'icmp' 6 0 a
interfaces=[any]
filters=[icmp]

以下のような箇所を削除します。

^C
29 packets received by filter
0 packets dropped by kernel

FortiGate # 
4. fgt2eth.exeを使用してpcap形式に変換する

こちらのページに、「fgt2eth.exe」があるのでダウンロードします。 f:id:takashi-tobey:20200612100808p:plain

これと、Teratermで取得したログを同じフォルダに置き、 コマンドプロンプトから以下のように実行します。

fgt2eth.exe -in <input_file_name> -out <output_file_name>

実行例は以下のようになります。

C:\Work\temp>fgt2eth.exe -in packet.log -out test.pcap
Conversion of file packet.log phase 1 (FGT verbose 3 conversion)
Output written to test.pcap.
** Skipped 5 packets captured on eth0
Conversion of file packet.log phase 2 (windows text2pcap)
Ouput file to load in Ethereal is 'test.pcap'

C:\Work\temp>

以下のようにWireshardで開くことができます。 f:id:takashi-tobey:20200612101601p:plain

FortiGateはCLIが独特ですので、興味がある方は是非下記の書籍を手に取ってみてください。