Apache HTTP サーバーレベルで IP アドレスをブロックする方法

Apache HTTP サーバーレベルで IP アドレスをブロックする方法を説明します。 ブロックする IP を含む.conf ファイルを Apache web サーバーの/etc/conf.d フォルダーに作成します。

説明 description

環境

Adobe Experience Manager

問題/症状

当社のサイトでサービス拒否攻撃、スパム、ハッキングが発生しています。 Apache HTTP Server (AEM Dispatcher)レベルで IP アドレスをブロックする方法

解決策 resolution

Mod セキュリティなどのほとんどの Web Application Firewall (WAF)は、IP アドレスをブロックリストできます。 ただし、Apache HTTP Server を実行中に IP のをブロックする場合は、次の手順に従います(AEM as a Cloud Serviceでは適用されません

  1. サーバーに block-offending-ips.conf という名前のファイルを作成します。

  2. ファイルをエディターで開き、問題のあるすべての IP がブロックする場所ディレクティブを追加して、ブロックしたい URL にアクセスできないようにします。 ファイルの内容に関する以下の 2 つのオプションがあります。
    A. リクエストが(CDN、ロードバランサーなどを介して)プロキシ化され、リモートユーザーの IP が X-Forwarded-For などのヘッダーにのみ存在する場合、この設定を使用できます。 remoteip_module が設定されている場合、この設定は適用されないことに注意してください。

    code language-none
    LocationMatch "/.*"
        Order Allow,Deny
        Allow from all
        SetEnvif X-Forwarded-For "10\.42\.137\.123" DenyAccess
        SetEnvif X-Forwarded-For "122\.6\.218\.101" DenyAccess
        #Repeat the "SetEnvlf X-Forwarded-For ..." for each IP you want to block
        Deny from env=DenyAccess
        /LocationMatch
    

    B.または、リモートユーザーが Apache に直接アクセスしている場合、または remoteip_module (以下の [1] を参照)を使用して Apache 内で抽出および設定している場合は、mod_authz_core の Require 機能を直接使用できます(Apache 2.4)。

    code language-none
    LocationMatch "/.*"
        RequireAll
        Require all granted
        Require not ip 10.42.137.123
        Require not ip 122.6.218.101
        #Repeat the "Require not ip ..." for each IP you want to block
        /RequireAll
        /LocationMatch
    

    [ 1] remoteip_module

    code language-none
    # Extract true client IP from header added by load balancer/CDN
        IfModule remotetip module
        # valid for ELB or ELB+CloudFront
        RemoteIPHeader X-Forwarded-For
        IfModule
    
  3. Apache web サーバーの/etc/conf.d フォルダーに block-offending-ips.conf ファイルをドロップします。

  4. Apache HTTP サーバーを再起動します。

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f