Splunkを使用したmod_securityおよびMySQLの監視

良い時間、habrozhiteli。

サポートしている仮想サーバーの監視実装を共有したい。

オペレーティングシステム:CentOS 6.3 x64、ただし、記載されている状況は、* Winや* nixなどの他のプラットフォームに適しています。

問題の声明。

次のサービスがサーバーにインストールされます:mod_securityに基づくapache2、MySQL、postfixおよびapache保護が実装されます。

サーバーのホストは、sshコンソールを介して接続し、テキストエディターでログを読み取ることに満足していません。また、サーバーの負荷、リクエストの数、サーバーへのリクエストの複雑さの可視性もありませんでした。 私はZabbixサーバーを提案しましたが、クライアントは決定的なノーを言いました。 さて、彼とクライアントは常に正しいです。

サーバーのセキュリティに関連する現在の状況をすばやく見つけ、イベントから先に進み、問題を解消するための対策を講じる必要があります。



何が起こったかのスクリーンショットをすぐに提供します:









そこで、グーグルで質問をして回答を得ることで、 公式の mod_security Webサイトにリストされているすべてのインターフェースの複雑さを増やそうとしました。 2008年のどこかで彼らは全員サポートをやめたことが判明したが、それは私には合わなかった。

Splunkを最後に去ったのは、第一にそれが支払われており、第二にそのような仕事に対する普遍的な製品に対する不信感があるからです。

ソリューションについて簡単に:

1)。 有料版と無料版があります。

2)。 試用期間は60日間です。システムを通過するログが500 MB未満の場合は、無料のライセンス契約を安全に締結できます。

3)私はたくさんのモジュールに満足し、そのうちすぐにMySQLのモジュールに興味を持ちました。

4)情報を収集するためにさまざまなノードに接続して、サーバー自体とネットワーク上の他のホストの両方にインストールする機能。 つまり、複数のノードの結果を単一のセンター(ホームサーバーなど)に統合します。



生じた懸念:

1)。 多すぎる製品。

2)。 ライブサーバーへのインストールの複雑さ。

3)。 Splunk自体のセキュリティ。

4)。 サイトのメインページでの永遠に満足している人と最小限の技術情報。



そこで、設定することにしました。 サイトにアカウントを登録する必要がありました。その後、ubuntuに対応するパッケージをダウンロードしました(最初にホームマシンでhttp + MySQL + miniDLNA +ファイル+ qBitTorrentをテストしました)。 長い間説明しませんが、すべてうまくいきました。 生産を開始することが決定されました。



段階的なダウンロード:

1. Splunk * .rpm自体。

rpm -i *.rpm,





splunk start



サービスをsplunk start



ます

結論を読みました。 デフォルトのポートは8000です。

2. fromのリンク上の mod_securityのモジュール。 サイト。 完全に無料のモジュールと書かれています。

3.さらに、モジュールのパッケージ依存関係が示されました: amMapにアクセスMaxmindダウンロード

SideView UtilsGoogle Mapsを ダウンロードし ます 。 ダウンロードしてもかまいません。

4. mod_security自体のインストールも非常に簡単です。アプリ->アプリの管理->ファイルからアプリをインストールします。

追加のインストール。 モジュールはさらに悪いので、モジュールをSplunkディレクトリに展開する必要があります。 すべてが私のために現れ、splunkの再起動直後に獲得しました

5.アプリの管理を通じてインストールされるモジュールであるMySQL Monitorは、ボーナスを振りました。 ただし、彼の立ち上げは、Splunkとは別の場所を介して行われます。



起動時にSplunkスタートアップを追加します。

 echo "$SPLUNK/bin/splunk start" >> /etc/rc.local
      
      







最も興味深いことは、セットアップ時に開始されました。どこにも明確に記載されていないため、モジュールのインストールに関する最小限の手順がページに記載されています。

必要な後退。 Splunkは、特定のデータベース(インストールされているサーバーのハードディスクに保存されている)の検索エンジンとして配置されます。 TCP、UDP、スクリプト(明らかにスクリプトからデータを転送する)を介して、ファイル(データ入力)からの情報を接続することができます。 次に、データ入力を参照するインデックスを含むインデックスの概念があります。

mod_security情報収集モジュールのセットアップに戻りましょう。 動作を開始する必要があることが判明したため、Manager-> Data Inputsセクション(/var/log/httpd/modsec_audit.logがあります)でファイルからログのコレクションを入力する必要があります。







そのため、 mod_secur



という名前のデータ入力を作成しました

