chroot debian 挤压外壳访问

nix*_*win 3 chroot ssh ubuntu debian

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

Gil*_*il' 5

单个 ssh 服务器

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

PasswordAuthentication No
Match User trusted_user_1,trusted_user_2
    PasswordAuthentication yes
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

您可以在chroot的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
Run Code Online (Sandbox Code Playgroud)

然后从 localhost 或通过 eth0 到端口 22 的 ssh 连接将到达非 chrooted 服务器,而通过 eth1 到端口 22 的 ssh 连接将到达 chrooted 服务器。端口 2201 上的连接将到达 chroot 服务器。您可以使用除 之外的其他条件-i eth,例如! -s 10.1.0.0/16 ! -s 127.0.0.0/8将所有内容与除 10.1.xy 或环回之外的源地址进行匹配。