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 = Truesave_forensic = True[imap]host = imap.mail.jpuser = dmarc@hoge.compassword = password[mailbox]watch = Truedelete = True[elasticsearch]hosts = https://elastic:password@127.0.0.1:9200ssl = Truecert_path = /etc/elasticsearch/certs/http_ca.crt
公式ドキュメントを参考にサービス化する。
参考: Using parsedmarc — parsedmarc 8.6.4 documentation
# vi /etc/systemd/system/parsedmarc.service
[Unit]Description=parsedmarc mailbox watcherDocumentation=https://domainaware.github.io/parsedmarc/Wants=network-online.targetAfter=network.target network-online.target elasticsearch.service[Service]ExecStart=/opt/parsedmarc/venv/bin/parsedmarc -c /opt/parsedmarc/parsedmarc.iniUser=parsedmarcGroup=elasticsearchRestart=alwaysRestartSec=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
これでしばらく運用してみる。
【関連記事】
- Elasticsearch + KibanaをインストールしてNginxからリバースプロキシ
- 全文検索エンジン「Elasticsearch」とは?特徴と使いどころ
- DMARCレポートツール「parsedmarc」をインストール
- 送信ドメイン認証DMARCとは?DMARC対応。