温馨提示×

Apache2在Ubuntu上如何实现防盗篡改

小樊
43
2025-12-17 00:26:43
栏目: 智能运维

Apache2在Ubuntu上的防盗篡改实践

术语澄清与目标

  • 常见两类诉求:
    • 防盗链:防止其他站点直接引用你的图片、视频、JS/CSS 等静态资源,节省带宽与防止外链盗用。
    • 防篡改:防止网站文件被未授权修改(上传Webshell、替换页面)。前者通过Apache配置即可实现,后者需要“文件完整性校验 + 运行时防护 + 访问控制”的组合方案。

一、防盗链配置 mod_rewrite

  • 适用:仅允许自家域名与空Referer访问图片、视频、压缩包等静态资源。
  • 步骤:
    1. 启用模块
      • sudo a2enmod rewrite
    2. 在站点配置或 .htaccess 中加入规则(示例为站点配置)
      • 将 yourdomain.com 替换为你的实际域名;可按需增减资源后缀
      • 注意:正则中应使用 . 匹配点号,扩展名之间用 | 分隔
  • 示例配置
    <VirtualHost *:80>
        ServerName yourdomain.com
        DocumentRoot /var/www/html
    
        RewriteEngine On
        # 允许自家域名与空Referer
        RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC]
        RewriteCond %{HTTP_REFERER} !^$
        # 保护常见静态资源
        RewriteRule \.(jpg|jpeg|png|gif|webp|svg|css|js|pdf|zip|rar)$ - [F,L]
    
        <Directory /var/www/html>
            Options -Indexes +FollowSymLinks
            AllowOverride None
            Require all granted
        </Directory>
    </VirtualHost>
    
    1. 使配置生效
      • sudo systemctl restart apache2
  • 说明
    • 空Referer放行可兼容部分直接访问或浏览器特殊情况;若需更严格,可删除 !^$ 条件。
    • 若你的站点全站HTTPS,请将规则中的 http 也改为 https,或统一用 https? 匹配。

二、防篡改组合方案

  • 文件与目录加固
    • 最小权限:网站目录建议 755,文件 644;上传目录禁止脚本执行(如 Options -ExecCGI,或分离到独立不可执行目录)。
    • 分离运行用户与组,避免使用 root 运行 Apache 工作进程。
  • 完整性校验与监控
    • 使用 AIDE(Advanced Intrusion Detection Environment)建立基准并定期校验:
      • sudo apt install aide
      • sudo aideinit # 首次初始化(生成数据库)
      • sudo aide --check # 例行检查;可配合 cron 每日巡检并告警
  • WAF 运行时防护
    • 安装并启用 ModSecurity(WAF),加载核心规则集(CRS)以拦截常见攻击(SQLi、XSS、恶意上传等):
      • sudo apt install libapache2-mod-security2
      • 启用模块:sudo a2enmod security2 headers
      • 在 /etc/modsecurity/modsecurity.conf 将 SecRuleEngine 设为 On(或 DetectionOnly 先做观察)
      • 按发行版启用 CRS(示例包含方式,路径以实际为准):
        • IncludeOptional /usr/share/modsecurity-crs/*.conf
        • IncludeOptional /usr/share/modsecurity-crs/activated_rules/*.conf
      • 重启:sudo systemctl restart apache2
      • 观察拦截日志:/var/log/apache2/modsec_audit.log
  • 访问与暴力防护
    • 使用 UFW 仅开放 80/443,必要时对管理口或敏感路径限制来源IP。
    • 使用 Fail2ban 监控 Apache 日志,自动封禁暴力扫描与恶意访问来源:
      • sudo apt install fail2ban
      • 复制并编辑 /etc/fail2ban/jail.local,启用 [apache-*] 或自定义 jail,设置 maxretry/bantime/findtime
      • sudo systemctl restart fail2ban
  • 变更可追溯
    • 对关键目录配置 inotify 或应用层钩子,记录文件变更(创建/修改/删除)并联动告警或自动回滚。

三、快速验证与运维

  • 防盗链验证
    • 从外部站点 引用你的图片或下载资源,应返回 403 Forbidden;自家域名正常访问。
  • 防篡改验证
    • 尝试上传可执行脚本到上传目录,应被 WAF/配置拦截;检查 modsec_audit.log 是否有拦截记录。
    • 例行执行 aide --check,核对是否有异常变更;对关键文件变更触发工单或回滚流程。
  • 日志与告警
    • 关注 Apache 访问/错误日志、Fail2ban 状态、ModSecurity 审计日志,结合监控平台做可视化与阈值告警。

四、注意事项

  • 防盗链并非绝对安全:Referer 可被伪造,仅能增加盗链成本;对核心资源可叠加签名URL/临时令牌CDN鉴权
  • 误拦截处理:上线 WAF 建议先 DetectionOnly 观察,逐步调优规则;对误报路径添加白名单规则。
  • 备份与恢复:定期备份网站文件与数据库,保留多份异地副本;变更前先快照,变更后做校验与回滚演练。

0