配置防盗链、访问控制Directory和FilesMatch
5月31日任务
课程内容:
11.25 配置防盗链
11.26 访问控制Directory
11.27 访问控制FilesMatch
扩展
几种限制ip的方法 http://ask.apelearn.com/question/6519
apache 自定义header http://ask.apelearn.com/question/830
apache的keepalive和keepalivetimeout http://ask.apelearn.com/question/556
11.25 配置防盗链
通过限制referer来实现防盗链的功能,在虚拟主机vhosts.conf配置文件增加如下内容。
<Directory /data/wwwroot/.com>
SetEnvIfNoCase Referer "http://111.com" local_ref //设置白名单
SetEnvIfNoCase Referer "http://aaa.com" local_ref //设置白名单
#SetEnvIfNoCase Referer "^$" local_ref //空Referer
<FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>
</Directory>
保存配置文件后需要重新加载
[root@jimmylinux- ~]# /usr/local/apache2./bin/apachectl -t
Syntax OK
[root@jimmylinux- ~]# /usr/local/apache2./bin/apachectl graceful
在浏览器刷新111.com/qq.jpg 会出现以下报错,因为这是一个空Referer。

如果想不是空Referer能够正常访问,首先在猿课论坛发一个帖子。

通过帖子打开链接,这个时候同样也会是Forbidden,因为Referer是ask.apelearn.com,如果想正常访问,那么把ask.apelearn.com加入到白名单即可。
SetEnvIfNoCase Referer "http://ask.apelearn.com" local_ref
记得保存配置文件后需要重新加载
[root@jimmylinux- ~]# /usr/local/apache2./bin/apachectl -t
Syntax OK
[root@jimmylinux- ~]# /usr/local/apache2./bin/apachectl graceful
然后点击猿课论坛帖子链接http://111.com/qq.jpg 就可以正常访问了

