Ubuntu

用於 shell 訪問的 Chroot debian 擠壓

  • July 10, 2011

使用者需要從 WAN 端訪問 Ubuntu 伺服器的 shell。有許多帶有簡單密碼的 shell 帳戶。所以 shell 埠(埠 22)在防火牆中被阻止。對於我的 WAN 端使用者,我計劃在 Debian chroot 中執行 ssh 伺服器,並在防火牆中打開其埠。如果這種設置是可行的,那麼實現它的最佳方法是什麼?

單 ssh 伺服器

如果您計劃在 chroot 中執行 SSH 伺服器的唯一原因是將密碼身份驗證限制為某些使用者,則不需要這樣做:您可以告訴 sshd 只允許使用者白名單的密碼。在/etc/ssh/sshd_config中,使用Match指令:

PasswordAuthentication No
Match User trusted_user_1,trusted_user_2
   PasswordAuthentication yes

如果您確實想對某些使用者進行 chroot,您仍然可以執行單個 ssh 守護程序,並ChrootDirectorysshd_config(在指令範圍內Match)使用指令。

兩個 ssh 伺服器,監聽不同的地址

你可以讓兩個 ssh 守護程序監聽同一個埠,如果它們監聽不同的地址的話。在 each 中放置一個ListenAddress指令,每個/etc/ssh/sshd_config都有您希望該伺服器偵聽的 IP 地址(偵聽*,而不是偵聽,*即這些是您的伺服器網路介面的地址)。這適用性有限,僅當您的伺服器機器是執行 LAN/WAN 過濾的節點時。這也意味著諸如此類的事情ssh localhost將不透明(您仍然可以使用 訪問未在 localhost 上偵聽的守護程序ssh -b)。

兩個 ssh 伺服器,監聽不同的埠

您可以Port使用/etc/ssh/sshd_config. 繼續從防火牆外部阻止埠 22,並且不要阻止您為 chroot sshd 選擇的其他埠。

兩台 ssh 伺服器,由防火牆執行路由

如果您有兩個守護程序在不同埠上偵聽(如上),您仍然可以產生它們都在偵聽埠 22 的錯覺。例如,讓 chrooted ssh 守護程序偵聽埠 2201,並重定向來自埠 22 的流量eth1到埠 2201:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 22 -j REDIRECT --to-ports 2201

然後從 localhost 或通過 eth0 到埠 22 的 ssh 連接將到達非 chrooted 伺服器,而通過 eth1 到埠 22 的 ssh 連接將到達 chrooted 伺服器。埠 2201 上的連接將到達 chrooted 伺服器。您可以使用除 之外的其他條件-i eth,例如! -s 10.1.0.0/16 ! -s 127.0.0.0/8匹配源地址不是 10.1.xy 或環回的所有內容。

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