一、配置防盗链
- 防盗链,用于防止链接被其他网站盗用导致占用服务器的流量,此时可以通过限制referer来防止链接被盗用。
- 防盗链:通俗来说,就是不让别人盗用你网站上的资源。
- 打开虚拟主机配置文件 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf,增加内容如下,保存退出
<Directory /data/wwwroot/111.com> 指定网站的目录
SetEnvIfNoCase Referer "http://111.com" local_ref 指定白名单referer
SetEnvIfNoCase Referer "http://ask.apelearn.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref 将空referer加入白名单
<FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)">定义规则(针对这些文件设置防盗链)
Order Allow,Deny order定义规则顺序,allow表示同意,deny表示拒绝。
Allow from env=local_ref
</FilesMatch>
</Directory>
- 测试配置文件及重载
curl测试:
- 用curl模拟referer,-e指定referer
- 使用命令curl -e参数模拟refer为http://www.qq.com时拒绝方位状态码403,其中refer必须以http开头,如图:
- 使用命令curl -e参数模拟refer为白名单中的referer时,状态码为200,可以访问,如图:
二、访问控制Directory
- 用于限制某些IP访问重要的目录
- 修改apache虚拟主机配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf 增加如下内容:
核心配置文件内容
<Directory /data/wwwroot/111.com/admin/> 指定需要限制的目录
Order deny,allow Order确定执行顺序,整个语句都会执行一遍。
Deny from all 如果先deny,后allow,则会先执行deny的操作,再执行允许的动作,后面的动作会覆盖前面的操作。如果先allow,后deny all,则最后的结果会是deny。
Allow from 127.0.0.1 添加白名单IP
</Directory>
- 创建admin目录,新建一个index.php文件,内容位121212
- # mkdir admin/
- # cd admin/
- # touch index.php
- # echo "121212" > index.php
- 测试配置及加载配置
- 访问测试:
- curl -x127.0.0.1:80 111.com/admin/index.php -I,-x指定的是目标IP 127.0.0.1,限制的源IP也是127.0.0.1,也可以访问内容
- 改变目标IP,源IP也会改变
三、访问控制FilesMatch
- 访问控制除了目录的形式之外,也可以去匹配链接;
- 针对某一个文件或者某一种文件类型来设置规则
- 修改apache虚拟主机配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf 增加如下内容:
<Directory /data/wwwroot/www.123.com>
<FilesMatch "admin.php(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>
</Directory>
- 测试配置及加载配置
- 使用命令curl测试
- 指向IP为192.168.133.150时显示状态码为403,无法访问。
四、限定某个目录禁止解析php
- 有些目录是存放静态文件的目录,如图片目录,本身不需要允许php的解析。如果没有注意,允许了php解析,而且又开放了该目录的文件上传权限。很可能被别有用心的人利用上传木马,导致服务器被攻破。除了开发人员在程序开发过程中要注意安全的设计,也可以通过apache限制某些目录的php解析。
- 本节内容应用于对静态文件目录或可写的目录进行优化设置,通过限制解析/访问权限来避免别恶意攻击,提高安全性。
- 修改apache虚拟主机配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf 增加如下内容:
<Directory /data/wwwroot/abc.com/upload>
- 创建相应的目录:
[root@gaodehua33 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<Directory /data/wwwroot/111.com/upload>
php_admin_flag engine off
</Directory>
- 测试配置及加载配置
- 测试
[root@gaodehua33 111.com]# curl -x192.168.8.131:80 'http://111.com/upload/123.php'
<?php
echo "welcom to 123file";
?>
[root@gaodehua33 111.com]# curl -x192.168.8.131:80 'http://111.com/upload/baidu.pnp' -I
HTTP/1.1 200 OK
Date: Thu, 03 Aug 2017 04:47:16 GMT
Server: Apache/2.4.27 (Unix) PHP/5.6.30
Last-Modified: Thu, 03 Aug 2017 04:25:26 GMT
ETag: "e7a-555d1c5172a6c"
Accept-Ranges: bytes
Content-Length: 3706
Content-Type: image/png
- 同时禁止显示源代码,可以添加filesmatch语句,来禁止访问php文件。内容如下:
<Directory /data/wwwroot/abc.com/upload>
php_admin_flag engine off
<FilesMatch (.*)\.php(.*)> 添加filesmatch规则,禁止访问php的文件
Order allow,deny
Deny from all 全部拒绝
</FilesMatch>
</Directory>
- 此时在使用命令curl测试,显示状态码403。无法解析访问php文件,不会显示源代码。如图:
[root@gaodehua33 upload]# curl -x192.168.199.128:80 'http://111.com/upload/123.php'
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /upload/123.php
on this server.<br />
</p>
</body></html>
[root@gaodehua33 upload]#
五、限制user_agent
- user_agent(用户代理):是指浏览器(搜索引擎)的信息包括硬件平台、系统软件、应用软件和用户个人偏好。
- 有时候网站受到CC攻击,其原理是:攻击者借助代理服务器(肉机)生成指向受害主机的合法请求,实现DDOS和伪装。CC攻击的一个特点就是其useragent是一致的,所以,可以通过限制攻击者useragent的方法来阻断其攻击。
- 修改apache虚拟主机配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf 增加如下内容:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR] 限制curl,baidu.com代理的访问,其中OR表示或者,NC表示忽略大小写。
RewriteCond %{HTTP_USER_AGENT} .*baidu.com.* [NC]
RewriteRule .* - [F]
</IfModule>
- 使用curl命令测试,报错代码403
[root@gaodehua33 upload]# curl -A "www.baidu.com" -x192.168.199.128:80 'http://111.com/123.php' -I
HTTP/1.1 403 Forbidden
Date: Sat, 15 Dec 2018 17:49:16 GMT
Server: Apache/2.4.34 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
- 使用curl ,选项-A 指定user_agent为aming,访问正确
[root@gaodehua33 111.com]# curl -A "aming" -x192.168.199.128:80 'http://111.com/123.php' -I
HTTP/1.1 200 OK
Date: Sat, 15 Dec 2018 18:04:06 GMT
Server: Apache/2.4.34 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Type: text/html; charset=UTF-8
[root@gaodehua33 111.com]#