11.25 配置防盗链
防盗链能限制不认识的referer的访问,能够禁止别人的服务器引用或转发服务器上的内容,这样可以防止别人盗用服务器上的资源,服务器的资源被盗用会导致网络带宽的使用量上升。
通过限制referer来实现防盗链的功能
暂且去掉rewrite expires
配置文件增加如下内容
<Directory /data/wwwroot/111.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>
//自定义referer 模拟第三方网站的访问-e,域名的描述不能乱写,要以http://开头。
curl -e "http://www.qq.com/123.txt" -x 127.0.0.1:80 111.com/qq.png -I
curl -e "http://111.com/123.txt" -x 127.0.0.1:80 111.com/qq.png -I
11.26 访问控制Directory
访问控制类似于用户认证,但是要比用户认证更安全一些,因为用户认证需要输入账户密码,如果账户密码被别人知道了,那么别人就能够通过认证去访问你的服务器了。
访问控制则不需要通过账户密码来验证,因为访问控制只允许白名单内的IP进行访问,其他的IP一概拒绝访,所以在安全性上要比用户认证的机制更安全一些,而且这两者也可以结合到一起使用:先通过用户认证再让访问控制去过滤IP也是可以的。
核心配置文件内容
为避免冲突,放到配置防盗链的上面。
<Directory /data/wwwroot/111.com/admin/>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
保存修改后,到/data/wwwroot/111.com目录下创建一个admin目录,并拷贝index.php文件到admin目录下
-t graceful
curl -x 127.0.0.1:80 111.com/admin/index.php -I
curl -x 192.168.174.128:80 111.com/admin/index.php -I
curl测试状态码为403则被限制访问了
可以看到使用白名单里的IP是可以进行访问
如果换一个不在白名单里的IP去进行访问,就会出现403状态码。
11.27 访问控制FilesMatch
除了Directory的访问控制还有FilesMatch的访问控制,Directory访问控制类似于限制一个目录的访问,而FilesMatch访问控制则类似于限制一个文件或文件链接的访问,FilesMatch要写在Directory之内。
核心配置文件内容
<Directory /data/wwwroot/111.com>
<FilesMatch "admin.php(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>
</Directory>
修改完成后重新加载配置文件,然后使用curl命令访问admin.php或与此文件的相关链接,就都会报403状态码:
curl -x 192.168.174.128:80 111.com/admin.php -I
curl -x 192.168.174.128:80 '111.com/admin.php.?name=aaa&address' -I
使用白名单内的IP去访问就不会报403了,报404的原因是因为没有这个文件,但是已经可以访问了:
curl -x 127.0.0.1:80 111.com/admin.php -I
控制FilesMatch 相对于控制Directory 来说要灵活一些,因为Directory是控制整个目录,控制FilesMatch则能针对一些具体的文件去进行控制,要更细化一些,对一些具体的访问控制,就适合控制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