精文推荐
Linux快速入门之命令及课件下载 LinuxTone命令一句话 Pxe+dhcp+nfs+tftp网络安装centos
apache2+tomcat5.5集群+session同步 LEMP构建高性能WEB服务器(第三版) Nginx 常见应用技术指南[Nginx Tips] 第二版
Apache常见问题汇总 基于CentOS构建高性能的LAMP平台 初次体验:LEMP+Openx
<数据库服务器>->导读<-> Bind主从配置(Master/Slave) <网站服务器>->导读<->
LVS+Heartbeat实施案例及经验分享 LVS高可用方案汇总{精} 利用LVS+Keepalived实现高可用集群
Nagios 3.x 实战解决方案相关贴 LVS 负载均衡相关文档汇总 利用红帽Piranha方案实现WEB负载均衡
Squid/Varnish/Memcached/Cache Cacti相关文档汇总 [流量监控] 性能调优 | 架构研究 |
利用Awstats分析网站日志 {日志分析} Nagios监控相关资料汇总 基于bsd watch监控用户操作记录
[Linux 每日小技巧] 5、显示10条最常用的命令:sed -e "s/| /\n/g" ~/.bash_history | cut -d ' ' -f 1 | sort | uniq -c | sort -nr | head

[LinuxTone官方学习交流MSN群]: mgroup49073@hotmail.com (欢迎linuxtone站内的朋友加入拒绝闲聊![需要正确回答问题才能加入该群:你是从那个网站得知本群号的?答案:linuxtone ]) 感谢您对linuxtone的支持!共建良好技术分享社区! 本站RSS订阅地址:http://bbs.linuxtone.org/rss.php

返回列表 回复 发帖

Apache如何配置防盗链?(相关实例汇总)

本文来自: IT运维专家网 作者: NetSeek 日期: 2008-5-28 16:35 阅读: 1670打印 收藏
Apache上的防图片/mp3盗链配置
作者:车东 发表于:2006-11-22 18:11 最后更新于:2007-04-15 19:04
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明。
http://www.chedong.com/blog/archives/001240.html


Apache上的防mp3盗链的参考配置如下:

    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?niernier\.com/.*$ [NC]
    RewriteRule \.(mp3|rar)$ http://www.niernier.com/archives/000445.html [R=301,L]
    #RewriteLog "logs/rewrite.log"
    #RewriteLogLevel 3

功能:
不仅屏蔽/禁止非本网站的盗链访问,还将盗链请求转给自身的网站,让读者知道谁是真正的原创作者。

说明:
RewriteCond 条件:意思就是所有的mp3和rar访问如果referer不是本网站niernier.com或www.niernier.com
RewriteRule 规则:自动转向到原作宿主页: http://www.niernier.com/archives/000445.html
注释掉的部分是测试rewrite engine用的:对于调试mod_rewrite很有用。

效果:字节流量比原来下降一半,网站独立用户访问量上升了1倍
日期 参观人次 网页数 文件数 字节
2006年 十一月 16 685 897 4641 865.99 M字节
2006年 十一月 17 728 1173 5522 1.28 G字节
2006年 十一月 18 648 934 5535 1.46 G字节
2006年 十一月 19 704 1020 7120 1.40 G字节
2006年 十一月 20 882 1176 5286 1.23 G字节
2006年 十一月 21 2380 3526 6076 568.01 M字节
2006年 十一月 22 2146 3003 5791 458.13 M字节
2006年 十一月 23 2092 3177 6131 518.99 M字节

具体的数据和商业模式分析附后:

