配置防盗链、访问控制Directory、访问控制FilesMatch

目录

一、配置防盗链
二、访问控制Directory
三、访问控制FilesMatch

一、配置防盗链

  • 盗链的含义是网站内容本身不在自己的服务器上,而通过技术手段直接调用别人服务器网站数据在自己网站页面向最终用户提供此内容。通常是一些小网站盗用大网站的音乐、图片、软件的链接放在自己的网站上,小网站通过这种方法盗取了大网站的空间和流量。防盗链,顾名思义,就是防止别人盗链。我们可以通过限制referer来实现防盗链的功能。

  • 先说一下Referer的概念,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器藉此可以获得一些信息用于处理。比如你通过A网站的一个页面http://a.com/a.html里面的链接去访问B网站的一个页面http://b.com/b.html,那么这个B网站页面的referer就是http://a.com/a.html。也就是说,一个referer其实就是一个网址。

  • 编辑配置文件加入以下内容设置防盗链

[root@minglinux-01 ~] vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
···
···
<Directory /usr/local/apache2.4/htdocs/ming1>
        SetEnvIfNoCase Referer "http://www.ming2.com" local_ref //设置该Referer为白名单
        SetEnvIfNoCase Referer "http://ming2.com" local_ref //设置该Referer为白名单
        SetEnvIfNoCase Referer "^$" local_ref //将空Referer设为白名单
        <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)">   //访问txt、doc、mp3、zip、rar、jpg、gif、png格式的文件才会被限制。
            Order Allow,Deny
            Allow from env=local_ref  //表示允许归类到变量local_ref中的Referer访问,其他的则不允许
        </filesmatch>
    </Directory>
···
  • 测试
[root@minglinux-01 ~] /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@minglinux-01 ~] /usr/local/apache2.4/bin/apachectl graceful
httpd not running, trying to start
[root@minglinux-01 ~] /usr/local/apache2.4/bin/apachectl graceful
[root@minglinux-01 ~] curl -e "http:www.ming2.com" -x127.0.0.1:80 http://www.ming1.com/1.png -I
HTTP/1.1 200 OK
Date: Sat, 17 Nov 2018 15:47:49 GMT
Server: Apache/2.4.37 (Unix) PHP/5.6.30
Last-Modified: Sun, 09 Sep 2018 10:02:50 GMT
ETag: "5a1a2-5756d57e40680"
Accept-Ranges: bytes
Content-Length: 369058
Cache-Control: max-age=86400
Expires: Sun, 18 Nov 2018 15:47:49 GMT
Content-Type: image/png
[root@minglinux-01 ~] curl -e "http://www.abc.com" -x127.0.0.1:80 http://www.ming1.com/1.png -I
HTTP/1.1 403 Forbidden
Date: Sat, 17 Nov 2018 17:39:19 GMT
Server: Apache/2.4.37 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1

curl加-e选项来定义访问时携带的referer,这个referer一定要以http://开头,否则不管用。

由上可知当referer是http:www.ming2.com时可以访问到1.png,当referer是http://www.abc.com时则不可以访问。

二、访问控制Directory

  • 对于一些比较重要的网站内容,如公司内部不对外开放的内容,除了可以使用用户认证限制访问之外,还可以通过其他一些方法做到限制,比如可以限制IP,也可以限制user_agent。限制IP指的是限制访问网站的来源IP,而限制user_agent,通常用来限制恶意或者不正常的请求。

  • 配置IP访问控制

[root@minglinux-01 ~] vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<Directory /usr/local/apache2.4/htdocs/ming1/admin>
       Order deny,allow
       Deny from all
       Allow from 127.0.0.1
    </Directory>

使用<Directory>来指定要限制访问的目录,order定义控制顺序,哪个在前面就先匹配哪个规则。在上例中deny在前面,所以先匹配Deny from all,这样所有的来源IP都会被限制,然后匹配Allow from127.0.0.1,这样又允许了127.0.0.1这个IP。最终的效果是,只允许来源IP为127.0.0.1的访问。

  • 验证
