ホスト型IDSのOSSECをEC2に導入する

はじめに

IDSとは

IDSはInstrusion Detection Systemの略称であり、日本語では「侵入検知システム」と呼ばれます。

IDSは大きくネットワーク型(Network IDS/NIDS)とホスト型IDS(Host IDS/HIDS)に分類されます。両者とも、検知した際にアラートを表示・記録・通知を行うことで管理者が迅速な対応を行えることを目的としています。

ネットワーク型はネットワークパケットを監視してルールベースのパターンマッチングや異常通信検出を行い、不正アクセスや悪意ある通信と思われるパケットを検知します。また検知と同時に通信の遮断も行えるものがあり、一般的にIDPやIPS(Intrusion Detection and Protection System)と呼ばれます。現在Firewallなどのネットワーク機器に組み込まれたIDPはProtectionの機能を備えたものが主流です(例えばFortigateSophosSonicWallなど)。ネットワーク型IDSとして代表的なものにSnortがあります。商用製品としては、以前はインターネット・セキュリティ・システムズ(ISS)社のRealSecure Network Sensorが超メジャー製品でした。

ホスト型はサーバ上のI/Oを監視し、不正アクセスと思われる行為を検知します。検知手法としてはシステムログの監視や、ある瞬間のファイルスナップショットとの差異を確認することによる改ざん検知などがあります。ホスト型IDSとして代表的なものにtripwireinotify(ionotify-tools)、aide、そして今回導入するOSSECなどがあります。

OSSECについて

OSSECはGPL v2ライセンスにて配布されているオープンソース・ソフトウェアであり、ホスト型IDSです。サーバとエージェントで構成されており、サーバにてアラートの一元管理を行うことが可能です。マルチプラットフォームに対応しており、監視項目もログ監視、ファイル整合性チェック、Windowsレジストリ監視、rootkitの検出などの機能を有しています。

今回はこのOSSECをEC2(Amazon Linux)に導入してみました。

やってみた

事前設定

OSSECはサーバとエージェントに分かれ、エージェントからサーバに対し1514/udpでデータが送信されます。またサーバはWeb-UIを用いて管理するため、管理者からサーバ用EC2に80/tcpで接続可能なよう、Security Groupを設定しておきます。

AWS_Simple_Icons_2_3_light_edition_pptx

OSSECサーバの導入

OSSECのインストール

OSSECのインストールに必要なgccをインストールしておきます。

$ sudo yum install gcc

OSSECのgithubページに書いてある通り、以下のインストールコマンドを実行します。

