2014-10-03 101 views
0

環境公開地暴露WCF服務,這是在防火牆後面

考慮的web應用程序以下生產環境設置:

終端用戶--Internet - >網絡服務器在DMZ - 防火牆 - > WCF託管應用程序服務器 - >數據庫服務器

約束:

也要考慮到我們不能從基礎設施的角度來改變任何東西。例如,開放的端口,更改任何防火牆設置等

問題:

我們要公開的WCF,其託管的應用程序服務器上,以外部客戶。我們正在努力解決這個問題如下:

終端用戶--Internet - >路由器WCF在DMZ - 防火牆 - > WCF託管應用程序服務器 - >數據庫服務器

請注意,我們無法從WCF需要託管的DMZ環境建立數據庫連接,以便外部客戶端可以使用它。我們開發了一個「路由器WCF」,它將所有消息傳遞給內部WCF,反之亦然。

該解決方案增加了序列化和反序列化數據的不必要開銷。必須有一個更好和正確的方式來做到這一點。我們期待社區的指導。謝謝。

+0

打開防火牆的端口?或者我錯過了一個要求 – 2014-10-03 02:25:55

+0

請不要只是要求我們爲您解決問題。告訴我們你是如何試圖自己解決問題的,然後向我們展示結果是什麼,並告訴我們爲什麼你覺得它不起作用。請參閱「[您嘗試過什麼?](http://whathaveyoutried.com/)」,以獲得一篇您最近需要閱讀的優秀文章。 – 2014-10-03 02:53:39

+0

桑德斯先生,我感謝你的熱情教育我。我從來不知道它是要求之一(仍然不明白爲什麼)在提問之前「嘗試」某些東西。這似乎與「爲什麼要重新發明輪子」相矛盾。我認爲這是什麼網站像stackoverflow擅長。 「分享知識」。然而,在這種情況下,我已經提到了我們如何解決這個問題,並希望人們在我花費數小時的努力去做某些不正確的事情之前驗證我的想法是否正確。 – 2014-10-03 14:53:29

回答

0

在DMZ中,參考書目告訴你:總是創建一箇中間層。這意味着互聯網上的另一臺機器將成爲連接點,並將連接代理回WCF。

機器是你似乎提到的網絡服務器,那是愚蠢的,沒有數據,並且(作爲一個合適的DMZ)在它和所有服務器之間有一個防火牆(WCF和其他服務器)只有IP:這種機器上使用的端口。

在這種情況下,通常Apache在公共Web服務器上使用URL重寫規則(即如果它是/ x/y將其發送到servera.internal.com:9900 - 如果它是/ x/z發送它到serverb.internal.com:9901等等)就足夠了,但當然有很多解決方案。

看來你正在做這個,你爲什麼說這不是正確的解決方案?

DMZ可能看起來有點過時(我同意),但是當你的WCF機器這樣的服務器有幾十個端口打開,並且你想降低面向網絡的機器上隨機端口的風險時,一個巨大的攻擊面。現在所有的東西都可以在打開幾個端口的情況下工作,所以看起來「愚蠢」的做所有這些只是爲了轉發一個TCP端口。但是它仍然很有價值,例如,如果DMZ中Web服務器後面的服務器沒有互聯網訪問,即使WCF受到攻擊,攻擊者也不能使用自己的反向shell來部署它現在稱爲APT的東西(昨天的後門)。由於DMZ提供了與外部世界的連接,攻擊者從WCF「看不到」他自己的機器。

+0

我編輯了我的問題,請看看它現在對你是否有意義。感謝您的幫助。 – 2014-10-03 15:16:51