创建chroot环境,限制ssh/sftp的使用

阅读更多
chroot是一个大范围限制登录用户的利器,基本上让登录用户访问不到真实的系统。

但是很难配,无论是网上流行的脚本,还是说明,都有很多缺陷,要命的在于很少有提示信息。

先建立一个/home/chroot目录,这个名字是任意的。

openssh 4.8p1以下应该是不支持chroot,但可以用rssh来支持chroot,非常好用,但难度还是在chroot环境上。

安装rssh,可以用rpm或源码编译,问题都不大,很好配,如果是rpm安装,缺省配置在/etc/rssh.conf

这个配置很容易,配好chrootpath就行,再放开scp/sftp权限。

重要的是chroot的配置

rssh自带一个脚本 mkchroot.sh,可以方便地产生一个chroot环境,但注意,这个环境是不完整的。

1./etc/passwd要精简后放入。/etc/group也一样
2. /lib64/libnss_files.so.2 ,这个文件并没有放入,不知道为什么,但也有可能是 /lib64/libnss_* ,最好全拷入。
3. 创建 /dev/null , mknod -m 666 /home/chroot/dev/null c 1 3  ,如果有就删除重建一下。有些需要,有些不需要
4. 配置syslog,  加参数 "-a /home/chroot/dev/log" , /etc/sysconfig/syslog ,重起syslog服务,就会自动创建/home/chroot/dev/log。
5.修改/etc/passwd,指向rssh和home目录:home目录的格式上有特殊的写法,要写//来区分,前面是chroot目录,后面则是缺省的自己home目录
staging-emailmeform:x:504:504::/home/chroot//home/emf2:/usr/bin/rssh

要注意一些日志,有时候会出现信息。
/var/log/messages
/var/log/secure

无缘无故出现Connection closed或no user found之类的错,就是chroot环境不对,肯定是少lib,或是/etc/passwd不对

最后就配置出一个只能用于sftp/scp的用户,并且只能访问自己的目录。

参考:
rssh主页 http://www.pizzashack.org/rssh/
rpm包 http://dag.wieers.com/rpm/packages/rssh/
配置 http://www.cyberciti.biz/tips/howto-linux-unix-rssh-chroot-jail-setup.html
疑难解决 http://www.gentoo-wiki.info/SFTP_Server

你可能感兴趣的:(SSH,Linux,脚本,Unix,HTML)