Webセキュリティの小部屋

Twitter のフォローはこちらから Facebook ページはこちら RSSフィードのご登録はこちらから
公開日:2016年4月7日
最終更新日:2016年8月20日

オープンソースのIDSであるOSSECを試してみた

警告

記事を書いた後に公開された情報ですが、OSSEC は脆弱性が発見されている上、すでにメンテナンス終了しているようなので利用は非推奨となります。

【セキュリティ ニュース】オープンソースIDS「OSSEC」向けウェブUIに脆弱性 - 利用は非推奨(1ページ目 / 全1ページ):Security NEXT

はじめに

Sucuri というセキュリティ企業が、 3月17日(米国時間)にオープンソースの侵入検知システムであるOSSEC (Open Source Intrusion Detection System) の紹介をしました。

OSSEC は HIDS と区分されるホスト(サーバー)に IDS をインストールして使用するものになります。OSSEC は以前からオープンソースとして公開されていたようですね。

WordPress との連携もできるようなので試してみました。

検証環境は、CentOS 6.7 + WordPress になります。

最新の CentOS 7 を使用しなかったのは、OSSEC がビルドしてインストールするツールなので、不具合時に対応しやすい環境を使いたかったからです。

ちなみに、VPS で検証を行ったのですが、使用した VPS サービスは「DigitalOcean」です。1時間単位で課金がされるので、安心して利用することができます。ちなみにこのリンクからサービスに登録すると $10 のクレジットがプレゼントされます。

OSSEC のインストール

OSSEC はビルドしてインストールするとで、まずは gcc と make をインストールします。

# yum -y install gcc make

gcc はなぜかインストールがうまくいかず、何回かインストールしてみたら問題が解決しました。gcc のインストールに失敗した場合、OSSEC のインストール時に以下のエラーが表示されるのですぐ分かります。
エラー 0x3.
インストールを続けるにはコンパイラ(gcc または cc 等)が
必要です

# gcc
-bash: gcc: コマンドが見つかりません

次に以下のコマンドを実行して、ソースコードをダウンロードして解凍します。
# wget http://dcid.me/ossec-packages/ossec-hids-latest.tar.gz
# tar -xzvf ossec-hids-latest.tar.gz

この時、ls -la を実行すると権限がおかしくなっていました。なので、権限を root に変更します。
# ls -la
drwxrwxr-x 10  500  500    4096  2月  3 01:29 2016 ossec-hids-2016-02

# chown -R root:root  ossec-hids-2016-02
# cd ossec*
# pwd
/root/ossec-hids-2016-02

これでインストールの準備が整ったので、以下のコマンドでビルドとインストールを実行します。
# ./install.sh

インストールする言語を聞かれるので、日本語の jp を指定してエンターキーを押します。
  ** Para instalação em português, escolha [br].
  ** 要使用中文进行安装, 请选择 [cn].
  ** Fur eine deutsche Installation wohlen Sie [de].
  ** Για εγκατάσταση στα Ελληνικά, επιλέξτε [el].
  ** For installation in English, choose [en].
  ** Para instalar en Español , eliga [es].
  ** Pour une installation en français, choisissez [fr]
  ** A Magyar nyelvű telepítéshez válassza [hu].
  ** Per l'installazione in Italiano, scegli [it].
  ** 日本語でインストールします.選択して下さい.[jp].
  ** Voor installatie in het Nederlands, kies [nl].
  ** Aby instalować w języku Polskim, wybierz [pl].
  ** Для инструкций по установке на русском ,введите [ru].
  ** Za instalaciju na srpskom, izaberi [sr].
  ** Türkçe kurulum için seçin [tr].
  (en/br/cn/de/el/es/fr/hu/it/jp/nl/pl/ru/sr/tr) [en]: jp

インストールが始まるメッセージが表示されるので、エンターキーを押します。
OSSEC HIDS rel2016-02 インストールスクリプト - http://www.ossec.net
 
 OSSEC HIDS のインストール作業を始めます.
 事前に C コンパイラがシステムにインストールされてる必要があります.
 質問やコメントがあれば,dcid@ossec.net (または daniel.cid@gmail.com) に
 メールを下さい.
 
  - システム: Linux centos-512mb-nyc3-01 2.6.32-573.8.1.el6.x86_64
  - ユーザ: root
  - ホスト: centos-512mb-nyc3-01


  -- 続けるには ENTER を押してください.また,Ctrl-C で中止します. --

