某公司机房成功搭建OpenSSH Server跳板服务器[服务器安全]
本文“某公司机房成功搭建OpenSSH Server跳板服务器[服务器安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
布置后台:
近来有一客户提出这么个需求,要在公司信息机房布置一台登录跳板服务器,让今后用户拜候机房内的服务器都必须先登录这台跳板服务器,然后再ssh到其他服务器.具体要求为:
1)安全最大化,普通用户登陆到这台跳板服务器后只能履行ssh,ls等有限的底子号令.
2)把普通用户锁定在特定的目录下,这样即便被hack,也不会影响其他用户.
需求解析:
按照客户所概要求,那么就必须搭建一openssh server,操纵ssh+chroot功效来实现.而在openssh 4.8p1从前的版本,要支持chroot,必须利用第三方的改正.但从openssh 4.8p1今后,chroot功效已经被内置了,为此可以直接在服务器系统(CentOS 5.5)上搭建.
系统平台:
CentOS 5.5 i386
openssh 5.6p1
zlib-1.2.5
openssl-1.0.0c
CentOS 5.5中自带的openssh是4.3p2版本的,必须进级到4.8p1今后,我挑选进级到目前最高版本5.6p1.具体进级到openssh 5.6p1的办法可以参考我这篇文章:CentOS 5.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 -M ait
[root@server ~]# passwd ait
2.改正/etc/ssh/sshd_config文件 [root@server ~]# vi /etc/ssh/sshd_config #增添以下内容
Match User ait
ChrootDirectory /var/chroot
注:这里我指定chroot目录是/var/chroot
[root@server ~]# /etc/init.d/sshd restart #重启SSH服务
3.搭建基本的chroot环境
小贴士:
一个最基本的chroot环境至少有一个shell(比方sh,bash)和一些必要的系统设备文件(比方/dev/null,/dev/zero),假如要答应用户履行一些号令,那么还要预备呼应的号令可履行文件和号令依靠的库文件.
[root@server ~]# mkdir /var/chroot
[root@server ~]# cd /var/chroot
[root@server chroot]# mkdir {bin,dev,lib,lib64,etc,home}
[root@server chroot]# mknod dev/null c 1 3
[root@server chroot]# mknod dev/zero c 1 5
#可选,这两个文件ssh号令需求,如贫乏会报告:PRNG is not seeded
[root@server chroot]# mknod dev/random c 1 8
[root@server chroot]# mknod dev/urandom c 1 9
#可选,ssh号令需求,如贫乏会报告:Host key verification failed
[root@server chroot]# mknod dev/tty c 5 0
#改正/var/chroot及其子目录的属主,并改正权限
[root@server chroot]# chown -R root.root /var/chroot
[root@server chroot]# chmod -R 755 /var/chroot
#答应用户写这些设备文件,不可写会有些号令报错
[root@server chroot]# chmod 0666 dev/{null,zero,tty}
然后将要答应用户履行的可履行文件和依靠的库文件复制到呼应位置.比方必须给用户一个可用的shell,则我们普通用/bin/bash,那么履行ldd号令查看相关信息:
[root@server chroot]# 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@server chroot]# cp -p /bin/bash /var/chroot/bin
[root@server chroot]# cp -p /lib/libtermcap.so.2 /var/chroot/lib
[root@server chroot]# cp -p /lib/libdl.so.2 /var/chroot/lib
[root@server chroot]# cp -p /lib/libc.so.6 /var/chroot/lib
[root@server chroot]# 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`
以上是“某公司机房成功搭建OpenSSH Server跳板服务器[服务器安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |