Linux 系统中有时会遇到需要将部分用户的活动范围限制在某个特定区域的需求,jail工具包
Jailkit
可以解决相关问题,本文记录使用方法。
简介 {#简介}
-
Jailkit 是一套实用程序,用来提高 chroot 监狱的可能性。Jailkit 包含一组工具和配置文件,用于自动化 chroot 监狱的部署。Jailkit 还包含各种工具,可以将用户帐户限制为特定文件或特定命令,这些命令是通过配置文件配置的。设置 chroot shell、仅限于某个特定命令的 shell 或 chroot 监狱中的守护进程要容易得多,可以使用这些实用程序进行自动化。
-
Jailkit是一套专注于安全开发的专用工具。如果配置、系统设置或环境不是100%安全的,它将以安全的方式中止,并且它将发送有用的日志消息,解释syslog发生了什么错误。
下载安装 {#下载安装}
下载 {#下载}
- 在官网下载最新版 Jailkit 工具包
- 当前(2022-01-10)最新版下载链接:https://olivier.sessink.nl/jailkit/jailkit-2.23.tar.gz
安装 {#安装}
- 解压
- 安装
如果报错:
需要安装几个包
jailkit 使用 {#jailkit-使用}
配置受限环境: {#配置受限环境:}
我们需要建立一个目录来存放所有受限环境的配置。目录随便放在什么地方
-
指定 jail 环境目录,以
/opt/jail
为例 -
创建该目录
-
这个目录应为Root所有,用chown改变属主
初始化chroot环境 {#初始化chroot环境}
设置在受限环境中可用的程序,根据允许用户使用什么命令来初始化环境,任何程序想要在受限环境中执行则必须用jk_init命令拷贝到目录中。
代码如下:
或结合成一个命令,例如:
其中像basicshell
, editors
, netutils
是一些组名,其中包含多个程序。复制到jail shell中的每个组都是可执行文件、库文件等的集合。
jk_lsh (Jailkit limited shell) - 这是一个重要的部分,必须添加到受限环境中。
完整的程序列表设置,可以在/etc/jailkit/jk_init.ini中查看。
比如basicshell就在jail提供有bash, ls, cat, chmod, mkdir, cp, cpio, date, dd, echo, egrep等程序。
命令执行完成后,会看到/jail下生成了 很多类似SHELL的文件
开启 jailkit 服务
配置账户 {#配置账户}
创建账户 {#创建账户}
- 创建将被监禁的用户
目前创建的是一个在实际文件系统中的普通用户,并没有添加到受限环境中。
- 这时候如果你查看
/etc/passwd
文件,你会在文件最后看到跟下面差不多的一个条目。
这是我们新创建的用户,最后部分的/bin/bash指示了这个用户如果登入了那么它可以在系统上正常的Shell访问
限制用户 {#限制用户}
- 现在是时候将用户关进监狱
执行上列命令后,用户robber将会被限制。
- 现在再观察/etc/passwd文件,会发现类似下面的最后条目
- 最后两部分表明用户主目录和shell类型已经被改变了。现在用户的主目录在
/opt/jail
(受限环境)中。用户的Shell是一个名叫jk_chrootsh
的特殊程序,会提供Jailed Shell。
jk_chrootsh这是个特殊的shell,每当用户登入系统时,它都会将用户放入受限环境中。
配置 jail 用户的 Bash Shell {#配置-jail-用户的-Bash-Shell}
到目前为止受限配置已经几乎完成了。但是如果你试图用ssh连接,那么注定会失败,像这样:
连接会立马关闭,这意味着用户已经活动在一个受限制的shell中。
下个重要的事情是给用户在限制环境中的一个正确的bash shell。
- 打开 jail 中的 password 文件
/opt/jail/etc/passwd
:
- 将
/usr/sbin/jk_lsh
改为/bin/bash
保存文件并退出。
登入限制环境 {#登入限制环境}
现在让我们再次登入受限环境
受限环境中的根目录实际就是真实文件系统中的/opt/jail
。但这只有我们自己知道,受限用户并不知情。
而且只有我们通过jk_cp拷贝到jail中的命令能使用。
测试 jail 环境 {#测试-jail-环境}
-
为了测试,我们在jail 用户的家中创建文件:
-
在 root 的上帝视角下可以看到这个文件:
在限制环境中运行程序或服务 {#在限制环境中运行程序或服务}
现在配置已经完成了。可以在限制/安全的环境里运行程序或服务。要在限制环境中启动一个程序或守护进程可以用jk_chrootlaunch
命令。
jk_chrootlaunch
工具可以在限制环境中启动一个特殊的进程同时指定用户特权。
如果守护进程启动失败,请检查/var/log/syslog/错误信息。
在限制环境中运行程序之前,该程序必须已经用jk_cp命令复制到jail中。
参考资料 {#参考资料}
- https://blog.csdn.net/nerissa/article/details/17356827
- https://olivier.sessink.nl/jailkit/
- https://www.jb51.net/LINUXjishu/455928.html
文章链接:
https://www.zywvvd.com/notes/system/linux/ssh-jail/ssh-jail/