Apache HTTP サーバーレベルで 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 Application Firewall (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 "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>
-
また、リモートユーザーが Apache に直接アクセスしている場合や、remoteip_module (
[
1]
を参照)を使用して Apache 内で抽出および設定している場合は、mod_authz_core
の 必須 機能を直接使用できます(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]
code language-none # 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 サーバーを再起動します。