LAMP架构(配置防盗链,目录访问控制,文件/链接访问控制)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LAMP架构(配置防盗链,目录访问控制,文件/链接访问控制)相关的知识,希望对你有一定的参考价值。
一、配置防盗链实例:
假如你维护一个免费的论坛网站,是可以免费发图片的,有一个国外的恶意网站,把图片发在你的网站里,且在自己的网站里放入他在你网站发图的链接,这样在他的网站里就可以直接跳转到你的网站来访问图片,这样增加了自己网站的带宽,但是没有实质意义,因为自己的用户量并没有增长,怎么限制这种行为呢,是通过限制Referer(上一次访问的网站)来实现。
修改虚拟配置文件;
[[email protected] 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
增加以下内容
<Directory /data/wwwroot/111.com> (需要定义防盗链的目录)
SetEnvIfNoCase Referer "http://111.com" local_ref referer白名单
SetEnvIfNoCase Referer "http://ask.apelearn.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref 空referer也设置白名单
<FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif)"> 这些访问不要设置白名单
Order Allow,Deny 定义顺序,先允许白名单访问,剩下的给deny掉
Allow from env=local_ref
</FilesMatch>
</Directory>
检查语法错误且重新启动
[[email protected] 111.com]# curl -e "http:www.qq.com/1.txt"-x127.0.0.1:80 111.com/1.png -I
HTTP/1.1 403 Forbidden
Date: Sun, 26 Nov 2017 08:50:30 GMT
Server: Apache/2.4.28 (Unix) php/5.6.30
Content-Type: text/html; charset=iso-8859-1
没有设置referer白名单的www.qq.com被403拒绝
[[email protected] 111.com]# curl -e "http://ask.apelearn.com"-x127.0.0.1:80 111.com/1.png -I
HTTP/1.1 200 OK
Date: Sun, 26 Nov 2017 08:50:38 GMT
Server: Apache/2.4.28 (Unix) PHP/5.6.30
Last-Modified: Sun, 26 Nov 2017 07:07:52 GMT
ETag: "7913-55edd71b4a200"
Accept-Ranges: bytes
Content-Length: 30995
Content-Type: image/png
设置了http://ask.apelearn.com白名单的被允许访问200
二、目录访问控制
访问控制目录,只有允许的源ip才能打开目录。其他的被deny
修改:
[[email protected] 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<Directory /data/wwwroot/111.com/admin>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
Order 定义顺序。是先允许还是先访问,如果deny在前,则先执行下面deny开头的,如果allow在前,则执行allow开头的。例如这个配置文件写的是deny全部,如果把deny放在后面,则就算允许了127.0.0.1,后面还是会被deny掉
实验:
[[email protected] 111.com]# curl -x127.0.0.1:80 111.com/admin/index.php -I
HTTP/1.1 200 OK
Date: Sun, 26 Nov 2017 09:35:53 GMT
Server: Apache/2.4.28 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Type: text/html; charset=UTF-8
白名单的127.0.0.1被允许访问
[[email protected] 111.com]# curl -x192.168.52.100:80 111.com/admin/index.php -I
HTTP/1.1 403 Forbidden
Date: Sun, 26 Nov 2017 09:35:54 GMT
Server: Apache/2.4.28 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
没有白名单的192.168.52.100被deny
三、文件/链接访问控制
访问控制除了目录,还可以访问控制一个文件名/链接
修改:
[[email protected] 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<Directory /data/wwwroot/111.com/>
<FilesMatch admin.php(.*)>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>
</Directory>
加上FilesMatch admin.php(.*),表示在 /data/wwwroot/111.com/ 下匹配到的文件全部被控制访问
测试:
[[email protected] admin]# curl -x192.168.52.100:80 111.com/admin/index.php -I
HTTP/1.1 200 OK
Date: Sun, 26 Nov 2017 09:47:09 GMT
Server: Apache/2.4.28 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Type: text/html; charset=UTF-8
之前控制目录的index.php可以访问
[[email protected] admin]# curl -x192.168.52.100:80 '111.com/admin/admin.php?sada' -I
HTTP/1.1 403 Forbidden
Date: Sun, 26 Nov 2017 09:48:33 GMT
Server: Apache/2.4.28 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
目录下就没有访问的文件,但是显示403权限不够,说明403和404的区别,权限不够时就没有权利匹配或查看,所以不管文件是否真实存在
以上是关于LAMP架构(配置防盗链,目录访问控制,文件/链接访问控制)的主要内容,如果未能解决你的问题,请参考以下文章
配置防盗链访问控制Directory针对目录访问控制FilesMatch针对链接
lamp架构nginx限流配置(自动索引缓存日志轮询与禁用部分记录目录和文件限制中文乱码)重定向防盗链
LAMP静态元素过期时间配置防盗链访问控制Directory访问控制FilesMatch