HTTPおよびHTTPSアプリケーションのWebアプリケーションファイアウォールセキュリティ保護

投稿者 Zevenet | 10年2019月XNUMX日

概要

次の記事では、ISPまたはホスティングプロバイダーの実際のユースケースについて説明します。HTTP/ Sロードバランサーリバースプロキシは、すべてのパブリックWebサービスへの主要なアクセスポイントであり、この構成は、高度で強力なWAFの構成がいかに簡単かを示していますブラックリストの送信元IPアドレスに基づいてWebアプリケーションを保護するためのルールセット のVirtualHost 次のようなWebドメインへの接続を1つのパブリックIPで禁止できるように、独自のブラックリストを管理します www.company1.com に接続することを許可 www.company2.com.

この記事では2つのセクションに焦点を当てます。メインセクションでは、HTTPSプロファイルの構成がさまざまなサービスのリストを持つリバースプロキシとして機能し、2番目のセクションでは、 Webアプリケーションファイアウォール HTTP / Sサービスごとに異なるブラックリストを管理するルールセット。

環境

次の図は、Zevenet WAFの内部を示しています。 示されているように、最初のレイヤーはWAFモジュールであり、その目標は、安全な要求のみがロードバランシングモジュールにパススルーされ、バックエンドに要求を転送できるようにすることです。

まず、HTTP ホスト ヘッダーが評価され、クライアントIPが既に構成されたブラックリストでチェックされます。 もし ホスト ヘッダーとクライアントIPアドレスが一致すると、接続はドロップされ、 禁断403 HTTP応答はクライアントに送信されますが、クライアントIPが要求された場合 ホスト ヘッダーが一致しない場合、トラフィックは悪意がないと識別され、ロードバランサーモジュールに渡されます。ここで、宛先はHTTP要求に基づいて選択されます ホスト ヘッダーと最終的に利用可能なバックエンドサーバーに転送されます。

ここでは、特定の例のWebアプリケーションファイアウォール内部のスキーマを見つけることができます。

zevenet IPDS WAF

HTTP仮想サービスの構成

専用の構成 仮想IPアドレス、この例では 192.168.100.58、参照して ネットワーク>仮想インターフェース>仮想インターフェースの作成 以下のように:

Zevenet Create VIP

次に、HTTPロードバランシングサービスを設定して、 LSLB>農場 そして、ボタンをクリックします ファームを作成する 次に示すように、仮想サービスの詳細を入力します。

Zevenet Create Hosting HTTP Farm

次に、 作ります.

上部のタブをクリックします サービス 管理するさまざまなウェブサイトと同じ数のサービスを作成しますボタンをクリックします 新サービス、この場合、2つの異なるサービスを作成します。1つは www.mycompany1.com もう一つ www.mycompany2.com.

Zevenet Create Service HTTP

サービスが作成されたら、追加します 仮想ホスト 下の画像に示されているように、フィルタとバックエンド。

Zevenet HTTPサービスの構成

複数のWebサイトがある場合、1つの専用サービスを定義して同じIPアドレスから各Webを管理するために、サービスを追加するだけで済みます。

これで、負荷分散の構成が完了しました。IPDSWebアプリケーションファイアウォールモジュールを構成できます。

ブラックリスト設定

各ブラックリストに目的のIPアドレスを入力してアクセスをブロックするために、Webサービスごとに1つのブラックリストを作成します。 この例では、名前を持つ2つの異なるブラックリストを作成します blacklistmycompany1blacklistmycompany2、サービスごとに1つ。

Zevenet IPDS Blacklist1

このブラックリストはパスに保存されます /usr/local/zevenet/config/ipds/blacklists/lists/Blacklistmycompany1.txt.

テスト目的で2 IPアドレスを含めました。必要な数のIPを追加することを検討してください。 また、既存の ブラックリスト IPDS モジュールを使用できます。

Zevenet Create IPDS Blacklist2

この2番目のブラックリストはパスに保存されます /usr/local/zevenet/config/ipds/blacklists/lists/Blacklistmycompany2.txt.

このブラックリストにIPアドレスが含まれていることを考慮してください 192.168.1.191、このIPはテスト目的でのみ使用され、そこからHTTPリクエストを実行します。

Webアプリケーションファイアウォールルールセットの構成

この構成の目的は、ファームアクセスポイント全体で同じブラックリストを保持することを避けるために、Webサイトごとに異なるIPブラックリストを維持することです。

設定します ルールセット、名前付きのルールのグループ ホスティング。 このルールセットは2つの単純なルール(この例ではルールID 1000とルールID 1001)で構成され、各ルールは一致とアクションとして定義され、条件が一致するとアクションが実行されます。 この例では、条件が一致する場合、両方のルールで同じアクションを使用します アクションを拒否 で実行されます 403アクセスが拒否されました 応答。

次のURLに行きます。 IPDS> WAF、次にクリックしてください WAFルールセットを作成する この例では、説明的なルールセット名を設定します ホスティング.

フィールドを構成する デフォルトフェーズ 〜へ リクエストヘッダを受信。 このフィールドは、WAFモジュールがクライアントからの着信要求ヘッダーを分析することを意味します。

Zevenet IPDS Create WAFルールセット

次に、タブに移動します キャンペーンのルール そして最初の ルール タイプの アクション 以下に示すように。

