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. java常用类Time

    LocalDate:IOS格式(yyyy-MM-dd)日期 LocalTime:表示一个时间 LocalDateTime:表示时间日期 Instant 时间线上的瞬时点,可以用来记录应用程序中的时间时 ...

  2. MIT线性代数:19.行列式和代数余子式

  3. 网络安全-主动信息收集篇第二章-二层网络扫描之nmap

    nmap是网络层.传输层最重要的扫描工具之一,可以结合脚本对应用层的扫描和对网络弱点发现. 网络层发现nmap使用: Usage: nmap [Scan Type(s)] [Options] {tar ...

  4. [考试反思]1023csp-s模拟测试84:精妙

    一套很奇怪的题.单调性+神仙dp/搜索+随机化. 但是说实在的,思路都很不错. 考场上显然乱搞没什么好说的. 虽说T2剪枝打错变量名掉了20分... T1:Smooth 暴力各有不同,最暴力的想法就是 ...

  5. php修改网站默认编码

    php修改网站默认编码网站如果header 不指定utf8默认 不是utf8 所以输入中文显示会乱码 一般都是apache不是不是utf8 打开 apache 配置文件 httpd.conf 加个 A ...

  6. Python 基础之socket编程(三)

    python 基础之socket编程(三) 前面实现的基于socket通信只能实现什么呢?在tcp协议的通信中就是一个用户说一句,服务端给你回一句,你再给服务端说一句,服务端再给你回一句,就这样一直友 ...

  7. PHP RSA签名(公钥、私钥)

    签名算法:    Setp.1 确定待签名参数        在请求参数列表中,除去sign参数外,其他需要使用到的参数皆是要签名的参数. 在通知返回参数列表中,除去sign参数外,凡是通知返回回来的 ...

  8. Kotlin Coroutines不复杂, 我来帮你理一理

    Coroutines 协程 最近在总结Kotlin的一些东西, 发现协程这块确实不容易说清楚. 之前的那篇就写得不好, 所以决定重写. 反复研究了官网文档和各种教程博客, 本篇内容是最基础也最主要的内 ...

  9. 力扣(LeetCode)整数反转 个人题解

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: ...

  10. PHP产生不重复随机数的5个方法总结

    无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地.在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下 无论是We ...