Iis

設置網路伺服器的最佳實踐是什麼?

  • August 7, 2019

我們是一家位於紐西蘭的網路開發機構,我們為大約 300 個客戶託管網站。

我們正在尋求將這些網站從我們的舊伺服器遷移到更現代的東西上。我們研究了 azure/其他基於雲的伺服器,但選擇不使用這些服務。

在我們繼續設置新伺服器之前,我希望獲得一些關於最佳實踐的建議。

我們基於多種技術/CMS 託管網站,包括:

  1. PHP/WordPress
  2. ASP.NET 3.X / 4.X
  3. .NET 核心
  4. MySQL
  5. 微軟SQL

問題 1:將 ASP.Net/Core 站點放在一台 IIS Web 伺服器上,將 PHP 站點放在另一台伺服器上會更好嗎?或者,無論使用何種語言,設置一個能夠託管所有網站的 Web 伺服器是否更好?

問題 2:我知道可以在同一台伺服器上同時託管 MySQL 和 MSSQL,但這是個好主意嗎?還是他們應該有自己的伺服器?

任何幫助將不勝感激。

我會盡力保持簡短和重點,但你真的可以閱讀幾十本書,但仍然不知道從哪裡開始。

從企業設計目標開始,您需要了解所謂的“n 層架構”。基本上,您有單獨的層和層,它們將提供組件的隔離和分離。例如,您可以讓表示層執行像 NGINX 這樣的 Web 伺服器,根據客戶的使用情況,它可以執行某些類型的網站或充當應用程序層的反向代理。如果涉及到一個企業應用程序,那麼它應該在一個應用程序層中,它可以在它自己的專用資源和中間件(如 WebSphere 應用程序伺服器或 JBoss EAP)上執行。然後對於數據庫層,將您的數據庫與他們自己的資源一起放置在這裡。它可能看起來像這樣:

新聞。層 ( Apache /NGINX) <–> 應用程序。層 (WAS/ JBoss ) <–> 數據庫層 (Oracle/Postgres/SQL)

您確實希望將這些虛擬機分開,因為如果您在單個虛擬機中組合角色並且它受到損害,那麼他們可以訪問節點具有的所有內容 VS 只是一個 Web 伺服器,因為應用程序和數據庫層沒有暴露在外部,只是展示層。這意味著如果那個盒子被黑了,那麼他們接下來將不得不闖入應用程序伺服器並從那裡跳到數據庫伺服器,因為從表示層到數據庫層之間沒有連接。

然後每個節點也應該使用某種框架(如 NIST 800-53 或 800-171)進行加固。不要讓它讓您不知所措,只需花時間實施、測試和編寫所需更改的腳本,並創建 GPO 和預先強化的圖像。此外,如果您沒有任何特定要求,您可以鬆散地應用最適合您組織的內容。CIS-CAT是另一個框架,他們有一些基本的免費工具,但要完成所有系統類型,您可能需要購買會員資格。

在硬化之後,您應該考慮至少執行一次漏洞掃描,以查看您的低掛果實是什麼。然後在所有這些都得到緩解之後,繼續進行滲透測試以查找任何易受攻擊的程式碼。對您的客戶來說,滲透測試可能有點過頭了,但是如果您看看銀行和其他大公司,他們會定期這樣做,以確保他們的程式碼和中間件堆棧具有盡可能少的攻擊面。

其他考慮因素可能是您設計了多個 NGINX 伺服器來使用“粘性會話”對使用者連接進行負載平衡,以便您在理論上可以修補、重新啟動、重建和替換負載平衡器後面的 VM,從而提供某種形式的冗餘和更高的可用性,甚至高可用性 (HA)。

這只是冰山一角,但足以讓您開始設計。如果您要購買新硬體,您可能需要考慮使用帶刀片的戴爾 VRTX 機箱。您可以在不同的數據中心擁有其中的 2 個,並執行完全冗餘和故障轉移。或者只買一個帶有 2 個刀片的伺服器並執行一個集群主機。只需填充 RAM 和驅動器並載入您喜歡的虛擬化管理程序並建構您的集群。如果預算有限,Ubiquiti有負擔得起的網路設備,但他們的免費支持僅基於聊天。否則,思科是“黃金標準”,但您需要為 TAC 支持和年度續訂付費,或者您無法獲得安全更新或電話支持,如果您沒有預算,請遠離它。

最後,我會嘗試歸結一些更多的事情。您需要確定預算以及您的 300 個客戶中的每個客戶的要求是什麼,並且當性能不是最優先考慮的時候,他們中的一些是否可以共享託管空間(想想共享託管計劃),並且這樣做會打開其他客戶可能的任何安全漏洞不允許。即使使用雲提供商,客戶想要的東西在他們的價格點上也可能不現實,因為當你得到一個虛擬機時,你沒有得到任何強化或安全管理,所以你仍然要對它負責。有了安全性,它就像一個具有可用性的滑動式蹺蹺板。如果它完全可用,那麼它就不安全,但如果它完全安全,那麼沒有人可以訪問它。您將需要確定為此您需要在哪裡,並且對於不同的客戶可能會有所不同。這些事情沒有靈丹妙藥。大多數開發人員不將安全性視為他們開發的一部分,因此當您變得更加安全時,請計劃好事情的發生。損壞的項目可以通過適當的編碼和/或架構設計來修復。

引用自:https://serverfault.com/questions/978381