自己在管理伺服器和防火牆原則是最小開放原則,一定需要的服務 port 才會開放,例如網頁伺服器的 80、443 等。而管理用的 ssh ,可以的話就限縮來源 IP 範圍,加上限制可以登入的帳號或群組,要不然就改 port 編號;不過,改 port 編號會變成自己在遠端登入時要回想是改成多少,有點不是很方便。
所以最近建置的伺服器就不改 port 了,會加上 fail2ban 的防衛機制。
因為最小開放原則,像是 webmin(10000)這樣的 port 就不會開放,如果想要用的話,就用 ssh tunnel 方式作跳板連接。
例如伺服器的 public ip:123.123.123.123,要連 webmin 的話,就用:
ssh 123.123.123.123 -L 10000:127.0.0.1:10000
SSH 登入後就會在客戶端開啟 127.0.0.1:10000 的監聽埠,用瀏覽器連本機的 127.0.0.1:10000 就會跳到伺服器端的 10000 埠。
一直以來,我都以為 ssh -L (Local Port Forwarding)方式只會在本機端綁定 127.0.0.1:xxxx的情形。不過,最近因為要解決一個臨時伺服器的設定問題,才發現原來不是只能綁在 127.0.0.1 上。
網路架構:
外部 public ip:123.123.123.0/24
內部 private ip:10.1.0.0/16
內部切出多個 class C的網路區域,其中 10.1.1.0/24 是 ServerZone,在外面用 DNAT 的方式將服務要求導入內部的伺服器。
其他 10.1.n.0/24 是各個區域內容IP,只能 NAT 出去,外部不能訪問到。
需求:
Server-01:10.1.1.2,Server-02:10.1.20.2
Server-01在 ServerZone 內,從外部可以訪問,Server-02 在 PrivateZone 內,外部連不到。ServerZone 和 PrivateZone 彼此可以 SSH 互連。
現在希望可以在不變動兩台 Server 的 IP 區域,讓 Server-02可以被外部訪問到。
最簡單的方式就是先登 Server-01後,再從 Server-01 terminal 登到 Server-02上。但是需求是,不可以把 Server-01 的權限開放給 Server-02的廠商用,所以兩次登入的方式不能用。
再者,想到用 Port Forwarding 方式,在 Server-01上開一個 port,比如 44322,在 Server-01 的 iptables 設定 port forwarding 44322 to 10.1.20.2:22。查了資料,搞了兩天還是不成功。
最後想到 SSH Tunnel 的方式,想說在 Local 端是不是一定會綁127.0.0.1,所以在 Server-01 上測試:
SSH 10.1.20.2 -L 10.1.1.2:44322:127.0.0.1:22
竟然可以成功,Server-01 上會開啟 10.1.1.2:44322 的監聽埠,再到最上層的 Route 開放 Server-01 的 44322的權限,竟然就可以從外部連 Server-01 的44322 轉接到 Server-02 的 SSH上。
在廠商有需要連線時,再用這個 ssh tunnel command 開放臨時的 port 出來就可以了。
留言
張貼留言