NAXSIとは何ですか?
NAXSI = N GINX A NTI X SS& S QLインジェクション
簡単に言えば、これはXSS、SQLインジェクション、CSRF、ローカルおよびリモートファイルのインクルージョンに対する保護に役立つNGINXのWebアプリケーションファイアウォール(WAF)です。
その特徴的な機能は、セットアップの速度と容易さです。 これにより、 mod_securityやapacheなどの優れた代替手段になります。
なぜNAXSIが必要なのですか?
明らかに、正しく記述されたコードを使用して上記の攻撃から防御することが最善です。 ただし、WAF(および特にnaxsi)が役立つ状況があります。
- サイトコードの質の低さ。すべてを破棄して正常に書き換える能力/リソースがない場合。
- エラーを修正することが不可能な「クローズ」コード。
- ビジネスに不可欠な領域での未知のコード品質。
設置
Ubuntu、Debian、Netbsd、Freebsd :パッケージとして入手可能。
たとえば、サーバーubunt 12.04では、それで十分です
apt-get install nginx-naxsi
その他のLinuxシステム:
パッケージがまだ登場していない場合、ソースからnginx + naxsiを収集します。
wget http://nginx.org/download/nginx-xxxx.tar.gz wget http://naxsi.googlecode.com/files/naxsi-x.xx.tar.gz tar xvzf nginx-xxxx.tar.gz tar xvzf naxsi-x.xx.tar.gz cd nginx-xxxx/
(xxxxの代わりに-現在のバージョンを入れてください)
libpcre依存関係(オプション、httpsのlibssl)があることを確認し、コンパイルします。
./configure --add-module=../naxsi-x.xx/naxsi_src/ [ nginx] make make install
NAXSIの仕組み
NAXSIは、GET要求、HTTPヘッダー(Cookieなど)、およびPOST要求の本文をルールセットに対してチェックできます。
基本的な禁止ルールのセットは非常に単純で 、さまざまな「危険な」文字とsqlキーワードを禁止します。
この一連のルールは非常に厳しく、場合によってはサイトの正しい操作を妨げる可能性があるため、NAXSIには、必要なコンテキストで禁止文字(ルール)を使用できるホワイトリストがあります。
リクエストをチェックするとき、そのコンテキストのホワイトリストにあるものを除き、すべての禁止ルールに従って実行され、「ペナルティ」ポイントは6つのカテゴリで計算されます:$ SQL、$ XSS、$ RFI、$ TRAVERSAL、$ EVADE、$ UPLOAD。
「ペナルティ」ポイントの数がしきい値レベルを超えている場合、要求は危険と見なされ、構成で指定されたDeniedUrlへの内部(nginx用)リダイレクトが実行されます。 ブロッキングの理由に関するget-parameters包括的な情報の形式で、アグレッサの元のURLとIPが指定されたURLに送信されます。 指定されたアドレスで、403を返すことができます。 または、NIDSシステムに攻撃に関する情報を蓄積します。
NAXSIは、「学習」モードと「戦闘」モードで動作できます。
学習モードでは、NAXSI自体がユーザーアクティビティに基づいて一連のホワイトリストを準備できます。 簡単に言えば、ユーザーが同じURLのルールの1つにしばしば違反する場合、ルールはホワイトリストに登録され、ブロックされません。 これらのリストは、卒業後に確認および調整する価値があります。
戦闘モードでは、違反は単にDeniedUrlにつながります。
NAXSIの構成
基本的な制限ルールを含めるためにnginx設定のコメントを外します
include /etc/nginx/naxsi_core.rules;
ここで、目的の設定を仮想ホスト構成に追加します(これらを個別のファイルに入れ、includeを介して接続することをお勧めします)
LearningMode; SecRulesEnabled; DeniedUrl "/RequestDenied"; #include "/etc/nginx/mynaxsi.rules"; ## check rules CheckRule "$SQL >= 8" BLOCK; CheckRule "$RFI >= 8" BLOCK; CheckRule "$TRAVERSAL >= 4" BLOCK; CheckRule "$EVADE >= 4" BLOCK; CheckRule "$XSS >= 8" BLOCK;
これらのコマンドの意味をさらに詳しく調べてみましょう。
- LearningMode-学習モードはオンです。 要求はブロックされず、ホワイトリストが生成されます。
- SecRulesEnabled-この場所ではNAXSIが有効になっています。 別の場所(たとえば、保護された内部ゾーン)でオフにしたい場合は、SecRulesDisabledを作成します。
- DeniedURL-禁止されたリクエストのリダイレクトURL。
- CheckRule-カテゴリごとにリクエストの「ペナルティポイント」をチェックします。
- /etc/nginx/mynaxsi.rules-生成されたルール(まだ生成されていない-コメント化されています)。
ホワイトリストは、トレーニングモードに基づいて、またはログファイルの分析を通じて作成できます。
ルールとリストの操作方法、および統計とベンチマークの監視方法については、次の記事で説明します。
NAXSIに興味がある場合は、 プロジェクトWikiで優れたドキュメントを読むことができます。