网站地图    收藏   

主页 > 系统 > apache教程 >

CGI安全:从Web服务器配置入手|目录-Apache教程

来源:自学PHP网    时间:2014-10-14 00:06 作者: 阅读:

[导读] 执行, 随着防火墙技术的发展以及人们对服务器本身的安全性的重视,未来的主流攻击方向将逐渐转向Web端口.CGI程序本身的安全性是程序员的事情,这对于某些管理员来说他们是无能为力的...

   随着防火墙技术的发展以及人们对服务器本身的安全性的重视,未来的主流攻击方向将逐渐转向Web端口.CGI程序本身的安全性是程序员的事情,这对于某些管理员来说他们是无能为力的.但我们仍然可以通过正确合理的配置,使我们的Web服务器降低CGI程序本身安全问题所带来的各种威胁.本文便是从CGI安全角度来描述了两种主流的Web服务器(IIS和apache)的具体配置,相信这样配置之后,我们的服务器安全性会得到很大提高。 

  一、Windows IIS环境

  由于Wmdows+IIS+CGT本身的安全性并不好,所以会出现的问题比较多。好比说photoshop/ target=_blank class=infotextkey>psKey最近发现的一批LB5000论坛的漏洞吧,这些漏洞都是基于Windows+IIS平台的。因为在Windows+IIS环境中,CGI程序文件权限没有可执行相和不可执行一说。所以,只要是在有脚本执行权限的虚拟目录里,CGT文件都会被执行。这就带来了很多安全上的问题。PsKey发现的几个漏洞都是往.CGI文件里写入符合Peri语法的语句,来构造一个小型的WebShell。而对于一个功能强大的CGI程序来说,其自然不可能面面俱到,多多少少部会存在一些问题也属正常。但只要控制好虚拟目录的权限,危险性将会大大降低。

  现在我们以LB为例"对于LB来说,它本身很多地方已经做得很好了,但其安全问题大多就是由干对一些字符的过滤不严所造成的。在IIS中默认情况下,子目录将继承父目录的权限,如果一个目录被设置了 "脚本和可执行程序"权限,那么其子目录也将有"脚本和可执行程序"权限。所以,只要将LB5000论坛所在目录设置为可执行,将其子目录全设为不可执行。这些问题就迎刃而解了。因为即使你可以往其子目录的一些文件里写入WebShell。但由于子目录没有执行权限,一样没用。

  LB的CGI程序和数据文件结构是这样设计的:将需要执行的CGI程序文件与一些.cgi后缀的数据文件放在不同的目录中。我们强烈建议写程序时这样做,因为这样。管理员就只需要按照要求去设置虚拟目录的权限了

  现在,让我们来一步一步对IIS虚拟目录进行设置吧.

  1.开始→运行,输入:%SystemRoot%System32Intestrviis.msc打开 "Intenet服务管理器"。

  2.选中将要设置的门IIS虚拟目录。点右键→属性,将LB论坛的cgi-bin目录设置为许执行"纯脚本"。

  3.然后再逐一对cgi-bin目录的子目录进行设置,比如cgi-bin/data目录进行设置,选中data目录,点右键→属性,将可执行设置为"无",这样一来.在此目录中的CGT程序将不允许被执行。

  按照这个方法。将cgi-bin目录下的每一个子目录的可执行权限都设置为 "无"。最后,还要将non-cgi目录进行设置,一般也将可执行权限设置为 "无"。

  好了,我们对论坛的目录权限设置就结束了。这样一来,即使论坛再被发现有什么过滤不严密的漏洞只要他无法执行被窍人WebShell的文件。一样不能达到人侵的目的。但我不敢保证就不出现任何问题,因为对于CGI漏洞的攻击千奇百怪,出其不意,很难说将来会不会出现什么新的攻击方法。但是,这样设置绝对可以很大程度地降低CGI程序本身所带来的威胁。  

  二、Windows十APACHE环镜

  由于默认安装APACHE服务器建以SYSTEM仅限启动。这一点它和IIS不同。在IIS中,如果CGI程序解释程序不在LM/W3SVC/InProcessIsapiApps中的话。它的权限疑继:敢DLLHOST.EXE;的IWA.M_-MACHINENAME权限。但APJACHE一旦启动,所有的CGI程序都会继承apache.ex.e的SYSTEM权限,所以距危险。一旦一个CGT程序出现问题。那么服务器将完全被控制。如果你真的想在Windows上跑APACHE的话,强烈建议另建一个CUESTS组的用户,用这个新建的用户启动APACHE服务。这种情况下对CGI程序本身来说。安全性要比IIS中稍好些。因为APACHE中,CGI程序的解释器是在程序的首行定义的,如:#!c:/perl/bin/perl,而IIS则是是在LM/W3SVVC/ScriptMaps中。如果商行没有定义,那么CGI程序运行将出错。所以。如果要想利用程序漏洞写出一个可以成功执行的WebShell是有一定难度的,但这并不代表不可以。我在测试中发现,其实首行不需要定全路径的,写成这样也可以:#!peri。因为在安装ActivePerl的时候,其会在环境变量的PATH中自动加上peri.exe的路径。所以我们成功利用这种漏洞的困难减少了。当然在这种环境下,我们也可以对APACHE配置文件httpd.conf进行合理的配置以降低来自CGI程序本身带来的威胁.

  下面我们来对APACHE服务及其配置文件httpd.conf进行配置。

  1.在正确安装好APACHE服务器后,新建一个用户。并将其从原来的USERS组中删除,将它加到GUESTS组中,命令如下;  

  net user apacheuser newpassword/add

  net localgroup users apacheuser/del

  net localgroup guests apacheuser/add  

  2.将APACHE安装目录(如:C:apache)的权限设置为apacheuser只读和执行,其他非administrators组用户拒绝访问,还要将C:apachelogs目录设置为可写和可修改,不然APACHE会运行出错,不能启动.命令如下:

"CGI安全:从Web服务器配置入手"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Server/Apache/18023.html

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论