11.25 配置防盗链
11.26 访问控制Directory
11.27 访问控制FilesMatch
11.25 配置防盗链
假如其他网站引用本站点的图片,每当有人访问他的网站的图片时候,就会请求到我们的服务器上,但是这些请求对于我们来说毫无意义,并且浪费带宽。因此我们要为网站上的静态文件做防盗链。
配置文件
在test2的<VirtualHost>
里面加上以上配置1
2
3
4
5
6
7
8
9<Directory /var/www/test2.com>
SetEnvIfNoCase Referer "test2.com" local_ref
SetEnvIfNoCase Referer "www.test2.com" local_ref
SetenvIfNoCase Referer "^$" local_ref
<FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png|JPG)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>
</Directory>
Order Allow,Deny
先执行允许的条件后再执行禁止的条件 ^$
表示空referer
加载文件
1 | [root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t |
测试
用浏览器在论坛发贴 并超链接服务器的图片
当访问这个链接后出现禁止访问就说明防盗链成功
在linux上curl命令来测试1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16[root@localhost ~]# curl -e "http://www.g.cn" -x192.168.80.101:80 test2.com/test.jpg -I
HTTP/1.1 403 Forbidden
Date: Wed, 30 May 2018 21:15:46 GMT
Server: Apache/2.4.33 (Unix) PHP/5.6.32
Content-Type: text/html; charset=iso-8859-1
[root@localhost ~]# curl -e "http://www.test2.com" -x192.168.80.101:80 test2.com/test.jpg -I
HTTP/1.1 200 OK
Date: Wed, 30 May 2018 21:16:24 GMT
Server: Apache/2.4.33 (Unix) PHP/5.6.32
Last-Modified: Mon, 28 May 2018 23:15:15 GMT
ETag: "10883-56d4c4a57cccb"
Accept-Ranges: bytes
Content-Length: 67715
Cache-Control: max-age=86400
Expires: Thu, 31 May 2018 21:16:24 GMT
Content-Type: image/jpeg
-e
指定referer 开头必须是http://
11.26 访问控制Directory
公司后台的网站即使设置了用户访问,但也有泄露密码的风险。为了进一步的加强安全,我们可以为后台的网站设置固定某些IP才可以访问。
配置文件
在test2的<VirtualHost>
里面加上以上配置1
2
3
4
5<Directory /var/www/test2.com/admin/>
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Directory>
Order Deny,Allow
所有的访问都会先执行禁止的条件后再执行允许的条件 例如127.0.0.1的访问都会先deny掉再allow回来
加载文件
1 | [root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t |
测试
在浏览器上访问test2.com/admin下的1.php被拒绝了
用curl命令 127.0.0.1可以访问admin目录里面的1.php1
2
3
4
5
6
7
8
9
10
11
12
13[root@localhost ~]# curl -x 127.0.0.1:80 test2.com/admin/1.php -I
HTTP/1.1 200 OK
Date: Wed, 30 May 2018 22:30:48 GMT
Server: Apache/2.4.33 (Unix) PHP/5.6.32
X-Powered-By: PHP/5.6.32
Cache-Control: max-age=0
Expires: Wed, 30 May 2018 22:30:48 GMT
Content-Type: text/html; charset=UTF-8
[root@localhost ~]# curl -x 192.168.80.101:80 test2.com/admin/1.php -I
HTTP/1.1 403 Forbidden
Date: Wed, 30 May 2018 22:31:30 GMT
Server: Apache/2.4.33 (Unix) PHP/5.6.32
Content-Type: text/html; charset=iso-8859-1
11.27 访问控制FilesMatch
也可以针对每个文件或者链接来控制
配置文件
在test2的<VirtualHost>
里面加上以上配置1
2
3
4
5
6
7<Directory /var/www/test2.com>
<FilesMatch "1.php(.*)">
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>
</Directory>
加载文件
1 | [root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t |
测试
使用浏览器去访问test2.com/admin/111没找到文件说明可以访问
访问1.php开头的文件都是显示禁止访问了
用curl命令 只有127.0.0.1才可以访问到1.php开头的文件1
2
3
4
5
6
7
8
9
10[root@localhost ~]# curl -x 127.0.0.1:80 test2.com/admin/1.phpsdfsd -I
HTTP/1.1 404 Not Found
Date: Wed, 30 May 2018 23:05:31 GMT
Server: Apache/2.4.33 (Unix) PHP/5.6.32
Content-Type: text/html; charset=iso-8859-1
[root@localhost ~]# curl -x 192.168.80.101:80 test2.com/admin/1.phpsdfsd -I
HTTP/1.1 403 Forbidden
Date: Wed, 30 May 2018 23:05:44 GMT
Server: Apache/2.4.33 (Unix) PHP/5.6.32
Content-Type: text/html; charset=iso-8859-1