-
Notifications
You must be signed in to change notification settings - Fork 446
Elasticsearchとの連携
1. Elasticsearchとの連携
2. Docker Composeの使用
3. 運用上の注意
LogonTracerは、EVTXファイルをインポートするだけではなく、Elasticsearchに保存されているイベントログをインポートすることができます。また、LogonTracerでイベントログを分析した結果をElasticsearchに保存することができます。
デフォルトでは、Winlogbeatで送信されたADイベントログをインポートの対象にしています。
ElasticsearchのログをLogonTracerにインポートする場合は、"Load from ES"ボタンから行うことができます。ロードする対象ログの期間を指定しない場合は、すべてのログがロードされるため、ログの量が多い場合は、必ず設定してください。LogonTracerでイベントログを分析した結果をElasticsearchに保存する場合は、"Add results analyzed by LogonTracer to Elasticsearch"を有効にしてください。
ElasticsearchのログをLogonTracerにインポートする際の、さらに詳細な設定に関しては、CUIから行うことができます。
ElasticsearchのログをCUIでLogonTracerにインポートする場合は、オプション"--es"を使用します。また、LogonTracerでイベントログを分析した結果をElasticsearchに保存する場合は、オプション"--postes"をつけてください。
$ python3 logontracer.py --es --postes --es-server 192.168.1.1:9200
さらに、関連する以下のオプションがあります。必要に応じて、設定してください。
- --es-server: Elastic Search server address. (default: localhost:9200)
- --es-index: Elastic Search index to search. (default: winlogbeat-*)
- --es-prefix: Elastic Search event object prefix. (default: winlog)
- --es-user: Elastic Search ssl authentication user. (default: elastic)
- --es-pass: Elastic Search ssl authentication password.
- --es-cafile: Elastic Search ssl cert file.
- --es: Import data from Elastic Search. (default: False)
- --postes: Post data to Elastic Search. (default: False)
オプションでLogonTracerでイベントログを分析した結果をElasticsearchに保存した場合、Kibana上で確認することができます。LogonTracerでの分析結果は、index名"logontracer-user-index"および"logontracer-host-index"で保存されています。
LogonTracerでイベントログを分析した結果をElasticsearchで直接検索する場合は、以下のようなクエリを使用することで可能になります。
$ curl -H "Content-Type: application/json" -XPOST 'localhost:9200/logontracer-user-index/_search?pretty' -d '
{
"query": {
"match_all": {}
},
"size": 10,
"sort": {
"rank": {
"order": "desc"
}
}
}'
$ curl -H "Content-Type: application/json" -XPOST 'localhost:9200/logontracer-user-index/_search?pretty' -d '
{
"query": {
"match": {
"status": "2020 "
}
}
}'
$ curl -H "Content-Type: application/json" -XPOST 'localhost:9200/logontracer-user-index/_search?pretty' -d '
{
"query": {
"match": {
"rights": "system"
}
}
}'
Elasticsearchとの連携テストのために、LogonTracer、ElasticsearchおよびKibanaを同時に起動するdocker-compose.ymlを公開しています。実運用の際は、ログの量などを考慮して、コンテナのクラスタリングやパフォーマンスチューニングをしてください。
$ git clone https://github.com/JPCERTCC/LogonTracer.git
$ cd LogonTracer\docker-compose-with-elastic-stack
docker-compose.ymlの内容を必要に応じて変更してください。
localhost以外の場合は、IPアドレスなどに変更。
environment:
- LTHOSTNAME=localhost
$ docker network create neo4j-network
$ docker compose build
$ docker compose up -d
LogonTracerに、長期間(1ヶ月、1年)のログをインポートすることは、LogonTracerの可視化速度の低下につながるためお勧めできません。1週間または1日(適切な期間はホスト数やユーザ数によって異なります)などの間隔で、必要なログをインポートして、分析することを推奨します。
LogonTracerを、ADイベントログの監視に使用する場合は、cronなどで定期的にイベントログを読み込んで(--deleteオプションで読み込み時に、データベースの過去ログを削除する)分析し、結果をElasticsearchに蓄積する(オプション--postes)ようにします。それによって、不審なログやアカウントランキングをKibana上で監視することが可能になります。確認が必要なログが見つかった場合、LogonTracerに対象期間のログをインポートしてログの可視化を行うことで、効率的な監視が可能になります。