[root@minglinux-01 ~] vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
[root@minglinux-01 ~] /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@minglinux-01 ~] /usr/local/apache2.4/bin/apachectl graceful
[root@minglinux-01 ~] mkdir /usr/local/apache2.4/htdocs/ming1/admin
[root@minglinux-01 ~] echo "admin page" > /usr/local/apache2.4/htdocs/ming1/admin/index.php
[root@minglinux-01 ~] cat !$
cat /usr/local/apache2.4/htdocs/ming1/admin/index.php
admin page
[root@minglinux-01 ~] curl -x127.0.0.1:80 www.ming1.com/admin/index.php -I
HTTP/1.1 200 OK
Date: Sun, 18 Nov 2018 15:04:20 GMT
Server: Apache/2.4.37 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Cache-Control: max-age=0
Expires: Sun, 18 Nov 2018 15:04:20 GMT
Content-Type: text/html; charset=UTF-8

[root@minglinux-01 ~] curl -x192.168.162.130:80 www.ming1.com/admin/index.php -I
HTTP/1.1 403 Forbidden
Date: Sun, 18 Nov 2018 15:04:34 GMT
Server: Apache/2.4.37 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1

  • 查看访问日志
[root@minglinux-01 ~] tail -n2 /usr/local/apache2.4/logs/www.ming1.com-access_20181118.log 
127.0.0.1 - - [18/Nov/2018:23:04:20 +0800] "HEAD HTTP://www.ming1.com/admin/index.php HTTP/1.1" 200 - "-" "curl/7.29.0"
192.168.162.130 - - [18/Nov/2018:23:04:34 +0800] "HEAD HTTP://www.ming1.com/admin/index.php HTTP/1.1" 403 - "-" "curl/7.29.0"

可以看到源IP是127.0.0.1的访问被允许,源IP是192.168.162.130的访问被允许。

三、访问控制FilesMatch

  • FilesMatch设置针对网站页面的访问控制
[root@minglinux-01 ~] vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<Directory /usr/local/apache2.4/htdocs/ming1/admin>
       <FilesMatch index.php(.*)>   //针对index.php页面
       Order deny,allow
       Deny from all
       Allow from 127.0.0.1
       </FilesMatch>
 </Directory>
  • 测试
[root@minglinux-01 ~] /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@minglinux-01 ~] /usr/local/apache2.4/bin/apachectl graceful
[root@minglinux-01 ~] curl -x192.168.162.130:80 www.ming1.com/admin/index.php -I
HTTP/1.1 403 Forbidden
Date: Sun, 18 Nov 2018 15:25:20 GMT
Server: Apache/2.4.37 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1

[root@minglinux-01 ~] curl -x192.168.162.130:80 www.ming1.com/admin/abc.php -I 
HTTP/1.1 200 OK
Date: Sun, 18 Nov 2018 15:25:32 GMT
Server: Apache/2.4.37 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Cache-Control: max-age=0
Expires: Sun, 18 Nov 2018 15:25:32 GMT
Content-Type: text/html; charset=UTF-8

[root@minglinux-01 ~] curl -x127.0.0.1:80 www.ming1.com/admin/index.php -I
HTTP/1.1 200 OK
Date: Sun, 18 Nov 2018 15:26:14 GMT
Server: Apache/2.4.37 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Cache-Control: max-age=0
Expires: Sun, 18 Nov 2018 15:26:14 GMT
Content-Type: text/html; charset=UTF-8

访问控制仅针对index.php页面,目录下其他页面不受影响。

扩展

几种限制ip的方法 http://ask.apelearn.com/question/6519
apache 自定义header http://ask.apelearn.com/question/830
apache的keepalive和keepalivetimeout http://ask.apelearn.com/question/556

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容