Chroot debian 挤压以获取 shell 访问

Chroot debian 挤压以获取 shell 访问

用户需要从 WAN 端对 Ubuntu 服务器进行 shell 访问。有许多具有简单密码的 shell 帐户。因此 shell 端口(端口 22)在防火墙中被阻止。对于我的 WAN 端用户,我计划在 Debian chroot 中运行 ssh 服务器,并在防火墙中打开其端口。如果这种设置可行,实现它的最佳方法是什么?

答案1

单个 ssh 服务器

如果您计划在 chroot 中运行 SSH 服务器的唯一原因是限制某些用户的密码身份验证,那么您不需要这样做:您可以告诉 sshd 仅允许白名单用户使用密码。在/etc/ssh/sshd_config,使用Match指令:

PasswordAuthentication No
Match User trusted_user_1,trusted_user_2
    PasswordAuthentication yes

如果您确实想要 chroot 某些用户,您仍然可以运行单个 ssh 守护程序,并使用ChrootDirectory指令 in sshd_config(在指令范围内Match)。

两个 ssh 服务器,监听不同的地址

如果两个 ssh 守护程序侦听不同的地址,则可以让它们侦听同一端口。在每个指令中放置一个ListenAddress指令/etc/ssh/sshd_config,每个都有您希望该服务器侦听的 IP 地址(侦听,不听,即这些是服务器网络接口的地址)。仅当您的服务器计算机是执行 LAN/WAN 过滤的节点时,此方法的适用性有限。这也意味着类似的事情ssh localhost不会是透明的(您仍然可以使用 访问不在本地主机上侦听的守护进程ssh -b)。

两台 ssh 服务器,监听不同端口

Port您可以使用以下指令使 chroot 中的 ssh 守护程序侦听不同的端口:/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 连接将到达非 chroot 服务器,而通过 eth1 到端口 22 的 ssh 连接将到达 chroot 服务器。端口 2201 上的连接将到达 chroot 的服务器。您可以使用除 之外的其他条件-i eth,例如! -s 10.1.0.0/16 ! -s 127.0.0.0/8匹配源地址除 10.1.xy 或环回之外的所有内容。

相关内容