ログ運用について
読者の皆さんはどのように社内のログを管理・運用しているでしょうか?
ログ管理は第三者による不正なアクティビティなどを検知することだけではなく社内におけるアクティビティの監査としても重要な役割を担っています。

昨今、大企業に限らず中小規模の企業に対しても不正アクセスや攻撃が常態化しているため、自社のセキュリティ基盤はセキュアなのか?よりよいセキュリティ基盤にするために整備をしたいと考えている方は多いかと思います。
皆さんはログを自分たちが見やすい形に可視化できているでしょうか?
中にはログは取得しているが調査の際はCLI(サーバーにSSHしてtail, grepなど)でログを確認している方も多いのではないでしょうか。
今回はセキュリティ基盤の一案としてElasticsearchを使ったデータ基盤構築を紹介します。(最終的にこんな感じのものができます)

※AWSのCloudWatchを触ったことがある方なら馴染みがあるかと思います
Elasticsearchとは?
Elastic社が開発している高速に検索や分析を行うためのツールです。
クラスタによる分散処理を行うことができるため動作が非常に高速で可用性に優れていることが特徴です。
Elasticには検索ロジックなどを行うElasticsearch、
データの取得、整形を行うLogstash(&Beats)、
取得したデータを自分が見やすい形で可視化するのがKibanaと
それぞれ役割が分かれています。
これらは総称で「Elastic Stack」と呼ばれています。

過去記事でElastic Stackについて解説した記事があるので興味がある方はこちらも合わせて閲覧いただければと思います。
https://www.casleyconsulting.co.jp/blog/engineer/253/
また、各コンポーネントの詳細についての最新情報は公式サイトを参照ください。
Elasticsearchの設定
AWS(EC2)を使って構築していきたいと思います。
※マネージドサービスのAmazonOpenSearchではなくEC2上にセルフマネージド版をセットアップしていきます。
OpenSearchはElasticsearchから派生(Fork)してできたサービスなのでElasticsearchの仕組みを理解しておくとOpenSearchを使う上で役に立つかと思います。
詳細はこちらの記事を閲覧してみてください
AMIは「Amazon Linux 2 AMI (HVM) – Kernel 5.10」を選択

インスタンスタイプは「t2.medium」を選択

パブリックサブネットで起動するよう設定

下の方にある「高度な設定」→「ユーザーデータ」に以下のシェルスクリプトを記述

#!/bin/bash yum update -y yum install -y java-1.8.0-openjdk.x86_64 # Elastic Stackインストールに必要な認証鍵を登録 cat > /etc/yum.repos.d/elasticsearch.repo <<EOF [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF # Elastic Stackインストール yum install -y elasticsearch kibana logstash # kibanaに必要な設定&日本語化の設定を追記 echo "server.host: 0.0.0.0" >> /etc/kibana/kibana.yml echo "i18n.locale: "ja-JP"" >> /etc/kibana/kibana.yml # Elasticsearchで使用するメモリ量を指定(これが無いとメモリ不足でエラーになる) echo "-Xms1g" >> /etc/elasticsearch/jvm.options echo "-Xmx1g" >> /etc/elasticsearch/jvm.options # Elastic Stack起動 systemctl enable elasticsearch systemctl start elasticsearch systemctl enable kibana systemctl start kibana systemctl enable logstash systemctl start logstash
セキュリティグループで5601(Kibana)のポートを許可する

使用するキーペアを確認して起動

数分待ってパブリックIPアドレス:5601をブラウザで起動


下の方にある「サンプルデータを試す」を選択

このページが表示された場合は「独りで閲覧」を選択

3種類あるので好きなものを選択(今回は「Sample web logs」を選択)

「データを表示」→「ダッシュボード」を選択

ダッシュボードの画面が出てきたらOK

左上のハンバーガーメニューから「Discover」を選択してみる

ログについて詳細情報を閲覧できることを確認

今回の記事では予めKibanaで用意されているサンプルデータを使って可視化しました。
(自分が可視化させたいログはLogstashやFilebeatで設定ください)
https://www.n-novice.com/entry/2018/03/01/005142
JSONやCSVの一定のフォーマットのファイルであればファイル単位で
分析することもできるので手軽に試したい方にもおすすめです。

最後に
今回はElastic Stackを使った最低限のログ運用基盤を構築しました。
(環境完成後も定期的に見直すことで不備やより良いやり方が出てきたりするので定期的に運用を見直すことが大切です)
本記事が誰かにとってセキュリティ基盤構築の一助になることを期待して本記事は締めとさせていただきます。
最後まで閲覧いただきありがとうございました。