标签:判断 虚拟主机 UNC rac 不能 alt curl inf str
禁止某个目录解析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"
在httpd解析中添加php.ini配置文件,默认寻找php配置文件通过写解析php的页面来完成。如
<?php
phpinfo();
php\>
在页面的Configuration File (php.ini) Path中查看到php的安装路径,而在Loaded Configuration File中查看到php的配置文件路径,如下(截图):
如果不存在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"
标签:判断 虚拟主机 UNC rac 不能 alt curl inf str
原文地址:http://blog.51cto.com/8844414/2155876