我目前正在嘗試透過 Windows 10 主機上的 SSH 連線到我的 Linux Mint 來賓。更好地說,我正在嘗試在考慮特定防火牆規則的情況下成功連接到來賓。
使用 Virtual Box,我為 Linux Mint 虛擬機器啟用了僅主機適配器。
當使用特定的允許所有規則透過防火牆允許任何和所有流量通過連接埠 22 時,我能夠從 Windows 主機使用 SSH 成功連接到來賓電腦。
但是,我希望 Linux 來賓僅有的接受我的用於 SSH 的 IP。換句話說,我希望它只接受連接埠 22 的 IP(如果這有意義的話)。
我使用這些規則配置了 Linux 防火牆不能然後連線成功後:
GUEST IP 22/tcp ALLOW IN HOST IP 22/tcp
HOST IP 22/tcp ALLOW OUT GUEST IP 22/tcp
注意:術語「訪客 IP」和「主機 IP」是給定上下文的關聯 IP 位址的簡單佔位符。在這種情況下,GUEST IP 是來自 eth1 介面的僅主機適配器的 IP 位址。不用說,HOST IP 代表在我的 Windows 10 主機上找到的主機 IP 位址。
我已經盡我所能讓它發揮作用,但老實說我現在不知道如何得到我所要求的東西。
我目前的設定:
- Windows 10(主機)附 MobaXtrem SSH 用戶端和 FreeSSHd SSH 伺服器
- Linux Mint 17(來賓)帶有 openSSH 用戶端和伺服器
- 根本沒有觸及Windows防火牆
- 目前已將 Linux 防火牆設定為刪除,但已新增至上述規則中
我想讓大家知道我在基於 Linux/Unix 的系統方面的經驗是非常由於使用 shell、SSH 和配置防火牆而受到限制。
我實際上一天前剛安裝了上述 SSH 軟體。
長話短說:我想將我的 Linux 來賓配置為僅接受來自我的主機的 SSH 流量。我假設這是透過 IP 完成的,但我不確定如何做到這一點。將上述防火牆規則新增至 Linux 來賓後,連線不再成功,每次嘗試都會逾時。
附加資訊: - 我看過周圍的人提到連接埠轉送;我試過了,沒用。考慮到我如何讓它與僅主機適配器一起工作,我認為沒有這個解決方案也可以。
作為旁白,是否可以使用 SSH 透過我的 Linux 來賓連接到我的 Windows 主機?我嘗試從我的 Linux 終端執行此操作,但它一直說我沒有這樣做的權限。
如果您需要澄清或其他信息,請隨時詢問。
先致謝!
— TRG
答案1
TCP 連線有兩個連接埠:來源連接埠和目標連接埠。對於傳出 SSH 連接,目標連接埠為 22,但來源連接埠為隨機選擇。 (只有極少數協定(例如 BGP)使用相同的來源連接埠和目標連接埠。)
因此,您需要放寬規則以:
allow incoming from hostIP (any)/tcp to guestIP 22/tcp
allow outgoing from guestIP 22/tcp to hostIP (any)/tcp
如果您擔心客人連接回主機,只要您使用的是有狀態的防火牆(允許屬於現有連線的傳出資料包)。
在 iptables 中,工作規則集如下所示:
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -j REJECT
# (Well, *I think* this should work.)
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -j REJECT
(包括“允許 ICMP”,因為誠實地)