226e.Net,企业信息化人员的学习与交流平台! 欢迎您:[ ]
  您的位置: 首页 >> 文章首页 >> 技术中心 >> 信息安全 >>       

用 RSSH 和 Chroot 保障复制文件的安全

作者:茫然的风    来源:赛迪网    日期:2007-5-15 11:04:39   

【原创文章,赛迪独家发布,如欲转载,请注明出处“赛迪网”和文章作者“茫然的风”!违者,赛迪网将保留追究其法律责任的权利!】

对于远程登录来说,SSH(Secure Shell)确实是好东西。通过使用SSH,我们可以把所有传输的数据进行加密,这样就可以阻止“中间人”这种攻击方式,还能够防止DNS欺骗和IP欺骗。而且如果考虑到安全的文件传输选择,我们就可以放弃使用FTP转而考虑使用如SCP或者SFTP,它们与FTP应用相似但采用SSH来进行验证和加密,如果我们使用基于UNIX的服务器,可以在命令方式下调用SCP或者SFTP。不过,这同时意味着别人也能够登录到你的系统并且执行其中的命令。即使你进行限制使其只能对SFTP访问,用户仍然享有对整个系统的完全的访问权限。

通过使用一种称为RSSH(restricted secure shell)的程序我们完全可以改变这种情况,此程序可从pizzashack.org下载。当然,如果厂商支持的话,用户还可以从其组件库中将此程序安装到您的Linux系统中。通过使用RSSH,你不但能够限制用户使用SCP和SFTP(也包括一些使用SSH进行传输的程序,如rsync 和cvs),而且可以依靠chroot去限制用户只能访问一个目录而不是整个的文件系统。

创建chroot通常情况下技巧性较强,下面这段脚本可以作为一个用于创建初始化chroot的范例:

#!/bin/sh
 chroot="${1}"
if [ "${chroot}" == "" ]; then
    echo "FATAL: I need a location to create the chroot!"
    exit 1
fi
if [ -e ${chroot} ]; then
    echo "FATAL: ${chroot} already exists!"
    exit 1
fi
mkdir -p ${chroot}/{usr/bin,lib,usr/lib/ssh,dev,etc}
for bin in /usr/bin/scp /usr/bin/rssh /usr/lib/rssh_chroot_helper
  /usr/lib/ssh/sftp-server;
do
    cp ${bin} ${chroot}${bin}
 
    for lib in `ldd ${bin} | awk '{print $3}'`;
    do
        if [ -f ${lib} ]; then
            cp ${lib} ${chroot}/${lib}
        fi
    done
done
cp /lib/ld-linux.so.2 ${chroot}/lib/
cp /lib/libcrypt.so.1 ${chroot}/lib/
cp /lib/libnss_compat.so.2 ${chroot}/lib/
mknod -m 0666 ${chroot}/dev/null c 1 3

上面这段脚本会被执行为:# mkchroot /chroot/user。

下一步就是要执行针对用户的特定操作,如为用户创建密钥文件:

# getent passwd user >/chroot/user/etc/passwd

此外,我们还需要修改其登录的外壳:

# usermod -s /usr/bin/rssh user

最后,编辑/etc/rssh.conf并增加如下一项:

user = "user:022:00011:/chroot/user"

这会将用户的默认umask设置为022,并提供SCP和SFTP的访问。

最后,确保关键字在rssh.conf中被启用:

allowscp
allowsftp

这样你就可以确保了安全的文件传输,并且不会暴露整个的文件系统或外壳(shell)访问。

(T003)


上一篇: 剔除恶意代码链接 保障搜索用户安全
下一篇: 快乐的劳动日却会关闭系统里的杀毒软件

返回栏目   论坛讨论
相关文章
版权与免责声明:
本站部分稿件来源于其他媒体,本站转载是为传播更多的信息,此类稿件仅代表作者个人或来源机构观点,并不代表本站观点,版权归作者或来源机构所有,如果您有任何版权方面问题,请联系我们,我们将马上进行整理。
站内搜索   

本类排行
本类推荐