11.25 配置防盗链php
防止有人利用网站文件上传的功能,把一些静态媒体资源放到咱们的网站上,而后在他们的网站上设置这些资源的连接到咱们的网站上,当他们网站用户访问这些资源时,就会跳转到咱们的服务器上,致使咱们的服务器带宽流量异常增大。为了防止这种状况发生,咱们利用apache服务器访问控制实现防盗链功能。apache
在/usr/local/apache2.4/conf/extra/httpd-vhosts.conf配置文件下进行设定:浏览器
<Directory /data/wwwroot/111.com> #定义防盗链的目录 SetEnvIfNoCase Referer "http://www.111.com" local_ref //指定referer白名单 SetEnvIfNoCase Referer "http://111.com" local_ref //指定referer白名单 SetEnvIfNoCase Referer "^$" local_ref //空的referer也能访问 <FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif)"> //使用文件匹配访问控制,定义规则 Order Allow,Deny //访问控制顺序,先容许后拒绝。 Allow from env=local_ref //只有符合白名单上的referer才能访问111.com目录。 </FilesMatch> </Directory>
查看设置是否成功服务器
[root@localhost 111.com]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@localhost 111.com]# /usr/local/apache2.4/bin/apachectl graceful [root@localhost 111.com]# !curl ..... HTTP/1.1 200 OK
验证效果。curl
curl -e “www.111.com” -x127.0.0.1:80 www.111.com/logo.jpg -I //-e选项是指定referer进行访问。
11.26 访问控制Directory测试
公司的内部网站能够设置访问控制,指定来源IP才可以访问,只有把公司里面的IP地址放到referer白名单里面就能够访问了。网站
配置的时候,把Directory配置的内容放在防盗链前面url
在/usr/local/apache2.4/conf/extra/httpd-vhosts.conf配置文件下进行设定:3d
<Directory /data/wwwroot/111.com> // 指定须要访问控制的网站的目录 Order deny,allow //访问控制的顺序,先全部都拒绝,而后再容许指定的ip。和iptables不一样,能够所有规则都执行下去。 Deny from all // 拒绝全部的来源ip Allow from 127.0.0.1 //指定容许访问的来源ip(指定网段也能够192.168.0.0/24) </Directory> [root@localhost 111.com]# !tail 查看日志中源IP地址 [root@localhost 111.com]# curl -x 192.168.168.133:80 www.123.com/admin/ #192是本机的IP
注意:curl测试状态码为403则被限制访问了日志
11.27 访问控制FilesMatch
除了对整个网站的目录进行访问控制外,还能够对网站的指定某一个页面进行访问控制,例如只有指定的来源ip才可以访问后台管理的页面。
也是在/usr/local/apache2.4/conf/extra/httpd-vhosts.conf配置文件下进行设定:
<Directory /date/wwwroot/111.com> <FilesMatch "admin.php(.*)"> //指定须要访问控制的页面 Order deny,allow //访问控制的顺序,先全部都拒绝,而后再容许指定的ip Deny from all // 拒绝全部的来源ip Allow from 127.0.0.1 //指定容许访问的来源ip(指定网段也能够192.168.0.0/24) </FilesMatch> </Directory>
查看设置是否成功
[root@localhost 111.com]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@localhost 111.com]# /usr/local/apache2.4/bin/apachectl graceful
测试:
[root@localhost 111.com]# curl -x 192.168.168.133:80 'http.123.com/admin.php?' -I
常见问题:
已经被容许了,仍是被限制了?
答:首先看了你的配置远程链接的IP 是111.231.137.133,这是你的虚拟机IP ,在看了你的配置容许放行的ip是你虚拟机的ip,并非你物理机的ip, 因此你用物理机上的浏览器去访问你的虚拟机的网站确定不会放行啊,你将物理机的IP 添加进配置 在访问试试
二、浏览器访问就访问不了
答:allow from后面跟的ip,究竟是客户端的ip仍是服务端的ip? 你浏览器访问,那你知道设置哪一个ip为白名单ip才行吗?
三、curl -x192.168.133.150:80 111.com/admin/index.php 意思就是访问111.com/admin/index.php 这个地址, 被访问者IP(目标IP)是192.168.133.150在80端口。 可是为何apache的log上会显示访问者的IP是192.168.130呢? 若是apache服务器上有一张网卡的IP是192.168.133.150 由于是本身访问本身,那访问者IP不同也是192.168.133.150吗?为何会变成 192.168.133.130?
答:两个ip是同一个网段, 访问150的时候,源ip就是130.
四、打了一个不存在的 地址仍是200
答:只要index.php 存在 它就不会报404
相关连接:
几种限制ip的方法 http://ask.apelearn.com/question/6519
apache 自定义header http://ask.apelearn.com/question/830
apache的keepalive和keepalivetimeout http://ask.apelearn.com/question/556