首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Linux安装使用Jailkit来管理用户shell操作的教程

Linux安装使用Jailkit来管理用户shell操作的教程

受限shell(Jailed Shell)是一类被限制的shell,它看起来非常像真实的Shell,但是它不允许查看和修改真实的文件系统的任何部分。Shell内的文件系统不同于底层的文件系统。这种功能是通过chroot和其他多种程序实现的。举例来说,给用户建立一个linux shell去让他“玩玩”,或者在一个限定的环境里运行一些程序的所有功能等等。
在这个教程里我们将会探讨在Ubuntu下用jailkit建立一个受限shell。Jailkit是一个让你快速建立一个受限shell的工具,将受限用户放到里面,并配置那些要在受限制环境里运行的程序。
安装jailkit
复制代码
代码如下:
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz
tar xzf jailkit-2.16.tar.gz
cd jailkit-2.16
./configure
make
make install
cp extra/jailkit /etc/init.d/jailkit
chmod u+x /etc/init.d/jailkit
chkconfig jailkit on
初始化chroot环境
复制代码
代码如下:
jk_init -v -j /home/chroot sftp scp jk_lsh netutils extendedshell
service jailkit start
配置Jailed Shell
配置受限环境:
我们需要建立一个目录来存放所有受限环境的配置。目录随便放在什么地方,比如我们可以创建个/opt/jail的目录。
复制代码
代码如下:
$ sudo mkdir /opt/jail
这个目录应为Root所有。用chown改变属主。
复制代码
代码如下:
$ sudo chown root:root /opt/jail
设置在受限环境中可用的程序
任何程序想要在受限环境中执行则必须用jk_init命令拷贝到目录中。
例如:
复制代码
代码如下:
$ sudo jk_init -v /jail basicshell
$ sudo jk_init -v /jail editors
$ sudo jk_init -v /jail extendedshell
$ sudo jk_init -v /jail netutils
$ sudo jk_init -v /jail ssh
$ sudo jk_init -v /jail sftp
$ sudo jk_init -v /jail jk_lsh
或一次性解决:
复制代码
代码如下:
$ sudo jk_init -v /opt/jail netutils basicshell jk_lsh openvpn ssh sftp
像basicshell, editors, netutils是一些组名,其中包含多个程序。复制到jail shell中的每个组都是可执行文件、库文件等的集合。比如basicshell就在jail提供有bash, ls, cat, chmod, mkdir, cp, cpio, date, dd, echo, egrep等程序。
完整的程序列表设置,你可以在/etc/jailkit/jk_init.ini中查看。
复制代码
代码如下:
jk_lsh (Jailkit limited shell) - 这是一个重要的部分,必须添加到受限环境中。
创建将被监禁的用户
需要将一个用户放入jail里。可以先创建一个
复制代码
代码如下:
$ sudo adduser robber
Adding user `robber' ...
Adding new group `robber' (1005) ...
Adding new user `robber' (1006) with group `robber' ...
Creating home directory `/home/robber' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for robber
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
注意:目前创建的是一个在实际文件系统中的普通用户,并没有添加到受限环境中。
在下一步这个用户会被放到受限环境里。
这时候如果你查看/etc/passwd文件,你会在文件最后看到跟下面差不多的一个条目。
复制代码
代码如下:
robber:x:1006:1005:,,,:/home/robber:/bin/bash
这是我们新创建的用户,最后部分的/bin/bash指示了这个用户如果登入了那么它可以在系统上正常的Shell访问
限制用户
现在是时候将用户限制
复制代码
代码如下:
$ sudo jk_jailuser -m -j /opt/jail/ robber
执行上列命令后,用户robber将会被限制。
如果你现在再观察/etc/passwd文件,会发现类似下面的最后条目。
复制代码
代码如下:
robber:x:1006:1005:,,,:/opt/jail/./home/robber:/usr/sbin/jk_chrootsh
注意:最后两部分表明用户主目录和shell类型已经被改变了。现在用户的主目录在/opt/jail(受限环境)中。用户的Shell是一个名叫jk_chrootsh的特殊程序,会提供Jailed Shell。
jk_chrootsh这是个特殊的shell,每当用户登入系统时,它都会将用户放入受限环境中。
到目前为止受限配置已经几乎完成了。但是如果你试图用ssh连接,那么注定会失败,像这样:
复制代码
代码如下:
$ ssh robber@localhost
robber@localhost's password:
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-generic x86_64)
* Documentation: https://help.ubuntu.com/
13 packages can be updated.
0 updates are security updates.
*** /dev/sda7 will be checked for errors at next reboot ***
*** /dev/sda8 will be checked for errors at next reboot ***
Last login: Sat Jun 23 12:45:13 2012 from localhost
Connection to localhost closed.
$
继承事业,薪火相传
返回列表