在没有openssh4.9的时候,打造SFTP监狱是一件非常麻烦的事情,虽然后面出来了好多jail tool kit,可是还不方便,好在openssh5以后自带了这个功能
CentOS5,默认的ssh非常旧,用rpmfusion的源还是无法升级到5.折腾了下,找到了这个源
http://centos.alt.ru/repository/centos/readme.txt
123456789101112131415 For use this repo create file centos.alt.ru.repo in /etc/yum.repo.d[CentALT]name=CentALT Packages for Enterprise Linux 5 - $basearchbaseurl=http://centos.alt.ru/repository/centos/5/$basearch/enabled=1gpgcheck=0and enable EPEL repositoryfor i386rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpmfor x86_64rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm
然后简单升级一下就可以了 现在就是如何处理jail和用户组的关系和配置文件的参数顺序了,基本过程参考http://www.heiher.info/1093.html 补充需要注意的两点
1.配置文件中Match语句块的地方应该在最下面,也就是说你设置好了一些什么允许X转发和超时时间,AllowUsers等参数以后才能写Match语句块,否则会报错。
2.chroot的目录必须是root:0755,如果不是也会报错,直接登陆不上,如果你的目录比较深,包含一些不能root:0755的目录,那么建议这样,建立一个/home/jail,设置为root:0755,然后里面建立一些文件夹,mount --bind一下即可
配置文件示例:
#Subsystem sftp /usr/libexec/openssh/sftp-serverSubsystem sftp internal-sftpMatch Group sftpChrootDirectory %hForceCommand internal-sftpX11Forwarding noAllowTcpForwarding no
注释掉Subsystem的ftp选项,用 internal-sftp取而代之,%h表示用户的主目录
建立一个用户,加入sftp用户组,下面的就不讲了
mount目录
mount --bind /src/ /home/jail/dest/
额外的安全问题
给了他们上传文件的权限了,但是sftp对文档类型控制不是太严格,我找了下,没找到资料,应该对这些目录做一下安全设置
参见http://ihipop.info/2010/04/1138.html