apache的安全配置看一下网站的根目录/data/www/有一个/data/www/data/目录看一下她的权限
[root@zhangmengjunlinux data]# ls -al /data/www/data/
总用量 68
drwxr-xr-x 15 daemon root 4096 1月 1 11:30 .
drwxr-xr-x 13 root root 4096 12月 27 02:10 ..
drwxr-xr-x 2 daemon root 4096 12月 27 01:43 addonmd5
drwxr-xr-x 12 daemon root 4096 12月 31 16:33 attachment
drwxr-xr-x 2 daemon root 4096 12月 27 01:43 avatar
drwxr-xr-x 2 daemon root 4096 12月 8 10:39 backup_a7ac7c
drwxr-xr-x 2 daemon root 4096 12月 31 16:39 cache
drwxr-xr-x 3 daemon daemon 4096 12月 27 02:08 diy
drwxr-xr-x 2 daemon root 4096 12月 27 01:43 download
-rw-r--r-- 1 daemon root 0 12月 8 10:39 index.htm
-rw-r--r-- 1 root root 20 1月 1 11:30 info.php
-rw-r--r-- 1 daemon daemon 0 12月 27 02:08 install.lock
drwxr-xr-x 2 daemon root 4096 12月 8 10:39 ipdata
drwxr-xr-x 2 daemon root 4096 1月 1 10:36 log
drwxr-xr-x 2 daemon root 4096 12月 27 01:43 plugindata
-rw-r--r-- 1 daemon daemon 0 1月 1 11:34 sendmail.lock
-rw-r--r-- 1 daemon root 772 12月 8 10:39 stat_setting.xml
drwxr-xr-x 2 daemon daemon 4096 12月 31 17:43 sysdata
drwxr-xr-x 2 daemon root 4096 1月 1 11:34 template
drwxr-xr-x 2 daemon root 4096 12月 27 02:08 threadcache
实际上apache运行的用户就是daemon,我们为什么要把它改成属主daemon,因为我们在安装apache的时候有去验证经过检测,如果你这个没有写权限的话你是不可能成功安装的,为什么/data/目录需要去写呢,因为我们在data目录下会生成一些缓存文件、临时文、附件,比如说我们的网站有可能上传一些图片,我们来测一下,发一个帖子,那帖子发完之后,我们去网站的根目录下查找
[root@zhangmengjunlinux data]# cd /data/www/data/attachment/forum/
[root@zhangmengjunlinux forum]# ls 我们在这里看到生成一个新的目录
201512 201601
[root@zhangmengjunlinux forum]# cd 201601/
[root@zhangmengjunlinux 201601]# ls
01 index.html
[root@zhangmengjunlinux 201601]# cd 01/
[root@zhangmengjunlinux 01]# ls
103719rkd74osszda4f673.jpg index.html
我们可以看到它生成了一个新的图片,那么这个图片就是我们刚刚上传的图片,不妨我们去WEB访问一下
www.test.com/data/attachemnt/forum/201601/01/103719rkd74osszda4f673.jpg 图片的地址现在是Forbidden因为我们做了防盗链,现在我们遇到一个问题,这些 目录data目录它意味着可以被用户去写,如果网站有漏洞的话,被被一个人上传了木马文件,如果被执行了怎么办,不小心一点执行了服务器被入侵了,可以获得一些权限,那这个时候我们就应该给它做一些限制,要么你不允许它上传,要么你即使它上传之后,我们不允许它做任何的操作,两种情况,那么第一种你是不可以做的,因为你一旦限制了任何的用户都不能正常上传,那这个肯定是不合适的,那我们只能用第二种方法,去限制它进行解析,它即使上传了一个木马文件,但是它不能正常的去解析,那么也就意味着我们没有风险,怎么去限制呢,那比如说我们就针对这个data目录去做一个限制,禁止解析
#vim /usr/local/apache2/conf/extra/httpd-vhost.conf
首先我们先要定义它的路径
<Directory /data/www/data/>
我们要把PHP的解析引擎关掉,不让它解析了
php_admin_flag engine off
并且我们再做一个限制,你即使不能解析了,但是我们还可以访问啊,访问的时候它就会把你的源代码下载走
简单关闭PHP引擎就这么一行:php_admin_flag engine off
那么现在也就意味着网站的目录data下的所有目录包括子目录,我们先做一个实验
[root@zhangmengjunlinux 01]# cd /data/www/data/
[root@zhangmengjunlinux data]# ls
info.php
[root@zhangmengjunlinux data]# vim info.php
<?php
phpinfo();
>?
保存退出
去web测试 www.test.com/data/info.php
你会发现它会直接把文件下载下来,这个肯定是不对的,比如说你这个目录里就有一些PHP文件,结果用户一访问的时候就直接把他们下载下来了,这肯定是不对的我们要怎么做呢。如果不去禁止解析 www.test.com/data/info.php 它可以正常显示的,能解析的,那假如这个文件时某一个黑客上传的,结果呢一刷新发现它正常解析了,它就很显然的发现了你的服务器上的配置是怎么编译的和一些路径还有哪些模块,这是很危险的事情,所以我们有必要给它做一些限制,然后限制之后我们还要不让它这php去下载,直接给它禁掉
<filesmatch "(.*)php">
Order deny,allow
Deny from all
allow from 127.0.0.1
</filesmatch>
那么再次刷新的时候它是403 Forbidden了,然而呢我们用127.0.0.1去访问的时候,发现它解析不出来
[root@zhangmengjunlinux data]# curl -x127.0.0.1:80 www.test.com/data/info.php -I
HTTP/1.1 200 OK
Date: Fri, 01 Jan 2016 04:53:57 GMT
Server: Apache/2.2.31 (Unix) PHP/5.3.27
Last-Modified: Fri, 01 Jan 2016 03:30:26 GMT
ETag: "e3f3c-14-5283d646fc554"
Accept-Ranges: bytes
Content-Length: 20
Cache-Control: max-age=0
Expires: Fri, 01 Jan 2016 04:53:57 GMT
Content-Type: application/x-httpd-php
这是如何去解析PHP的