問題

サイトが DoS 攻撃、スパムまたはハッキングの被害に遭っています。Apache HTTP Server(AEM Dispatcher)レベルで IP アドレスをブロックするには、どうすればよいですか。

解決策

ModSecurity などのほとんどの Web アプリケーションファイアウォール(WAF)では、IP アドレスのリストをブロックできます。ただし、Apache HTTP Server を運用しており、すぐに IP アドレスをブロックしたい場合は、次の手順を実行してください。

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

  2. エディターでそのファイルを開き、攻撃元のすべての IP アドレスから指定した URL へのアクセスをブロックする Location ディレクティブを追加します。  以下のファイルのコンテンツには 2 つのオプションがあります。

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

    <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)を直接使用できます。

    <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]

    # 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>
  3. block-offending-ips.conf ファイルを、Apache Web サーバーの /etc/conf.d フォルダーにドロップします。

  4. Apache HTTP Server を再起動します。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

リーガルノーティス   |   プライバシーポリシー