为什么在端口80上运行node.js可能不安全?

时间:2013-10-16 17:21:05

标签: linux node.js

我知道nodejs可以通过以下方式在端口80上运行:

  • 使用apache / nginx设置代理
  • 使用iptables规则设置端口重定向
  • 在应用程序内的端口80上进行快速侦听

第一个选项不是最简单的,需要更多的依赖关系。第二个可能正在工作,但在我的OpenVZ VPS上它不会(我无法编译自定义的Linux内核)。

我也需要处理一些子域,在阅读了这个stackoverflow answer之后,我尝试了第三个解决方案。 它完美地工作且非常容易执行。

我想知道在80端口上直接运行nodejs时是否存在一些安全问题?我该如何修理/找到这些?

我想使用pm2来处理这些流程,它可能会运行not as rootGoodbye node-forever hello pm2)。

1 个答案:

答案 0 :(得分:2)

  

第一个选项不是最简单的,需要更多的依赖关系然后我需要

请查看why should one use a http server in front of a framework web server,了解许多有效理由您实际上应该这样做

  

使用iptables规则设置端口重定向

这可能比直接让您的节点进程侦听端口80更好,尽管我还没有看到在生产中使用这种类型的配置。

  

在应用程序内的端口80上进行快速侦听

这在功能上是一个糟糕的选择,因为您没有获得上述链接答案中列出的好处,但是,从严格的安全角度来看,要记住的关键是您不能以root身份运行您的节点进程,这将是一个可怕的安全问题。您必须是root才能绑定到端口80,因为这是unix规则,但您可以而且必须在绑定到该端口后立即更改为权限较低的用户。