以下のメッセージが表示されるので、ここでは server を入力してエンターキーを押します。
1- どの種類のインストールを選択しますか (server,agent,local または help)?server

ちなみに、help でインストールの種類を表示できるのですが、具体的には以下のようになります。
  - 三種類のインストールオプションがあります.: server,agent または local.
  
	- 'server' を選択した場合,全てのログ解析,通知メールの作成,
	  対応,遠隔の syslog 計算機と 'agents' が動作しているシステム
	  からのログ受信(トラフィックは暗号化されてサーバに送られます)
	  ができます.
      
	- 'agents' を選択した場合,計算機上のファイル(syslog,snort,
	  apache,等)を読みこみ,それらを解析のために暗号化してサーバ
	  に送ることができます.

	- 'local' を選択した場合,agents や外部の syslog デバイスから
	  遠隔メッセージを受信することを除き, サーバの機能を全て使用
	  できます.

  - log/analysis サーバを設定するなら 'server' を選択してください.
  
  - 他の計算機でログサーバを実行しており,解析のためにログをサーバに
    転送したいなら 'agent' を選択してください.
	(ウェブサーバやデータベースサーバ等に適しています)
    
  - 単一システムを監視するためならば 'local' を選択してください.
  
  - 詳細な情報は以下のサイトから得られます:
    http://www.ossec.net/en/manual.html#starting

後はメール設定以外はデフォルトなので、そのまま載せておきます。
2- インストール環境を設定しています.

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

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

