禁止某些目录解析php和httpd中的访问标识限制

禁止某个目录解析php语法

为什么要禁止某个目录解析php
如果web网站的目录中存在静态文件存放的目录,那么该目录下应该禁止解析php,因为这种目录下一般是上传图片等文件的,如果解析php,那么就有可能被别人上传一个以图片格式结尾实质上是一个php的解析文件,在浏览器中访问该文件会解析这些php语法,如果这种文件存在某种恶意代码,那么极有可能会被获取root权限
在虚拟主机配置文件中添加一下配置:

<Directory /usr/local/httpd/docs/123.com/imges>
        php_admin_flag engine off
        #<FilesMatch  (.*)\.php(.*)>
        #Order allow,deny
        #Deny from all
        #</FilesMatch>
</Directory>

注释掉的内容表示凡是php结尾的文件都不允许访问,但是我们不希望访问php页面时显示403,只是让php页面无法解析,只配置php_admin_flag参数即可,配置保存后重新加载配置文件内容

[root@www extra]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@www extra]# /usr/local/httpd/bin/apachectl graceful

限制用户端浏览器标识访问

user_agent是用户浏览器自带的一个标识,访问网站时会在日志中会记录用户访问的浏览器标识,禁止某些客户端浏览器标识访问,防止不允许的客户端无意义的访问,如爬虫、web×××等流量,分析这些日志可以判断网站访问的安全性
在虚拟主机配置文件中添加user_agent过滤,NC表示匹配该条,OR表示或者,匹配多个user_agent必须使用OR表示多个匹配条件

<IfModule mod_rewrite.c>
     RewriteEngine on
     RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR]
     RewriteCond %[HTTP_USER_AGENT] .*baidu.com.* [NC]
     RewriteRule .* - [F]
</IfModule>

重新加载配置

[root@www extra]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@www extra]# /usr/local/httpd/bin/apachectl graceful

测试访问及查看访问日志

[root@www extra]# curl -x127.0.0.1:80 www.123.com 
<!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 /
on this server.<br />
</p>
</body></html>                              访问限制
[root@www extra]# curl -A "X-prpr x-prpr" -x127.0.0.1:80 www.123.com 
123.com<a href="www.123.com/girl.png">
图片
</a>
<img src="www.123.com/girl.png" />
                                   指定user_agent访问测试
[root@www logs]# less 123.com-access_201808Ydlog
127.0.0.1 - - [07/Aug/2018:15:37:46 +0800] "HEAD HTTP://www.123.com/ HTTP/1.1" 403 - "-" "curl/7.29.0"
127.0.0.1 - - [07/Aug/2018:15:37:49 +0800] "GET HTTP://www.123.com/ HTTP/1.1" 403 209 "-" "curl/7.29.0"
127.0.0.1 - - [07/Aug/2018:15:38:18 +0800] "GET HTTP://www.123.com/ HTTP/1.1" 200 86 "-" "X-prpr x-prpr"

httpd虚拟主机用户访问目录限制
假如一个虚拟主机的目录被非法访问,那么此配置可以限制该访问被限制在此目录下不能跳跃到其他目录,需要在httpd虚拟主机配置文件中定义不同的目录,tmp是一个临时保存的目录,如果限制了tmp目录,那么网站上传图片时连临时文件都无法写入,这样的话会无法存储图片等文件的

<VirtualHost *:80>
    DocumentRoot "/usr/local/httpd/docs/123.com"
    ServerName 123.com
    ServerAlias www.123.com
-------------------限制虚拟主机访问目录的配置
php_admin_value open_bashdir "/usr/local/httpd/docs/123.com:/tmp"

php配置

在httpd解析中添加php.ini配置文件,默认寻找php配置文件通过写解析php的页面来完成。如

<?php
phpinfo();
php\>

在页面的Configuration File (php.ini) Path中查看到php的安装路径,而在Loaded Configuration File中查看到php的配置文件路径,如下(截图):
禁止某些目录解析php和httpd中的访问标识限制

如果不存在Loaded Configuration File的路径,需要拷贝php的模板配置文件到php的etc目录下,并重新加载httpd让http重新加载php模块

[root@www local]# cp src/php-7.2.8/php.ini-production /usr/local/php7/etc/php.ini
[root@www local]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@www local]# /usr/local/httpd/bin/apachectl graceful

php中的配置

[root@www local]# vim /usr/local/php7/etc/php.ini

php中禁用危险函数Disable_functions

disable_functions =eval,assert,popen,passthru,escapeshllarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close

php定义时区date.timezone

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Shanghai

定义错误日志是否开启
log_errors日志存储的路径error_log,日志保存的路径必须给apache的用户daemon可写权限,这样才能够记录日志
日志记录级别error_repartingE_ALL & ~E_NOTICE (Show all errors ,except for notices)   定义这个常见的错误记录级别

log_errors = On
error_log = /tmp/php_errors.log
error_reporting = E_ALL

php配置open_bashdir,限制主机只能对一个目录下的内容进行访问,仅能在一个目录下进行访问
假如一个虚拟主机的目录被非法访问,那么此配置可以限制该访问被限制在此目录下不能跳跃到其他目录

open_bashdir = /usr/local/httpd/docs/123.com/

php中的限制只能限制一个虚拟主机的访问,如果要限制几个虚拟主机。php.ini配置文件无法实现,需要在httpd虚拟主机配置文件中定义不同的目录,tmp是一个临时保存的目录,如果限制了tmp目录,那么网站上传图片时连临时文件都无法写入,这样的话会无法存储图片等文件的

php_admin_value open_bashdir "/usr/local/httpd/docs/123.com:/tmp"

猜你喜欢

转载自blog.51cto.com/8844414/2155876