Zevenet IPDS Create WAFルールセット

これで、ルールセットの最初のルールが作成され、各ブラックリストのクライアントIPに一致するための条件を作成できます ホスト ヘッダ。 に行く 条件 に従って条件を作成します REMOTE_ADDR 以下に示すように変数。

Zevenet IPDSブラックリストマッチ

次に、別の条件を作成します 仮想ホスト 一致する SERVER_NAME 次のような変数:

Zevenet IPDS SERVER_NAMEの一致

この時点で、最初にホストされているWebサイト www.mycompany1.com すでに設定されているブラックリストからWebアプリケーションブラックリストIPアドレスを管理します。 Blacklistmycompany1.txt.

2番目のWebサイト用に別のルールを作成しましょう www.mycompany2.com 前のルール設定と同じ設定を繰り返しますが、この場合、変更する必要があります SERVER_NAME 〜へ mycompany2.com 以下を参照してください blacklist2.txt.

複合WAFルールセットの構成全体を確認します。

Zevenet IPDS WAFルールセット構成全体

最後に、このルールセットを既に作成されているファームに追加し、タブに移動します 農場 農場を移動します ホスティング、この例では、 有効なファーム セクションを以下に示します。

Zevenet IPDS WAF-ファームの割り当て

ファームのWAFルールセットを開始し、アクションをクリックします 遊びます このウィンドウの左上のセクションで、システムはファームのHTTPトラフィックのフィルタリングを開始します ホスティング.

Webアプリケーションファイアウォールルールセットのテスト

クライアントIP 192.168.1.191 ウェブサイトをリクエストします http://www.mycompany1.comhttp://www.mycompany2.com そして、私たちの構成によると、WAFシステムは同じ名前の最初のサービスへの接続を許可しますが、接続は拒否されます mycompany2.com このIPは名前付きのブラックリストに含まれているため ブラックリストmycompany2.

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
* Rebuilt URL to: http://192.168.100.58/
*   Trying 192.168.100.58...
* TCP_NODELAY set
* Connected to 192.168.100.58 (192.168.100.58) port 80 (#0)
> GET / HTTP/1.1
> Host: www.mycompany1.com
> User-Agent: curl/7.52.1
> Accept: */*
> 
< HTTP/1.1 200 OK
< Server: nginx/1.10.3
< Date: Tue, 10 Sep 2019 15:36:22 GMT
< Content-Type: text/html
< Content-Length: 11383
< Last-Modified: Thu, 13 Dec 2018 11:01:49 GMT
< Connection: keep-alive
< ETag: "5c123c1d-2c77"
< 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
* Rebuilt URL to: http://192.168.100.58/
*   Trying 192.168.100.58...
* TCP_NODELAY set
* Connected to 192.168.100.58 (192.168.100.58) port 80 (#0)
> GET / HTTP/1.1
> Host: www.mycompany2.com
> User-Agent: curl/7.52.1
> Accept: */*
> 
* HTTP 1.0, assume close after body
< HTTP/1.0 403 Request forbidden
< Content-Type: text/html
< Content-Length: 17
< Expires: now
< Pragma: no-cache
< Cache-control: no-cache,no-store
< 
* Curl_http_done: called premature == 0
* Closing connection 0
replied forbiddenp

一度 禁断の 応答が生成されると、WAFモジュールはロードバランサーのSyslogファイルで拒否を通知します。

root@zva6000:# tail -f /var/log/syslog
Sep 10 15:38:44 zva6000 pound: Hosting, ModSecurity: Warning. Matched "Operator `StrMatch' with parameter `mycompany2.com' against variable `SERVER_NAME' (Value: `www.mycompany2.com' ) [file "/usr/local/zevenet/config/ipds/waf/sets/HostingBlacklisting.conf"] [line "17"] [id "1001"] [rev ""] [msg "Custom Match 2"] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "192.168.100.58"] [uri "/"] [unique_id "156812992458.770641"] [ref "v0,13v21,18"]
Sep 10 15:38:44 zva6000 pound: Hosting, [WAF,service mycompany2, backend 192.168.100.22:80,] (7f6cfac3c700) [client 192.168.1.191] ModSecurity: Access denied with code 403 (phase 1). Matched "Operator `StrMatch' with parameter `mycompany2.com' against variable `SERVER_NAME' (Value: `www.mycompany2.com' ) [file "/usr/local/zevenet/config/ipds/waf/sets/HostingBlacklisting.conf"] [line "17"] [id "1001"] [rev ""] [msg "Custom Match 2"] [data ""] [severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "192.168.100.58"] [uri "/"] [unique_id "156812992458.770641"] [ref "v0,13v21,18"]
Sep 10 15:38:44 zva6ktpl1 pound: Hosting, service mycompany2, backend 192.168.100.25:80, (7f6cfac3c700) WAF denied a request from 192.168.1.191

HTTP / Sディープパケットインスペクション技術を使用して、Webアプリケーションを保護するカスタムファイアウォールルールセットを構築できるようになりました。

関連記事

https://www.zevenet.com/knowledge-base/enterprise-edition/enterprise-edition-v6-0-administration-guide/v6-0-ipds-waf-update/

上の共有:

GNU Free Documentation Licenseの条項に基づくドキュメンテーション。

この記事は役に立ちましたか?

関連記事