Apache禁止解析PHP
某个目录禁止解析PHP,是很有用的。特别是能够上传文件的目录。做网站安全的时候,这用的很多,比如某个目录可以上传文件,为了防止上传的文件有木马,所以我们禁止这个目录下面的访问解析PHP
禁止解析PHP
修改虚拟主机配置文件
#vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
加入以下配置:
<Directory /data/wwwroot/111.com/upload>
php_admin_flag engine off
<filesmatch "(.*)php">
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</filesmatch>
</Directory>
Apache禁止指定user_agent
有时我们受到CC攻击时,大部分访问都会是固定的user_agent(访问标识)。我们可以禁止特定的user_agent。或者禁止某些无用的搜索引擎蜘蛛访问,避免服务器负载过高。
Apache禁止指定user_agent
修改虚拟主机配置文件
#vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*chrome.* [NC]
RewriteRule .* - [F]
</IfModule>
NC表示不区分大小写 OR表示或者,连接下一个命令。不加OR就是并且的意思 警告:如果只有一条命令,并且在后面添加了OR选项,那么表示拒绝全部。 RewriteCond %{HTTP_USER_AGENT} ^.Firefox/4.0. [NC] 限制Firefox RewriteCond %{HTTP_USER_AGENT} ^.Tomato Bot/1.0 [NC] 限制tomato bot RewriteCond %{HTTP_USER_AGENT} ^.Baizuspid/2.0 [NC] 限制百度
php配置文件
而php.ini 中常用的配置有如下: disable_functions
disable_functions的配置如下,php的禁用功能
eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close
配置的是错误日志
vim /usr/local/php/etc/php.ini
display_error=off
log_errors=on
error_log=/usr/local/php/logs/error.log
第一个是页面显示错误信息,
第二个是错误日志。
第三个是错误日志的路径
如果错误日志路径不存在就
mkdir /usr/local/php/logs/
因为错误日志是apache写的,所以授权777
chmod 777 /usr/local/php/logs/
配置日志的格式,日志的级别
找到error_reporting= E_ALL & ~E_DEPRECATED & ~E_STRICT
error_reporting = E_ALL & ~E_NOTICE
配置完成,重启apache
/usr/local/apache2/bin/apachectl graceful
错误信息会在
ls /usr/local/php/logs/php_errors.log
配置安全选项,限制文件目录
找到 open_basedir =
open_basedir = /data/www:/tmp
在apache里也可以配置
打开虚拟主机配置文件
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
针对不通虚拟主机,指定目录
在虚拟主机配置里面添加一句
php_admin_value open_basedir "/data/www/:/tmp/"