11.28 限定某个目录禁止解析phpphp
11.29 限制user_agenthtml
11.30/11.31 php相关配置linux
配置以下shell
#禁止解析php ... <Directory /data/wwwroot/ddd.com/uplode/> php_admin_flag engine off //禁止解析uplode里的php #<FilesMatch (.*)\.php(.*)> //禁止访问uplode里的php #Order allow,deny #Deny from all #</FilesMatch> </Directory> ... bin/apachectl -t bin/apachectl graceful
测试方法以下apache
mkdir /data/wwwroot/ddd.com/uplode/ vim /data/wwwroot/ddd.com/uplode/index.php ... <?php echo "flag engine off"; ?> ... curl -x127.0.0.1:80 ddd.com/uplode/index.php
如图,curl直接返回了php源代码,并未解析、vim
ps:浏览器访问默认执行下载..浏览器
核心配置文件内容安全
#可针对浏览器的特征拒绝访问请求,经常使用于防cc攻击。 #[F]即表示Forbidden <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} .*baidu.com.* [NC] RewriteRule .* - [F] </IfModule>
如图curl能够经过-A修改本身的user_agent,绕过限制php7
查看php配置文件路径 php -icurl
[root@axiang-02 php]# /usr/local/php/bin/php -i|grep -i "loaded configur Loaded Configuration File => /usr/local/php/etc/php.ini PHP Warning: Unknown: It is not safe to rely on the system's timezone sault_timezone_set() function. In case you used any of those methods and identifier. We selected the timezone 'UTC' for now, but please set date.
注意,有可能php -i看到的配置不是当前网站调用的php模块的,用浏览器查看phpinfo是最准确的
[root@axiang-02 ddd.com]# ls admin admin.php aming.png index.php uplode [root@axiang-02 ddd.com]# vi index.php [root@axiang-02 ddd.com]# cat index.php <?php phpinfo(); ?>
浏览器查看
能够看到,实际调用模块为php7
若是没有调用,则须要从源码包里复制粘贴配置文件到指定路径,刷新apache
[root@axiang-02 ddd.com]# cp /usr/local/src/php-7.1.6/php.ini-development /usr/local/php7/etc/php.ini cp:是否覆盖"/usr/local/php7/etc/php.ini"? yes [root@axiang-02 ddd.com]# /usr/local/apache2.4/bin/apachectl graceful
关闭PHP Warning
[root@axiang-02 php]# vim etc/php.ini
如图修改date.timezone 便可关闭PHP Warning报警
[root@axiang-02 php]# /usr/local/php/bin/php -i|grep -i "loaded configuration file" Loaded Configuration File => /usr/local/php/etc/php.ini [root@axiang-02 php]#
如图修改disable_functions,禁用有风险函数
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,phpinfo
浏览器再次访问显示以下图
这里显示目录仍是不安全
这时就须要修改错误日志了,有如下几个点要改
log_errors = On 错误日志开启 error_log = /tmp/php_errors.log 定义日志路径 display_errors = Off 不把错误输出到浏览器里 error_reporting = E_ALL //这是全纪录 定义错误级别,Notic通常不用记录,上面有修改格式
测试
curl -x172.0.0.1:80 ddd.com -A "a" -I touch /tmp/php_errors.log ; chmod 777 /tmp/php_errors.log 有时候建立不出来,强制建立又写不进去日志,删掉disable_f下的phpinfo再试试
最终出现须要的错误日志
[root@axiang-02 php7]# cat /tmp/php_errors.log [03-Aug-2017 08:37:19 UTC] PHP Parse error: syntax error, unexpected end of file in /data/wwwroot/ddd.com/1.php on line 3 [03-Aug-2017 08:38:02 UTC] PHP Warning: phpinfo() has been disabled for security reasons in /data/wwwroot/ddd.com/index.php on line 1
设置php.ini文件
open_basedir = /data/wwwroot/ddd.com:/tmp
以上是对全局进行定义
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf ... 加入: php_admin_value open_basedir "/data/wwwroot/xxx.com:/tmp/" ...
apache开启压缩 http://www.aminglinux.com/bbs/thread-5528-1-1.html
apache2.2到2.4配置文件变动 http://www.aminglinux.com/bbs/thread-7292-1-1.html
apache options参数 http://www.aminglinux.com/bbs/thread-1051-1-1.html
apache禁止trace或track防止xss http://www.aminglinux.com/bbs/thread-1045-1-1.html
apache 配置https 支持ssl http://www.aminglinux.com/bbs/thread-1029-1-1.html