Web Server配置安全

  Web服务器安全,考虑的是应用布置时的运行环境安全。这个运行环境包括Web Server、脚本语言解释器、中间件等软件,这些软件所提供的一些配置参数,也可以起到安全保护的作用。

Apache安全

  Web Server的安全我们关注两点:

  • Web Server本身是否安全;
  • Web Server是否提供了可使用的安全功能。

在Apache的漏洞史上出现过许多次高危漏洞,但这些高危漏洞,大部分是由Apache的Module造成的。Apache的核心几乎没有漏洞,Apache有许多官方非官方Module,默认启动的Module出现的漏洞非常少,大多数的高危漏洞集中在默认没有安装或enable的Module上。
  因此检查Apache安全的第一件事情,就是检查Apache的Module安装情况,根据“最小权限原则”,应该尽可能地减少不必要的Module,对于要使用的Module则检查其对应版本是否存在已知的安全漏洞。
  指定Apache进程以什么用户身份运行,应满足“最小权限原则”,Apache以root身份或者admin身份(高权限身份)运行是一件非常危险的事。它会带来两个后果:
1.当黑客入侵Web成功时,将直接获得一个高权限(比如root或admin)的shell;
2.应用程序本身将具备较高权限,当出现bug时,可能会带来较高风险,比如删除本地重要文件、杀死进程等不可预知的结果。

  正确配置参数,保护好Apache Log(日志文件)。

Nginx安全

  Nginx的高性能和高并发的处理能力使得用户在Web Server的选择上有了更多的空间。但是从安全的角度来看,Nginx近年来出现的影响默认安装版本的高危漏洞却比Apache更多。在Nginx
  检查Apache安全时,更多的要关注Module的安全,而Nginx则需要注意软件本身的安全,及时升级软件版本。与Apache一样,Nginx也应该已单独的身份运行,这是所有Web Server、容器软件应该共通遵守的原则。

jBoss远程命令执行

  jBoss是J2EE环境中一种流行的web容器,但是jBoss在默认安装时提供的一些功能却不太安全,如果配置不得当,则可能直接造成远程命令执行。
  由于jBoss在默认安装时会有一个管理后台,叫做JMX-Console,它提供给管理员一些强大的功能,其中包括配置MBeans,这同样也会为黑客们大开方便之门。通过8080端口(默认安装时会监听8080端口)访问/jmx-console能够进入到这个管理页面,默认安装时访问JMX-Console是没有任何认证的。
  在JMX-Console中,有多种可以远程执行命令的方法,再简单的方式,是通过DeploymentScanner远程加载一个war包。

Tomcat远程命令执行

  Apache Tomcat与jBoss一样,默认也会运行在8080端口。它提供的Tomcat Manager的作用与JMX-Console类似,管理员也可在Tomcat Manager中部署war包。但是Tomcat Manager部署war包需要有manager权限,而这一权限是在配置文件中定义的,需要管理员权限才能配置。

HTTP Parameter Pollution(HPP攻击)

  HPP攻击,简单的来说就是通过GET或POST向服务器发起请求时,提交两个相同的参数,那么服务器将如何选择呢?比如提交:

/?a=test&a=test1

  在某些服务端环境中,会只取第一个参数;而在另一些环境中,比如.net环境中,则会变成:

a=test,test1

  这种特性在绕过一些服务器端的逻辑判断时,会非常有用。
  这种HPP攻击,和web服务器环境、服务器端使用的脚本语言有关。HPP本身可以看作服务器端软件的一种功能,参数选择的顺序是由服务器端软件决定的,当程序员不熟悉软件的这种功能时,就可能造成误用,或者程序涵盖范围不够全面,从而形成漏洞。
  从防范上来看,由于HPP是服务器软件的一种功能,所以只需在具体的环境中注意服务器环境的参数的取值顺序即可。

小结

Web Server、web容器是Web应用的载体,是基础,他们的安全与否将直接影响到应用的安全性。在搭建服务器端环境时,需要注意最小权限规则,应该以独立的低权限身份运行Web进程,同时Web Server的一些参数能够优化性能,有助于缓解DDOS攻击,Web Server本身的漏洞也需要时刻关注。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容