如果想直接访问,需要把配置文件中空Referer这行前面的#删除掉,这样就可以直接访问。
SetEnvIfNoCase Referer "^$" local_ref
保存退出重新加载配置文件,直接输入http://111.com/qq.jpg 就可以正常访问了。
一样也可以使用curl命令来测试
[root@jimmylinux- ~]# curl -x127.0.0.: .com/qq.jpg -I
HTTP/1.1 OK
Date: Thu, May :: GMT
Server: Apache/2.4. (Unix) PHP/7.1.
Last-Modified: Tue, Apr :: GMT
ETag: "6089-56a0cd2f55ac0"
Accept-Ranges: bytes
Content-Length:
Content-Type: image/jpeg [root@jimmylinux- ~]# curl -e "http://www.qq.com/123.txt" -x127.0.0.: .com/qq.jpg -I //通过-e “http://www.qq.com”指定Referer
HTTP/1.1 Forbidden
Date: Thu, May :: GMT
Server: Apache/2.4. (Unix) PHP/7.1.
Content-Type: text/html; charset=iso-- [root@jimmylinux- ~]# curl -e "http://111.com/123.txt" -x127.0.0.: .com/qq.jpg -I //111.com是本身存在的域名,使用不会报错。
HTTP/1.1 OK
Date: Thu, May :: GMT
Server: Apache/2.4. (Unix) PHP/7.1.
Last-Modified: Tue, Apr :: GMT
ETag: "6089-56a0cd2f55ac0"
Accept-Ranges: bytes
Content-Length:
Content-Type: image/jpeg
可以通过查看日志验证刚才的访问记录
[root@jimmylinux- ~]# tail /usr/local/apache2./logs/.com-access_20180531.log
192.168.52.1 - - [/May/::: +] "GET /favicon.ico HTTP/1.1" "http://111.com/qq.jpg" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"
127.0.0.1 - - [/May/::: +] "HEAD HTTP://111.com/qq.jpg1 HTTP/1.1" - "http://111.com/123.txt" "curl/7.29.0"
11.26 访问控制Directory
访问控制的背景,之前有提到用户认证的方式进行访问,那么我希望能够控制的更严格些,比如当访问内部管理,仅仅针对内部人员,外部人员一律不开放,可以做一些白名单限制,只有在白名单里面的才可以访问,其他的访问都被拒绝。
可以修改虚拟主机配置文件vhosts.conf,为了不和防盗链的配置冲突,把添加的内容放到防盗链配置的上面。
<Directory /data/wwwroot/.com/admin/>
Order deny,allow //这里的order是指顺利,例如order deny,allow 表示先执行deny,再执行allow。
Deny from all
Allow from 127.0.0.1
</Directory> <Directory /data/wwwroot/.com>
SetEnvIfNoCase Referer "http://111.com" local_ref
SetEnvIfNoCase Referer "http://ask.apelearn.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>
</Directory>
在进行测试之前我们先创建指定的admin目录和目录下面的index.php文件,然后加载配置。
[root@jimmylinux- .com]# mkdir admin
[root@jimmylinux- .com]# ls
admin admin.php index.php qq.jpg
[root@jimmylinux- .com]# cd admin/
[root@jimmylinux- admin]# ls
[root@jimmylinux- admin]# vi index.php
[root@jimmylinux- admin]# ls
index.php
[root@jimmylinux- admin]# cat index.php [root@jimmylinux- admin]# /usr/local/apache2./bin/apachectl graceful
使用curl命令进行访问测试,出现状态码403说明访问被限制了。
[root@jimmylinux- .com]# curl -x127.0.0.: .com/admin/index.php -I
HTTP/1.1 OK
Date: Thu, May :: GMT
Server: Apache/2.4. (Unix) PHP/7.1.
X-Powered-By: PHP/7.1.
Content-Type: text/html; charset=UTF- [root@jimmylinux- .com]# curl -x127.0.0.: .com/admin/index.php [root@jimmylinux- .com]# curl -x192.168.52.: .com/admin/index.php -I
HTTP/1.1 Forbidden
Date: Thu, May :: GMT
Server: Apache/2.4. (Unix) PHP/7.1.
Content-Type: text/html; charset=iso-- [root@jimmylinux- .com]# curl -x127.0.0.: .com/admin/index.php [root@jimmylinux- .com]# tail /usr/local/apache2./logs/.com-access_20180531.log
192.168.52.1 - - [/May/::: +] "GET /favicon.ico HTTP/1.1" "http://111.com/qq.jpg" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"
127.0.0.1 - - [/May/::: +] "HEAD HTTP://111.com/qq.jpg1 HTTP/1.1" - "http://111.com/123.txt" "curl/7.29.0"
127.0.0.1 - - [/May/::: +] "HEAD HTTP://111.com/admin/index.php HTTP/1.1" - "-" "curl/7.29.0"
127.0.0.1 - - [/May/::: +] "GET HTTP://111.com/admin/index.php HTTP/1.1" "-" "curl/7.29.0"
192.168.52.129 - - [/May/::: +] "HEAD HTTP://111.com/admin/index.php HTTP/1.1" - "-" "curl/7.29.0"
127.0.0.1 - - [/May/::: +] "GET HTTP://111.com/admin/index.php HTTP/1.1" "-" "curl/7.29.0"
11.27 访问控制FilesMatch
访问控制不仅仅可以针对目录形式,也可以去匹配文件名或者链接的形式进行限制。
例如:http://111.com/admin.php?&1=1&2=2 这样的方式
在vhosts.conf配置文件中添加 <FilesMatch "admin.php(.*)">和</FilesMatch>条件,具体内容如下。
<Directory /data/wwwroot/.com>
<FilesMatch admin.php(.*)>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>
</Directory>
报错配置文件并重新加载,然后使用curl命令测试。
[root@jimmylinux- .com]# curl -x192.168.52.: http://111.com/admin/fjasjds -I
HTTP/1.1 Not Found
Date: Thu, May :: GMT
Server: Apache/2.4. (Unix) PHP/7.1.
Content-Type: text/html; charset=iso-- [root@jimmylinux- .com]# curl -x192.168.52.: 'http://111.com/admin.php?ajasjds' -I
HTTP/1.1 Forbidden
Date: Thu, May :: GMT
Server: Apache/2.4. (Unix) PHP/7.1.
Content-Type: text/html; charset=iso--
配置防盗链、访问控制Directory和FilesMatch的更多相关文章
- 配置防盗链 访问控制Directory 访问控制FilesMatch
- centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课
centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 ...
- Linux centosVMware Apache 配置防盗链、访问控制Directory、访问控制FilesMatch
一.配置防盗链 通过限制referer来实现防盗链的功能 配置文件增加如下内容 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //改为如下 ...
- 11.25-11.27 配置防盗链,访问控制(Directory,FilesMatch)
4月17日任务 11.25 配置防盗链 11.26 访问控制Directory 11.27 访问控制FilesMatch 扩展 几种限制ip的方法 http://ask.apelearn.com/qu ...
- Apache配置 8.配置防盗链
(1)介绍 防盗链,通俗讲,就是不让别人盗用你网站上的资源.这个资源,通常指的是图片.视频.歌曲.文档等. (2)配置 配置防盗链先编辑主机配置文件: #vim /usr/local/apache2. ...
- nginx解决服务器宕机、解决跨域问题、配置防盗链、防止DDOS流量攻击
解决服务器宕机 配置nginx.cfg配置文件,在映射拦截地址中加入代理地址响应方案 location / { proxy_connect_timeout 1; proxy_send_timeout ...
- The server of Apache (四)——配置防盗链和隐藏版本信息
一.防盗链 防盗链就是防止别人的网站代码里面盗用我们服务器的图片.文件.视频等相关资源,比如我们的网页的图片有链接,别人把链接复制粘贴到他们的服务器页面里,图片不在他们自己的网站里,每次打开他们的网站 ...
- LAMP 2.3 Apache配置防盗链
如果你的站点是一个图片站,有很多非常漂亮的美女图片,那我相信,时间久了会有很多人来你网站借图片,有的人直接下载走了,还有的人直接取走图片的地址,比如你的网站域名是 www.123.com,图片地址为 ...
- apache配置防盗链
1.确保apache已开启rewrite. 2.在.htaccess文件中添加如下: RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://X ...
随机推荐
- %%%GXZ大佬回关
- 程序员学点xx 之 Redis
程序员学点xx 之 Redis 概述 其实程序员也要和操作系统打交道, 比如最常见的,部署自己电脑上的开发环境. 当然有时某些牛人, 觉得运维或基础部门的同事不够给力, 亲自上手部署服务器或线上环境, ...
- P3128 [USACO15DEC]最大流
秒切树上查分....(最近一次集训理解的东西) 但是,我敲了半小时才切掉这道题.... 我一直迷在了“边差分”和“点差分”的区别上. 所以,先说一下此题,再说一下区别. 首先,想到差分很容易. 然后, ...
- python中的集合、元组和布尔
#元组,元组跟列表一样,只不过列表可读可写,而元组一般用来只读,不修改#python中不允许修改元组的数据,也包括不能删除其中的元素. t1 = ('a','b','c','d','s','a') & ...
- csp-s2019游记
11.15D0: 复习 复习 机房里弥漫着颓废的气息,不过也是最后一个下午了 11.16D1: 五点钟爬起来,一边发抖一边去楼下买早饭 虽然平时基本不吃早饭,但考前不行 搭着同学的车去了考点,在车上重 ...
- centos6升级openssh至7.9
1.为了防止升级失败登陆不了,所以需要安装telnet mkdir /root/ssh_updateyum install -y telnet-serveryum install -y xinetd ...
- 并发编程-深入浅出AQS
AQS是并发编程中非常重要的概念,它是juc包下的许多并发工具类,如CountdownLatch,CyclicBarrier,Semaphore 和锁, 如ReentrantLock, ReaderW ...
- java实现两个json的深度对比
两个json的深度对比 在网上找了好多资料都没有找到想要的,还是自己写个吧! 上代码!!! 1.pom.xml中加入 <dependency> <groupId>com.ali ...
- pat 1092 To Buy or Not to Buy(20 分)
1092 To Buy or Not to Buy(20 分) Eva would like to make a string of beads with her favorite colors so ...
- python3.7.1安装Scrapy爬虫框架
python3.7.1安装Scrapy爬虫框架 环境:win7(64位), Python3.7.1(64位) 一.安装pyhthon 详见Python环境搭建:http://www.runoob.co ...