我正在運行 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 命令,該命令將:
- 使用我現有的 ssh 設定和金鑰將我連接到 server.example.com(其中 sshd 正在偵聽連接埠 3300),
- 綁定到我的筆記型電腦上本地主機上的任何端口,比如說 60001,
- 從遠端 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 上的文檔存取控制告訴:
、
Allow
、Deny
和Order
指令由 、 提供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>