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

ほとんどのWeb アプリケーションファイアウォール(WAF)では、IP アドレスのブロックリストを使用できます。 ただし、Apache HTTP Serverを実行しており、IPをすぐにブロックしたい場合は、記事の手順に従ってアクセスリストを作成するか、ApacheのRequire機能を使用してください。

説明 description

環境

Adobe Experience Manager(AEM)

問題

サイトでサービス拒否(DoS)攻撃、スパム、またはハッキングされた場合、Apache HTTP Server (AEM Dispatcher)レベルでどのようにIP アドレスをブロックしますか?

解決策 resolution

Mod セキュリティなど、ほとんどのWeb アプリケーションファイアウォール(WAF)では、IP アドレスのブロックリストが可能です。

ただし、Apache HTTP Serverを実行しており、IPを即座にブロックする場合は、次の手順に従います。

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

  2. エディターでファイルを開き、違反するすべてのIPがブロックする任意のURLにアクセスするのをブロックする場所ディレクティブを追加します。  ファイルの内容には、次の2つのオプションがあります。

    1. リクエストが(CDN、ロードバランサーなどを介して)プロキシ化され、リモートユーザーのIPがX-Forwarded-Forなどのヘッダーにしかない場合、この設定を使用できます。  remoteip_moduleが設定されている場合、この設定は適用されないことに注意してください。

      code language-none
      <LocationMatch "/.*">
      Order Allow,Deny
      Allow from all
      SetEnvif X-Forwarded-For "123\.123\.123\.123" DenyAccess
      #Repeat the "SetEnvlf X-Forwarded-For ..." for each IP you want to block
      Deny from env=DenyAccess
      </LocationMatch>
      
    2. または、リモートユーザーがApacheに直接アクセスしている場合、またはremoteip_module ([ 1]を参照)を使用してApache内で抽出および設定する場合は、mod_authz_coreRequire 機能を直接使用できます(Apache 2.4)。

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

      [ 1]

# Extract true client IP from header added by load balancer/CDN
<IfModule remoteip_module>
    # valid for ELB or ELB+CloudFront
    RemoteIPHeader X-Forwarded-For
</IfModule>
  1. ファイル block-offending-ips.confをApache Web サーバーの/etc/conf.d フォルダーにドロップします。
  2. Apache HTTP Serverを再起動します。
recommendation-more-help
experience-cloud-kcs-help-kbarticles