我已经放弃了对妮妮的芝华士这篇文章的追赶:截至目前已经有460个留言。这篇文章给服务器带来的负载如果不看日志分析也是很难想像的:
今年以来:通过这个/archives/000445.html 页面找到访问的有 7.7万次 而,网站上hosting的MP3总体流量流量:缺高达57万次(172G流量),这些流量大部分来自跨网站的MP3下载盗链和在线播放器的直接播放:
mp3 Audio file 574061 36.8 % 172.19 G字节 60.1 %
jpg Image 306660 19.6 % 49.93 G字节 17.4 %
html HTML or XML static page 214103 13.7 % 20.93 G字节 7.3 %
css Cascading Style Sheet file 151239 9.7 % 1.80 G字节 0.6 %
rdf 140569 9 % 878.08 M字节 0.2 %
rar Archive 133265 8.5 % 38.63 G字节 13.5 %

200G流量是什么概念?按照目前业内最高性价比的Amazon S3在线存储/发布服务:200G * 0.2$/G = 40$,不要小看这40$,这一个文件的发布费用已经超过了niernier.com网站目前规模靠AdSense可能获得的收入的一半。(年收入¥=日独立用户数),而带宽资源上目前还没有免费的午餐。

浏览器的分布:可以看到有大量来自在线播放的流量。
MS Internet Explorer 否 987915 63.4 %
NetShow Player (media player) 否 286855 18.4 %
Real player or compatible (media player) 否 37872 2.4 %
Windows Media Player (media player) 否 4721 0.3 %
如果仔细分析会发现:很多是包在基于FLASH的在线播放器中的,下载==>在线收听是在线流媒体过去2年最大的变化之一。

盗链对于商业模式的损害:
对于发布MP3/图片的网站来说,如果MP3/图片被盗链主要是以下2个来源:
MP3搜索引擎 ==> 在线收听/MP3下载
非宿主网页盗链 ==> 在线收听/下载

都是将跳过了MP3发布宿主网页的浏览:除了提供带宽下载外,MP3宿主网站没有可能得到任何收益(因为潜在收益主要来自发布MP3的页面上的广告)。目前各种新型模式中:无论是免费视频网站之所以能成为一种模式:都是因为有了在flash播放器中能在视频介绍页面和通过flash在视频播放前后(中)插入广告的机会。所以如果没有宿主网站flash的包装,就必须将所有没有看过宿主网站页面的MP3和RAR下载请求转向回宿主网站页面(只有通过宿主网站页面才能进行MP3在线下载试听)。如果不能将这些MP3盗链流量转换成看页面PV,网站自身就是数量级的收入损失。

缺点:
宿主站内的在线播放器也无法支持了(播放器不传REFERER),但是鱼和熊掌不可兼得,等未来播放器也支持referer标准吧……
一个可能的办法就是:允许所有的播放器,只对浏览器、蜘蛛、抓取器等进行站外控制;
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.com/.*$ [NC]
RewriteCond %{HTTP_USER_AGENT} !^NSPlayer.*
RewriteCond %{HTTP_USER_AGENT} !^Windows.*
多个RewriteCond 之间是AND的关系
您目前的身份是游客查看更多的内容:请注册或者登录快加入我们一起建设最好的技术分享社区吧!谢谢支持!
LinuxTone.Org IT运维专家(系统服务|集群架构|安全监控|性能优化|程序设计)
最专业的Linux集群架构网,IT运维人员的乐园!  msn:cnseek@msn.com   
分享才能进步!帮助他人就是在帮助自己! 共同学习探讨Linux! 感谢社区的朋友们!
我为人人!人人为我! LinuxTone技术分享社区!
Apache 实现禁止图片盗链
在其它论坛上看到的.虽然文档里有记录,但还是收录它.方便我以后查询
1、假设充许连结图片的主机域名为:www.phpNet.cn
2、修改httpd.conf

SetEnvIfNoCase Referer "^http://www.phpnet.cn/" local_ref=1
<FilesMatch ".(gif|jpg)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>  


