如何为sshd服务正确设置chroot jail?

时间:2015-08-13 13:50:05

标签: ssh jail

在我的debian8上的服务器端

,命令运行:

adduser --home /home/user1 user1
nano /etc/ssh/sshd_config
Match User user1
ChrootDirectory /home/user1   #two lines were  added

service sshd restart

在客户端,

ssh user@192.168.1.105
user@192.168.1.105's password: 
Write failed: Broken pipe

为什么不能在/ home / user1上设置chroot jail?

1 个答案:

答案 0 :(得分:1)

可能发生的事情是sshd发出chroot()系统调用,但是当系统尝试启动你的shell(可能类似/bin/bash)时,它没有&# 39;存在...因为你已经chrooted,所以没有/bin目录。

您可以将shell复制到/home/user1/bin/bash,但您还需要复制任何所需的共享库。您可以通过运行ldd /bin/bash

来实现此目的
# ldd /bin/bash
linux-vdso.so.1 =>  (0x00007ffc3eff5000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f21ceb47000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f21ce943000)
libc.so.6 => /lib64/libc.so.6 (0x00007f21ce586000)
/lib64/ld-linux-x86-64.so.2 (0x00007f21ced71000)

您可以将这些中的每一个复制到chroot环境中的适当位置,但如果您想运行任何其他命令,则需要重复上述过程。

您可能会发现某些库是动态加载的,您也需要复制这些库。

来自/etc的所有必需配置文件。可能来自/dev的一些设备节点。等

换句话说,除非您的目标是限制对单个命令的访问,否则它并不值得付出努力。