防篡改需组合运行时拦截、文件完整性监控与权限隔离:用ModSecurity拦截敏感后缀访问和攻击模式,上传目录禁用脚本执行并物理隔离,定期校验关键文件哈希,辅以HTTPS签名URL和Referer校验。

动态资源(如 PHP 脚本、上传的 ZIP 包、用户生成的 HTML 页面)本身可执行或易被替换,防篡改不能只靠“禁止访问”,而需组合运行时拦截 + 文件完整性监控 + 访问权限隔离。Apache 本身不提供文件写保护能力,但能协同系统层与应用层构建有效防线。
用 ModSecurity 拦截非法修改行为
这是最直接的运行时防护手段,重点拦截导致篡改的攻击入口:
- 阻止对敏感后缀的直接访问:禁止通过 URL 直接请求 .php、.sh、.py、.htaccess 等可执行或配置类文件,防止上传 Webshell 后被调用
- 启用 CRS(OWASP Core Rule Set):自动识别 SQL 注入、XSS、远程文件包含(RFI)、路径遍历等高危请求模式
- 限制 POST 请求体大小和内容类型:防止恶意大文件上传覆盖关键脚本(如用
SecRequestBodyLimit 1048576限 1MB) - 开启审计日志:
SecAuditLog /var/log/apache2/modsec_audit.log,便于事后溯源篡改来源
分离上传目录并禁用脚本执行
上传目录(如 /var/www/html/uploads/)是篡改高发区,必须与代码目录物理隔离且无执行权:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在 Apache 配置中为上传目录显式关闭执行权限:
<Directory "/var/www/html/uploads"><br> Options -ExecCGI -Indexes<br> AddHandler default-handler .php .phtml .pl .py .sh<br></Directory>
- 将上传目录挂载到独立分区或设置
noexec挂载选项(需 root 权限) - 确保上传目录属主为
www-data,但权限设为755(目录)和644(文件),禁止组/其他用户写入
定期校验关键文件哈希值
发现篡改比阻止篡改更现实——尤其当攻击者已绕过前端防护。建议对动态入口文件做主动监控:
- 建立基线:运行
sha256sum /var/www/html/index.php /var/www/html/wp-admin/admin-ajax.php > /etc/apache2/baseline.sha256 - 每日 cron 自动检查:
0 3 * * * /usr/bin/sha256sum -c /etc/apache2/baseline.sha256 2>&1 | /usr/bin/grep FAILED | /usr/bin/mail -s "File Tampering Alert" admin@example.com - 进阶方案:用 AIDE 工具监控整个
/var/www/html目录,支持增量扫描与异常路径告警
强制 HTTPS + Referer + Token 多重校验(适用于受控动态资源)
对视频、PDF 下载链接等需授权访问的动态资源,不依赖静态规则,而是由后端生成带时效签名的 URL:
- URL 示例:
https://example.com/download/report.pdf?token=abc123&exp=1717792800&sig=def456 - Apache 配置中用
RewriteCond提取参数,再交由 PHP/Python 脚本验证签名与过期时间(mod_rewrite本身不做加密运算) - 验证失败则返回 403 或跳转至登录页,避免暴露真实文件路径
- 配合
Referrer-Policy: strict-origin-when-cross-origin响应头,减少 Referer 泄露风险

















