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
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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://127.0.0.1/wyygpj.html