Apache2在Ubuntu上如何实现防盗篡改
导读:Apache2在Ubuntu上的防盗篡改实践 术语澄清与目标 常见两类诉求: 防盗链:防止其他站点直接引用你的图片、视频、JS/CSS 等静态资源,节省带宽与防止外链盗用。 防篡改:防止网站文件被未授权修改(上传Webshell、替换页...
Apache2在Ubuntu上的防盗篡改实践
术语澄清与目标
- 常见两类诉求:
- 防盗链:防止其他站点直接引用你的图片、视频、JS/CSS 等静态资源,节省带宽与防止外链盗用。
- 防篡改:防止网站文件被未授权修改(上传Webshell、替换页面)。前者通过Apache配置即可实现,后者需要“文件完整性校验 + 运行时防护 + 访问控制”的组合方案。
一、防盗链配置 mod_rewrite
- 适用:仅允许自家域名与空Referer访问图片、视频、压缩包等静态资源。
- 步骤:
- 启用模块
- sudo a2enmod rewrite
- 在站点配置或 .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>- 使配置生效
- 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 每日巡检并告警
- 使用 AIDE(Advanced Intrusion Detection Environment)建立基准并定期校验:
- 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
- 安装并启用 ModSecurity(WAF),加载核心规则集(CRS)以拦截常见攻击(SQLi、XSS、恶意上传等):
- 访问与暴力防护
- 使用 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 观察,逐步调优规则;对误报路径添加白名单规则。
- 备份与恢复:定期备份网站文件与数据库,保留多份异地副本;变更前先快照,变更后做校验与回滚演练。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Apache2在Ubuntu上如何实现防盗篡改
本文地址: https://pptw.com/jishu/773945.html
