配置防盗链、访问控制Directory、FilesMatch
2018-03-06 21:03
585 查看
一、配置防盗链
首先来了解一下什么是盗链,全称是盗取链接,假如我们的网站有很多好看的图片,别人可以查看我们网站图片的链接,然后应用在他的网站上,这样的话,去访问他的网站,实际上消耗的是我们的流量(因为实际链接在我们这里),这样我们就不得不去配置防盗链,使得别人不能复制我们图片的链接。
防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件。换句话说,通过referer,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址。有了referer跟踪来源就好办了,这时就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返回指定的页面。
如果想对自己的网站进行防盗链保护,则需要针对不同的情况进行区别对待。如果网站服务器用的是apache,那么使用apache自带的Url Rewrite功能可以很轻松地防止各种盗链,其原理是检查refer,如果refer的信息来自其他网站则重定向到指定图片或网页上。
1. 编辑虚拟主机配置文件
vim /usr/local/httpd2.4/conf/extra/httpd-vhosts.conf
2. 在配置文件中添加如下内容
<Directory /data/wwwroot/111.com>
SetEnvIfNoCase Referer "http://111.com";
local_ref
SetEnvIfNoCase Referer "http://aaa.com";
local_ref
SetEnvIfNoCase Referer "^$" local_ref #表示空的Refer
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
</Directory>
SetEnvIfNoCase : SetEnvIf指令根据客户端的请求属性设置环境变量,SetEnvIfNoCase代表当满足某个条件时,为变量赋值,一般结合其他指令使用。
SetEnvIfNoCase Referer "http://111.com"; local_ref: 将满足条件的refer打上标记local_ref
Order Allow,Deny
Allow from env=local_ref : 这段表示除了local_ref可以同行,其余的全部禁掉
3. 使用curl模拟Referer进行测试
[root@localhost ~]# curl -e "http://www.qq.com/123.txt";;
-x127.0.0.1:80
111.com/cc.jpg
-I #模拟www.qq.com显示403
HTTP/1.1 403 Forbidden
Date: Sun, 04 Mar 2018 22:09:49 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
[root@localhost ~]# curl -e "http://111.com/123.txt";;
-x127.0.0.1:80
111.com/cc.jpg
-I #模拟成111.com成功访问
HTTP/1.1 200 OK
Date: Sun, 04 Mar 2018 22:10:40 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Last-Modified: Mon, 21 Aug 2017 14:32:40 GMT
ETag: "54bcb-5574459d3d200"
Accept-Ranges: bytes
Content-Length: 347083
Content-Type: image/jpeg
二、访问控制Directory
1. 编辑虚拟主机配置文件
vim /usr/local/httpd2.4/conf/extra/httpd-vhosts.conf
2. 在配置文件里添加如下段,目的是对111.com下的admin目录进行访问控制
<Directory /data/wwwroot/111.com/admin/>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
Order 用来定义顺序 Order deny,allow
表示先deny 再allow
这段话表是拒绝所有的访问,仅通过127.0.0.1
3. 配置完成后需要检查配置文件以及重新加载配置文件才会生效
/usr/local/httpd2.4/bin/apachectl -t
/usr/local/httpd2.4/bin/apachectl graceful
4. 使用curl进行测试是否成功
[root@localhost ~]# curl -x127.0.0.1:80
111.com/admin/index.php
test
[root@localhost ~]# curl -x127.0.0.1:80
111.com/admin/index.php
-I #使用127.0.0.1可以正常访问,
HTTP/1.1 200 OK
Date: Mon, 05 Mar 2018 16:26:57 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Type: text/html; charset=UTF-8
[root@localhost ~]# curl -x192.168.177.7:80
111.com/admin/index.php
-I #使用192.168.177.7访问失败提示403
Forbidden
HTTP/1.1 403 Forbidden
Date: Mon, 05 Mar 2018 16:27:42 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
三、访问控制FilesMatch
1.对111.com下的admin.php开头页面进行访问控制,同样在虚拟主机配置文件上添加如下段:
<Directory /data/wwwroot/111.com>
<FilesMatch "admin.php(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>
</Directory>
2. 使用curl进行测试是否成功
[root@localhost ~]# curl -x192.168.177.7:80
111.com/admin.php?=1=2
-I # 显示403 Forbidden
HTTP/1.1 403 Forbidden
Date: Mon, 05 Mar 2018 19:23:54 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
apache几种限制ip的方法
1. 禁止访问某些文件/目录,增加Files选项来控制,比如要不允许访问 .inc 扩展名的文件,保护php类库:
2. 禁止访问某些指定的目录:(可以用 来进行正则匹配),当然也可以写目录全局路径
3. 通过文件匹配来进行禁止,比如禁止所有针对图片的访问:
4. 针对URL相对路径的禁止访问
apache设置自定义header
1. 在设置自定义header前,需要先检测一下你的httpd是否加载了mod_headers
/usr/local/apache2/bin/apachectl -l
如果,显示有mode_headers.c 则是加载了这个模块,否则就需要重新编译一下了。
另外,如果你使用的是rpm安装的话,那肯定是已经加载了mod_headers这个模块的。
2. 在httpd.conf 中加入
Header add MyHeader "Hello
保存后,重启apache就可以了
双引号中的内容为自定义内容。当然这里的"MyHeader"也是可以自定义的。
3. 测试
curl -I http://localhost
看是否显示有 MyHeader "Hello"
apache的keepalive和keepalivetimeout
在APACHE的httpd.conf中,KeepAlive指的是保持连接活跃,类似于Mysql的永久连接。换一句话说,如果将KeepAlive设置为On,那么来自同一客户端的请求就不需要再一次连接,避免每次请求都要新建一个连接而加重服务器的负担。
KeepAlive的连接活跃时间当然是受KeepAliveTimeOut限制的。如果第二次请求和第一次请求之间超过KeepAliveTimeOut的时间的话,第一次连接就会中断,再新建第二个连接。
所以,一般情况下,图片较多的网站应该把KeepAlive设为On。但是KeepAliveTimeOut应该设置为多少秒就是一个值得讨论的问题了。
如果KeepAliveTimeOut设置的时间过短,例如设置为1秒,那么APACHE就会频繁的建立新连接,当然会耗费不少的资源;反过来,如果KeepAliveTimeOut设置的时间过长,例如设置为300秒,那么APACHE中肯定有很多无用的连接会占用服务器的资源,也不是一件好事。
所以,到底要把KeepAliveTimeOut设置为多少,要看网站的流量、服务器的配置而定。
其实,这和MySql的机制有点相似,KeepAlive相当于mysql_connect或mysql_pconnect,KeepAliveTimeOut相当于wait_timeout。
以下是我的配置: KeepAlive On KeepAliveTimeout 3 考虑到我的网站上有不少的图片,所以将KeepAlive设为On,一般的页面两次请求间隔不会超过3秒,所以这样设置,至尽运行状况良好
首先来了解一下什么是盗链,全称是盗取链接,假如我们的网站有很多好看的图片,别人可以查看我们网站图片的链接,然后应用在他的网站上,这样的话,去访问他的网站,实际上消耗的是我们的流量(因为实际链接在我们这里),这样我们就不得不去配置防盗链,使得别人不能复制我们图片的链接。
防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件。换句话说,通过referer,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址。有了referer跟踪来源就好办了,这时就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返回指定的页面。
如果想对自己的网站进行防盗链保护,则需要针对不同的情况进行区别对待。如果网站服务器用的是apache,那么使用apache自带的Url Rewrite功能可以很轻松地防止各种盗链,其原理是检查refer,如果refer的信息来自其他网站则重定向到指定图片或网页上。
1. 编辑虚拟主机配置文件
vim /usr/local/httpd2.4/conf/extra/httpd-vhosts.conf
2. 在配置文件中添加如下内容
<Directory /data/wwwroot/111.com>
SetEnvIfNoCase Referer "http://111.com";
local_ref
SetEnvIfNoCase Referer "http://aaa.com";
local_ref
SetEnvIfNoCase Referer "^$" local_ref #表示空的Refer
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
</Directory>
SetEnvIfNoCase : SetEnvIf指令根据客户端的请求属性设置环境变量,SetEnvIfNoCase代表当满足某个条件时,为变量赋值,一般结合其他指令使用。
SetEnvIfNoCase Referer "http://111.com"; local_ref: 将满足条件的refer打上标记local_ref
Order Allow,Deny
Allow from env=local_ref : 这段表示除了local_ref可以同行,其余的全部禁掉
3. 使用curl模拟Referer进行测试
[root@localhost ~]# curl -e "http://www.qq.com/123.txt";;
-x127.0.0.1:80
111.com/cc.jpg
-I #模拟www.qq.com显示403
HTTP/1.1 403 Forbidden
Date: Sun, 04 Mar 2018 22:09:49 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
[root@localhost ~]# curl -e "http://111.com/123.txt";;
-x127.0.0.1:80
111.com/cc.jpg
-I #模拟成111.com成功访问
HTTP/1.1 200 OK
Date: Sun, 04 Mar 2018 22:10:40 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Last-Modified: Mon, 21 Aug 2017 14:32:40 GMT
ETag: "54bcb-5574459d3d200"
Accept-Ranges: bytes
Content-Length: 347083
Content-Type: image/jpeg
二、访问控制Directory
1. 编辑虚拟主机配置文件
vim /usr/local/httpd2.4/conf/extra/httpd-vhosts.conf
2. 在配置文件里添加如下段,目的是对111.com下的admin目录进行访问控制
<Directory /data/wwwroot/111.com/admin/>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
Order 用来定义顺序 Order deny,allow
表示先deny 再allow
这段话表是拒绝所有的访问,仅通过127.0.0.1
3. 配置完成后需要检查配置文件以及重新加载配置文件才会生效
/usr/local/httpd2.4/bin/apachectl -t
/usr/local/httpd2.4/bin/apachectl graceful
4. 使用curl进行测试是否成功
[root@localhost ~]# curl -x127.0.0.1:80
111.com/admin/index.php
test
[root@localhost ~]# curl -x127.0.0.1:80
111.com/admin/index.php
-I #使用127.0.0.1可以正常访问,
HTTP/1.1 200 OK
Date: Mon, 05 Mar 2018 16:26:57 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Type: text/html; charset=UTF-8
[root@localhost ~]# curl -x192.168.177.7:80
111.com/admin/index.php
-I #使用192.168.177.7访问失败提示403
Forbidden
HTTP/1.1 403 Forbidden
Date: Mon, 05 Mar 2018 16:27:42 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
三、访问控制FilesMatch
1.对111.com下的admin.php开头页面进行访问控制,同样在虚拟主机配置文件上添加如下段:
<Directory /data/wwwroot/111.com>
<FilesMatch "admin.php(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>
</Directory>
2. 使用curl进行测试是否成功
[root@localhost ~]# curl -x192.168.177.7:80
111.com/admin.php?=1=2
-I # 显示403 Forbidden
HTTP/1.1 403 Forbidden
Date: Mon, 05 Mar 2018 19:23:54 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
apache几种限制ip的方法
1. 禁止访问某些文件/目录,增加Files选项来控制,比如要不允许访问 .inc 扩展名的文件,保护php类库:
2. 禁止访问某些指定的目录:(可以用 来进行正则匹配),当然也可以写目录全局路径
3. 通过文件匹配来进行禁止,比如禁止所有针对图片的访问:
4. 针对URL相对路径的禁止访问
apache设置自定义header
1. 在设置自定义header前,需要先检测一下你的httpd是否加载了mod_headers
/usr/local/apache2/bin/apachectl -l
如果,显示有mode_headers.c 则是加载了这个模块,否则就需要重新编译一下了。
另外,如果你使用的是rpm安装的话,那肯定是已经加载了mod_headers这个模块的。
2. 在httpd.conf 中加入
Header add MyHeader "Hello
保存后,重启apache就可以了
双引号中的内容为自定义内容。当然这里的"MyHeader"也是可以自定义的。
3. 测试
curl -I http://localhost
看是否显示有 MyHeader "Hello"
apache的keepalive和keepalivetimeout
在APACHE的httpd.conf中,KeepAlive指的是保持连接活跃,类似于Mysql的永久连接。换一句话说,如果将KeepAlive设置为On,那么来自同一客户端的请求就不需要再一次连接,避免每次请求都要新建一个连接而加重服务器的负担。
KeepAlive的连接活跃时间当然是受KeepAliveTimeOut限制的。如果第二次请求和第一次请求之间超过KeepAliveTimeOut的时间的话,第一次连接就会中断,再新建第二个连接。
所以,一般情况下,图片较多的网站应该把KeepAlive设为On。但是KeepAliveTimeOut应该设置为多少秒就是一个值得讨论的问题了。
如果KeepAliveTimeOut设置的时间过短,例如设置为1秒,那么APACHE就会频繁的建立新连接,当然会耗费不少的资源;反过来,如果KeepAliveTimeOut设置的时间过长,例如设置为300秒,那么APACHE中肯定有很多无用的连接会占用服务器的资源,也不是一件好事。
所以,到底要把KeepAliveTimeOut设置为多少,要看网站的流量、服务器的配置而定。
其实,这和MySql的机制有点相似,KeepAlive相当于mysql_connect或mysql_pconnect,KeepAliveTimeOut相当于wait_timeout。
以下是我的配置: KeepAlive On KeepAliveTimeout 3 考虑到我的网站上有不少的图片,所以将KeepAlive设为On,一般的页面两次请求间隔不会超过3秒,所以这样设置,至尽运行状况良好
相关文章推荐
- 11.25 配置防盗链 11.26 访问控制Directory 11.27 访问控制FilesMatch
- 11.25 配置防盗链 11.26 访问控制Directory 11.27 访问控制FilesMatch
- 11.25 配置防盗链;11.26 访问控制Directory;11.27 访问控制FilesMatch
- 11.25 配置防盗链 11.26 访问控制Directory 11.27 访问控制FilesMatch
- 11.25 配置防盗链,访问控制Directory ,访问控制FilesMatch
- apache配置防盗链、访问控制Directory、访问控制FilesMatch
- 配置防盗链,访问控制Directory,访问控制FilesMatch
- 配置防盗链、访问控制Directory、访问控制FilesMatch
- 配置防盗链,访问控制Directory,访问控制FilesMatch
- 配置防盗链、访问控制Directory与 访问控制FilesMatch
- 配置防盗链 访问控制Directory 访问控制FilesMatch
- 【LAMP环境搭建】配置防盗链、访问控制Directory和访问控制FilesMatch
- 配置防盗链、访问控制Directory、访问控制FilesMatch
- 配置防盗链、访问控制Directory、访问控制FilesMatch
- linux学习第四十一篇:配置防盗链,访问控制Directory,访问控制FilesMatch
- 配置防盗链、访问控制Directory、FiliesMatch
- 配置防盗链、访问控制
- Nginx配置防盗链、Nginx访问控制、Nginx解析php相关配置
- 详解Nginx防盗链和Nginx访问控制与Nginx解析php的配置