这个简单的应用不光可以解决图片盗链的问题,稍加修改还可以防止任意文件盗链下载的问题。
使用以上的方法当从非指定的主机连结图片时,图片将无法显示,如果希望显示一张“禁止盗链”的图片,我们可以用mod_rewrite 来实现。
首先在安装 apache 时要加上 --enable-rewrite 参数加载 mod_rewrite 模组。
假设“禁止盗链”的图片为abc.gif,我们在 httpd.conf 中可以这样配置:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?phpnet.cn /.*$ [NC]
RewriteRule \.(gif|jpg)$ [R,L]  


当主机的图片被盗链时,只会看到 abc.gif 这张“禁止盗链”的图片!
LinuxTone.Org IT运维专家(系统服务|集群架构|安全监控|性能优化|程序设计)
最专业的Linux集群架构网,IT运维人员的乐园!  msn:cnseek@msn.com   
分享才能进步!帮助他人就是在帮助自己! 共同学习探讨Linux! 感谢社区的朋友们!
我为人人!人人为我! LinuxTone技术分享社区!
1.Preventing hot linking of images and other file types
  1. RewriteEngine on
  2. RewriteCond %{HTTP_REFERER} !^$
  3. RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
  4. RewriteRule \.(gif|jpg|js|css)$ - [F]
复制代码
2.Serving alternate content when hot linking is detected
  1. RewriteEngine on
  2. RewriteCond %{HTTP_REFERER} !^$
  3. RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
  4. RewriteRule \.(gif|jpg)$ [R,L]
复制代码
LinuxTone.Org IT运维专家(系统服务|集群架构|安全监控|性能优化|程序设计)
最专业的Linux集群架构网,IT运维人员的乐园!  msn:cnseek@msn.com   
分享才能进步!帮助他人就是在帮助自己! 共同学习探讨Linux! 感谢社区的朋友们!
我为人人!人人为我! LinuxTone技术分享社区!
CU乔大哥写的实例,其实上面已经说明了同样的例子,我多写几个例子方便大家更容易明白!
  1. <Directory "/usr/local/apache2/htdocs/cfan/pic/">
  2.              RewriteEngine  on
  3.              RewriteCond %{HTTP_REFERER} !^http://网站域名/.*$ [NC]
  4.              RewriteRule .*\.(gif|jpg)$   http://代替图标 [L]
  5. </Directory>
复制代码
LinuxTone.Org IT运维专家(系统服务|集群架构|安全监控|性能优化|程序设计)
最专业的Linux集群架构网,IT运维人员的乐园!  msn:cnseek@msn.com   
分享才能进步!帮助他人就是在帮助自己! 共同学习探讨Linux! 感谢社区的朋友们!
我为人人!人人为我! LinuxTone技术分享社区!
Apache 防盗链(Apache Anti-Leech)技术的简单实现(程序员:小辉写的例子清晰)
原贴:http://www.xiaohui.com/dev/server/20070330-apache-anti-leech.htm
一. 遭遇图片盗链

  我的个人网站 http://www.XiaoHui.com 使用的是国外付费空间,有流量限制。今天是 2007.03.29,收到主机商的通知邮件,提醒我本月的流量即将超出配额。——超出流量,就要向万恶的美帝资本家交银子,吓我一跳,平常网站的流量根本使用不完,马上查看 awstats 的日志分析,没有发现什么异常。于是把 access log 日志拉下来,用逆火网站日志分析器(http://www.loganalyzer.net/cn) 检查了一下站点盗链情况,发现本站的 深圳高交会之神州龙芯 CPU 映象记[图文] http://www.xiaohui.com/weekly/20041015a.htm 以及 香港2005年春季行(3) - 庙街风光 http://www.xiaohui.com/trip/hk20050403.htm 等原创文章中的图片,被许多网站直接盗链,造成流量占用大幅上升。

  国内网站盗链成风,最倒霉的就是咱们这种使用付费主机有流量限制的个人了。没办法,只得加上了一个简单的反盗链(Anti-Leech)措施。我的服务器是 Apache,处理防盗链比较简单,解决之后,于是写下这篇笔记,记录在 http://www.xiaohui.com/dev/server/20070330-apache-anti-leech.htm

