如何阻止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_core需要 功能(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