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的更多相关文章

  1. 配置防盗链 访问控制Directory 访问控制FilesMatch

  2. centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课

    centos    LAMP第二部分apache配置  下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转  配置apache的访问日志  配置静态文件缓存  配置防盗链 ...

  3. Linux centosVMware Apache 配置防盗链、访问控制Directory、访问控制FilesMatch

    一.配置防盗链 通过限制referer来实现防盗链的功能 配置文件增加如下内容 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //改为如下 ...

  4. 11.25-11.27 配置防盗链,访问控制(Directory,FilesMatch)

    4月17日任务 11.25 配置防盗链 11.26 访问控制Directory 11.27 访问控制FilesMatch 扩展 几种限制ip的方法 http://ask.apelearn.com/qu ...

  5. Apache配置 8.配置防盗链

    (1)介绍 防盗链,通俗讲,就是不让别人盗用你网站上的资源.这个资源,通常指的是图片.视频.歌曲.文档等. (2)配置 配置防盗链先编辑主机配置文件: #vim /usr/local/apache2. ...

  6. nginx解决服务器宕机、解决跨域问题、配置防盗链、防止DDOS流量攻击

    解决服务器宕机 配置nginx.cfg配置文件,在映射拦截地址中加入代理地址响应方案 location / { proxy_connect_timeout 1; proxy_send_timeout ...

  7. The server of Apache (四)——配置防盗链和隐藏版本信息

    一.防盗链 防盗链就是防止别人的网站代码里面盗用我们服务器的图片.文件.视频等相关资源,比如我们的网页的图片有链接,别人把链接复制粘贴到他们的服务器页面里,图片不在他们自己的网站里,每次打开他们的网站 ...

  8. LAMP 2.3 Apache配置防盗链

    如果你的站点是一个图片站,有很多非常漂亮的美女图片,那我相信,时间久了会有很多人来你网站借图片,有的人直接下载走了,还有的人直接取走图片的地址,比如你的网站域名是 www.123.com,图片地址为 ...

  9. apache配置防盗链

    1.确保apache已开启rewrite.   2.在.htaccess文件中添加如下: RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://X ...

随机推荐

  1. 【原创】go语言学习(十一)package简介

    目录 Go源码组织方式 main函数和main包 编译命令 自定义包 init函数以及执行行顺序 _标识符 Go源码组织方式 1. Go通过package的方式来组织源码 package 包名 注意: ...

  2. Python 图形验证码库、二维码库的使用

    1. 图形验证码库 captcha # 引入图形库 from captcha.image import ImageCaptcha # 获取图像对象 image = ImageCaptcha(width ...

  3. OA权限设计

    Action表,有多少个Action,就有多少个记录; UserAction表,记录条数 = User数 * Action数,用于最终确定用于能否请求某个action Role角色表,自定义条数; R ...

  4. 在mac上用parallels创建双windows虚拟机调试windows驱动

    先创建两个windows 7 虚拟机,一个装windbg作为调试机,一个被调试 1 调试机 1 先装windbg https://developer.microsoft.com/en-us/windo ...

  5. group:状压dp,轮廓线

    神仙题.但是难得的傻孩子cbx没有喊题解,所以也就难得的自己想出来了一个如此神仙的题. 如果是自己想的,说它神仙是不是有点不合适啊..? 反正的确不好像.关键就在于这个标签.颓完标签就差不多会了. % ...

  6. Vue组件间通信方式到底有几种

    1. 前言 Vue的一个核心思想就是组件化.所谓组件化,就是把页面拆分成多个组件 (component),每个组件依赖的 CSS.JavaScript.模板.图片等资源放在一起开发和维护.组件是资源独 ...

  7. 羞,Java 字符串拼接竟然有这么多姿势

    二哥,我今年大二,看你分享的<阿里巴巴 Java 开发手册>上有一段内容说:"循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作 ...

  8. CAP的学习和应用

    性能优化真言:队列缓存分布式  异步调优堆配置 前言:用CAP有一段时间了,这里简单记录一下,这么好用的东西,小伙伴们赶紧上车吧 一.CAP使用场景? 平时工作中经常使用到MQ,如(kafka,rab ...

  9. html5自动横屏的方法

    html5自动横屏的方法<pre>var evt = "onorientationchange" in window ? "orientationchange ...

  10. java中 equals和==区别

    一.java当中的数据类型和“==”的含义: 基本数据类型(也称原始数据类型) :byte,short,char,int,long,float,double,boolean.他们之间的比较,应用双等号 ...