Splunk で MaxMind を活用して IP GeoLocation の設定を行う方法をご紹介します。IPアドレスから地理情報を取得し、分析や可視化に役立てたい方には参考になるかもしれません。
※本記事で示す手順は、筆者が定めた最低限の可動要件を満たす設定と動作確認のみを目的として、自身の備忘用のレベルで記しています。運用性やセキュリティ上の細かな考慮等は省いている場合があります。もし各手順を試される場合には自己責任でお願い致します。
MaxMindのライセンス取得
まず、MaxMind の GeoLite2データベースを取得するため、ライセンス登録が必要です。MaxMindのライセンス取得手順については、サーバーワークス社のブログ(【GeoLite2】MaxMindの無料ライセンスキー取得手順)を参考にしましたので、詳細はそちらを確認してください。
ライセンス登録後に提供されるアカウントを利用して、後続の設定を行います。
Appの導入
SplunkのAppで "MaxMind" と検索して、該当のApp(Auto Update MaxMind Database)があるのでありがたく利用させていただく。
MaxMind で取得したライセンス情報(Account ID & License Key)を入力し、[Save]ボタンを押下する。
画面上に以下の表示が出たら、地味だがSaveされたと信じてこちらの設定は完了。
設定が完了したら、そのまま"サーチ"画面に遷移し、| maxminddbupdate
コマンドを実行し、データベースを更新する。「Max Mind Database updated successfully.」と出力されれば OK
動作ログの確認が必要な場合は、index=_internal sourcetype="auto_update_maxmind_db:logs"
を発行すれば確認できる。
さらに気になる場合は、$SPLUNK_HOME/share/ に以下のファイルが作成されていることを確認する。
$ sudo ls -lh $SPLUNK_HOME/share/
total 97M
-r--r--r-- 1 splunk splunk 97M Dec 7 15:10 dbip-city-lite.mmdb
-r--r--r-- 1 splunk splunk 4.3K Dec 7 15:10 iso3166.csv
動作確認
適当に、Firewallのログ(何等かグローバルIPを含むログデータを収集している前提)などで iplocation を使ってみる。RegionやCityが読み込めていれば、意図通りに IP GeoLocation の情報と紐づけられていると思われる。
index=main "dstip=<ログ収集に使っているFirewallなどのIP>" "action=deny" earliest=-86400s@s latest=now
| top 10 srcip
| iplocation srcip
| table srcip, Country, Region, City, count
まとめ
Splunkで収集したログデータに対して、MaxMind を使用して IP GeoLocation を設定することで、IPアドレスから都市や国情報を取得し、より詳細な分析が可能になります。
- MaxMindのライセンス(GeoLite2 Free Geolocation Data)の入手
- Splunk上での MaxMind の設定
- Splunk上での IP GeoLocation の利用
ぜひ、セキュリティ分析のニーズに合わせ、IP GeoLocation の活用をご検討くださいませ。