二. 使用 rewrite 技术实现 Apache 防盗链

  Apache 防盗链的第一种实现方法,可以用 rewrite 实现。首先要确认 Apache 的 rewrite module 可用:能够控制 Apache httpd.conf 文件的,打开 httpd.conf,确保有这么一行配置:

LoadModule rewrite_module modules/mod_rewrite.so

  然后在找到自己网站对应的 配置的地方,加入下列代码:


ServerName xiaohui.com

# 防盗链配置

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://xiaohui.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://xiaohui.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.xiaohui.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.xiaohui.com$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ [R,NC]



  防盗链配置的说明:

   1. 红色部分: 表示自己的信任站点。对我的站点来说,设置为 http://www.xiaohui.comhttp://xiaohui.com
   2. 绿色部分: 要保护文件的扩展名(以|分开)。以这些为扩展名的文件,必须通过红色标注的网址引用,才可以访问。
   3. 蓝色部分: 盗链后的重定向页面。用以输出警示信息,这张图片应该尽可能的小。例如我的警示图片是 。为了简单处理的原因,我的绿色字体部分,要保护的图片扩展中,没有 .png 的图片,而警示图片是 .png的。(我站内没有 .png的其他图片)

  然后重新启动 apache 服务器即可。

  有些用户使用的是虚拟主机,没有服务器的控制权,无法修改 httpd.conf 文件和重启服务器。那么请确认你的虚拟主机支持 .htaccess,将上面的配置写入 .htaccess 文件,放入根目录或图片所在的目录即可:

.htaccess 文件的内容:

# 防盗链配置
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://xiaohui.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://xiaohui.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.xiaohui.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.xiaohui.com$ [NC]
RewriteRule .*\.(gif|jpg|swf)$    [R,NC]

  注意:

   1. httpd.conf 文件里的配置,是在 apache 启动时一次读取,效率很高
   2. .htaccess 文件里的配置,每次访问都需要读取分析,效率很低。

三. 使用 SetEnvIfNoCase 和 access 技术实现 Apache 防盗链

另一种方式是利用 SetEnvIfNoCase 和 access。具体的代码如下:

SetEnvIfNoCase Referer "^http://xiaohui.com" local_ref=1
SetEnvIfNoCase Referer "^http://www.xiaohui.com" local_ref=1

Order Allow,Deny
Allow from env=local_ref

  将上述代码,放入前面所讲的 httpd.conf 或 .htaccess 文件即可。

四. Apache 防盗链的技术小结

  通过判断 referer 变量的值,判断图片或资源的引用是否合法,只有在设定范围内的 referer,才能访问指定的资源,从而实现了防盗链(Anti-Leech)的目的。需要指出的是:不是所有的用户代理(浏览器)都会设置 referer 变量,而且有的还可以手工修改 referer,也就是说,referer 是可以被伪造的。本文所讲的,只是一种简单的防护手段。当然,应付一般的盗链也足够了。
LinuxTone.Org IT运维专家(系统服务|集群架构|安全监控|性能优化|程序设计)
最专业的Linux集群架构网,IT运维人员的乐园!  msn:cnseek@msn.com   
分享才能进步!帮助他人就是在帮助自己! 共同学习探讨Linux! 感谢社区的朋友们!
我为人人!人人为我! LinuxTone技术分享社区!
1.利用rewrite 确认你的apache 能使用rewrite mod
  1. RewriteEngine on
  2.   RewriteCond %{HTTP_REFERER} !^http://21andy.com/.*$      [NC]
  3.   RewriteCond %{HTTP_REFERER} !^http://21andy.com$      [NC]
  4.   RewriteCond %{HTTP_REFERER} !^http://www.21andy.com/.*$      [NC]
  5.   RewriteCond %{HTTP_REFERER} !^http://www.21andy.com$      [NC]
  6.   RewriteRule .*\.(gif|jpb|png|css|js|swf])$ http://www.21andy.com [R,NC]
