AWSでOSSECを導入する
前回の調査に引き続き、クラウドにおける侵入検知の一つの方式として、AWSにOSSECを導入してみました。
IDSとは
IDSはInstrusion Detection Systemの略称であり、日本語では「侵入検知システム」と呼ばれます。
IDSは大きくネットワーク型(Network IDS/NIDS)とホスト型IDS(Host IDS/HIDS)に分類されます。両者とも、検知した際にアラートを表示・記録・通知を行うことで管理者が迅速な対応を行えることを目的としています。
ネットワーク型はネットワークパケットを監視してルールベースのパターンマッチングを行い、不正アクセスや悪意ある通信と思われるパケットを検知します。また検知と同時に通信の遮断も行えるものがあり、一般的にIDPやIPS(Intrusion Detection and Protection System)と呼ばれます。現在Firewallなどのネットワーク機器に組み込まれたIDPはProtectionの機能を備えたものが主流です(例えばFortigateやSonicWallなど)。
ネットワーク型IDSとして代表的なものにSnortがあります。商用製品としてはインターネット・セキュリティ・システムズ(ISS)社のRealSecure Network Sensorが超メジャー製品でしたが、2006年にIBMに買収されて現在はほぼ死に体です...
ホスト型はサーバ上のI/Oを監視し、不正アクセスと思われる行為を検知します。検知手法としてはシステムログの監視や、ある瞬間のファイルスナップショットとの差異を確認することによる改ざん検知などがあります。
ホスト型IDSとして代表的なものにtripwire、inotify(ionotify-tools)、aide、そして今回導入するossecなどがあります。
OSSECについて
OSSECはGPL v2ライセンスにて配布されているオープンソース・ソフトウェアであり、ホスト型IDSです。サーバとエージェントで構成されており、サーバにてアラートの一元管理を行うことが可能です。マルチプラットフォームに対応しており、監視項目もログ監視、ファイル整合性チェック、Windowsレジストリ監視、rootkitの検出などの機能を有しています。
AWSでのOSSECの導入
OSSECは大きくサーバとエージェントの二つに分けて導入作業を行います。
(1)事前準備
サーバ用とエージェント用の二つのSecurity Groupを作成します。OSSECはサーバ側でinput 1514/udpをオープンする必要があります。またWebUIを使用するためのHTTP(80/tcp)の開放も必要になります。
OSSECのパッケージはCentOSのサードパーティリポジトリであるAtomic Repoに登録されています。まずはyumにリポジトリを追加します。
yumコマンドでOSSECメインパッケージとサーバパッケージをインストールします。
OSSECを起動します。
次にOSSECのWeb-UIをインストールし、環境設定します。Web-UIはApacheとPHPが必要になります。php.iniのセキュリティ設定は見直しておきましょう。
OSSECのWebサイトからWeb-UIのバイナリをダウンロードし、Webコンテンツディレクトリに展開します。
Web-UIのセットアップスクリプトを実行します。
gpasswdコマンドで、ユーザapacheをグループossecに追加します。
Webサーバを起動します。
「http://IPアドレス/ossec/index.php」にアクセスするとOSSEC Web-UIが表示されます。
次にエージェント定義を追加します。
(3)エージェントの導入
サーバと同様にAtomic RepoからOSSECメインパッケージとクライアントパッケージをインストールします。
OSSECの設定ファイルは/var/ossec/etc/ossec.confですが、クライアントパッケージの場合/var/ossec/etc/ossec-agent.confのリンクになっています。ossec-agent.confを編集し、サーバのIPアドレスを指定します。
次にサーバ側で作成したKeyをインポートします。
最後にOSSECエージェントを起動します。
最後に
今回はAWSにOSSECをインストールし、サーバ1台とエージェント1台の構成を作成しましたが、OSSECの集中管理という利点を活かすためにはVyattaなど他OSのログの集積なども検討が必要だと思います。
またサーバ側でmanage_agentsを使ってエージェントを登録する際にIPサブネットを指定することが出来ますが、複数のサーバで同じエージェント定義を使ったところ、2台目以降がうまくサーバと通信できませんでした。Scale Outを考慮するとIPサブネット指定したエージェント定義に対し複数台のエージェントを紐つける構成がしたいところです。
IDSとは
IDSはInstrusion Detection Systemの略称であり、日本語では「侵入検知システム」と呼ばれます。
IDSは大きくネットワーク型(Network IDS/NIDS)とホスト型IDS(Host IDS/HIDS)に分類されます。両者とも、検知した際にアラートを表示・記録・通知を行うことで管理者が迅速な対応を行えることを目的としています。
ネットワーク型はネットワークパケットを監視してルールベースのパターンマッチングを行い、不正アクセスや悪意ある通信と思われるパケットを検知します。また検知と同時に通信の遮断も行えるものがあり、一般的にIDPやIPS(Intrusion Detection and Protection System)と呼ばれます。現在Firewallなどのネットワーク機器に組み込まれたIDPはProtectionの機能を備えたものが主流です(例えばFortigateやSonicWallなど)。
ネットワーク型IDSとして代表的なものにSnortがあります。商用製品としてはインターネット・セキュリティ・システムズ(ISS)社のRealSecure Network Sensorが超メジャー製品でしたが、2006年にIBMに買収されて現在はほぼ死に体です...
ホスト型はサーバ上のI/Oを監視し、不正アクセスと思われる行為を検知します。検知手法としてはシステムログの監視や、ある瞬間のファイルスナップショットとの差異を確認することによる改ざん検知などがあります。
ホスト型IDSとして代表的なものにtripwire、inotify(ionotify-tools)、aide、そして今回導入するossecなどがあります。
OSSECについて
OSSECはGPL v2ライセンスにて配布されているオープンソース・ソフトウェアであり、ホスト型IDSです。サーバとエージェントで構成されており、サーバにてアラートの一元管理を行うことが可能です。マルチプラットフォームに対応しており、監視項目もログ監視、ファイル整合性チェック、Windowsレジストリ監視、rootkitの検出などの機能を有しています。
AWSでのOSSECの導入
OSSECは大きくサーバとエージェントの二つに分けて導入作業を行います。
(1)事前準備
サーバ用とエージェント用の二つのSecurity Groupを作成します。OSSECはサーバ側でinput 1514/udpをオープンする必要があります。またWebUIを使用するためのHTTP(80/tcp)の開放も必要になります。
agent -- input -- any:22/tcp(SSH)(2)サーバの導入
-- output -- any:any
server -- input -- agent:1514/udp
-- any:22/tcp(SSH)
-- any:80/tcp(HTTP)
-- output -- any:any
OSSECのパッケージはCentOSのサードパーティリポジトリであるAtomic Repoに登録されています。まずはyumにリポジトリを追加します。
$ sudo rpm -Uvh http://www.atomicorp.com/channels/atomic/centos/6/x86_64/RPMS/atomic-release-1.0-16.el6.art.noarch.rpm
yumコマンドでOSSECメインパッケージとサーバパッケージをインストールします。
$ sudo yum install ossec-hids ossec-hids-server
OSSECを起動します。
$ sudo service ossec-hids start
次にOSSECのWeb-UIをインストールし、環境設定します。Web-UIはApacheとPHPが必要になります。php.iniのセキュリティ設定は見直しておきましょう。
$ sudo yum install httpd php
OSSECのWebサイトからWeb-UIのバイナリをダウンロードし、Webコンテンツディレクトリに展開します。
$ wget http://www.ossec.net/files/ossec-wui-0.3.tar.gz $ tar xvzf ossec-wui-0.3.tar.gz $ sudo mv ossec-wui-0.3 /var/www/html/ossec
Web-UIのセットアップスクリプトを実行します。
$ cd /var/www/html/ossec $ sudo ./setup.sh Setting up ossec ui... Username: "ユーザー名" New password: "パスワード" Re-type new password: "パスワード" Adding password for user "ユーザー名" Setup completed successfuly.
gpasswdコマンドで、ユーザapacheをグループossecに追加します。
$ sudo gpasswd -a apache ossec Adding user apache to group ossec
Webサーバを起動します。
$ sudo service ossec-hids restart $ sudo service httpd start
「http://IPアドレス/ossec/index.php」にアクセスするとOSSEC Web-UIが表示されます。
次にエージェント定義を追加します。
$ sudo /var/ossec/bin/manage_agents **************************************** * OSSEC HIDS v2.7 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: agents * The IP Address of the new agent: 172.31.0.100 * An ID for the new agent[001]: Agent information: ID:001 Name: agents IP Address: 172.31.0.100 Confirm adding it?(y/n): y Agent added.エージェントとサーバを結びつけするために使用するKeyの設定を行います。
**************************************** * OSSEC HIDS v2.7 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: agents, IP: 172.31.0.100 Provide the ID of the agent to extract the key (or '\q' to quit): 001 Agent key information for '001' is: MDAyIGFnZW50cyAxNzIuMzEuMC4wLzE2IGY5ZmZhMGFhNDU3ODVhMzFlNjVhNjAyMDAzYWUxOTFlODUxZjkwMDM2MWM3MzRkNGQxYjk4YTZhYmQ5ZWJkNDE= ** Press ENTER to return to the main menu.以上でサーバ側の設定は終了です。
(3)エージェントの導入
サーバと同様にAtomic RepoからOSSECメインパッケージとクライアントパッケージをインストールします。
$ sudo rpm -Uvh http://www.atomicorp.com/channels/atomic/centos/6/x86_64/RPMS/atomic-release-1.0-16.el6.art.noarch.rpm $ sudo yum install ossec-hids ossec-hids-client
OSSECの設定ファイルは/var/ossec/etc/ossec.confですが、クライアントパッケージの場合/var/ossec/etc/ossec-agent.confのリンクになっています。ossec-agent.confを編集し、サーバのIPアドレスを指定します。
$ sudo vi /var/ossec/etc/ossec-agent.conf ... 略 ...
<server-ip>172.31.0.10</server-ip> ... 略 ...
次にサーバ側で作成したKeyをインポートします。
$ sudo /var/ossec/bin/manage_client **************************************** * OSSEC HIDS v2.7 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): MDAyIGFnZW50cyAxNzIuMzEuMC4wLzE2IGY5ZmZhMGFhNDU3ODVhMzFlNjVhjAyMDAzYWUxOTFlODUxZjkwMDM2MWM3MzRkNGQxYjk4YTZhYmQ5ZWJkNDE= Agent information: ID:001 Name:agents IP Address:172.31.0.100 Confirm adding it?(y/n): y Added. ** Press ENTER to return to the main menu.
最後にOSSECエージェントを起動します。
$ sudo /var/ossec/bin/ossec-client.sh start Starting OSSEC HIDS v2.7 (by Trend Micro Inc.)... 2013/10/21 04:51:14 DEBUG: I am creating the SQLite table. Started ossec-execd... Started ossec-agentd... 2013/10/21 04:51:14 ossec-logcollector(1103): ERROR: Unable to open file '/queue/ossec/.agent_info'. Started ossec-logcollector... 2013/10/21 04:51:14 ossec-config(1756): ERROR: Duplicated directory given: '/etc'. 2013/10/21 04:51:14 ossec-config(1756): ERROR: Duplicated directory given: '/bin'. Started ossec-syscheckd... Completed.初回のみagent_infoファイルが無いエラーが発生します。またDuplicatedエラーはは/var/ossec/etc/ossec.confと/var/ossec/etc/shared/agent.confに二重で設定されているために発生しているようですが、起動としては問題ありません。本来は修正すべき点です。
最後に
今回はAWSにOSSECをインストールし、サーバ1台とエージェント1台の構成を作成しましたが、OSSECの集中管理という利点を活かすためにはVyattaなど他OSのログの集積なども検討が必要だと思います。
またサーバ側でmanage_agentsを使ってエージェントを登録する際にIPサブネットを指定することが出来ますが、複数のサーバで同じエージェント定義を使ったところ、2台目以降がうまくサーバと通信できませんでした。Scale Outを考慮するとIPサブネット指定したエージェント定義に対し複数台のエージェントを紐つける構成がしたいところです。
Amazon Web Services クラウドデザインパターン実装ガイド 大澤 文孝,玉川 憲,片山 暁雄,鈴木 宏康 日経BP社 売り上げランキング : 17216 Amazonで詳しく見る by AZlink |