温馨提示×

如何在Ubuntu上配置Apache防盗篡改

小樊
40
2025-11-23 08:12:05
栏目: 智能运维

在 Ubuntu 上,保护 Apache 站点内容不被未授权访问或篡改,通常要同时做“访问控制、篡改防护、攻击缓解、完整性校验与快速恢复”四个层面的工作。下面给出一套可直接落地的配置方案。


一 基础防护与访问控制

  • 更新系统与启用防火墙
    • 执行:sudo apt update && sudo apt upgrade -y
    • 放行 Web 端口:sudo ufw allow 'Apache Full' && sudo ufw enable
  • 禁用目录列表与保护敏感文件
    • 在站点或全局配置中加入:
      Options -Indexes
      <FilesMatch "\.ht">
          Require all denied
      </FilesMatch>
      
  • 强制使用 HTTPS(Let’s Encrypt 示例)
    • 安装与签发:sudo apt install certbot python3-certbot-apache
    • 签发证书:sudo certbot --apache -d example.com
  • 限制管理入口与敏感目录
    • 示例(将管理路径限制为内网):
      <Directory "/var/www/html/admin">
          Require ip 192.168.1.0/24
      </Directory>
      
  • 文件与目录权限
    • 原则:网站文件 644、目录 755、Web 运行用户(如 www-data)为所有者或具备相应组权限;上传目录禁止脚本执行(如 php)。
    • 示例:
      sudo find /var/www/html -type d -exec chmod 755 {} \;
      sudo find /var/www/html -type f -exec chmod 644 {} \;
      sudo chown -R www-data:www-data /var/www/html
      sudo chmod 750 /var/www/html/uploads
      sudo find /var/www/html/uploads -type f -exec chmod 640 {} \;
      sudo find /var/www/html/uploads -type d -exec chmod 750 {} \;
      

以上措施可显著降低未授权访问与信息泄露风险,并为后续防篡改与完整性校验打基础。


二 防篡改与攻击缓解

  • 启用核心防护模块
    • 安装与启用常用模块:sudo a2enmod rewrite headers evasive ssl
  • 基础 WAF 能力(ModSecurity CRS)
    • 安装:sudo apt install libapache2-mod-security2
    • 启用 OWASP CRS(示例):
      sudo mv /usr/share/modsecurity-crs /etc/modsecurity/
      sudo ln -s /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
      echo "IncludeOptional /etc/modsecurity/modsecurity.conf" | sudo tee -a /etc/apache2/apache2.conf
      echo "Include /etc/modsecurity/crs/crs-setup.conf" | sudo tee -a /etc/apache2/apache2.conf
      echo "Include /etc/modsecurity/crs/rules/*.conf" | sudo tee -a /etc/apache2/apache2.conf
      
  • 防暴力与 DoS(mod_evasive)
    • 配置示例(/etc/apache2/mods-available/evasive.conf):
      <IfModule mod_evasive20.c>
          DOSHashTableSize    3097
          DOSPageCount        2
          DOSSiteCount        50
          DOSPageInterval     1
          DOSSiteInterval     1
          DOSBlockingPeriod   10
      </IfModule>
      
  • 基础防刷与资源保护(mod_rewrite 防盗链)
    • 站点配置中加入(将 yourdomain.com 替换为你的域名):
      RewriteEngine On
      RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC]
      RewriteCond %{HTTP_REFERER} !^$
      RewriteRule \.(jpg|jpeg|png|gif|ico|css|js)$ - [F,L]
      
  • 自动化封禁恶意来源(fail2ban)
    • 安装与启用:sudo apt install fail2ban && sudo systemctl enable --now fail2ban 以上组合可有效缓解常见 Web 攻击与资源盗用,并为站点增加“篡改企图发现”的能力。

三 完整性校验与快速恢复

  • 文件完整性基线(AIDE)
    • 安装与初始化:
      sudo apt install aide
      sudo aideinit
      sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
      
    • 定期校验:sudo aide --check(建议纳入 cron 每日执行)
  • 变更告警与备份
    • 将 AIDE 校验结果通过邮件或企业微信/钉钉机器人告警;关键配置与站点目录纳入 每日增量/每周全量 备份,并保留离线副本。
  • 快速回滚
    • 使用版本化发布(如 Git 部署)与备份联动,出现篡改可一键回滚到最近可信版本。
  • 重要说明
    • 完整性校验与备份是“发现篡改并快速恢复”的关键,应与访问控制、WAF 与防刷策略配合使用,形成闭环防护。

四 一键检查与常用命令

  • 启用模块:sudo a2enmod rewrite headers evasive ssl
  • 重启服务:sudo systemctl restart apache2
  • 检查语法:sudo apache2ctl configtest
  • 查看状态:sudo systemctl status apache2
  • 查看日志:sudo tail -f /var/log/apache2/error.log /var/log/apache2/access.log
  • 防火墙状态:sudo ufw status
  • 证书续期测试:sudo certbot renew --dry-run

五 注意事项

  • 备份与灰度:修改前备份配置与数据,变更先在测试环境验证再上线。
  • 合法合规:防盗链可能影响 CDN、搜索引擎抓取与用户分享,请结合业务白名单与用户体验优化规则。
  • 安全边界:仅靠 Web 层防护不足,应配合操作系统加固、最小权限、网络隔离与入侵检测。
  • 持续运营:定期更新 Apache/模块/CRS,审计日志与告警,演练恢复流程,保持安全基线的持续有效。

0