在反向 ssh 設備上鎖定本地登錄
我已經設置了一個帶有 Raspberry-Pi 的反向 ssh 設備,用於在客戶站點連接到我必須通過 USB-to-RS232 適配器支持的設備。我已經與客戶的 IT 人員確認了這一點,並且該設備已經配置、測試並且工作正常。
但是為了從本地網路訪問中強化它,我想將登錄限制為只允許通過反向 SSH 隧道登錄,並且不允許本地客戶網路上的任何人登錄。
傳出的反向 ssh 連接使用沒有密碼的 4096 位密鑰文件連接到伺服器,但是當我通過反向 ssh 連接從伺服器連接回 Pi 時,我仍然看到使用者/密碼提示。這對我來說不是問題,但我只是擔心限製本地任何人使用本地 telnet 或 ssh 登錄的能力。我已經在唯一的活動帳戶上擁有了一個很好的密碼,所以我懷疑是否有人會設法登錄。
如果它仍然允許出於維護目的使用連接的 USB 鍵盤在本地電腦上登錄會很好,但這不是強制性的。該設備位於上鎖房間的上鎖金屬外殼內,因此未經授權的物理訪問不是一個大問題。我只想鎖定對 telnet 和 ssh 登錄的本地網路訪問,同時仍然允許通過反向 ssh 隧道進行 ssh 登錄。
由於它是連接到伺服器然後創建反向 SSH 隧道的 RPi,因此您可以
sshd
在 RPi 上的 localhost 上執行。首先添加一個
bind_address
反向隧道命令,即執行ssh
從 RPi 到伺服器的呼叫:ssh -R localhost:6060:localhost:22 -i path/to/key me@server
是的,這是
localhost
兩次:
localhost:22
是在 RPi 上重定向流量的位置。localhost:6060
是將在伺服器上偵聽的埠(您可能希望也可能不希望它位於 localhost 上,因為伺服器可從 Internet 獲得,您可能會認為它是 localhost)。現在,在 RPi 上,您可以添加
/etc/ssh/sshd_config
以下內容:ListenAddress 127.0.0.1
並重新啟動
sshd
。現在 RPi 將拒絕本地網路上到埠 22 的連接,因為套接字綁定到
localhost
(在環回上,與具有本地 IP 的介面不同的介面),但它會回答反向 SSH 隧道,因為該套接字顯式綁定到localhost
on RPi 的隧道一側。ssh -p 6060 user@rpi
將正常從伺服器連接到 RPi。
注意:這可能很危險,因為沒有簡單的方法可以讓 RPi 再次響應來自本地網路的連接。如果出現嚴重損壞,修復問題的唯一方法是去那裡連接螢幕和鍵盤。說真的,先測試一下,如果你在某個地方打錯了,你將需要物理訪問。
注意 2:此解決方案與 Stephen Harris 的解決方案之間唯一真正的區別是 RPi 現在將拒絕與埠 22 的連接。您是否希望它接受連接並拒絕授權,這是一個偏好問題(或honeypot設計 :) )
對於您的 RPi 的
ssh
守護程序,請查看sshd_config
和AllowUsers
選項。您可以在其中指定主機名。
localhost
由於您正在反向隧道,因此連接可能來自AllowUsers yourusername@localhost
in
/etc/ssh/sshd_config
(或您的作業系統放置的任何位置)可能就足夠了。請記住sshd
在更改sshd_config
.由於您只是觸摸
sshd
,因此串列控制台登錄不會受到影響。