如何隱藏服務器的管理端口

前言

如何隱藏服務器的 SSH、遠程桌面等服務,大多都是修改端口、只允許白名單 IP 訪問。這雖然沒什麼大問題,但並不完美。

修改端口

端口號總共才幾萬個,掃描下瞬間就知道了。

事實上,改端口只能防止固定端口的全網掃描,如果人家針對你的 IP 進行掃描,那換成什麼端口都沒用。除非你的服務器有反端口掃描策略,例如之前寫的文章: https://github.com/EtherDream/anti-portscan

但反掃描也不是萬能的。假如攻擊者有大量 IP(例如秒撥)還是可以找到端口,只是時間稍長而已。

更進一步,假如攻擊者能觀察你的流量(例如釣魚 WiFi、路由器日誌、網絡行爲記錄設備、運營商等),那直接就能知道端口。

此外,反掃描需要佈置陷阱端口,因此需要在雲防火牆上開放一些額外的端口。這很不完美。

IP 白名單

相比修改端口,IP 白名單的效果好得多。不少安全意識較高的管理員,都會不厭其煩地通過雲防火牆平臺授權管理端口的源 IP。

不過 IP 白名單也存在問題,因爲一個公網 IP 下可能有多個設備。授權了自己 IP 的同時,公司的其他同事,或學校的其他同學,或小區的其他用戶,或家裏的手機平板等設備,也能連接你的服務。

雖然身邊的人不會攻擊你的服務,但這些設備有可能被惡意程序控制,成爲攻擊者的跳板。

此外,配置白名單不僅麻煩,還存在一個缺陷:有些運營商會動態改變公網 IP。例如訪問網站 A 是 IP1,訪問網站 B 是 IP2,你的公網 IP 並不穩定。你先前查詢到的公網 IP 和之後連接運維服務的 IP,有可能是不一樣的!

因此白名單可能需要配置多個 IP,或者配置 IP 段。但這樣又會降低安全性。

TCP 連接敲門

相比手動配置白名單 IP,使用敲門服務要方便不少。並且敲門數據包和之後的連接都是同個目標,公網 IP 不太可能出現變化。

傳統的敲門大多是基於 IP 白名單的。服務器通過驗證後,將你的 IP 添加到白名單。因此,這仍存在前面提到的問題 —— 內網其他設備也能訪問你的服務。

但是,我們可以實現一個 TCP 會話級的敲門服務,將暗號隱藏在握手階段的可選字段中。例如,我們約定 SYN 包必須符合如下特徵:

tcp.opts.timestamp = HMAC(tcp.seq, SECRET_KEY)

服務端若發現 SYN 包不滿足這個特徵,則直接丟失;並且一定時間內不允許出現重複,防止重放攻擊。

客戶端則需運行一個改包程序,對發送的 SYN 包進行調整。

我們將授權範圍從 IP 縮小到特定的 TCP,這樣內網其他設備也無法訪問你的服務了!並且無需發送額外的敲門包,也無需白名單,簡單又高效。

這個方案很好用,之後再寫文詳細講解和演示。當然這仍不是最完美的,假如攻擊者能觀察流量,還是可以找到端口號的,進一步實施中間人攻擊。

TCP over HTTP

如果你的服務器本身運行着一個網站,那麼還有更好的方案 —— 將 SSH 等運維流量封裝到 HTTP 流量中。

例如使用 HTTP 101 Switching Protocols 標準,將普通的 Request/Response 模式升級成可雙向通信的流模式(WebSocket 正是利用了這個標準),然後在客戶端和服務端分別運行一個轉發程序即可。

案例:https://github.com/EtherDream/toh

現在,我們只需在 WebServer 中添加一個路徑,用於運維服務的流量通道。例如 nginx:

location = /ssh-xxxx {
  proxy_pass                http://unix:/tmp/toh.sock;
  proxy_http_version        1.1;
  proxy_set_header          Upgrade $http_upgrade;
  proxy_set_header          Connection upgrade;
}

我們可在路徑中設置一個隨機字符串(例如 uuid),以防被猜到。結合 HTTPS 加密通信,攻擊者即使截獲流量,也無法得知具體的路徑,甚至都不能確定這些流量是正常的網站訪問還是運維操作!

將 TCP 封裝成 HTTP 之後,我們可在 7 層統一控制運維服務的 4 層流量。藉助 WebServer 豐富的功能,實現限速、日誌、認證等各種操作。對於國外一些網絡不穩定的服務器,甚至還可利用 Cloudflare 代理轉發!

現在,我們可刪除服務器雲防火牆中的 SSH、遠程桌面等私有運維端口,對外只公開 Web 端口,減少被攻擊的風險。

如果 Web 服務異常導致無法管理,可臨時在雲防火牆上開啓管理端口,這樣仍能通過傳統方式管理服務器。(當然也可通過雲主機廠商的在線控制檯臨時救急)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章