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

2018-11-19  本文已影响0人  XiaoMing丶

目录

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

一、配置防盗链

[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

[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

[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

上一篇下一篇

猜你喜欢

热点阅读