selectnetworking服务器软件的安全性

Nginx是一个相对较新的开源Web服务器,近年来引起了一些兴趣,在过去的几年中,在一些基准testing中performance非常出色。

在为公众可访问的业务应用程序select服务器软件时,我一直在想,从安全angular度来看,使用可能缺乏普遍性的服务器软件(如Nginx)是否是不负责任的。

另一方面,阿帕奇公司经过多年的公众审查,已经修复了许多漏洞,还有一个安全团队。

这里是我对两个候选服务器的优势的看法,这些服务器在市场份额,社区和一般的开发环境上有很大的不同。

Nginx的优点

  • 无处不在。 在我看来,不是一个太简单的目标和一个小的玩家的组合已经帮助一些软件产品变得不太可能成为有针对性的攻击的受害者。 苹果的Mac OS X平台就是一个很好的例子。

    Netcraft服务器2009年6月的市场份额数据显示,compytitor分别在Nginx和Apache的市场份额分别为4%和50%。

  • 代码量越小,错误越less。 这只是一个假设; 我没有查看过任何一个代码库,但是假设代码类似于错误率,代码量越小代码越less。

    据Ohloh介绍,Codebase的大小是635:75,较大的是Apache。 我不确定这是否包含模块,但考虑到巨大的三angular洲,它可能会。 (这当然会导致一个非常不正确的结论,因为如果安全是你的焦点,那么你将只能运行你需要的模块。)

Apache的优势

  • 安全团队。 Apache软件基金会似乎拥有相当先进的安全基础设施。
  • 经验。 Apache HTTP Server项目多年来已经看到了许多漏洞,毫无疑问,他们已经制定了如何更好地处理问题的策略。
  • 无处不在。 这可以很容易地成为一个专家,因为它可能是一个骗局。 这意味着更多的眼睛在代码,但它没有说眼睛坏眼比。
  • 到期。 正如我前面提到的,这个项目经历了无数次的探索和大量的公众监督。

    这可能会导致零日漏洞的风险略低,因为漏洞问题可能不太可能被漏掉。 也可能意味着新的攻击将不太重要。

    快速search没有揭示Apache是​​否进行了安全审计。

  • 文档。 攻击向量可以通过configuration错误来创build。 这似乎不太可能与Apache,因为它提供了大量的如何保护服务器的出版物(书籍和文章)。
  • 安全模块的数量。 从浏览这两个服务器的网站,我感觉到Apache在安全性增强模块中大大超过了Nginx。

无处不在似乎是一把双刃剑。 无论普遍存在好坏,可能不是线性关系(可能还包括其他因素,比如是否非常容易被利用)。 我非常怀疑有关无处不在的安全漏洞的影响的研究,虽然我承认尝试search。

如果我们正在谈论一个社交应用程序,一个新闻网站或在与业务应用程序分离的服务器上服务的媒体,我可能不会对此感到疑惑。 对于处理付款,个人信息和信用卡号码的应用程序,我目前的信息是倾向于Apache。

由于我不是一名安全专家,我的思想并没有科学地收集,因此可能不会太定论,因此,我很感激任何关于什么因素会影响这样的决定的意见。 如果没有别的,这仍然是在同一个位置的其他人的考虑。

nginx正在承载全球网站数量的百分之二十,所以它远非晦涩难懂。 即使不是数百万个网站,也是数十万个,因此nginx足够大,可以成为攻击的有用目标。

nginx已经有了安全问题,开源社区已经向作者解释了漏洞。 search更新日志中的“安全性”,您将看到有一个工作进程: http : //nginx.net/CHANGES-0.6

所以nginx与Apache有几乎相同的进程来解决安全问题。 它可能是一个较小的团队,而不是正式的,但它的工作原理是一样的。

从安全的angular度来看,具有简洁,简洁的代码库是一个重大的改进。 代码less=统计上更less的错误。 经验表明,随着代码量越来越大,错误数量的增长将超过线性。 假设类似的代码错误率,较小的代码库导致较less的漏洞利用。

从安全的angular度来看,nginx是否是不负责任的,因为它的用户基数较小? 我绝对不会回答, nginx是一个非常好的select ,也是为了安全的头脑。

不过,我会build议以稍微不同的方式来看HTTP服务器的安全性。 在http deamon中存在缓冲区溢出的问题,这可能导致对deamon本身的攻击。 对于大多数devise来说,通过使用诸如jail / croot / virtualization之类的操作系统级工具来“容纳”http deamon并限制成功攻击的效果,可以相当容易地将这种影响降至最低。

对Web应用程序的攻击可能会更糟,而且更常见,特别是对于内部开发的Web应用程序,这些应用程序通常没有经过专家的安全审计。 例子是使用交叉脚本或SQL注入与用户数据做恶事,取钱,窃取用户名和密码等数据库。

Apache在webapp安全领域有一个主要的好处,那就是第三方的mod_security模块。 把它看作是一个巨大的HTTP请求正则expression式引擎,它允许你在HTTP调用的任何部分进行模式匹配和过滤。 这可以用来显着减less攻击面对你自己的webapp代码。

对于一个注重安全的开源Web应用程序堆栈,我可以使用:

  • 一个容器化的nginx实例,用于负载均衡,位于Web服务器前面的一个单独的物理或虚拟服务器上,代理HTTP请求到后端Web服务器。
  • Apache与mod_security为web服务器。

你也可以用相反的方法来做 – Apache使用mod_security执行nginx web服务器前端的负载平衡。 这在很大程度上是一个问题,您希望CPU负载在哪里 – 使用mod_security进行HTTP筛选需要大量的CPU资源,因此具有mod_security的Apache负载平衡器可能无法处理更多的后端Web服务器。 如果负载均衡器是一个小而快的nginx实例,并且Web服务器执行他们自己的mod_security过滤,负载平衡器上的拥塞将大大减less。

这为您提供了一个容器化的HTTP代理,作为公共Internet和您的Web应用程序之间的间接层,以及mod_security作为Web应用程序代码前面的可扩展HTTP级别防火墙。 但是要为此做好准备,特别是mod_security,需要花费大量的时间来设置和完全工作,而不会产生不必要的副作用。

作为一种安全模式,模糊不清并不是好的IT基础。

但是,这并不意味着Nginx并不是您的最佳解决scheme。 该应用程序只是一个安全点。

我没有做过自己的研究,我不能说Apache的优势更多,但是从查看你的列表来看,Nginx的情况是微不足道的。

我早就面对同样的问题,回想起Sun Web Server。 它是一个NSAPI服务器,即使它也有一个Java容器。 服务器的核心是开源的,它是免费的。 它以安全着称。 它有一个简单的pipe理界面,它坚如磐石。 它实际上是旧的网景快车服务器。

对付nginx的一点是Ubuntu 10.04 LTS的当前版本仍然在.7,主stream的nginx是.8,迭代到.9。 在官方的Ubuntu LTS包中,Apache似乎更好地支持更新。 作为一个在小型机构pipe理7台服务器的单个人员以及其他手头上的任务,logging所有非标准软件安装并保持最新状态是一件痛苦的事情。 因此,我们坚持LTS发行版中的任何内容,并使用标准措施保持服务器更新。