parsedmarc + Elasticsearch + KibanaでDMARCレポートを視覚化

前に時間切れで進めてなかったDMARCレポートを再開しているときの覚書。

環境: CentOS Stream 9, Python 3.9.18, parsedmarc 8.6.4, Elasticsearch 8.11.2, Kibana 8.11.2


1. Elasticsearch + Kibanaをインストール

parsedmarcより先にElasticsearch + Kibanaの環境を構築した方が分かりやすい。
Elasticsearchが初耳なら概要を知っておく。
前の記事を参考に。


2.parsedmarcをサービス化+Elasticsearchとの連携設定

ここからが前回の続き。
インストールと動作確認のおおよその流れは前の記事を参考に。


parsedmarcの設定ファイルを編集。
# vi /opt/parsedmarc/parsedmarc.ini

# @see https://domainaware.github.io/parsedmarc/usage.html

[general]
save_aggregate = True
save_forensic = True

[imap]
host = imap.mail.jp
user = dmarc@hoge.com
password = password

[mailbox]
watch = True
delete = True

[elasticsearch]
hosts = https://elastic:password@127.0.0.1:9200
ssl = True
cert_path = /etc/elasticsearch/certs/http_ca.crt

公式ドキュメントを参考にサービス化する。
参考: Using parsedmarc — parsedmarc 8.6.4 documentation

# vi /etc/systemd/system/parsedmarc.service

[Unit]
Description=parsedmarc mailbox watcher
Documentation=https://domainaware.github.io/parsedmarc/
Wants=network-online.target
After=network.target network-online.target elasticsearch.service

[Service]
ExecStart=/opt/parsedmarc/venv/bin/parsedmarc -c /opt/parsedmarc/parsedmarc.ini
User=parsedmarc
Group=elasticsearch
Restart=always
RestartSec=5m

[Install]
WantedBy=multi-user.target


サービス起動、確認。
# systemctl daemon-reload
# systemctl start parsedmarc
# systemctl status parsedmarc

別コンソールでログを監視しながらだと分かりやすい。
# journalctl -f

自動起動オン。確認。
# systemctl enable parsedmarc
# systemctl list-unit-files -t service | grep parsedmarc

DMARCレポートが付いたメールを指定メールアドレスに転送してみて確認。


3.Kibanaに表示する設定

公式サイトから配布している設定ファイル「export.ndjson」をダウンロード。
参考: Elasticsearch and Kibana — parsedmarc 8.6.4 documentation

Kibanaにelasticユーザーでログイン。
メニューを開いて、
Management | Stack Management > Kibana | Saved Objects

右上のImportで「export.ndjson」をインポート実行。

メニューを開いて、
Analytics | Dashboard
でDMARC Summaryを開くとデータが表示されているはず。


ログを見てみたら下記エラー。

Dec 13 15:28:17 hoge.jp kibana[65060]: [2023-12-13T15:28:17.687+09:00][ERROR][plugins.observabilityAIAssistant] Error: Unable to create actions client because the Encrypted Saved Objects plugin is missing encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in the kibana.yml or use the bin/kibana-encryption-keys command.

あとで調べる。


4.DNSのDMARCレポート送信先を変更

DMARCレポート解析ツールの準備が整ったので、DMARCレポートをparsedmarc.iniに設定したメールアドレスに送るようDNSを変更する。

txt _dmarc v=DMARC1;p=quarantine;rua=mailto:dmarc@hoge.jp

これでしばらく運用してみる。


【関連記事】