`
sealbird
  • 浏览: 584621 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

apache 防盗链,限带宽和连接数

阅读更多
防盗链原理: http标准协议中有专门的字段记录referer

一来可以追溯上一个入站地址是什么

二来对于资源文件,可以跟踪到包含显示他的网页地址是什么。

因此所有防盗链方法都是基于这个Referer字段
主要有两种方法实现
第一种:使用FilesMatch
<VirtualHost *:80>
     ServerAdmin laogui@gmail.com
     DocumentRoot D:/www/www.chinahtml.com
     ServerName www.aaa.com
     ServerName aaa.com
     盗用连接指定显示的页面。也可以不用此项,这样盗用连接也可无法使用。
     ErrorDocument 404 http://www.chinahtml.com/error.html
     允许www.aaa.com的网站使用
     SetEnvIfNoCase Referer "^http://www.aaa.com" local_ref=1
     允许 aaa.com   的网站使用
     SetEnvIfNoCase Referer "^http://aaa.com" local_ref=1
     定义防盗文件的扩展名
       <FilesMatch "\.(gif|jpg|png|css|js|swf)">
         Order Allow,Deny
         Allow from env=local_ref   允许上面指定域名
     </FilesMatch>
</VirtualHost>
防盗链设置样本:使用正则表达式

SetEnvIf Referer "^http://(.)+\.ilinux\.cn/" local_ref=1

SetEnvIf Referer "^http://(.)+\.isql\.cn/" local_ref=1
#SetEnvIf Referer "^http://(.)+\.other\.org\.cn/" local_ref=1
SetEnvIf Request_URI "/logo(.)+" local_ref=0
<FilesMatch "\.(mp3|wmv|png|gif|jpg|jpeg|avi|bmp|ram|rmvb|rm|rar|zip|mp3)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>

解释:
1. 蓝色部分,表示设置允许访问的referer地址,第一行的意思为所有http协议访问,以.ilinux.cn结尾的域名地址,第二行类似,只是换成 了.isql.cn,表问我前面的鬼符是什么,不懂得可以去翻正则表达式的研究文献,不想深究的可以照猫画虎设置自己的网站。
2. 绿色部分,表示不在上述引用域名范围内,但可以被放行的特例,本例中表示网站/目录,所有以logo开头的文件(用作允许其它网站的友情连接引用本站logo)。
3. 橙色部分是设置反盗链的关键部分,上面每一个设置都联系到了local_ref这个环境变量,只有这个变量为1,则允许被引用,否则显示一个X。
4. 紫色部分设置了哪些扩展名的文件加入反盗链的规则。

第二种方法:

使用rewirte方式:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://bbs.ilinux.cn/.*$     [NC]
RewriteCond %{HTTP_REFERER} !^http://bbs.ilinux.cn$       [NC]
RewriteCond %{HTTP_REFERER} !^http://www.ilinux.cn/.*$       [NC]
RewriteCond %{HTTP_REFERER} !^http://www.ilinux.cn$       [NC]
RewriteCond %{HTTP_REFERER} !^http://ilinux.cn/.*$       [NC]
RewriteCond %{HTTP_REFERER} !^http://ilinux.cn$       [NC]
RewriteRule .*\.(gif|jpg|jpeg|avi|bmp|ram|rmvb|rm|rar|zip)$ http://www.ilinux.cn [R,NC]
上面的,需要Rewrite模板.所有指定的文件,如果Referer不是上面的值,将被重定向到首页.

还有使用.htaccess 文件的方法,不过不推荐使用,影响apache性能。
写一个.htaccess
包括以下代码:

SetEnvIfNoCase Referer "^http://google\.com/" local_ref=1 
<FilesMatch "\.(jpg)"> 
Order Allow,Deny 
Allow from env=local_ref 
Allow from 127.0.0.1 
Allow from 123.123.123.123 
</FilesMatch> 
如果你的网址是www.myst.cn就改为
SetEnvIfNoCase Referer "^http://www\.myst\.com/" local_ref=1
<FilesMatch "\.(jpg)">
这意思是说防止人家连结你的jpg档案.可以增修为
<FilesMatch "\.(jpg|zip|rar)">
ps.最后一个不使用区各线
Allow from 127.0.0.1
这表示允许连结主机的IP。
你要是默认其他网站可以连结的话,就填入该主机IP,把上述的code储存为.htaccess然后放入你安装的目录下即可。
*nix系统在apache配置文件里面打开使用.htaccess功能。
AllowOverride All

-----------------------------------------------------------------------------------------------------------------------------------------------------------

话说现在建站真不容易,想好好搞一个站,总会被人WC的采集,盗链,攻击,无人值守的垃圾站比苦心经营的站收入还要可观。所以保卫好自己的服务器是一件很重要的工作。
小站雷当(jzxue.Com)刚 刚上线,立马受到很多朋友的支持和拥护。一开始本来准备选择使用FTP作为下载服务器的,不过过了几天就发现很多都是通过盗链的方式来FTP下载。这下服 务器在持续性全速提供上传,但是网站的页面浏览量却少得可怜。因为FTP天生不能放盗链的特性所以只能考虑放弃使用,最后决定用HTTP下载来替代。

直接用HTTP服务器下载也不是很容易的事。最开始在IIS里面配置,IIS只能设定最大下载速度和最大连接数,这对于一些使用下载工具一来就开 50+线程霸道下载的朋友明显是防不住的。网上搜了N久就发现一个用Delphi写的看不懂的ISAPI Filter以及别的收费软件若干。试过之后都起不了作用,也便放弃了,最后发现Apache有这些开源的功能模块,最终打造出完美限制的HTTP下载服 务器。

首先说说完美限制的意思:防盗链、限制客户端下载线程数,限制下载带宽。下面一一介绍怎么在Apache里面实现这些功能。

防盗链

传统的防盗链都是通过Referer来判断用户来路的,不过这样的方法对于下载工具来说形同虚设,因为现在的下载工具早就能伪造Referer了。

现在一些流行的防盗链的方式都是用在浏览页面的时候产生一个随机验证码,在用户点击连接的时候服务器会验证这个验证码是否有效从而决定是否允许下载。或者就是用某些方法把文件实际地址进行伪装。不过我觉得这些都不怎么好用,我用了一个简单有效的方式来实现防盗链。

其实就是用Cookie,配合Apache的URL Rewrite模块很简单的就能实现防盗链下载。

首先在浏览页面的时候,会向客户端发送一个特别的Cookie,例如“Site=jzxue.Com“,盗链而来的将没有这个Cookie。

在Apache的httpd.conf文件里面搜索:

#LoadModule rewrite_module modules/mod_rewrite.so

把它前面的#去掉,再找到<Directory />块,在里面加入类似如下代码:

<Directory />
     # Other configurations …
    RewriteEngine On # 启动URL Rewrite引擎
   RewriteCond %{HTTP_COOKIE} !^.*(?:Site=jzxue.Com).*$ # 对于Cookie里面没有特殊记录的请求进行重定向
   RewriteRule ^.*$ error.html # 将非法访问重定向到错误页面
</Directory>

这样如果一个盗链而来的请求将会因为没有特殊Cookie而被重定向到错误页面,就算实际地址暴露也不怕。至于这个Cookie的内容是什么以及有效时间完全可以由管理员自己来设定,也就是说下载工具也没法伪造,从而防止了服务器资源被盗链的危险。

限制客户端多线程下载

限制多线程现在需要用到一个Apache的扩展模块mod_limitipconn,这里是作者的官方网站http://dominia.org/djao/limitipconn2.html,先下载适合自己版本的模块文件到Apache安装目录下的modules目录下面,然后在httpd.conf文件中搜索:

#LoadModule status_module modules/mod_status.so

把它前面的#去掉,再加入:

ExtendedStatus On
LoadModule limitipconn_module modules/mod_limitipconn.dll # 如果你下载的不是Win版,请把后面的文件名改为你所下载的文件名
<IfModule mod_limitipconn.c>
   <Location /> # 这里表示限制根目录,即全部限制,可以根据需要修改
   MaxConnPerIP 2 # 这里表示最多同时两个线程
   NoLimit html/* # 这里表示html目录下不受限制
   </Location>
</IfModule>

这样来自同一客户端的超过2个的线程请求将被拒绝,从而限制了客户端的多线程下载。

限制下载带宽
这个同样需要扩展模块支持,模块是mod_bw,在作者的官方网站http://ivn.cl/apache/可以下载到。同样也是放入modules目录下面,然后在httpd.conf文件中加入:

LoadModule bw_module modules/mod_bw.dll

再找到<Directory />块,加入:
<Directory />
   # Other configurations …
   BandwidthModule On # 启动带宽限制
    ForceBandwidthModule On # 启动带宽限制
     MaxConnection all 2000 # 最大连接数2000
   Bandwidth all 200000 # 单个客户端最大带宽200KB
</Directory>

这样限制了同时最多2000个连接数,每个客户端最大200KB的下载带宽。

到此,我们的完美限制的HTTP下载服务器就配置完成了,重新启动你的Apache这些功能便能生效了。因为Apache和这些模块都是开源免费 的,我们不需要为此掏一分钱,不用去购买那些第三方的软件,只是需要多去了解一下这些软件的使用说明。不要一切都祈祷有现成美好的东西,自己动手做一次会 有不一样的收获
http://www.idouye.com 爱豆叶资料分享
分享到:
评论

相关推荐

    nginx与apache限制ip连接数和带宽方法.docx

    nginx 与 Apache 限制 IP 连接数和带宽方法 本文档旨在介绍如何使用 Nginx 和 Apache 限制 IP 连接数和带宽的方法。这些方法可以帮助管理员控制服务器的资源使用,避免因为大量恶意请求而导致服务器崩溃。 一、...

    apache限制带宽插件和教程

    如果您使用apache做为您的web服务器,且需要限制用户的下载速度,这是个很好的解决方案,包中带了限制带宽的插件和使用说明,一看就能明白。插件是tgz压缩格式,适用于Linux系统,但是为了windows用户,本例也给带了...

    Linux下Apache并发连接数和带宽控制

    在Linux环境下,Apache的并发连接数和带宽可以通过两个模块来实现:mod_limitipconn和mod_bandwidth。这两个模块是由Apache社区的开发者创建的,用于增强服务器的管理能力。 1. **mod_limitipconn**: 这个模块...

    apach防盗链配置

    通过设置防盗链,可以避免服务器带宽被恶意消耗,保护网站内容的版权,提高用户体验。本文将详细介绍如何在Apache服务器上进行防盗链配置。 一、理解防盗链原理 防盗链(Hotlinking)是指其他网站通过直接引用(即...

    Apache并发数、带宽限制

    ### Apache并发数与带宽限制知识点详解 ...综上所述,通过使用`mod_vhost_limit`和`mod_limitipconn`两个模块,我们可以有效地控制Apache服务器上的并发连接数和带宽使用,从而提高系统的稳定性和安全性。

    设置Apache最大连接数

    合理设置Apache的最大连接数对于提高服务器性能和稳定性至关重要。通过深入了解各个配置参数的意义及其相互之间的关系,结合实际情况进行灵活调整,可以最大限度地发挥服务器的潜力。此外,持续的监控与优化也是必不...

    APACHE 流量控制及连接数限制.

    本文将详细介绍如何实现Apache服务器上的流量控制及连接数限制,并提供具体的步骤和配置示例。 #### 安装与启用流量控制模块 为了实现流量控制功能,首先需要安装一个名为`mod_bw`(BandwidthMod)的第三方模块。...

    网站防盗链(IIS7.0与IIS7.5配置防盗链)

    下面我们将详细探讨如何在IIS7.0和7.5中配置防盗链。 一、IIS7.0配置防盗链 1. **开启URL重写模块**:首先,确保你的IIS服务器已经安装了URL重写模块。如果没有,可以通过Web平台安装程序(Web Platform Installer...

    查看apache连接的连接并发数

    "查看Apache连接的连接并发数" Apache连接是Apache服务器处理并发请求...在了解Apache连接的连接并发数和TCP连接状态后,管理员可以更好地优化Apache服务器的性能,提高服务器的并发处理能力,满足高并发请求的需求。

    Linux下Apache并发连接数和带宽控制.pdf

    这两个模块分别用于控制并发连接数和带宽使用,以确保服务器的稳定运行。 1. **mod_limitipconn**: mod_limitipconn模块允许管理员限制每个IP地址同时连接到服务器特定目录的并发连接数量。这对于防止恶意用户或...

    windows下的apache限制IP连接数

    标题中的“Windows下的Apache限制IP连接数”是指在Windows操作系统上使用Apache web服务器时,如何配置服务器以限制每个IP地址的并发连接数。这是一项重要的安全策略,可以防止恶意用户或DDoS攻击通过大量并发连接...

    防盗链模块,(HttpHandler+Apache技术)

    总的来说,防盗链模块是网站安全的重要组成部分,防止了宝贵的带宽和资源被滥用。HttpHandler和Apache服务器的结合提供了灵活性和深度控制,可以根据实际需求定制防盗链策略,以保护网站的合法权益。理解并熟练运用...

    Java爬虫小例子,爬取小网站,突破防盗链下载图片

    在IT行业中,Java爬虫是一种常见的技术,用于自动抓取...通过学习和实践这个小例子,你可以了解到Java爬虫的基本流程,以及如何应对一些常见的爬虫挑战,如处理防盗链,这对于进行更复杂的Web数据挖掘项目非常有帮助。

    Apache 防盗链的技术小结

    一. 遭遇图片盗链 个人网站使用的是国外付费空间,有流量限制。今天是 2007.03.29,收到主机商的通知邮件,提醒我本月的流量即将超出配额。——超出流量,就要向万恶的美帝资本家交银子,吓我一跳,平常网站的流量...

    [其他类别]Apache 防盗连工具_apache_link.zip

    防盗链,全称“防外部盗用连接”,是指网站通过设置规则,防止其他网站或用户直接引用自己服务器上的图片、视频等资源,避免消耗自身带宽和资源。这通常发生在高流量的网站上,如果允许任意网站盗链,可能会导致...

    增加连接数限制个数

    "增加连接数限制个数"这个话题涉及到网络编程、系统资源管理和性能优化等多个领域。这里我们将深入探讨相关知识点。 首先,理解连接数限制的重要性。在操作系统中,每个连接都需要占用一定的系统资源,包括内存、...

    呆呆防盗链扩展版 v1.4

    总的来说,呆呆防盗链扩展版 v1.4是一款实用且高效的服务器流量管理工具,它通过灵活的自定义规则和强大的外链检测功能,为网站运营者提供了有力的保护,确保服务器资源的合理利用,同时提升了站点的安全性。...

    文件防盗链的实现(射雕英雄java传系列)

    防盗链是为了保护网站资源不被其他网站直接引用,避免服务器带宽被滥用。 防盗链的基本原理通常包括以下几个步骤: 1. **检查HTTP请求头**:服务器在接收到文件请求时,会检查请求头中的`Referer`字段。这个字段...

    如何查看Apache的连接数和当前连接数

    以下是一些常用命令来查看Apache的连接数和当前连接数: 1. **查看所有连接数**: ```bash netstat -ant | grep $ip:80 | wc -l ``` 这个命令会列出所有到Apache监听的80端口的TCP连接,并通过`wc -l`计算行数...

Global site tag (gtag.js) - Google Analytics