Debian lenny下实现ssh的chroot功能
1、debian lenny下的openssh 版本号为5.1p1,支持chroot功能。Openssh自从4.8版本后支持chroot。
2、安装openssh-server
apt-get install ssh openssh-server
3、要先创建chroot环境(主要是一些库文件)
ldd 工具可以查看每个命令所需要的libraries
lai@120:/data$ ldd /bin/bash
linux-gate.so.1 => (0xb77d1000)
libncurses.so.5 => /lib/libncurses.so.5 (0xb778d000)
libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7789000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7641000)
/lib/ld-linux.so.2 (0xb77d2000)
我们还需要在chroot环境中使用mknod命令创建 /dev/null, /dev/zero, /dev/tty, and /dev/urandom 这些设备文件。
4、我们使用一个脚本来替代上一步的复杂过程。
安装必须的工具
apt-get install sudo debianutils coreutils
下载脚本
cd /usr/local/sbin
wget http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/make_chroot_jail.sh
chmod 700 /usr/local/sbin/make_chroot_jail.sh
把需要的程序、命令添加到chroot环境
vi /usr/local/sbin/make_chroot_jail.sh加入bin/ping /usr/bin/traceroute 2 个命令
118 elif [ "$DISTRO" = DEBIAN ]; then
119 APPS="/bin/ping /usr/bin/traceroute /bin/bash /bin/cp /usr/bin/dircolors /bin/ls /bin/mkdir /bin/mv /bin/rm /bin/rmdir /bin/sh
/bin/su /usr/bin/groups /usr/bin/id /usr/bin/rsync /usr/bin/ssh /usr/bin/scp /sbin/unix_chkpwd"
接下来,创建需要chroot用户的目录
# mkdir /home/chroot
# mkdir /home/chroot/bwtest
创建chroot需要的环境
# /usr/local/sbin/make_chroot_jail.sh bwtest /bin/bash /home/chroot/bwtest
如果需要更新添加其他命令,添加后执行
# /usr/local/sbin/make_chroot_jail.sh update /bin/bash /home/chroot/bwtest
至此chroot环境准备完毕
# ls -l /home/chroot/bwtest/
total 32
drwxr-xr-x 2 root root 4096 2011-04-02 10:49 bin
drwxr-xr-x 2 root root 4096 2011-04-02 10:49 dev
drwxr-xr-x 4 root root 4096 2011-04-02 10:49 etc
drwxr-xr-x 3 root root 4096 2011-04-02 10:49 home
drwxr-xr-x 3 root root 4096 2011-04-02 10:49 lib
drwxr-xr-x 2 root root 4096 2011-04-02 10:49 lib64
drwxr-xr-x 2 root root 4096 2011-04-02 10:49 sbin
drwxr-xr-x 4 root root 4096 2011-04-02 10:49 usr
接下来我们让openssh-server启用chroot
#vi /etc/ssh/sshd_config在文件最后加入
75 Subsystem sftp /usr/lib/openssh/sftp-server
76
77 UsePAM yes
78
79 Match User bwtest
80 ChrootDirectory /home/chroot/bwtest
81 AllowTCPForwarding no
82 X11Forwarding no
重启ssh后就可以通过securecrt客户端登陆了。
# /etc/init.d/ssh restart