NGINXの保護-NAXSI

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;
      
      







これらのコマンドの意味をさらに詳しく調べてみましょう。



ホワイトリストは、トレーニングモードに基づいて、またはログファイルの分析を通じて作成できます。



ルールとリストの操作方法、および統計とベンチマークの監視方法については、次の記事で説明します。



NAXSIに興味がある場合は、 プロジェクトWikiで優れたドキュメントを読むことができます。



All Articles