如何在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

大部分的Web應用程式防火牆(WAF),例如模組安全性,可能會封鎖IP位址清單。

但是,如果您執行Apache HTTP Server並希望立即封鎖IP,請按照以下步驟操作:

  1. 在您的伺服器上建立名為block-offending-ips.conf的檔案。

  2. 在編輯器中開啟檔案,並新增Location指示詞,以封鎖所有違反規定的IP存取您想要封鎖的URL。  以下檔案的內容有兩個選項:

    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]

      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>
      
  3. 將檔案block-offending-ips.conf拖放到Apache Web Server的/etc/conf.d資料夾中。

  4. 重新啟動Apache HTTP Server。

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