3- 設定 OSSEC HIDS.

  3.1- メール通知を希望しますか? (y/n) [y]:
   - メールアドレスは何ですか? xxxxx@gmail.com
   - 使用する SMTP サーバの ip/host は何ですか? localhost

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

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

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

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

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

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

     - アクティブレスポンスを有効にしました.
   
   - デフォルトでは,host-deny と firewall-drop レスポンス
     が有効化することができます.一つ目は /etc/hosts.deny
     にホストを加えます.二つ目は iptable (linux) か
     ipfilter (Solaris, FreeBSD または NetBSD) によりホストを
     遮断します.

   - SSHD への総当たりスキャン,ポートスキャンや他の何らかの
     攻撃手法を停止することに使うことができます.
     また,例えば,snort のイベントに基づいてそれらを遮断する
     こともできます.

   - firewall-drop レスポンスを有効にしますか? (y/n) [y]:

        - local での levels >= 6 に対する firewall-drop を有効にしました

   - アクティブレスポンスでの初期ホワイトリスト:
      - 8.8.4.4
      - 8.8.8.8
      - 209.244.0.3

   - ホワイトリストへ IP を追加しますか? (y/n)? [n]:

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

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


   - Downloading GeoLiteCity database from MaxMind

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

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


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


   - 初期スクリプトはブート中に OSSEC HIDS を起動するよう修正しました.

 - 設定が完全に終了しました.

 - OSSEC HIDS を開始させます:
		/var/ossec/bin/ossec-control start

 - OSSEC HIDS を停止させます:
		/var/ossec/bin/ossec-control stop

 - 以下のファイルで設定についての確認と変更ができます /var/ossec/etc/ossec.conf


	OSSEC HIDS の使用に感謝します.
	あなたが何らかの質問,提案したいときや,バグを発見したときは,
	contact@ossec.net まで連絡するか ossec-list@ossec.net にある
	我々の公開メーリングリストを使ってください.
    (http://www.ossec.net/main/support/).

	詳細な情報は http://www.ossec.net にあります.

	---  ENTER を押すと終了します (以下,詳細な情報が続きます).---

 - エージェントを追加する前にアクセスするための認証が必要になります.
   エージェントを追加するか削除する際は 'manage_agents' を実行してください:

   /var/ossec/bin/manage_agents

   詳細な情報は以下にあります:
   http://www.ossec.net/en/manual.html#ma

これでインストールが完了したので、以下のコマンドで OSSEC を起動します。
# /var/ossec/bin/ossec-control start

WordPress の設定

OSSEC を WordPress を連携させるには、少々設定が必要です。

まず、「Sucuri Security – Auditing, Malware Scanner and Security Hardening.」というプラグインを新規インストールします。プラグインは新規追加で「Sucuri Security」を検索することで表示できます。

そして、WordPress のログを OSSEC に出力するための設定を行います。なお、このログファイルは PHP で書き込み可能である必要があります。ですので、以下のようにコマンドを実行します。

# cd /var/log
# touch wordpress.log
# chown apache:apache wordpress.log

今度は WordPress に戻って、Securi Security -> Settings -> Log Explorer の 「Absolute File Path:」に「/var/log/wordpress.log」を入力して「Save」をクリックします。

そして、以下のコマンドを実行して、このログファイルを OSSEC の管理下に起きます。

# /var/ossec/bin/util.sh addfile /var/log/wordpress.log
# /var/ossec/bin/ossec-control restart

実際に実行してみる

いくつかサンプルがあったので、実行してみます。

SSH のログインに失敗すると以下のようなメールが届きます。

OSSEC Notification - centos-512mb-nyc3-01 - Alert level 10

OSSEC HIDS Notification.
2016 Apr 07 06:22:19

Received From: centos-512mb-nyc3-01->/var/log/secure
Rule: 2502 fired (level 10) -> "User missed the password more than one time"
Portion of the log(s):

Apr  7 06:22:18 centos-512mb-nyc3-01 sshd[1938]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=58.218.204.248  user=root



 --END OF NOTIFICATION

WordPress のログインに失敗すると以下のようなメールが届きます。
Sucuri Alert, 45.55.xxx.xxx, Failed Login

Subject: Failed Login

Login Info:
Time: 2016年4月7日 7:14 PM



Website Info:
Site: http://45.55.xxx.xxx
IP Address: 61.21.xxx.xxx

Notification:
User authentication failed: fnya

Explanation: Someone failed to login to your site. If you are getting too many of these messages, it is likely your site is under a password guessing brute-force attack [1]. You can disable the failed login alerts from here [2]. Alternatively, you can consider to install a firewall between your website and your visitors to filter out these and other attacks, take a look at Sucuri CloudProxy [3].

[1] https://kb.sucuri.net/definitions/attacks/brute-force/password-guessing
[2] http://45.55.217.78/wp-admin/admin.php?page=sucuriscan_settings
[3] https://sucuri.net/website-firewall/

WordPress のログインに成功すると以下のようなメールが届きます。
Sucuri Alert, 45.55.xxx.xxx, Success Login

Subject: Success Login

Login Info:
Time: 2016年4月7日 8:19 PM



Website Info:
Site: http://45.55.xxx.xxx
IP Address: 61.21.xxx.xxx

Notification:
User authentication succeeded: fnya

システムに異常がある時、以下のようなメールが届きます。これは便利な機能ですね。
OSSEC Notification - centos-512mb-nyc3-01 - Alert level 12

OSSEC HIDS Notification.
2016 Apr 07 05:37:53

Received From: centos-512mb-nyc3-01->/var/log/messages
Rule: 5108 fired (level 12) -> "System running out of memory. Availability of the system is in risk."
Portion of the log(s):

Apr  7 05:37:53 centos-512mb-nyc3-01 kernel: Out of memory: Kill process 1522 (httpd) score 121 or sacrifice child



 --END OF NOTIFICATION

おわりに

OSSEC には、他にもパスワードのブルートフォースアタックに対する機能や WordPress のログインの成否履歴などがあり、多機能なのでここでは全部紹介できませんが、結構よい IDS であると言えるのではないでしょうか。

また、有料の機能では、WAF (Web Application Framework) などいろいろあるので、そちらも検証してみると Web サイトをかなり安全に運用できるのではないかと思います。

参考サイト


スポンサーリンク





カテゴリー:ブログ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA