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を即座にブロックする場合は、次の手順に従います。
-
サーバー上に
block-offending-ips.confという名前のファイルを作成します。 -
エディターでファイルを開き、違反するすべてのIPがブロックする任意のURLにアクセスするのをブロックする場所ディレクティブを追加します。 ファイルの内容には、次の2つのオプションがあります。
-
リクエストが(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> -
または、リモートユーザーがApacheに直接アクセスしている場合、またはremoteip_module (
[1]を参照)を使用してApache内で抽出および設定する場合は、mod_authz_coreの Require 機能を直接使用できます(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>
- ファイル
block-offending-ips.confをApache Web サーバーの/etc/conf.dフォルダーにドロップします。 - Apache HTTP Serverを再起動します。