温馨提示×

Ubuntu Apache2怎样实现防盗刷

小樊
61
2025-09-19 13:30:34
栏目: 智能运维

Ubuntu Apache2实现防盗刷的综合方案

1. 使用Fail2Ban监控并封禁恶意IP

Fail2Ban是一款入侵防御工具,通过分析Apache日志(如access.log)识别频繁的失败请求(如401未授权),自动封禁恶意IP地址。

  • 安装Fail2Ban:运行sudo apt update && sudo apt install fail2ban安装。
  • 配置Fail2Ban:编辑/etc/fail2ban/jail.local,添加以下内容:
    [DEFAULT]
    bantime = 600    # 封禁时间(秒)
    findtime = 600   # 检测时间窗口(秒)
    maxretry = 3    # 允许的最大失败次数
    [apache-auth]
    enabled = true
    filter = apache-auth
    action = iptables-multiport[name=Apache, port="http,https", protocol=tcp]
    logpath = /var/log/apache2/access.log
    
  • 创建过滤器:编辑/etc/fail2ban/filter.d/apache-auth.conf,定义失败请求的正则表达式:
    [Definition]
    failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*" 401
    ignoreregex =
    
  • 重启服务sudo systemctl restart fail2ban使配置生效。

2. 部署ModSecurity Web应用防火墙(WAF)

ModSecurity是一款开源WAF,可检测并阻止SQL注入、XSS、暴力破解等恶意请求,提升网站安全性。

  • 安装ModSecurity:运行sudo apt update && sudo apt install libapache2-mod-security2安装。
  • 启用模块sudo a2enmod security2启用ModSecurity。
  • 配置规则:编辑/etc/modsecurity/modsecurity.conf,添加基础防护规则:
    SecAction \
      "phase:1,\
      nolog,\
      pass,\
      ctl:ruleEngine=On,\
      id:1000001,\
      tag:'OWASP_CRS/WEB_ATTACK/REQUEST_RATE_LIMIT',\
      setvar:'ip.req_rate_limit=5/m',\
      setvar:ip.req_rate_limit_burst=10,\
      expirevar:ip.req_rate_limit=60m"
    
  • 重启Apachesudo systemctl restart apache2应用配置。

3. 使用ModEvasive限制访问频率

ModEvasive专门用于防止DoS、DDoS及暴力破解攻击,通过限制单个IP的请求频率封禁异常流量。

  • 安装模块sudo apt install libapache2-mod-evasive安装。
  • 配置参数:编辑/etc/apache2/mods-enabled/evasive.conf,设置以下阈值:
    DOSHashTableSize    3097    # 哈希表大小(存储IP请求信息)
    DOSPageCount        2       # 单个页面1秒内允许的最大请求数
    DOSSiteCount        50      # 单个网站1秒内允许的最大总请求数
    DOSPageInterval     1       # 页面请求的时间间隔(秒)
    DOSSiteInterval     1       # 网站请求的时间间隔(秒)
    DOSBlockingPeriod   10      # 触发封禁后,IP被阻止的时间(秒)
    
  • 启用模块sudo a2enmod evasive启用,然后sudo systemctl restart apache2重启服务。

4. 利用ModRewrite实现防盗链与访问控制

ModRewrite模块可通过URL重写规则,防止资源被盗链(如图片、CSS、JS)及限制特定IP访问。

  • 启用模块sudo a2enmod rewrite启用ModRewrite。
  • 配置规则:编辑虚拟主机配置文件(如/etc/apache2/sites-available/000-default.conf),添加以下内容:
    <VirtualHost *:80>
      ServerAdmin webmaster@localhost
      DocumentRoot /var/www/html
      RewriteEngine On
      # 防盗链:禁止非本站域名引用图片资源
      RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain\.com [NC]
      RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain\.co\.uk [NC]
      RewriteRule \.(jpg|jpeg|png|gif|ico|css|js)$ - [F,L]
      # 限制特定IP访问(如后台路径)
      RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.100$
      RewriteRule ^admin - [F,L]
    </VirtualHost>
    
  • 重启服务sudo systemctl restart apache2使规则生效。

5. 启用Apache限速模块(ModRateLimit)

ModRateLimit可限制客户端发送请求的带宽或速率,防止滥用带宽或频繁请求。

  • 安装模块sudo apt install libapache2-mod-ratelimit安装。
  • 配置限速:编辑/etc/apache2/mods-available/ratelimit.conf,添加以下内容:
    <IfModule mod_ratelimit.c>
      <Location "/">
        SetOutputFilter RATE_LIMIT
        SetEnv rate-limit 50    # 每秒允许的最大字节数(50KB/s)
        SetEnv rate-initial-burst 100  # 初始突发字节数(100KB)
      </Location>
    </IfModule>
    
  • 启用模块sudo a2enmod ratelimit启用,然后sudo systemctl restart apache2重启服务。

6. 结合Cloudflare CDN增强防护

Cloudflare作为CDN服务,可隐藏服务器真实IP、过滤恶意流量(如DDoS、SQL注入),并提供Web应用防火墙(WAF)功能。

  • 注册与配置
    1. 注册Cloudflare账户,添加域名并修改DNS解析至Cloudflare提供的NS记录。
    2. 开启“防火墙”→“防护规则”,启用“基础防护”(针对常见攻击模式)。
    3. 进入“速度”→“优化”,开启“Auto Minify”(压缩代码)和“Brotli”(高效压缩)提升性能。
  • 效果:Cloudflare会拦截大部分恶意请求,减轻Apache服务器的压力。

0