阅读量:24
如何在Ubuntu上配置Apache防盗链(防盗劫持核心措施)
1. 启用必要模块
防盗链依赖Apache的mod_rewrite(重写引擎)和mod_headers(头部控制)模块,需先启用:
sudo a2enmod rewrite headers
sudo systemctl restart apache2
2. 配置防盗链规则
方法一:通过.htaccess文件(推荐,灵活针对特定目录)
进入需要保护的目录(如/var/www/html/images),创建或编辑.htaccess文件:
sudo nano /var/www/html/images/.htaccess
添加以下内容(替换yourdomain.com为你的实际域名,可根据需求扩展文件类型):
RewriteEngine On
# 允许空Referer(用户直接输入URL访问)或来自自身域名的请求
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain\.com [NC]
# 可选:允许信任的第三方域名(如CDN或合作伙伴)
# RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?trusted-domain\.com [NC]
# 禁止其他来源访问图片/视频资源,返回403 Forbidden
RewriteRule \.(jpg|jpeg|png|gif|svg|mp4|avi|mov)$ - [F,L]
保存并退出。
方法二:通过Apache虚拟主机配置(全局生效,优先级更高)
编辑虚拟主机配置文件(如/etc/apache2/sites-available/your-site.conf),在块内添加:
"/var/www/html/images" >
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|svg|mp4|avi|mov)$ - [F,L]
保存后启用配置并重启Apache:
sudo a2ensite your-site.conf
sudo systemctl restart apache2
3. 测试防盗链效果
- 合法访问:从
yourdomain.com的网页中引用受保护的图片,应正常显示。 - 非法访问:从其他域名(如
hacker.com)的网页中引用同一图片,应返回403 Forbidden错误(或你配置的替代图片,若设置了重定向)。
4. 可选增强措施
- 允许空Referer:若需允许用户直接输入URL访问资源,保留
RewriteCond %{HTTP_REFERER} !^$条件(默认已包含)。 - 扩展文件类型:在
RewriteRule的文件匹配中添加需保护的格式(如mp4|avi)。 - 替代图片:若不想返回403,可将规则改为重定向到提示图片(如
RewriteRule \.(jpg|jpeg)$ http://yourdomain.com/images/nolink.png [R,L])。
注意事项
- Referer可伪造:防盗链基于HTTP Referer字段,虽能有效阻挡大部分盗链,但无法完全杜绝恶意伪造。
- 性能影响:启用重写引擎会增加服务器轻微负载,高流量网站需优化规则(如减少匹配范围)。
- 结合其他安全措施:防盗链仅为资源保护的第一步,建议配合HTTPS(加密传输)、基础认证(保护敏感目录)、WAF(Web应用防火墙)等提升整体安全性。