2008-12-18 60 views
5

考慮到世界上有這麼多惡意防火牆,是否有任何理由不應該在端口80上運行服務器軟件來保證最大可能的可訪問性?似乎最常見的防火牆例外是允許端口80上的出站連接。我知道,任何類型的數據包檢查仍會阻止我的非HTTP流量,但如果是這種情況,我相信防火牆不會有任何反正其他開放的輸出端口。爲什麼我不應該在端口80上運行我的非web服務器軟件?

如果服務器已經在端口80網絡服務器是否有可能使用某種虛擬主機的偵聽端口80(即myDomain.com:80 和在同一臺機器上 myApp.myDomain.com:80) ?

回答

7

如果您需要這樣做,爲什麼不直接用SOAP接口或HTTPHandler包裝您的網絡通信代碼呢?

那麼你的數據包將符合HTTP,你會通過防火牆獲得,每個人都很開心?

它將比解決所有的安裝和操作的問題要容易得多,你會從多用途變更端口80

+0

對。即使在http上的二進制也沒有問題HTTP是一種非常合適的線路格式。 – 2008-12-18 02:45:57

1

要回答你的第二個問題「是否有可能使用某種形式的虛擬主機的偵聽端口80」:

是的,有,它叫做虛擬主機,並通過最先進的網絡服務器進行處理。但是,然後您的應用程序的所有請求都必須從指定主機的HTTP協議1.1開始。您的應用程序可能必須是CGI應用程序。但那可能不是你想要的。

另一種方式是讓應用程序控制端口80並將所有http查詢重定向到Web服務器。它的混亂,如果你的應用程序崩潰,web服務器也是如此。

解決方案是在您的服務器上有多個IP地址(您可以在一個網卡上綁定多個IP地址)。然後,您可以將地址1處的mydomain.com:80綁定到應用程序的地址2處的webserver和myapp.mydomain.com,但它們仍位於同一臺服務器上。

並回答你的第一個問題:「是否有任何理由我不應該在端口80上運行服務器軟件」: 是的,這是不好的做法。預計會從自動掃描中獲得大量的http查詢。您可以選擇使用正確的http標題來回答它們或忽略它們。

2

我可以想到兩個原因:首先,如果您要繞過公司防火牆,那麼您將違反安全策略,其次,您將使用reserved port作爲其不是安全協議沒有註冊,這可能會導致試圖與您的系統進行交互的客戶(例如Google)出現重大混淆,並且在您的應用程序出現問題時會對您造成嚴重的麻煩。

編輯在Unix系統中,低編號端口需要特權帳戶才能運行。這是避免在該環境中執行此操作的另一個原因,因爲您的應用程序可能需要比其他方式所需更高的特權。

+0

你的編輯只在* NIX類系統真正的自動化掃描儀;據我所知,微軟並沒有實施這種限制。就像澄清一樣,低編號是1024 – 2008-12-18 02:37:55

+1

@monoxide - fixed。儘管我現在是C#/ .NET程序員,但在我心中,我是Unix人。 – tvanfosson 2008-12-18 02:41:18

1

對於偵聽端口80的其他域,不可能執行虛擬主機託管。只有一個進程可以偵聽端口。虛擬主機發生在基於HTTP標頭的應用程序層。

您可能遇到的另一個問題是代理服務器。不是用戶設置的類型,而是公司或ISP的自動代理。這些將不理解您的應用程序的協議,並可能會失敗。最後,如果您的應用程序在Unix/Linux版本上運行,則端口80將需要root權限。

0

我會承認自己周圍嚴厲的防火牆工作由具有SSH服務器獲取監聽端口80回家並使用ssh隧道提供對其他服務器和服務的訪問。我趕緊補充說,我是在管理防火牆的人的祝福下做到這一點的 - 我們都同意這是解決手頭問題的最佳解決方案。

我急於補充說,這種策略使端口80無用於其預期目的,這是我的罰款,因爲它是我的個人工作站無論如何。如果你的域中只有一臺機器,那將是一個問題。但有一臺機器,我可以致力於服務SSH端口80創建沒有安裝或操作問題。我只是跑/etc/init.d/apache stop,然後跑sshd聽80端口。然後我很樂意去做幾個月的工作。

誰過來敲我的個人工作站可以去的80端口掛:-)

相關問題