|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
小知识:Linux在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。
需求剖析:
依据客户所提纲求,那末就必需搭建一opensshserver,应用ssh+chroot功效来完成。而在openssh4.8p1之前的版本,要支撑chroot,必需应用第三方的修正。但从openssh4.8p1今后,chroot功效曾经被内置了,为此可以直接在办事器体系(CentOS5.5)上搭建。
体系平台:
CentOS5.5i386
openssh5.6p1
zlib-1.2.5
openssl-1.0.0c
CentOS5.5中自带的openssh是4.3p2版本的,必需进级到4.8p1今后,我选择进级到今朝最高版本5.6p1。详细进级到openssh5.6p1的办法可以参考我这篇文章:CentOS5.5下进级OpenSSH-4.3p2到5.6p1
依据sshd_config的man中所述,完成chroot功效须要设置装备摆设"ChrootDirectory"这个参数。
ChrootDirectory:界说了用户经由过程认证今后的chroot目次,此目次及其一切子目次的属主必需是root,且这些目次只要root帐号可以停止写操作,其他任何组和帐号都弗成写。chroot今后,sshd会将用户的任务目次转到chroot目次顶用户本身的主目次。假如ChrootDirectory界说的目次下没有响应的/home/username目次,则会直接转到chroot的/目次下。
下边是具体的设置装备摆设进程:
1.新增用户ait(不创立其缺省主目次)
[root@server~]#useradd-Mait
[root@server~]#passwdait2.修正/etc/ssh/sshd_config文件[root@server~]#vi/etc/ssh/sshd_config#增长以下内容
MatchUserait
ChrootDirectory/var/chroot注:这里我指定chroot目次是/var/chroot
[root@server~]#/etc/init.d/sshdrestart#重启SSH办事3.搭建根本的chroot情况
小贴士:
一个最根本的chroot情况至多有一个shell(例如sh,bash)和一些需要的体系装备文件(例如/dev/null,/dev/zero),假如要许可用户履行一些敕令,那末还要预备响应的敕令可履行文件和敕令依附的库文件。
[root@server~]#mkdir/var/chroot
[root@server~]#cd/var/chroot
[root@serverchroot]#mkdir{bin,dev,lib,lib64,etc,home}
[root@serverchroot]#mknoddev/nullc13
[root@serverchroot]#mknoddev/zeroc15
#可选,这两个文件ssh敕令须要,如缺乏会申报:PRNGisnotseeded
[root@serverchroot]#mknoddev/randomc18
[root@serverchroot]#mknoddev/urandomc19
#可选,ssh敕令须要,如缺乏会申报:Hostkeyverificationfailed
[root@serverchroot]#mknoddev/ttyc50
#修正/var/chroot及其子目次的属主,并修正权限
[root@serverchroot]#chown-Rroot.root/var/chroot
[root@serverchroot]#chmod-R755/var/chroot
#许可用户写这些装备文件,弗成写会有些敕令报错
[root@serverchroot]#chmod0666dev/{null,zero,tty}
然后将要许可用户履行的可履行文件和依附的库文件复制到响应地位。例如必需给用户一个可用的shell,则我们普通用/bin/bash,那末履行ldd敕令检查相干信息:
[root@serverchroot]#ldd/bin/bash
linux-gate.so.1=>(0x00572000)
libtermcap.so.2=>/lib/libtermcap.so.2(0x0388b000)
libdl.so.2=>/lib/libdl.so.2(0x00839000)
libc.so.6=>/lib/libc.so.6(0x006b3000)
/lib/ld-linux.so.2(0x0068f000)
解释/bin/bash要准确履行,依附于以下几个文件:
/lib/libtermcap.so.2
/lib/libdl.so.2
/lib/libc.so.6
/lib/ld-linux.so.2
那末我们必需把/bin/bash和响应的库文件复制到对应的地位。
[root@serverchroot]#cp-p/bin/bash/var/chroot/bin
[root@serverchroot]#cp-p/lib/libtermcap.so.2/var/chroot/lib
[root@serverchroot]#cp-p/lib/libdl.so.2/var/chroot/lib
[root@serverchroot]#cp-p/lib/libc.so.6/var/chroot/lib
[root@serverchroot]#cp-p/lib/ld-linux.so.2/var/chroot/lib
相似上边如许,对每一个想要许可用户履行的文件都如斯操作便可。
这里只是为了解释下详细进程,现实运用时确定要用剧本来履行的。我从一网站抄来一个剧本(这里我定名为shell.sh),略加修正,内容以下:
#/bin/bash
#要许可履行的文件列表
cmdlist="/bin/bash/bin/ls/bin/cp/bin/mkdir/bin/mv/bin/rm/bin/rmdir"
#chroot路径
chroot_path="/var/chroot"
#断定依附的库文件
lib_1=`ldd$cmdlist|awk{print$1}|grep"/lib"|sort|uniq`
lib_2=`ldd$cmdlist|awk{print$3}|grep"/lib"|sort|uniq`
#复制敕令文件
foriin$cmdlist
do
cp-a$i$chroot_path/bin/&&echo"$idone"
done
#复制依附的库文件(由于是i386,所所以lib,假如是x86_64,则是lib64,)
forjin$lib_1
do
cp-f$j$chroot_path/lib/&&echo"$jdone"
done
forkin$lib_2
do
cp-f$k$chroot_path/lib/&&echo"$kdone"
done
[root@serverchroot]#ll
总计28
drwxr-xr-x2rootroot409602-2505:47bin
drwxr-xr-x2rootroot409602-2505:36dev
drwxr-xr-x2rootroot409602-2505:35etc
drwxr-xr-x2rootroot409602-2505:35home
drwxr-xr-x2rootroot409602-2505:51lib
drwxr-xr-x2rootroot409602-2505:35lib64
-rw-r--r--1rootroot66502-2506:50shell.sh
[root@serverchroot]#chmod755shell.sh
[root@serverchroot]#./shell.sh
/bin/bashdone
/bin/lsdone
/bin/cpdone
/bin/mkdirdone
/bin/mvdone
/bin/rmdone
/bin/rmdirdone
/lib/ld-linux.so.2done
/lib/libacl.so.1done
/lib/libattr.so.1done
/lib/libc.so.6done
/lib/libdl.so.2done
/lib/libpthread.so.0done
/lib/librt.so.1done
/lib/libselinux.so.1done
/lib/libsepol.so.1done
/lib/libtermcap.so.2done
复制/etc/passwd和/etc/group文件到/var/chroot/etc中,并删除用户本身和root之外的一切帐号。假如没有这两个文件,用户登录今后会报“Ihavenoname!”
[root@serverchroot]#cp-p/etc/passwd/var/chroot/etc/
[root@serverchroot]#cp-p/etc/group/var/chroot/etc/
4.树立chroot目次中的用户主目次
[root@serverchroot]#mkdir/var/chroot/home/ait
[root@serverchroot]#chown-Rait/var/chroot/home/ait
[root@serverchroot]#chmod700/var/chroot/home/aitOK,经由以上的设置装备摆设,如今就能够停止测试了。用ait帐号ssh登录到体系中,看到ait是被限制在了本身的宿主目次/home/ait下了。测试履行一些敕令,发明只要适才复制过去的敕令可以履行,其他全都弗成以。
-bash-3.2$pwd
/home/ait
-bash-3.2$ls
-bash-3.2$mkdirait_test
-bash-3.2$ls
ait_test
-bash-3.2$ll
-bash:ll:commandnotfound小知识:得益于极为出色的稳定性,全球范围内无数著名网站均选用它,CentOS是异次元的服务器也是! |
|