インストール - JPCERTCC/SysmonSearch GitHub Wiki
前提条件
本インストール手順はLinux (Ubuntu)で動作を確認しております。
SysmonSearchはバージョンv7.xのElasticsearch、Kibanaをサポートしております。
ここから、Elasticsearch v7.xをダウンロードし、解凍してください。 解凍したディレクトリを$ES_HOMEと呼びます。
ここから、Kibana v7.xをダウンロードし解凍してください。 解凍したディレクトリを$KIBANA_HOMEと呼びます。
SysmonSearchリポジトリをクローンしてください。
$ git clone https://github.com/JPCERTCC/SysmonSearch.git
Elasticsearchサーバセットアップ
Elasticsearchの設定ファイルを編集してください。
$ vim $ES_HOME/config/elasticsearch.yml
例:
# イベントログを送信するクライアントが接続可能な IP アドレスを設定してください
network.host: 0.0.0.0
http.port: 9200
# IP アドレスを設定した場合、以下のようなノードの設定が必要になります
node.name: node-1
cluster.initial_master_nodes: ["node-1"]
# 認証を有効にしたい場合、以下を編集してください。
# xpack.security.enabled=true
# xpack.security.transport.ssl.enabled=true
# xpack.security.audit.enabled=true
# デフォルトでは Elasticsearch のビルトインアカウントが存在します。(ユーザ名:elastic、パスワード:changeme)
# $ES_HOME/bin/elasticsearch-setup-passwords でパスワードを設定することを推奨します。
Elasticsearchを起動します。
$ $ES_HOME/bin/elasticsearch
Kibanaサーバセットアップ
Kibanaの設定ファイルを編集してください。
$ vim KIBANA_HOME/config/kibana.yml
例:
elasticsearch.hosts: ["http://<ElasticsearchサーバのIPアドレス>:9200"]
#スクリプトの実行のため、以下の設定を追加してください。
csp.rules:
- "script-src 'self' 'unsafe-eval' 'sha256-M2M+sgC2bZ4r73FO1LV5JmHiS5COwEb2Uqw7EbsHmBY='"
# Elasticsearch の認証を有効にした場合、以下を編集してください
# elasticsearch.username: ユーザ名
# elasticsearch.password: パスワード
Kibanaが起動することを確認します。
$ $KIBANA_HOME/bin/kibana
SysmonSearchプラグインの設置
sysmon_search_pluginを $KIBANA_HOME/plugins 内にコピーし、$KIBANA_HOME/optimize 配下のファイルを削除します。
$ cp -r sysmon_search_plugin/ $KIBANA_HOME/plugins/
$ rm -rf $KIBANA_HOME/optimize/*
sysmon_search_pluginの設定ファイルの必要な箇所を編集します。
$ vim $KIBANA_HOME/plugins/sysmon_search_plugin/conf.js
例:
//elasticsearch server URL
"elasticsearch_url":"[ElasticsearchサーバのIPアドレス]"
//elasticsearch server Port
"elasticsearch_port": "9200",
//monitor rule file path
"savepath": "[scriptを配置したパス]/rule_files",
//stixioc import server URL
"import_server_url": "[stixioc-import-serverのIPアドレス]",
//stixioc server port
"import_server_port": "56020",
//internal time (hour)
"refine_time_range": "1",
//maximum object number
"max_object_num": "30",
// Elasticsearch の認証を有効にした場合、以下を編集してください
"elasticsearch_user": "elastic",
"elasticsearch_password": "changeme",
Kibanaを再起動します。
StixIocサーバセットアップ
以下はPython3のvenvモジュールがインストールされている環境を想定しています。
必要なPythonモジュールをインストールするための環境をvenvで作成し、有効化します。
$ python3 -m venv venv
$ source venv/bin/activate
以下のコマンドを実行し、Pythonモジュールをインストールします。
$ pip install tornado openioc-to-stix git+https://github.com/oasis-open/cti-stix-slider.git pyyaml elasticsearch
stixioc-import-serverディレクトリに、logsディレクトリを作成します。
$ mkdir stixioc-import-server/logs
stixioc-import-serverを起動します。
$ cd stixioc-import-server
$ python server.py
ポート番号やログの設定などを変更したい場合、server.confを編集してください。
stixioc-import-serverディレクトリで以下のコマンドを実行することで、SticIocサーバの動作を確認できます。
# localhost で実行している場合
$ curl localhost:56020/convert/ioc -F 'file=@data/sample.ioc.xml'
Pythonスクリプト
統計スクリプトの設定の必要な箇所を編集します。
$ vim script/collection_statistical_data_setting.py
例:
ELASTICSEARCH_SERVER = "[ElasticserachサーバのIPアドレス]"
# INDEX_NAME_ORG にはインデックス名から年月日を削ったものを設定してください
# インデックス名が winlogbeat-yyyy.mm.dd の場合
INDEX_NAME_ORG = "winlogbeat"
# インデックス名が winlogbeat-7.5.1-yyyy.mm.dd の場合
INDEX_NAME_ORG = "winlogbeat-7.5.1"
WINLOGBEAT_YML = "[sysmon_search_plugin/winlogbeat.ymlの絶対パス]"
アラートスクリプトの設定の必要な箇所を編集します。
$ vim script/collection_alert_data_setting.py
例:
ELASTICSEARCH_SERVER = "[ElasticserachサーバのIPアドレス]"
RULE_FILE_DIRECTORY = "[scriptを配置したパス]/rule_files/*"
WINLOGBEAT_YML = "[sysmon_search_plugin/winlogbeat.ymlの絶対パス]"
以下をcrontabに設定します。
VENV_DIR=[absolute path of venv directory]
SCRIPT_DIR=[absolute path of script directory]
0,30 * * * * $VENV_DIR/bin/python3 $SCRIPT_DIR/collection_statistical_data.py
0,30 * * * * $VENV_DIR/bin/python3 $SCRIPT_DIR/collection_alert_data.py
0 1 * * * DATE=`date -d "-1 day" "+%Y.%m.%d"`; $VENV_DIR/bin/python3 $SCRIPT_DIR/collection_statistical_data.py $DATE
クライアントのセットアップ
クライアントのセットアップを参照してください。