Manager-> Indexesに移動し、mod_securインデックスを作成します。これには、ファイルシステム内のSplunkデータベースの場所を指定する必要があります。 配信済み:

 Home path: $SPLUNK_DB/mod_sec_db/db Cold path: $SPLUNK_DB/mod_sec_db/dbcold Thawed path: $SPLUNK_DB/mod_sec_db/dbthawe
      
      







データ入力とインデックスが作成されると、モジュール設定のモジュール設定に移動しましたが、これはモジュールセクションのモジュール設定にはありませんでした。 およびManager-> Advanced Search-> Search Macrosで。



ウィンドウの左上部分で、データがMod_securityモジュールを参照していることを確認します(そうでない場合は、変数を探して、そこにある別のモジュールの変数の束を突いてみました)。

modsec_indexを「main」からインデックス「mod_secur」に変更します。modsec_srcには触れません。

これらの操作の後、システムはログの読み取りを開始し、1日以内に3日間のファイルが情報を収集します。 最上位のプロセスでは、Splunkがまったく表示されませんでした。最小限のリソースが食い尽くされるので、私は満足しています。

以下にスクリーンショットをいくつか示してから、MySQLモニターについて説明します。

タイムズのスクリーンショット



2つのスクリーンショット





mod_securityのモニターの作成者は、重要な情報(それが機能する有効化および無効化されたルールの出力)を完全に処理しなかったことを自分で追加します。



MySQLモニターのインストールは、デザインが私の魂の非常に深いところに目を引き裂くからという理由だけで、私の頭脳をより良くしました。





モニターを開くと、常にreadmeが表示されますが、再構成は見つかりませんでした。

このモジュールは、統計収集デーモンMySQlで構成されており、これも起動する必要があります。

ただし、最初にモジュール構成ファイル「$ SPLUNK_HOME / etc / apps / mysqlmonitor / bin / daemon / config.ini」を編集します。

 > cp config.ini.sample config.ini > cat config.ini [mysql] host=localhost port=3306 username=xxx password=xxx [splunk] host=localhost port=9936 [statusvars] interval=10 [slavestatus] interval=10 [tablestats] interval=3600 [processlist] interval=10
      
      





および接続されたサーバーファイル$ SPLUNK_HOME / etc / apps / mysqlmonitor / hosts.yaml

 > cp hosts.yaml.sample hosts.yaml > cat hosts.yaml Databases: db01: host: localhost username: xxx password: xxx
      
      







そして、あなたは悪魔を始めることができます。

 $SPLUNK_HOME/etc/apps/mysqlmonitor/bin/daemon start echo "$SPLUNK_HOME/etc/apps/mysqlmonitor/bin/daemon start " >> /etc/rc.local
      
      





システムにインストール済みに依存

•Python 2.6または2.7

•Python MySQLドライバー



情報収集は、Splunk自体で作成されるTCPソケット9936を介して機能します:マネージャー->データ入力-> TCP。 ソケット9936を作成します。





マネージャー->インデックス->新しいmysqlを作成します。これはmod_securityと完全に類似しています。

[マネージャー]-> [詳細検索]-> [検索マクロ]には移動しません。変更するものもありません。 すべてがうまくいきました。スクリーンショットをお持ちします(ちなみに、自動的に動作しません。検索ボタンをクリックする必要があります)。



UPD 04/29/2013:デーモンがクラッシュしてcron *に詰め込むことがあるため、このようなスクリプトを作成しました。

 cat mysql_mon.sh #!/bin/bash if ! [ -f / $SPLUNK_HOME/etc/apps/mysqlmonitor/bin/daemon/splunkmysql.pid ]; then echo "MySQL monitor PID-file is Dead. Restarting" $SPLUNK_HOME/etc/apps/mysqlmonitor/bin/daemon/splunkmysqlmonitor.py stop $SPLUNK_HOME/etc/apps/mysqlmonitor/bin/daemon/splunkmysqlmonitor.py start else read pid < $SPLUNK_HOME/etc/apps/mysqlmonitor/bin/daemon/splunkmysql.pid if ! `/bin/kill -0 "$pid"`; then echo "MySQL monitor process is Dead. Restarting" $SPLUNK_HOME/etc/apps/mysqlmonitor/bin/daemon/splunkmysqlmonitor.py stop $SPLUNK_HOME/etc/apps/mysqlmonitor/bin/daemon/splunkmysqlmonitor.py start fi fi echo "Mysql monitor now Working"
      
      





問題がPIDファイルにある場合、再起動は機能しないため、停止+開始。

$ SPLUNK_HOMEは、プログラムへのフルパスに変更します。









二。 3番目のチャート「スロークエリ」では、チャートの任意の部分をクリックしてリクエスト自体を見ることができます。





三。





ご清聴ありがとうございました!



All Articles