免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1864 | 回复: 0
打印 上一主题 下一主题

限制用户目录的sftp和scp,ssh服务 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-09 17:28 |只看该作者 |倒序浏览
不知道大家有没有晕倒在类似的问题上,html版在
http://www.trydofor.com/study/st ... h-chroot-by-pam.htm

========================================================
内容摘要:

通过pam的chroot,使openssh的sftp,ssh,scp能够限制用户在指定目录内活动。

试验目的:

使openssh的S服务,能够限制用户在指定目录内活动,以屏蔽可能存在的安全隐患。

但是Red Hat Enterprise Linux ES release 3的openssh是3.6.1,不支持pam验证
而且jailkit也不能在此环境下正常工作。

试验环境:

192.168.0.1 和 192.168.0.2 是相同配置的机器,
我们从192.168.0.1 rsh到 192.168.0.2,以保证ssh服务停止的时候
我们仍然可以进行远程操作(rsh配置请参考以前的手册)

[cat /etc/issue]
Red Hat Enterprise Linux ES release 3 (Taroon)

[rpm -qa |grep openssh]
openssh-server-3.6.1p2-18
openssh-askpass-gnome-3.6.1p2-18
openssh-clients-3.6.1p2-18
openssh-askpass-3.6.1p2-18
openssh-3.6.1p2-18

面临问题:

1.要远程升级 openssh 到 3.9以上,以支持pam认证
2.构造chroot环境

操作步骤:

1 远程升级 openssh

1.1 上传openssh-3.9p1.tar.gz到192.168.0.1
rcp openssh-3.9p1.tar.gz root@192.168.0.2:/root/
rsh 192.168.0.2 -l root


1.2 编译 openssh
tar xvzf openssh-3.9p1.tar.gz
cd openssh-3.9p1
./configure --with-pam --prefix=/usr --sysconfdir=/etc/ssh
make

--with-pam,是支持pam
--prefix=/usr --sysconfdir=/etc/ssh,是与原来的sshd保持一直

1.3 如果1.2通过,停止sshd服务
service sshd stop
ps -ef |grep sshd

1.4 卸载 openssh-server 和 openssh
[rpm -qa|grep openssh]
openssh-askpass-gnome-3.6.1p2-18
openssh-clients-3.6.1p2-18
openssh-askpass-3.6.1p2-18
openssh-server-3.6.1p2-18
openssh-3.6.1p2-18

rpm -e --nodeps openssh-server
rpm -e --nodeps openssh

这里只卸载了openssh-server 和 openssh,因为我们只关心这两个服务,
对于其他的依赖关系尽量保持原有版本。(没时间搞清楚依赖关系,最好不动了)

1.5  安装刚刚编译的openssh
make install

1.6 重建 /etc/rc.d/init.d/sshd
cp contrib/redhat/sshd.init /etc/rc.d/init.d/sshd

1.7 重建 pam.d/sshd
[cat /etc/pam.d/sshd]
#%PAM-1.0
auth       required     pam_stack.so service=system-auth
auth       required     pam_nologin.so
account    required     pam_stack.so service=system-auth
password   required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth

1.8 重启 sshd
service sshd start

2 配置sshd以支持chroot

2.1 构建chroot环境
因为jailkit在当前版本的linux下不能正常运行,而且我们想搭建一个简洁的
chroot环境,这里使用了手动制作:)

2.1.1 使用环境变量,以方便干活
export CHROOT_PATH=/home/chroot_env

2.1.2 创建基本目录
mkdir -p $CHROOT_PATH/{bin,home,usr,lib}
chown -r root.root $CHROOT_PATH
cd $CHROOT_PATH

2.1.3 创建 /bin/bash环境
cp /bin/bash $CHROOT_PATH/bin/bash
for a in $(ldd /bin/bash | awk '{print $3}')
do
[ -e $CHROOT_PATH`dirname $a` ] || mkdir -p $CHROOT_PATH`dirname $a`
cp -f $a $CHROOT_PATH$a;
done

2.1.4 创建 sftp-server 环境
export SFTP_SERVER=`grep sftp /etc/ssh/sshd_config | awk '{print $3}'`
echo $SFTP_SERVER
mkdir -p $CHROOT_PATH/`dirname $SFTP_SERVER`
cp $SFTP_SERVER $CHROOT_PATH$SFTP_SERVER
for a in $(ldd $SFTP_SERVER | awk '{print $3}')
do
[ -e $CHROOT_PATH`dirname $a` ] || mkdir -p $CHROOT_PATH`dirname $a`
cp -f $a $CHROOT_PATH$a;
done

chroot环境已经搭建完毕,只有一个bash可供使用
sftp-server,是为了相应用户的sftp登陆的


2.2 配置chroot-openssh

2.2.1 添加或指定享受此待遇的用户,这里是sftp_test
useradd -d /home/sftp_test sftp_test #如果没有用户,指向chroot/home
mv /home/sftp_test $CHROOT_PATH/home/sftp_test
ln -s $CHROOT_PATH/sftp_test /home/sftp_test
passwd sftp_test

这里使用了软连接,为了保持chroot环境和实际环境的一致。


2.2.2 修改sshd配置
[vi /etc/ssh/sshd_config]
UsePAM yes

2.2.3 修改sshd.pam配置
[vi /etc/pam.d/sshd]
session    required     pam_chroot.so

2.2.4 修改chroot配置
echo sftp_test   $CHROOT_PATH >> /etc/security/chroot.conf
cat /etc/security/chroot.conf

2.2.5 重新启动
service sshd restart

3 可选操作,增加安全性
chattr -R +i $CHROOT_PATH
chattr -R -i $CHROOT_PATH/home


经验总结:

1. 在升级openssh操作中,需要使用rsh登陆,以确保可以无论sshd如何,
都能够正常进行远程操作。

2. jailkit是个好工具,可以实现限定用户的功能和更强大的功能,但是在
低版本的linux中不能正常工作,而且不如这样的简洁和方便

3. 上面的环境很是简陋,在scp中,会找你要很多命令,如ls,group等
可以cp需要的命令到CHROOTENV中,并ldd,把相应的so也复制过去,
参考 2.1.3即可

参考资料:

    * openssh 官方主页
    * google 'openssh pam'
    * jailkit 官方主页
    * google,man手册和不断的尝试
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP