Elasticsearch Machine Learningでファイアーウォールログから異常を検知する
「Elasticsearch Machine Learning(以下、ML)」を使って、ファイアーウォールのログから異常を検知をしてみました。
MLの概要は以前書いたこちらの記事を御覧ください。
続きを読む今回は細かな設定手順の話は書いていません。
”MLでどんな感じで異常検知ができるか” について書いています。
ElasticsearchのデフォルトMapping Typeを定義する
ElasticsearchはスキーマレスなDBなので、各フィールドの型を明示的に指定する必要がありません。
とはいえ、確実に型を指定したい場合も多く、その場合はindex templateを使って指定します。
今回の記事は、少し古いバージョンのElasticsearch 2.4系をもとに書いています。
例えば、何も設定せずに以下のようにindexを作成した場合、field01は文字列(string)、field02は数値(integer)として判断されます。
curl -XPOST localhost:9200/test_index/hoge -d '{"field01":"100","field02":100}'
明示的にType を指定する
time
フィールドは”data type”、status
フィールドは”string type”と指定するには以下のように設定します。
curl -XPUT localhost:9200/_template/template -d ' { "template" : "log_*", "settings" : { "number_of_shards" : 1, "number_of_replicas" : 0 }, "mappings" : { "_default_" : { "properties": { "time": {"type":"date","format":"strict_date_optional_time||epoch_second"}, "status" : {"type":"string","index":"not_analyzed"} } } } }'
格納されるフィールドが事前に全て分かっている場合は、上記のように1つ1つ定義することで、明示的にTypeを設定できます。
しかし、格納される全てのフィールドが事前に分からない場合は定義することができません。
そのような時は、Dynamic templates
を使用することで対処できます。
ダイナミックテンプレート(Dynamic Templates)
ダイナミックテンプレート(Dynamic Templates)は、フィールド名を対象にしたルールを定義し、インデックス作成時に動的にマッピングを行う機能です。
フィールド名がhogehoge
だったら、このマッピングルールを適用するーーーみたいな感じです。
Palo AltoのUTM機能をテストする
パロアルトネットワークス社の次世代ファイアウォールを構築する際に、UTM系のテストを行う場合があります。
今回は「Vulnerability Protection(脆弱性防御)※」機能のテストを簡単に行う方法について書きたいと思います。
※「Threat Prevention」ライセンスを購入すると利用可能になる機能です
続きを読むここで説明するテストは、「Vulnerability Protection」の機能が有効に動作しているか(プロファイルが適切に適応されているか)を確認することを対象にしています。
サーバ上のファイルを直接編集できるVisual Studio Codeプラグイン「ftp-simple」が便利
エディタは何を使っていますか?
自分は「Visual Studio Code」をメインで使っています。
「Visual Studio Code」は軽いのがいいですよね〜。
今回は「Visual Studio Code」のおすすめプラグインを紹介したいと思います。
ftp-simple
リモートのサーバ上でプログラムを書いているときに、ローカルPCのお気に入りエディタで書いてサーバにアップロード・・・が手間だと感じることはありませんか?
リモートサーバ上で直接編集する場合はお気に入りエディタ使えないし。
今回紹介する「ftp-simple」は、そんな手間を削減してくれるプラグイン。
ftp-simpleは、リモートのサーバにsftp(ftp)接続を行い、サーバ上のファイルを直接開いたり、サーバとローカル環境とファイルの同期を行うことができるプラグインです。
インストールは下記から行います。
*アプリ上からも行えます
続きを読む