用於 shell 訪問的 Chroot debian 擠壓
使用者需要從 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 守護程序,並
ChrootDirectory
在sshd_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 或環回的所有內容。