这看起来很奇怪,我有一个CentOS框中的apache httpd服务器,它有这个安全问题:
虚拟主机已启用,该网站在/data/www/vhost2/index.php它看起来像,如果我告诉index.php寻找一个文件在../../(所以它退出www目录)它看到它! 我怎样才能阻止从外面看这个目录的PHP? 我必须使用basedir吗? 那么虚拟主机呢,是否可以像沙盒一样对每个文件夹进行操作呢?
谢谢
黑客通常使用符号链接绕过open_basedir。 我的服务器被多次使用这个黑客入侵。 最好的方法是安装Suhosin并禁用像符号链接这样的潜在危险函数。 以下是安装教程的链接大概老了可以工作
http://www.webhostgear.com/416.html
然后在php.ini中使用下面的指令来阻止下面的函数
suhosin.executor.func.blacklist = "show_source,shell_exec,passthru,exec,popen,system,system, shell_exec, passthru, exec, popen, proc_open, symlink, php_uname,etmyuid,passthru,leak,listen,diskfreespace,link,ignore_user_abord,shell_exec,dl,exec,highlight_file,source,show_source,fpaththru,virtual,posix_ctermid,posix_getcwd,symlink,popen,system,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate"
这是未configuration和未经过强化的系统的正常行为,可以在php.ini设置open_basedir选项来定义限制( http://www.php.net/manual/en/ini.core.php#ini.open-basedir ) 。
但是它不会限制shell脚本和exec命令从php脚本访问这些文件,你可以用disable_functions禁用这些function。
一般来说,关于硬化有很多东西,在这里列出并不是那么容易,而且是build筑。 例如,我猜你现在正在使用mod_php运行apache prefork MPM,如果是mod_fcgid + php-cgi,你将无法使用/data ,因为它受到mod_fcgid的限制, /var/www/ ,也有selinux限制默认targeted政策等。
你会发现越来越多像这样的问题。
如果你有很多的虚拟主机configuration,你可以设置php_admin_value open_basedir / path_to_the_virtual_root,这样你就可以通过虚拟主机设置open_basedir