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. 讲一讲快速学习WPF的思路

    我不想浪费大家的时间,直接奔主题了. 首先大家要明白,WPF跟Winform的区别,优点,缺点. 首先入门来讲 Winform简单点,WPF会难一点.所以第一次接触C# 我推荐用Winform项目去学 ...

  2. Node配合WebSocket做多文件下载以及进度回传

    起因 为什么做这个东西,是突然间听一后端同事说起Annie这个东西,发现这个东西下载视频挺方便的,会自动爬取网页中的视频,然后整理成列表.发现用命令执行之后是下面的样子: 心里琢磨了下,整一个界面玩一 ...

  3. [Luogu5384][Cnoi2019] 雪松果树

    传送门 虽然这题是一道二合一,也不算难,但还是学到了很多东西啊,\(k\) 级儿子个数的五种求法!!我还是觉得四种比较好( \(k\) 级儿子个数有五种求法,你知道么? --鲁迅 首先 \(k\) 级 ...

  4. [考试反思]1004csp-s模拟测试59:惊醒

    一句话:我看错考试时间了,我以为11:30结束,T2T3暴力没来得及交. 为什么考试的时间忽然变了啊...没转过来 一定要看清考试的起止时间! 虽说T2T3连爆搜都没打,只打特殊性质只有32分.爆搜分 ...

  5. P4873 [USACO14DEC] Cow Jog_Gold 牛慢跑(乱搞?二分?)

    (话说最近写的这类题不少啊...) 化简:给定数轴上一系列点,向正方向移动,点不能撞在一起,如果碰到一起就需要放到另外一行,求要多少行才能满足所有点不相撞的条件. (被标签误解,老是想到二分答案... ...

  6. ElasticSearch(四):基本搜索

    ElasticSearch(四):基本搜索 学习课程链接<Elasticsearch核心技术与实战> URI Search 使用HTTP的GET方法,在URL中使用查询参数进行查询. GE ...

  7. JS面试题-<变量和类型>-JavaScript的数据类型

    前言 整理以前的面试题,发现问js数据类型的频率挺高的,回忆当初自己的答案,就是简简单单的把几个类型名称罗列了出来,便没有了任何下文.其实这一个知识点下可以牵涉发散出很多的知识点,如果一个面试者只是罗 ...

  8. 运维自动化管理服务器 CheungSSH

    CheungSSH 是一款中国人自主研发的Linux运维自动化管理服务器软件,后端使用 Python 语言+Django 的 Web 框架,前端使用 Bootstrap+Javascript+jQue ...

  9. unittest加载测试用例名称必须以test开头,是否可以定制化

    ​ 前几天,在一个群里,一个人问了,这样一个问题.说他面试遇到一个面试官,问他,为啥unittest的测试用例要用test 开头,能不能定制化.他不知道为啥. 看到这个题目,我回答当然可以了,可以用l ...

  10. mysql里面的时间获取(格式年月日)

    1.当前日期 select DATE_SUB(curdate(),INTERVAL 0 DAY) ; 2.明天日期 select DATE_SUB(curdate(),INTERVAL -1 DAY) ...