多個非http服務,1個靜態IP
我有一個問題,我們有幾個我們想從 WAN 訪問的非 http(s) 服務。SSH 是我們將使用的主要協議,FTP 也是如此。
這是佈置的方式。我們有一個公共 IP 地址。該地址位於我們的 ASA(5505 基本許可證)上,該地址被綁定到我們 DMZ 中的伺服器。這是一台 Windows Server 2012 機器,它現在正在執行 IIS 服務來執行我們的 HTTP 和 HTTPS 服務的反向代理。
安全地允許外部訪問 SSH/FTP 等服務的最佳方式是什麼?是否有(最好是免費的)Linux 等效於 ISA 伺服器/威脅管理網關 2010(我都沒有可用的選項)
我知道我可以使用 ASA 的 NAT 功能將埠直接轉發到機器,但這似乎並不安全。理想情況下,我希望能夠創建指向靜態 IP 的 DNS A 記錄(如 ftp.domain.com),路由到 DMZ(就像目前所做的那樣),然後讓它辨識請求的類型並轉發它給正確的主機?這可以用 linux 中的 IPTables 來完成嗎?
謝謝你的幫助!
辨識請求的類型並基於此轉發它不能在 TCP 級別完成。當您的網關需要決定將其 NAT 到哪個主機時,請求尚未發送。
在應用層,你有更多的可能性。這將取決於協議,並且僅適用於某些協議。HTTP 代理就是這樣做的一個例子。
這種方法完全不可能應用於 SSH。這是因為 SSH 客戶端通常不會發送任何數據,直到他們從伺服器聽到某些消息。這意味著即使在應用層,您在需要選擇後端時還沒有看到您需要的資訊。SSH 通信經過加密和身份驗證這一事實只會讓這變得更加困難。
我所知道的使這項工作的選項是:
- 對不同的 SSH 伺服器使用不同的埠號
- 使用 IPv6,以便為每個主機提供足夠的 IP 地址
- 將 SSH 流量封裝在另一個協議中。這可能是使用堡壘主機的 SSH 內的 SSH。
就 FTP 而言,我的建議是不要使用該協議。FTP 使用的兩個單獨的 TCP 連接使其更難以正常工作。協議中缺乏完整性檢查意味著它不是很安全。我推薦
sftp
(類似於 ftp,但通過 ssh 執行)或 HTTP,以防您需要匿名訪問。