$ (cd /tmp/ && wget https://github.com/ossec/ossec-hids/archive/2.8.1.tar.gz && mv 2.8.1.tar.gz ossec-hids-2.8.1.tar.gz && tar xfz ossec-hids-2.8.1.tar.gz && cd ossec-hids-2.8.1 && sudo ./install.sh )

インストール言語の選択が表示されます。今回は日本語なので"jp"を入力。

(en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr) [en]: jp

インストールが開始されます。インストール種類の選択で"server"を選択します。

1- どの種類のインストールを選択しますか (server,agent,local または help)? server

インストール先ディレクトリはデフォルトのまま。

2- インストール環境を設定しています.

 - OSSEC HIDS のインストール先を選択してください [/var/ossec]:

    - インストール先を以下に作成します  /var/ossec .

各種設定を行います。今回は検知のみでメール通知はせず、またアクティブレスポンスも有効にしていません。

3- 設定 OSSEC HIDS.

  3.1- メール通知を希望しますか? (y/n) [y]: n

  3.2- 整合性検査を行うデーモンを実行させますか? (y/n) [y]: y

   - syscheck (整合性検査デーモン) を実行させます.

  3.3- rootkit 検知エンジンを実行させますか? (y/n) [y]: y

   - rootcheck (rootkit 検知) を実行させます.

  3.4- アクティブレスポンスによりイベントが発生した際に特定の
       コマンドを実行することができます.
       例えば,ある IP アドレスを遮断することや特定のユーザ
       に対してアクセスを無効にすることができます.
       詳細な情報は以下にあります:
       http://www.ossec.net/en/manual.html#active-response

   - アクティブレスポンスを有効にしますか? (y/n) [y]: n

     - アクティブレスポンスを無効にしました.

  3.5- リモート syslog (port 514 udp) を有効にしますか? (y/n) [y]: y

   - リモート syslog を有効にしました.

  3.6- 以下のログを解析するための設定を準備しています:
    -- /var/log/messages
    -- /var/log/secure
    -- /var/log/maillog

 - 他のファイルを監視したい場合は,ossec.conf を変更し
   新しいエントリーを追加してください.
   設定に関するどんな質問にも我々の Web サイト http://www.ossec.net
   を訪れることで答えることができます.


   --- 続けるには ENTER を押してください ---

ENTERキーを押下するとインストールが開始され、完了します。 では早速起動してみましょう。

$ sudo /var/ossec/bin/ossec-control start
Starting OSSEC HIDS v2.8 (by Trend Micro Inc.)...
2015/06/17 07:36:37 ossec-maild: INFO: E-Mail notification disabled. Clean Exit.
Started ossec-maild...
Started ossec-execd...
Started ossec-analysisd...
Started ossec-logcollector...
Started ossec-remoted...
Started ossec-syscheckd...
Started ossec-monitord...
Completed.

OSSEC Web-UIのインストール

まず普通にApacheをインストールします。

$ sudo yum install httpd php
$ sudo chkconfig httpd on

OSSEC Web-UIをgitコマンドを使ってダウンロードします。

$ sudo yum install git
$ git clone https://github.com/ossec/ossec-wui.git

ダウンドードしたソースをWeb公開フォルダに移動させ、セットアップスクリプトを実行します。

$ sudo mv ossec-wui /var/www/html/ossec
$ cd /var/www/html/ossec/
$ sudo ./setup.sh
Setting up ossec ui...

BASIC認証用のユーザーとパスワードを登録します。

Username: admin
New password:
Re-type new password:
Adding password for user admin

Apacheの実行ユーザーを設定します(ここでは"apache"と設定しています)

Enter your web server user name (e.g. apache, www, nobody, www-data, ...)
apache

OSSECのインストールディレクトリを指定します。

Enter your OSSEC install directory path (e.g. /var/ossec)
/var/ossec
You must restart your web server after this setup is done.

Setup completed successfuly.

ossecグループにapacheグループを追加します。

$ sudo gpasswd -a apache ossec

OSSECのテンポラリディレクトリをWeb-UI用に権限変更します。

$ sudo chmod 770 /var/ossec/tmp
$ sudo chgrp apache /var/ossec/tmp

で、Apacheを起動!

$ sudo service httpd start
Starting httpd:                                            [  OK  ]

Webブラウザからhttp://OSSECサーバのIPアドレス/ossec/index.php」にアクセスするとOSSEC Web-UIが表示されます!

OSSEC_Web_Interface_-_Open_Source_Security

OSSECエージェントの導入

OSSECサーバで鍵を発行する

OSSECエージェントがOSSECサーバと通信するためには、サーバで発行された鍵をエージェント側に設定する必要があります。以下のコマンドをOSSECサーバで実行します。以下のようにエージェントの名前とIPアドレスを指定して登録します。

$ sudo /var/ossec/bin/manage_agents

****************************************
* OSSEC HIDS v2.8 Agent manager.     *
* The following options are available: *
****************************************
   (A)dd an agent (A).
   (E)xtract key for an agent (E).
   (L)ist already added agents (L).
   (R)emove an agent (R).
   (Q)uit.
Choose your action: A,E,L,R or Q: A

- Adding a new agent (use '\q' to return to the main menu).
  Please provide the following:
   * A name for the new agent: agent1
   * The IP Address of the new agent: 172.31.14.208
   * An ID for the new agent[001]:
Agent information:
   ID:001
   Name:agent1
   IP Address:172.31.14.208

Confirm adding it?(y/n): y
Agent added.

そしてそのエージェント用の鍵を発行します。

****************************************
* OSSEC HIDS v2.8 Agent manager.     *
* The following options are available: *
****************************************
   (A)dd an agent (A).
   (E)xtract key for an agent (E).
   (L)ist already added agents (L).
   (R)emove an agent (R).
   (Q)uit.
Choose your action: A,E,L,R or Q: e

Available agents:
   ID: 001, Name: agent1, IP: 172.31.14.208
Provide the ID of the agent to extract the key (or '\q' to quit): 001

Agent key information for '001' is:
MDAxIGFnZW50MSAxNzIuMzEuMTQuMjA4IGE1Nzg5ZTA5OGZiNTI4NGE0N2JmYzFhYzg2NWJkYzA1MGE3NjdjMTk2NGI4NDc3NThlYTEwYTJmMjliYzRlOTY=

** Press ENTER to return to the main menu.

OSSECのインストール

OSSECサーバと同様、OSSECのインストールに必要なgccをインストールしておきます。

$ sudo yum install gcc

OSSECサーバと同じインストールコマンドを実行します。

$ (cd /tmp/ && wget https://github.com/ossec/ossec-hids/archive/2.8.1.tar.gz && mv 2.8.1.tar.gz ossec-hids-2.8.1.tar.gz && tar xfz ossec-hids-2.8.1.tar.gz && cd ossec-hids-2.8.1 && sudo ./install.sh )

インストール言語の選択が表示されます。今回は日本語なので"jp"を入力。

(en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr) [en]: jp

インストールが開始されます。インストール種類の選択で"agent"を選択します。

1- どの種類のインストールを選択しますか (server,agent,local または help)? angent

    - Agent(client) インストールを選択しました.

インストール先ディレクトリはデフォルトのまま。

2- インストール環境を設定しています.

 - OSSEC HIDS のインストール先を選択してください [/var/ossec]:

    - インストール先を以下に作成します  /var/ossec .

各種設定を行います。エージェントが繋がるサーバのIPアドレスを設定します。

3- 設定 OSSEC HIDS.

  3.1- OSSEC HIDS サーバの IP/hostname アドレスは何ですか?: 172.31.6.199

   - サーバの IP を加えています 172.31.6.199

  3.2- 整合性検査を行うデーモンを実行させますか? (y/n) [y]:

   - syscheck (整合性検査デーモン) を実行させます.

  3.3- rootkit 検知エンジンを実行させますか? (y/n) [y]:

   - rootcheck (rootkit 検知) を実行させます.

  3.4 - アクティブレスポンスを有効にしますか? (y/n) [y]: n

   - アクティブレスポンスを無効にしました.

  3.5- 以下のログを解析するための設定を準備しています:
    -- /var/log/messages
    -- /var/log/secure
    -- /var/log/maillog
    -- /var/log/httpd/error_log (apache log)
    -- /var/log/httpd/access_log (apache log)

 - 他のファイルを監視したい場合は,ossec.conf を変更し
   新しいエントリーを追加してください.
   設定に関するどんな質問にも我々の Web サイト http://www.ossec.net
   を訪れることで答えることができます.


   --- 続けるには ENTER を押してください ---

ENTERキーを押すとインストールが進行し、完了します。

OSSECエージェントの設定

以下コマンドを実行し、OSSECエージェントの設定を行います。先ほどOSSECサーバで発行した鍵を登録します。

$ sudo /var/ossec/bin/manage_agents

****************************************
* OSSEC HIDS v2.8 Agent manager.     *
* The following options are available: *
****************************************
   (I)mport key from the server (I).
   (Q)uit.
Choose your action: I or Q: I

* Provide the Key generated by the server.
* The best approach is to cut and paste it.
*** OBS: Do not include spaces or new lines.

Paste it here (or '\q' to quit): MDAxIGFnZW50MSAxNzIuMzEuMTQuMjA4IGE1Nzg5ZTA5OGZiNTI4NGE0N2JmYzFhYzg2NWJkYzA1MGE3NjdjMTk2NGI4NDc3NThlYTEwYTJmMjliYzRlOTY=

Agent information:
   ID:001
   Name:agent1
   IP Address:172.31.14.208

Confirm adding it?(y/n): y
Added.
** Press ENTER to return to the main menu.

そして起動!

$ sudo /var/ossec/bin/ossec-control start
Starting OSSEC HIDS v2.8 (by Trend Micro Inc.)...
Started ossec-execd...
2015/06/17 16:55:23 ossec-agentd: INFO: Using notify time: 600 and max time to reconnect: 1800
Started ossec-agentd...
Started ossec-logcollector...
Started ossec-syscheckd...
Completed.

するとOSSEC Web-UIで見ると、以下のようにエージェントが追加されているのがわかります。

OSSEC_Web_Interface_-_Open_Source_Security 2

さいごに

今回はインストールと検知までしかしていませんが、検知からのメール通知や独自ルールの適用、アクティブレスポンスによる自動ブロックなど、幅広い機能があります。今度はその辺を試してみたいと思います。