SSH 隧道以避免暴露管理控制台

SSH 隧道以避免暴露管理控制台

我正在運行 Lucee Server,這是一個冷聚變伺服器引擎,在我的例子中,它運行在 Tomcat 和 Apache 上。

我正在研究以各種方式強化它,並且遇到了有關此處描述的 SSH 隧道方法的問題:https://docs.lucee.org/guides/deploying-lucee-server-apps/lockdown-guide.html#restricted-access-plus-ssh-tunneling

問題是,我認為關於如何進行 ssh 隧道的描述不準確或完整。我花了很多時間查看 SSH 文件以及其他一些 Stack Exchange 問題(https://superuser.com/q/588591/504387,https://superuser.com/q/237977/504387)但仍無法以該指南或任何其他方式使 SSH 隧道正常運作。


目前設置,我在server.example.com 上運行lucee,偵聽連接埠8888。轉送到lucee) 。但它被配置為拒絕對 /lucee 的請求,如上述文件中所述。

這意味著Lucee 管理控制台只能直接在連接埠8888 訪問,而不能透過連接埠443 存取。控制台,但外界不行。

可能沒問題,但我想看看是否可以使隧道方法按描述的那樣工作。如果隧道可以工作,我們可以放棄 iptables 允許規則並完全阻止連接埠 8888(環回除外),或者只是將 lucee 重新配置為僅綁定到 127.0.0.1。


SSH 使用 server.example.com 上的非標準端口,假設它是 3300。

我想要做的是在我的筆記型電腦上執行 SSH 命令,該命令將:

  1. 使用我現有的 ssh 設定和金鑰將我連接到 server.example.com(其中 sshd 正在偵聽連接埠 3300),
  2. 綁定到我的筆記型電腦上本地主機上的任何端口,比如說 60001,
  3. 從遠端 server.example.com 依序連線到 127.0.0.1:8888,以便流量可以傳遞到 lucee。

最終結果應該是我可以訪問http://127.0.0.1:60001/lucee/admin/server.cfm在我的筆記型電腦上,它將由在 server.example.com 上運行的 lucee 接收,並監聽該伺服器上綁定到 127.0.0.1 的連接埠 8888。

我怎樣才能做到這一點?

答案1

您應該只綁定 Lucee Server,localhost因為它在連接埠上不提供 TLS 8888。然後,您有兩個選項可以安全地存取管理路徑。

SSH隧道

SSH(1)

-L [ bind_address:]port:host:hostport

指定port本機(客戶端)主機上的給定資料將轉送到host遠端的給定資料和連接埠。

填寫您問題中的參數:

ssh -L 60001:127.0.0.1:8888 [email protected] -p 3300

具有適當存取控制的 Apache 代理

由於連接埠上的代理程式443是使用 TLS 加密的,因此您根本不需要 SSH 代理,但您可以允許在 Apache 配置中從公司網路連接到管理路徑。

該文件有點過時,因為範例使用 Apache 2.2 語法:

<Location /lucee>
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
</Location>

但是 Apache 2.4 上的文檔存取控制告訴:

AllowDenyOrder指令由 、 提供mod_access_compat,已棄用並將在未來版本中消失。您應該避免使用它們,並避免建議使用它們的過時教學。

假設您想將存取限制為/lucee僅允許 LAN192.168.22.0/24和公用 IP 198.51.100.22

<Location /lucee>
    <RequireAny>
        Require ip 192.168.22.0/24
        Require ip 198.51.100.22
    </RequireAny>
</Location>

相關內容