🗂

DMARCのレポート解析を作ることができました

2024/11/05に公開

私は、DMARCのレポート解析で、dmarc-visualizerを使っていました。
https://qiita.com/kazuhidet/items/9791e6080ceeb40e8877
ある日、急に使えなくなってしまったのです。

調べるとGrafanaのAngularのプラグインが非推奨になったこと
円グラフのプラグインの機能が、標準機能に入った
などなどいろいろと動かないと思われる要因が見つかりましたので、Githubのリポジトリをfolkして、修正しようとしました。
でも、あまりに大変なので、自分で作ろうと思いました。

ようやく形になりまいたので、記事に書くことができました。

Grafanaの環境変数を使う形で複数のドメインがある場合は、ドメイン選択できるようにしました。

当初はSQLiteを使いましたがデータ量が増えたことに耐えられないため、Elasticsearchを使う形になりました。

XML形式のファイルまたは、ZIPまたはGZIP形式で圧縮されたXMLレポートを処理し、Elasticsearchに保存、Grafanaを使用してダッシュボード形式で表示できるようになりました。

Docker Composeのwatch機能を使うことで、DMARCのレポートのファイルを入れるfilesのフォルダの中身が変わっても検知でして解析できるようになりました。

https://docs.docker.com/compose/how-tos/file-watch/

今回制作したリポストは、こちらです。
https://github.com/miracle777/DMARC_Analyzer

使い方

Dockerを使います。
Dockerのバージョンが2.20以上が必要です。
Docker Composeのwatch機能を使うためです。

解析したいDMARCのレポートのファイルを、ZipまたGz形式で圧縮されたまま、もしくは、XML形式のファイルのファイル形式で、filesのフォルダの中に入れてください。
このfilesのフォルダの中にあるextractedというフォルダは、Zipファイルなどの中に更にZipやGZのファイルがある入れ子の時に、解凍して作業するフォルダです。

DMARCのレポートのファイルをセットしてから、dockerのコンテナのビルドと起動を行ってください。

コンテナを起動するときに、filesのフォルダの中を監視してファイルが追加されたときに自動で検知して解析を行う場合に対応していますので、下記のコマンドを使って起動してください。

コンテナのビルド

docker-compose build

コンテナの起動

docker-compose up --watch

コンテナが起動できたら、Grafanaダッシュボードへのアクセスできます。

ブラウザで以下のURLにアクセス:

http://localhost:3000

初期ログイン情報:

ユーザー名: admin

パスワード: admin

ログインすると集計用のデータソースに接続されたダッシュボードが、表示されます。

DMARCのフォレンジックレポート(RUF)のダッシュボードは、Grafanaの管理画面のダッシュボードで、DMARC Forensic Reports Analysisを選択してください。

Grafanaのダッシュボード

Grafanaのダッシュボードのパネルは、現在必要最小限の内容です。
Grafanaの管理画面にログインできますので、自由に編集して新しくダッシュボードを作って、ご利用いただけると良いと思います。
Grafanaのダッシュボードのパネルの設定に必要な情報も、公開しています。

DMARCのフォレンジックレポート(RUF)について

私は、DMARCの集計レポートは現物を見ていますので、今回開発でもデバッグで利用しました。
またダミーデータを作り、グラフなどの表示も確認しました。

でもDMARCのフォレンジックレポート(RUF)は、実物を見たことがありません。
今回felo.AIを使って検索したり、Claude3.5 SonnetやChat GPT Plusなどを活用してダミーデータを作り、パネルの表示を作りました。
そのため実際のフォレンジックレポート(RUF)が使えない可能性も、あります。
もしフォレンジックレポート(RUF)の解析ができないときは、教えて頂けますと助かります。

DMARC Forensic Reports Analysisでは、フォレンジックレポート(RUF)の各項目が、テーブルで表示されています。
今後見やすくなるように、解析したい内容に合わせて、テーブルの表示内容をしぼってパネルを追加したいと思っています。

Grafanaのダッシュボードのパネルは0÷0がNaNになる?

Grafanaのダッシュボードのパネルで0÷0の場合答えが、NaNになってしまうようです。
そのため、もしグラフの表示でNaNになったときは、対象期間を調整してください。

Discussion