复制代码
其中有色的地方都是要改为你的:
 红色:就是改为你提供下载页面的地址,也就是只有通过这个地址才可以下载你所提供的东东。
 蓝色:就是要保护文件的扩展名(以|分开),也就是说以这些为扩展名的文件只有通过红色的地址才可以访问。
 绿色:如果不是通过红色的地址访问蓝色这些为扩展名的文件时就回重定向到绿色地址上。

2.利用SetEnvIfNoCase 和 access
  1. SetEnvIfNoCase Referer "^http://21andy.com" local_ref=1
  2.     SetEnvIfNoCase Referer "^http://www.21andy.com" local_ref=1
  3.     <FilesMatch "\.(gif|jpb|png|css|js|swf)">
  4.         Order Allow,Deny
  5.         Allow from env=local_ref
  6.     </FilesMatch>

  7. 红色为信任站点,蓝色为受保护的文件扩展名。
复制代码
LinuxTone.Org IT运维专家(系统服务|集群架构|安全监控|性能优化|程序设计)
最专业的Linux集群架构网,IT运维人员的乐园!  msn:cnseek@msn.com   
分享才能进步!帮助他人就是在帮助自己! 共同学习探讨Linux! 感谢社区的朋友们!
我为人人!人人为我! LinuxTone技术分享社区!
Apache prevent hot linking or leeching of images using mod_rewrite howto

Q. My site hosts lots of good images and other site hot links to my images from their own site. Hot linking is eating lots of my bandwidth. How do I stop lechers or prevent hotlinking under Apache web server?

A. This is problem you may encounter, particularly if your site hosts unique images. However solution is quite simple ban image hot linking using Apache mod_rewrite to check the referral information the browser provides.
How do I prevent Apache hot linking of images / media?

There are many ways to block hot linking of images.

You can add any one of the following code to .htaccess file or to your own httpd.conf file to prevent.

Make sure Apache mod_rewrite is enabled.
Solution # 1 : Prevent "hot linking" of images

Open httpd.conf or .htaccess file using vi text editor
# vi httpd.conf
Append following config directive:
  1. SetEnvIfNoCase Referer "^http://www\.cyberciti\.biz/" banimages=1
  2. SetEnvIfNoCase Referer "^http://cyberciti\.biz/" banimages=1
  3. SetEnvIfNoCase Referer "^$" banimages=1
  4. <FilesMatch "\.(gif|png|jpe?g)$">
  5.   Order Allow,Deny
  6.   Allow from env=banimages=1
  7. </FilesMatch>
复制代码
Or you can use following simple code:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?cyberciti.biz/.*$ [NC]
RewriteRule ^.*\.(bmp|tif|gif|jpg|jpeg|jpe|png)$ - [F]

Solution # 2 : Prevent "hot linking" of images and redirect to new image

This method stop hotlinking and displays alternate image to endusers
  1. RewriteEngine on
  2. RewriteCond %{HTTP_REFERER} !^$
  3. RewriteCond %{HTTP_REFERER} !^http://(www\.)?cyberciti\.biz/.*$ [NC]
  4. RewriteRule .*\.(gif|jpe?g|png)$ http://www.cyberciti.biz/noop.jpg [R,NC,L]
复制代码
Unless the image is displayed on cyberciti.biz, browers would see the image noop.jpg. Replace domain cyberciti.biz and upload noop.jpg to webroot.

If you made changes to httpd.conf file; restart Apache:
# /etc/init.d/httpd restart
LinuxTone.Org IT运维专家(系统服务|集群架构|安全监控|性能优化|程序设计)
最专业的Linux集群架构网,IT运维人员的乐园!  msn:cnseek@msn.com   
分享才能进步!帮助他人就是在帮助自己! 共同学习探讨Linux! 感谢社区的朋友们!
我为人人!人人为我! LinuxTone技术分享社区!
返回列表
linuxtone