文:ジュピターテクノロジー よしひろ
(2021/02/05 リリース予定~の記載を削除)
これを実現するには、nDPIプロトコルファイル(/etc/ntopng/ndpi.protos)を作成して独自のプロトコル定義(カスタムプロトコル定義)をします。
フォーマットは2種類あり、サブプロトコルとポートベースの設定方法があります。
それぞれ説明します。
フォーマットは、「host:"文字列マッチ"@サブプロトコル名」となります。
例の通りhost定義は複数連ねて設定することができます。
例の通り設定は複数連ねて設定することができます。
実際の設定例は、以下の通りです。
nDPIが取得したパケットのポート番号から、定義したプロトコルとして処理します。
実際にntopngに設定する前に動作確認をします。
以下コマンドでパケットをキャプチャします。
ポートベースで設定します。以下のファイルを作成します。
tcpかつポート9447の通信は、EKRANとして処理するといった設定となります。
最初にキャプチャしたパケットファイルをnDPIのコマンドndpiReaderに入力して、EKRANの通信を正しく認識するか確認します。
図1の背景白色行の通り、EKRANの文字が出力されました。
図1の背景白色行の通り、設定前はunknownとしてカウントされていたパケットからEKRANのパケットを抽出できました。
設定方法及び再起動は、以下の通りです。
ntopngのGUIでEKRANが表示されるか確認します。
本ブログ記事で簡単にカスタムプロトコル定義を設定できることが分かっていただけたかと思いますので、是非nDPIによるカスタムプロトコル定義を活用してみてください。
本記事で扱っているntop社のnProbe, ntopngという製品ですが、ご興味のある方は以下のリンクから弊社までお問い合わせください!
これを実現するには、nDPIプロトコルファイル(/etc/ntopng/ndpi.protos)を作成して独自のプロトコル定義(カスタムプロトコル定義)をします。
フォーマットは2種類あり、サブプロトコルとポートベースの設定方法があります。
それぞれ説明します。
サブプロトコル設定
#Subprotocols
#Format:
#host:"<value>",host:"<value>",.....@<subproto>
フォーマットは、「host:"文字列マッチ"@サブプロトコル名」となります。
例の通りhost定義は複数連ねて設定することができます。
実際の設定例は、以下の通りです。
取得したパケットのhost値(IPアドレス)が"googlesyndacation.com"に名前解決できるパケットはプロトコルGoolgeとしてnDPIが処理します。
host:"googlesyndacation.com"@Google
取得したパケットのhost値(IPアドレス)が"googlesyndacation.com"に名前解決できるパケットはプロトコルGoolgeとしてnDPIが処理します。
ポートベース設定
#Port-base
#Format:
#<tcp|udp>:<value>,<tcp|udp>:<value>,.....@<proto>
フォーマットは、「tcp|udp:"ポート番号"@プロトコル名」となります。
例の通り設定は複数連ねて設定することができます。
実際の設定例は、以下の通りです。
tcp:81,tcp:8181@HTTP
udp:5061-5062@SIP
tcp:860,udp:860,tcp:3260,udp:3260@iSCSI
tcp:3000@ntop
nDPIが取得したパケットのポート番号から、定義したプロトコルとして処理します。
ndpiReaderでの事前検証
弊社が販売する証跡管理ツールEkranの通信を実際にntopngで認識させてみましょう。実際にntopngに設定する前に動作確認をします。
以下コマンドでパケットをキャプチャします。
$sudo tcpdump -ni enp5s0 -s0 -w enp5s0.pcap
ポートベースで設定します。以下のファイルを作成します。
$sudo vim /etc/ntopng/ndpi.protos
# Format:
# <tcp|udp>:,<tcp|udp>:,.....@
# tcp:81,tcp:8181@HTTP
# udp:5061-5062@SIP
# tcp:860,udp:860,tcp:3260,udp:3260@iSCSI
# tcp:3000@ntop
tcp:9447@EKRAN
:wq!
tcpかつポート9447の通信は、EKRANとして処理するといった設定となります。
最初にキャプチャしたパケットファイルをnDPIのコマンドndpiReaderに入力して、EKRANの通信を正しく認識するか確認します。
$ndpiReader -i enp5s0.pcap -p /etc/ntopng/ndpi.protos
図1 ndpiReader実行結果
図1の背景白色行の通り、EKRANの文字が出力されました。
図1の背景白色行の通り、設定前はunknownとしてカウントされていたパケットからEKRANのパケットを抽出できました。
ntopng設定
ntopngにnDPIの設定を反映するには、「-p」オプションでnDPIのプロトコルファイルを指定し、再起動する必要があります。
設定方法及び再起動は、以下の通りです。
$sudo vim /etc/ntopng/ntopng.conf
~snip~
-p=/etc/ntopng/ndpi.protos
:wq!
$sudo systemctl restart ntopng
ntopngのGUIでEKRANが表示されるか確認します。
図2 EKRANの認識
ntop社製品は、独自プロトコルの通信であっても定義を追加するだけで抽出できるという拡張性があります。
本ブログ記事で簡単にカスタムプロトコル定義を設定できることが分かっていただけたかと思いますので、是非nDPIによるカスタムプロトコル定義を活用してみてください。