Ssh

在反向 ssh 設備上鎖定本地登錄

  • December 5, 2018

我已經設置了一個帶有 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 隧道,因為該套接字顯式綁定到localhoston RPi 的隧道一側。

ssh -p 6060 user@rpi

將正常從伺服器連接到 RPi。

注意:這可能很危險,因為沒有簡單的方法可以讓 RPi 再次響應來自本地網路的連接。如果出現嚴重損壞,修復問題的唯一方法是去那裡連接螢幕和鍵盤。說真的,先測試一下,如果你在某個地方打錯了,你將需要物理訪問。

注意 2:此解決方案與 Stephen Harris 的解決方案之間唯一真正的區別是 RPi 現在將拒絕與埠 22 的連接。您是否希望它接受連接並拒絕授權,這是一個偏好問題(或honeypot設計 :) )

對於您的 RPi 的ssh守護程序,請查看sshd_configAllowUsers選項。您可以在其中指定主機名。

localhost由於您正在反向隧道,因此連接可能來自

AllowUsers yourusername@localhost

in /etc/ssh/sshd_config(或您的作業系統放置的任何位置)可能就足夠了。請記住sshd在更改sshd_config.

由於您只是觸摸sshd,因此串列控制台登錄不會受到影響。

引用自:https://unix.stackexchange.com/questions/304850