セキュリティツールおよびセキュリティ向けLinuxディストリビューションというとkali linuxなどが有名ですが、今回はSecurity OnionというLinuxディストリビューションを紹介します。
Security Onionとは
Security Onionをとてもざっくり説明すると守りのセキュリティ向けDebianベースのLinuxディストリビューションです。kali linuxはペネトレーションツールなどを多く含んだ攻めのセキュリティ向けLinuxディストリビューションですが、Security Onionはパケットキャプチャや侵入検知・エンドポイント監視などを中心に搭載している特に運用者向きのOSになっています。
ネットワークのトラフィックをこのOSに流すことで、見やすく監視しつつ、やばいトラフィックにアラート鳴らしてくれるとかをやってくれます。筆者はこれを書いている段階で学生なので実務でどの程度まで用いられているかは推測になりますが、ある程度のセキュリティ運用現場においては使われている様子だと思われる一方、一般向けには日本語ドキュメントが少ないため公式ドキュメントをしっかり読み解きましょう。
搭載されているツール
- Playbook
- FleetDM
- osquery
- CyberChef
- Elasticsearch
- Logstash
- Kibana
- Suricata
- Zeek
- Wazuh
そしてこれらを利用するためのwebコンソールとして
- Security Onion Console
細かい内容に関しては以下の公式ドキュメント内introductionなどを参照すると色々書いてあります
インストール形態
Security Onionにはいくつかの形態が含まれています。
- Import
- 簡易的にpcapファイルやlogファイルを解析するだけの形態
- Evaluation
- 小規模ネットワーク向けでログとかを少なめに取るようにした評価版らしい
- Production
- 中大規模ネットワーク向けでこっちは本番環境向けらしい
- Standalone
- 一台で動かすためのもの。一台でなんとかなるスペックで全部ネットワークを収容できるならこっちで十分
- Distributed Deployment
- 複数台で構築するためのもので恐らく複数のサブネットを跨いで構築できる。セキュリティポリシーとかの関係でいっぺんに全部のサブネットを一台にさせなかったりしたら多分こっち
- Standalone
- 中大規模ネットワーク向けでこっちは本番環境向けらしい
- Analyst
- GNOMEが搭載されててWiresharkとNetworkMinerが使える。Productionと組み合わせて別で立てることを推奨している様子だが、その他の形態に無理矢理相乗りさせることも可能。
今回はProductionのStandaloneで構築していきます。
なお本記事執筆時点でのバージョンは2.3.260でした
セットアップ
今回は原則公式ドキュメントの手順に則ってインストールを行なっていきます。
環境紹介
今回筆者はESXi上のVMに以下の環境で構築します。
CPU : 4core
RAM : 16GB
Storage : 256GB
NIC : 10個
Requirementsは以下に書いてあります
また、各環境におけるインストール手順が公式ドキュメントにまとまっているので、異なる環境でよくわからない部分はそれらをそれぞれ参照してください。オンプレからクラウドまで一通り揃っています。
余談ですが、ESXiを使うような人間に説明はいらないだろと、なぜかESXiの部分だけ適当です
ネットワーク環境に関してはVLANが9個あるので、マネジメント用のNICを一つ足したVMに仮想NICを10個刺しています。
ベースのOSがCentOS7なのでESXiのVM側にはCentOS7として設定しました。
また、ブラウザから各ツールにアクセスするために、IPは固定します。
isoのダウンロード
こちらにやり方が書いてありますが、isoファイルのダウンロードリンクと署名の検証方法がついています。分野の特性上署名の検証までやれるようになっています。めんどくさいと思う人は自己責任で飛ばしてください。
VMへのインストール
isoからの起動
ESXiでは事前にNICを接続し、isoファイルをドライブにマウントしてあります。この状態でシステムをドライブから立ち上げ以下の順番でこなしていきます。
- OSインストールで全部消えるのはもちろんそうなのでyesでenter
- adminのユーザー名を入力
- adminのパスワードを入力
- adminのパスワードを再入力
- インストールプロセスが勝手に進んできます。次の画面までそこそこ時間かかります
- この画面に到達したらenterでreboot
この段階でVMだとドライブのマウントが外されます。実機やその他の環境でもそのようにしてください。
再起動後ストレージからの起動
- reboot後再起動前のadminアカウントでログイン。ユーザー名を入力
- パスワードを入力
- 続けるのでYesでEnter。書いてあるようにこの先の画面ではSpaceで選択、Enterで確定。加えて上下キーで上下選択です
- installなのでそのままEnter
- 上下キーで移動してSTANDALONEでSpace、Enter
- Elasticsearchのライセンスに同意する必要があるので、AGREEと入力してEnter
- ホスト名を入力後Enter
- ホストの詳細について入力(何もいらなければEnter)
- managementのNICを選択、ここで選択したネットワークにIPを割り当ててブラウザ経由で接続できるようになります。
- Staticを選択
- IPとサブネットマスクを入力
- デフォルトゲートウェイを入力
- DNSサーバーを入力
- DNS search domainがあれば入力
- 正しく設定できていればこうなる。Enterで続行
- インターネットにつながる環境ならStandard、そうでなければAirgap。ここではStandardで続行
- proxyの設定。ここではDirectで続行
- モニター用のNICをSpaceで選択。複数選択可
- OSのPatchインストールのタイミングを選択。ここではAutomaticで続行する
- LANのサブネットを入力。監視対象のサブネットも含むのかは不明だが、筆者は一つ一つ全部入れた
- インストールのセッティングを選択、今回はADVANCEDで進める
- ZeekかSuricataのどちらのNIDSツールを使うかを選択。今回はZeekで進める
- 送るログの種類を選択。今回は触らずにこのまま続行
- IDS rulesetで何を使うかを選択。今回は無料で使えるETOPENを選択
- Optional Servicesを選択。今回は全部インストールしておく
- Docker Networkで使うIPを変更するかどうかを選択。筆者の環境で競合は起きないのでYesで続行
- Webインターフェースにログインするためのメールアドレスを入力
- Webインターフェースにログインするためのパスワードを入力
- もう一度入力
- 接続の制限でIPを直接叩くか、ドメインからの接続に限定するか等の設定。今回はIP
- soremoteのユーザーを追加する。SSH用のユーザーらしい。OKで続行
- soremoteのパスワードを入力
- もう一度
- NSM componentsのオプション設定。今回はADVANCEDで続行
- zeekで使うコアを選択。今回は1で続行
- Suricataで使うコアを選択。今回は0で続行
- MTUを選択。今回の環境は1500なのでこのまま続行
- ntpサーバーがあれば設定する。今回はないのでNoで続行
- Nodeの設定についてのオプション。今回はAdvancedで続行
- ES heapサイズの設定。今回は標準のまま続行
- ElasticSerach用にどれだけのストレージを確保しておくかの設定。今回は標準のままで続行
- Logstash heapサイズの設定。今回は標準のまま続行
- Logstash pipeline workerの数の設定。標準で続行
- Logstash pipeline batch sizeの数の設定。標準で続行
- Logstash input threadsの数の設定。標準で続行
- 他のホストがWebインターフェースを通してSecurity Onionのインストーラーの実行を許可するため?のオプション。正確なことはわからないがこのままyes
- 先の許可のIPの範囲。適切なものを入力して続行
- 最終確認画面が出てくるので確認してYes
- しばらく設定反映まで待機
- うまくいくと以下のような画面でインストールが完了します。Enterでrebootしてインストール完了です
インストール完了後
再起動後ログインするとYou may need to run so-allow first if you haven't yet
と出ているので
sudo so-allow
と実行しましょう。
色々なツールを立ち上げられますが、aを選択することでwebコンソールに接続できるようになります。
アクセス元のIPを求められるので適切なものを設定してください。(制限が特になければ0.0.0.0/0で大丈夫です)
以上で初期設定は完了です。先ほど設定した固定IPに別の端末からアクセスするとこのように表示されて正常にウェブコンソールが見れることがわかります。
長くなりましたので一旦ここで区切ります。各ツールの使い方・適用方法は続きの記事に書きます 。(書けたら)