《白帽子讲Web安全》15-Web Server配置安全

第15章 Web Server配置安全

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

本章主要介绍Web服务器有哪些常见的运行时安全问题。

15.1 Apache安全

  1. Apache目前仍然是Web Server领域中独一无二的巨头,最具代表性。本章中,Apache均指Apache Httpd。
  2. Web Server的安全我们关注两点:
    • 一是Web Server本身是否安全
    • 二是Web Server是否提供了可用的安全功能。
  3. Apache核心的高危漏洞几乎没有,大部分是由Apache的Module造成的。Apache有许多官方与非官方的Module,默认启动的Module出现过高危漏洞非常少,大多数的高危漏洞集中在默认没有安装或enable的Module上。
  4. 检查Apache安全:
    • 检查Apache的Module安装情况。
      • 根据“最小权限原则”,应该尽可能地减少不必要的Module,对于要使用的Module,则检查其对应版本是否存在已知的安全漏洞。
    • 指定Apache进程以单独的用户身份运行,这通常需要为Apache单独建立一个user/group。
      • Apache以root身份或者admin身份运行是一个非常糟糕的决定。
        • admin身份是指服务器管理员在管理机器时使用的身份,这个身份的权限也是比较高的。
      • 使用高权限身份运行Apache的结果可能是灾难性的,它会带来两个可怕的后果:
          1. 当黑客入侵Web成功时,将直接获得一个高权限(如root或admin)的shell;
          1. 应用程序本身将具备较高权限,当出现bug时,可能会带来较高风险,比如删除本地重要文件、杀死进程等不可预知的后果。
      • 比较好的做法是使用专门的用户身份运行Apache,这个用户身份不应该具备shell,它唯一的作用就是用来运行Web应用。
        • 以什么身份启动进程,在使用其他Web容器时也需要注意这个问题。
    • Apache还提供了一些配置参数,可以用来优化服务器的性能,提高对抗DDOS攻击的能力。
    • 要保护好Apache Log。
      • 一般来说,攻击者入侵成功后,要做的第一件事就是清除入侵痕迹,修改、删除日志文件。因此access log应当妥善保管,比如实时地发送到远程的syslog服务器上。

15.2 Nginx安全

  1. Nginx的高性能和高并发的处理能力使得用户在Web Server的选择上有了更多空间。但从安全的角度来看,Nginx近年来出现的影响默认安装版本的高危漏洞却比Apache要多。
    • 多关注Nginx的漏洞信息,并及时将软件升级到安全的版本,是非常有必要的一件事。
  2. 就软件安全本身来看,Nginx与Apache最大的区别在于,检查Apache安全时更多的要关注Module的安全,而Nginx则需要注意软件本身的安全,及时升级软件版本。
  3. Nginx也应该以单独的身份运行,这是所有Web Server、容器软件应该共同遵守的原则。
    • 首先,Nginx的配置非常灵活,在对抗DDOS和CC攻击方面也能起到一定的缓解作用。其次,在Nginx配置中还可以做一些简单的条件判断,比如User-Agent有什么特征,或者来自某个特定refer、IP等条件,响应动作可以是返回错误号,或进行重定向。
    • 仍需强调的是,Web Server对于DDOS攻击的防御作用是有限的。对于大规模的拒绝服务攻击,需要使用更加专业的保护方案。

15.3 jBoss远程命令执行

  1. jBoss是J2EE环境中一个流行的Web容器,但是jBoss在默认安装时提供的一些功能却不太安全,如果配置不当,则可能直接造成远程命令执行。
  2. jBoss在默认安装时会有一个管理后台,叫做JMX-Console。默认安装时JMX-Console是没有任何认证的。
  3. 在JMX-Console中中,有多种可以远程执行命令的方法。
    • 最简单的方式,是通过DeploymentScanner远程加载一个war包。
    • 通过JMX-Console提供的BSH(Bean Shell)Deploy方法,同样也能部署war包。
      • BSH能够执行一次性的脚本,或者创建服务,这对于黑客来说非常有用。
  4. JMX-Console为黑客大开方便之门,通过简单的“Google hacking”,可以在互联网上找到很多开放了JMX-Console的网站,其中大多数是存在漏洞的。
    • 因此出于安全防御的目的,在加固时,需要删除JMX-Console后台,事实上,jBoss的使用完全可以不依赖于它。
    • 如果出于业务需要不得不使用JMX-Console,则应该使用一个强壮的密码,并且运行JMXConsole的端口不应该面向整个Internet开放。

15.4 Tomcat远程命令执行

  1. Apache Tomcat与jBoss一样,默认也会运行在8080端口。它提供的Tomcat Manager的作用与JMX-Console类似,管理员也可以在Tomcat Manager中部署war包。
    • 值得庆幸的是,Tomcat Manager部署war包需要有manager权限,而这一权限是在配置文件中定义的。
  2. 在Tomcat后台可以直接上传war包。
  3. 虽然Tomcat后台有密码认证,但笔者仍然强烈建议删除这一后台,因为攻击者可以通过暴力破解等方式获取后台的访问权限,从安全的角度看,这增加了系统的攻击面,得不偿失。

15.5 HTTP Parameter Pollution(HPP)

  1. 通过GET或POST向服务器发起请求时,提交两个相同的参数,那么服务器会如何选择呢?
    • 比如提交:
    • /?a=test&a=test1
    • 在某些服务端环境中,会只取第一个参数;而在另外一些环境中,比如.net环境中,则会变成:
    • a=test,test1
  2. 这种特性在绕过一些服务器端的逻辑判断时,会非常有用。
  3. 这种HPP攻击,与Web服务器环境、服务端使用的脚本语言有关。
  4. HPP本身可以被看做是服务器端软件的一种功能,参数选择的顺序是由服务器端软件所决定的。当程序员不熟悉软件的这种功能时,就有可能造成误用,或者程序逻辑涵盖范围不够全面,从而形成漏洞。
  5. HPP这一问题再次提醒我们,设计安全方案必须要熟悉Web技术方方面面的细节,才不至于有所疏漏。
  6. 从防范上来看,由于HPP是服务器软件的一种功能,所以只需要在具体的环境中注意服务器环境的参数取值顺序即可。

15.6 小结

  1. Web Server、Web容器是Web应用的载体,是基础,它们的安全与否将直接影响到应用的安全性。
  2. 在搭建服务端环境时,需要注意最小权限原则,应该以独立的低权限身份运行Web进程。同时Web Server的一些参数能够优化性能,有助于缓解DDOS攻击,在实际应用时可以酌情使用。
  3. Web Server本身的漏洞也需要时刻关注,而有些Web容器的默认配置甚至可能还会称为弱点,一个合格的安全工程师应该熟知这些问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值