在ssh服务里使用chroot
对于虚拟主机而言,平衡用户易用体验和安全是一个挑战,比如如果开发ssh给用户,那么无疑能极大的增加用户操作的灵活性,但是ssh的强大也是得在安全方面让管理员很头疼,如何将用户限制在自己的环境中,就显得尤为重要。幸而openSSH已经了解到了这点,目前的版本均支持chroot功能,下面我简单的描述一下在ubuntu 10.04系统上如何实现,其他系统实现的原理相同,只是一些配置文件和指令不同而已。
1)确定chroot目录
按照传统,chroot的目录都在/var/chroot/
2)创建必要的目录和文件。
我们需要在/var/chroot/sshd下创建一个最小的系统环境,特别是需要有交互终端,如果用到一个系统高级的功能,还需要一些特定的设备文件。因为我们这里只是演示最基本的功能,复杂的的功能,可以根据错误提示要按需增加需要的资源。
$sudo mkdir -p /var/chroot/sshd/{bin,home,etc}
$sudo apt-get install busybox-static
$sudo cp /bin/busybox /var/chroot/sshd/bin/
每次敲busybox
cat ctlink.py #!/usr/bin/env python import commands import os,sys output=commands.getoutput('./busybox --help') c=[x.strip() for x in output.split('functions:')[1].strip().split(',')] for x in c: os.system("ln -sf busybox %s" % x)
只需要在/var/chroot/sshd/bin/下面执行这个脚本就好了。
为了能让chroot环境能正确识别用户,组等信息,我们需要在etc目录下创建passwd,group,shadow等文件。而用户登录验证的时候,依赖的是chroot之前的/etc/{passwd,shadow,group}文件,这里我们采取硬链接方式来解决这个问题
$cd /var/chroot/sshd/etc
$sudo ln -n /etc/{passwd,group,shadow} .
当然,如果你的/var和/并不是在一个分区上,那么硬链接就不能工作,那你可以尝试在/etc和/var/chroot/sshd/etc来个同步工具。
3)创建测试帐号
我们不用之前的用户帐号,是因为我们需要对帐号的基本信息做一些修改,我们不想破坏你现在的环境,因为来一个测试帐号是比较安全的。
$ sudo useradd -d /var/chroot/sshd/home/test -m -s /bin/sh test
然后修改/etc/passwd文件将
test:x:1001:1001::/var/chroot/sshd/home/test:/bin/sh
修改成
test:x:1001:1001::/home/test:/bin/sh
接着创建密码
$sudo passwd test
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
4)修改openssh-server配置文件
编辑/etc/ssh/sshd_config文件,在最后一行增加chrootDirectory指令来指定chroot的路径,类似如下:
chrootDirectory /var/chroot/sshd
保存退出。
5)测试,测试
以上步骤完成后,执行
$sudo /etc/init.d/sshd reload
来重新加载配置文件
然后我们可以测试了,下面是一个登录的测试结果:
$ ssh test@localhost test@localhost's password: Linux wgzhao-laptop 2.6.32-23-generic #37-Ubuntu SMP Fri Jun 11 07:54:58 UTC 2010 i686 GNU/Linux Ubuntu 10.04 LTS ~ $ pwd /home/test ~ $ cd / / $ ls bin etc home / $
建议继续学习:
- Linux shell脚本使用while循环执行ssh的注意事项 (阅读:6611)
- 为什么要用公钥/私钥而不是密码去做SSH身份验证 (阅读:4677)
- 懒人连ssh不输密码若干大法 (阅读:4475)
- 如何让ssh登录更加安全 (阅读:4473)
- ssh连接超时解决办法 (阅读:4463)
- ssh命令 (阅读:4205)
- SSH无密码登录 (阅读:4214)
- 共享会话的ssh连接配置 (阅读:3563)
- SSH下连接Oracle的方法 (阅读:3455)
- SSH日常用法小例 (阅读:3308)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:wgzhao 来源: Linux|系统管理|WEB开发
- 标签: chroot ssh
- 发布时间:2010-07-14 09:51:22
- [67] Go Reflect 性能
- [67] Oracle MTS模式下 进程地址与会话信
- [67] 如何拿下简短的域名
- [61] IOS安全–浅谈关于IOS加固的几种方法
- [60] 图书馆的世界纪录
- [59] 【社会化设计】自我(self)部分――欢迎区
- [58] android 开发入门
- [56] 视觉调整-设计师 vs. 逻辑
- [49] 给自己的字体课(一)——英文字体基础
- [47] 界面设计速成