概要 #
以下の記事では、ISPまたはホスティングプロバイダの実際の使用例について説明します。HTTP/Sロードバランサリバースプロキシは、すべてのパブリックWebサービスへのアクセスの主要ポイントです。この構成では、ブラックリストのソースIPアドレスに基づいてWebアプリケーションを保護するための高度で強力なWAFルールセットを簡単に構成できます。 のVirtualHost 独自のブラックリストを管理し、1つのパブリックIPがWebドメインへの接続を禁止できるようにします。 www.company1.com しかし、接続が許可されている www.company2.com.
この記事は2つのセクションに分かれており、メインセクションではHTTPSプロファイルの設定が様々なサービスのリストを持つリバースプロキシとして機能し、2番目のセクションではHTTPSプロファイルの設定方法について説明します。 Webアプリケーションファイアウォール HTTP/S サービスごとに異なるブラックリストを管理するルールセット。
環境 #
次の図は、 RELIANOID WAFの内部構造。ご覧の通り、最初のレイヤーはWAFモジュールです。WAFモジュールの目的は、安全なリクエストのみがロードバランシングモジュールを通過し、バックエンドに転送されるように、初期段階で確実にすることです。
まず、HTTP 主催者 ヘッダーが評価され、クライアントIPが既に設定されているブラックリストでチェックされます。 主催者 ヘッダーとクライアントIPアドレスが一致すると接続が切断され、 禁断403 HTTPレスポンスはクライアントに送信されますが、クライアントIPと要求された 主催者 ヘッダーが一致しない場合、トラフィックは悪意のないものとして識別され、ロードバランサモジュールに渡され、HTTPリクエストに基づいて宛先が選択されます。 主催者 ヘッダーに記述され、最終的に利用可能なバックエンド サーバーに転送されます。
ここでは、指定された例の Web アプリケーション ファイアウォールの内部のスキーマを見つけることができます。
HTTP仮想サービスの構成 #
専用の 仮想IPアドレスこの例では 192.168.100.58、ブラウズして ネットワーク > 仮想インターフェース > 仮想インターフェースの作成 以下のように:
それでは、HTTPロードバランシングサービスの設定に移りましょう。 LSLB > 農場 そして、ボタンをクリックします 農場を作る 以下のように仮想サービスの詳細を入力します。
次に、 創造する.
上のタブをクリックします Services 管理するさまざまなウェブサイトと同じ数のサービスを作成するには、ボタンをクリックしてください 新サービス今回は、2つの異なるサービスを作成します。1つはサービスを管理するサービスです。 www.mycompany1.com そしてもう一つは www.mycompany2.com.
サービスが作成されたら、 仮想ホスト フィルターとバックエンドは以下の画像のようになります。
複数の Web サイトがある場合は、同じ IP アドレスから各 Web を管理するための専用サービスを 1 つ定義するために、サービスを追加するだけで済みます。
負荷分散の構成が完了したら、IPDS Web アプリケーション ファイアウォール モジュールを構成します。
ブラックリストの設定 #
ウェブサービスごとにブラックリストを作成し、アクセスをブロックするIPアドレスを各ブラックリストに登録します。この例では、次の名前の2つの異なるブラックリストを作成します。 ブラックリストマイカンパニー1 の三脚と ブラックリストマイカンパニー2それぞれサービスごとに 1 つずつ。
このブラックリストはパスに保存されます /usr/local/relianoid/config/ipds/blacklists/lists/Blacklistmycompany1.txt.
テスト用に2つのIPアドレスを用意しましたが、必要に応じてIPアドレスを追加してください。また、既存の ブラックリスト に選出しました。 IPDS モジュールが使用できます。
この2番目のブラックリストはパスに保存されます /usr/local/relianoid/config/ipds/blacklists/lists/Blacklistmycompany2.txt.
このブラックリストにはIPアドレスが含まれていることに注意してください 192.168.1.191この IP はテスト目的にのみ使用され、そこから HTTP リクエストが実行されます。
Web アプリケーション ファイアウォールのルールセット構成 #
この構成の目的は、ファーム アクセス ポイント全体で同じブラックリストが保持されることを避けるために、Web サイトごとに異なる IP ブラックリストを維持することです。
設定します ルールセットは、名前を持つルールのグループです ホスティングブラックリストこのルールセットは1000つのシンプルなルール(例ではルールID 1001とルールID XNUMX)で構成されます。各ルールは一致とアクションとして定義され、条件が一致した場合にアクションが実行されます。この例では、両方のルールで同じアクションを使用します。条件が一致した場合、 アクションを拒否 は、 403 アクセス拒否 応答。
に行く IPDS > WAF、次にクリックしてください WAFルールセットを作成する そして、説明的なルールセット名を設定します。この例では ホスティングブラックリスト.
フィールドを構成する デフォルトフェーズ 〜へ リクエストヘッダーが受信されましたこのフィールドは、WAF モジュールがクライアントからの受信リクエスト ヘッダーを分析することを意味します。
次に、タブに移動します ルール そして最初のものを作る ルール タイプの 行動 下記の通りです。
ルールセットの最初のルールが作成されました。ブラックリスト内のクライアントIPを各ルールに一致させるための条件を作成しましょう。 主催者 ヘッダーへ移動 の賃貸条件 そしてそれに応じて条件を作成します REMOTE_ADDR 変数は以下に示すようになります。
次に別の条件を作成します 仮想ホスト に応じて一致する SERVER_NAME 次のような変数:
この時点で、最初のホストされたウェブサイト www.mycompany1.com ウェブアプリケーションのブラックリストIPアドレスを、すでに設定されているブラックリストから管理します。 ブラックリストmycompany1.txt.
2番目のウェブサイトに別のルールを作成しましょう www.mycompany2.com 前回のルール設定と同じ設定を繰り返しますが、この場合は、 SERVER_NAME 〜へ mycompany2.com 以下の点を参考にしてください ブラックリスト2.txt.
複合 WAF ルールセットの全体的な構成を確認します。
最後に、このルールセットを既に作成したファームに追加し、タブに移動します 農場 農場を移転する ホスティングこの例では、 有効な農場 セクションを以下に示します。
ファームのWAFルールセットを起動し、アクションをクリックします プレイ このウィンドウの左上のセクションで、システムはファームのHTTPトラフィックのフィルタリングを開始します。 ホスティング.
Web アプリケーション ファイアウォール ルールセットのテスト #
クライアントIP 192.168.1.191 ウェブサイトをリクエストします http://www.mycompany1.com の三脚と http://www.mycompany2.com そして、私たちの設定によれば、WAFシステムは同じ名前の最初のサービスへの接続を許可しますが、接続は拒否されます。 mycompany2.com このIPは名前のブラックリストに含まれているため ブラックリストマイカンパニー2.
IP アドレス 192.168.1.191 から VIP へ、ロード バランサーを介して Web サイト www.mycompany1.com を要求します。
root@192.168.1.191:# curl -H "Host: www.mycompany1.com" http://192.168.100.58 -v * URL を http://192.168.100.58/ に再構築しました * 192.168.100.58 を試行しています... * TCP_NODELAY が設定されました * 192.168.100.58 (192.168.100.58) ポート 80 (#0) に接続しました > GET / HTTP/1.1 > Host: www.mycompany1.com > User-Agent: curl/7.52.1 > Accept: */* > HTTP / 1.1 200 OK < サーバー: nginx/1.10.3 < 日付: 10年2019月15日(火) 36:22:11383 GMT < コンテンツタイプ: text/html < コンテンツ長: 13 < 最終更新日: 2018年11月01日(木) 49:5:123 GMT < 接続: keep-alive < ETag: "1c2c77d-XNUMXcXNUMX" < Accept-Ranges: bytes
IP アドレス 192.168.1.191 から VIP へ、ロード バランサーを介して Web サイト www.mycompany2.com を要求します。
root@192.168.1.191:# curl -H "Host: www.mycompany2.com" http://192.168.100.58 -v * URL を http://192.168.100.58/ に再構築 * 192.168.100.58 を試行中... * TCP_NODELAY 設定 * 192.168.100.58 (192.168.100.58) ポート 80 (#0) に接続しました > GET / HTTP/1.1 > Host: www.mycompany2.com > User-Agent: curl/7.52.1 > Accept: */* > * HTTP 1.0、本文の後に閉じることを想定 HTTP/1.0 403 リクエストは禁止されています < コンテンツタイプ: text/html < コンテンツ長: 17 < 有効期限: 今すぐ < プラグマ: no-cache < キャッシュ制御: no-cache,no-store < * Curl_http_done: 早期に呼び出されました == 0 * 接続を閉じています 0 応答: forbiddenp
一度 禁断の 応答が生成されると、WAF モジュールはロードバランサーの Syslog ファイルに拒否を通知します。
root@zva6000:# tail -f /var/log/syslog Sep 10 15:38:44 zva6000 pound: Hosting、ModSecurity: 警告。変数`SERVER_NAME' (値: `www.mycompany2.com') に対してパラメータ`mycompany2.com'を持つ演算子`StrMatch'が一致しました [ファイル "/usr/local/relianoid/config/ipds/waf/sets/HostingBlacklisting.conf"] [行 "17"] [ID "1001"] [リビジョン ""] [メッセージ "カスタムマッチ2"] [データ ""] [重大度 "0"] [バージョン ""] [成熟度 "0"] [精度 "0"] [ホスト名 "192.168.100.58"] [URI "/"] [ユニークID "156812992458.770641"] [参照 "v0,13v21,18"] 10月15日 38:44:6000 zva2 pound: Hosting, [WAF,サービス mycompany192.168.100.22, バックエンド 80:7,] (6f3cfac700c192.168.1.191) [クライアント 403] ModSecurity: アクセスがコード 1 (フェーズ 2) で拒否されました。「演算子 `StrMatch'、パラメータ `mycompany2.com' が変数 `SERVER_NAME' (値: `www.mycompany17.com') と一致しました。[ファイル "/usr/local/relianoid/config/ipds/waf/sets/HostingBlacklisting.conf"] [行 "1001"] [ID "2"] [リビジョン ""] [メッセージ "カスタムマッチ 0"] [データ ""] [重大度 "0"] [バージョン ""] [成熟度 "0"] [精度 "192.168.100.58"] [ホスト名 "156812992458.770641"] [uri "/"] [unique_id "0,13"] [ref "v21,18v10"] 15月38日 44:6:1 zva2ktpl192.168.100.25 pound: ホスティング、サービス mycompany80、バックエンド 7:6、(3f700cfac192.168.1.191cXNUMX) WAF は XNUMX からのリクエストを拒否しました
HTTP/S ディープ パケット インスペクション技術を使用して、Web アプリケーションを保護するためのカスタム ファイアウォール ルールセットを構築できるようになりました。












