2013-10-16 170 views
1

我知道,可的NodeJS通過80端口上運行:爲什麼在端口80上運行node.js可能不安全?

  • 設置代理與Apache/nginx的
  • 建立一個端口重定向與iptables規則
  • 作出明確偵聽端口80內的應用程序

第一個選項不是最簡單的,需要更多的依賴關係,然後我需要。第二個可以工作,但在我的OpenVZ VPS上它不會(我無法編譯定製的Linux內核)。

我也需要處理一些子域,並且在閱讀了這個stackoverflow answer之後,我嘗試了第三種解決方案。 這是完美的工作,很容易執行。

我想知道在80端口上直接運行nodejs是否會有一些安全問題?我該如何修復/發現這些?

我想使用pm2來處理進程,它可能運行not as rootGoodbye node-forever hello pm2)。

+3

爲什麼它會比另一個端口更安全? –

+0

@dystroy:如果有人在Node的HTTP解析器中發現漏洞,它可能不如通過nginx代理安全。 – SLaks

+0

@dystroy好的問題,使用代理,iptable或直接在端口80上運行它會導致相同的安全問題? – soyuka

回答

2

第一種選擇是不是最容易的,需要更多的依賴關係,然後我需要

請檢查why should one use a http server in front of a framework web server了許多有效的原因你其實應該這樣來做

建立一個端口重定向與iptables規則

這可能比直接讓你的節點處理好偵聽端口80,雖然我還沒有看到這種類型的配置在生產中使用。

作出明確偵聽端口80的應用程序

這是功能上一個糟糕的選擇,因爲內你沒有得到然而,在上面的鏈接的答案概括,從嚴格的安全角度來看好處,要記住的關鍵是您不得以根用戶運行您的節點進程,這將是一個可怕的安全問題。您必須是root用戶才能綁定到端口80,因爲這是一個unix規則,但您可以並且必須在綁定到該端口後立即切換到權限較低的用戶。

+0

我正在使用[pm2](https://github.com/Unitech/pm2),我認爲他們正在以用戶身份運行它。 感謝您的鏈接非常有趣! – soyuka

+0

這是端口重定向和使用像[HAProxy](http://haproxy.1wt.eu/)這樣的重定向代理之間非常好的一條線。正如你指出的那樣,作爲'root'運行幾乎總是一個非常糟糕的想法。 – tadman

相關問題