同步操作将从 Gitee 极速下载/jail-shell 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
jail-shell安全受限shell是一个Linux环境下的安全工具,主要使用chroot, namespace技术,限制用户执行特定的命令,和访问特定的目录。
可将用户通过ssh, scp, sftp,telnet, 终端等方式登录限制到安全的运行环境中。
可用于webhost的ssh受限访问;企业管理员的权限分级管理;一体化产品的权限控制。
易于使用
通过配置文件,自动生成chroot运行环境,提供jail-shell管理命令方便添加、查看、删除受限用户,以及安装、删除chroot运行环境。
chroot技术限制用户访问范围
采用Linux chroot技术,限制用户的目录访问范围,避免用户访问受限信息,防止用户对系统做破坏。
目录只读保护
对chroot运行环境进行只读保护,避免需要保护的目录被修改、文件被破坏;避免用户创建设备文件,访问系统受限文件,并避免执行外部可执行文件。
namespace限制用户可见范围
采用Linux namespace技术,限制用户pid,mount目录的可见范围,避免信息泄漏。
系统命令通道
提供系统命令代理通道,允许用户在chroot环境中执行真实系统的受限命令,在提供必要功能的情况下,保护系统。
自动处理chroot环境命令依赖
只需要提供命令列表,即可自动将命令依赖的动态库复制到chroot环境,避免手工复制动态库的繁杂工作。
capabilities限制
丢弃关键的capabilities权限,避免系统,chroot运行环境被rootkit破解。
多Linux操作系统支持
支持redhat, sles, debian及其衍生的操作系统。
安全受限shell包含3部分,pam插件,jail-cmd命令代理,jail-shell命令工具。
pam_jail_shell插件:
主要控制登录的用户,根据配置列表,将登录的用户采用chroot, namespace技术,限制在特定的受限目录中。
jail-cmd命令代理:
主要将命令转发到真实的系统中,如用户密码修改,或其他用户相关的业务命令的执行,并对命令做注入检测,防止注入。
jail-shell工具:
主要提供管理安全受限shell的功能,让用户更加易于使用,包括用户的添加、删除,shell的配置,安装,删除。
说明
编译
git clone https://github.com/pymumu/jail-shell.git
cd jail-shell
make
安装
sudo make install
卸载
sudo /usr/local/jail-shell/install -u
安装完成后,可使用jail-shell命令管理安全受限shell,通过jail-shell -h
查看命令帮助
在使用上,步骤如下:
useradd username
命令添加用户到系统中。jail-shell jail
创建安全受限shell配置,并创建受限运行环境。jail-shell user
将用户添加到受限系统中。如下以将test用户,添加到安全受限shell为例。
sudo useradd test -s /bin/bash
sudo passwd test
2.创建安全受限shell运行环境
sudo jail-shell jail -e test-jail
执行上述命令后,将使用模板创建新的安全shell配置,并使用vi打开编译,可使用vi
命令:w!
保存后退出。
使用命令jail-shell jail -l
可以查看已经配置的安全受限shell列表。
3.安装安全受限shell运行环境
sudo jail-shell jail -i test-jail
4.将test用户加入到安全受限shell中。
sudo jail-shell user -a test -j test-jail
5.使用ssh连接到安全受限shell中进行测试验证
ssh test@127.0.0.1
配置文件在/etc/jail-shell/jail-config/
目录中, 后缀为 .cfg
,此配置文件用于生成制定的jail,将需要的文件,命令复制到jail中。
配置支持如下命令:
dir: 创建目录
dir PATH MODE OWNER
dir /bin/ 0755 root:root
file: 复制文件
file SRC DEST MODE OWNER
file /etc/nsswitch.conf /etc/nsswitch.conf 0644 root:root
hlink: 创建硬链接文件
hlink SRC DEST
hlink /etc/localtime /etc/localtime
slink: 创建符号连接
slink TARGET LINKNAME
slink /bin/bash /bin/sh
clink: 先硬连接创建文件,若失败则复制文件
clink SRC DEST
clink /etc/localtime /etc/localtime
node: 创建设备文件
node PATH TYPE MAJON MINOR MODE OWNER
node /dev/null c 1 3 666 root:root
bind: 绑定映射目录
bind [SRC] DEST OPTION
man mount
获取参数说明bind / ro,nodev,nosuid
bind /opt/ /opt/ ro,nodev,noexec
bind /opt/upload /opt/upload rw,nodev,noexec,nosuid
bind /opt/%u /opt/upload ro,nodev,noexec,nosuid
cmd: 执行系统内命令
cmd SRC DEST RUN_AS_USER
cmd /usr/bin/passwd /usr/bin/passwd -:-
cmd /some/root/command /some/root/command root:root
cmd /some/user/command /some/user/command user:user
使用安全受限shell时,应采取最小安全授权原则。在保证使用功能的前提下,减少用户权限。
nodev
参数,/dev目录设置ro,noexec
(只读,禁止可执行文件)权限ro,nodev,nosuid
(只读,禁止设备文件,禁止suid文件)权限。nodev,noexec,nosuid
(禁止设备文件,禁止可执行文件,禁止suid文件)权限。gdb, mount, strace
等调试命令。目录 | 说明 |
---|---|
/etc/jail-shell/ |
配置文件目录 |
/etc/jail-shell/jail-shell.conf |
受限用户配置列表文件 |
/etc/jail-shell/jail-config/ |
安全受限shell配置文件所在目录,后缀为.cfg文件即被识别为配置文件。 |
/var/local/jail-shell/ |
受限安全shell数据目录 |
/var/local/jail-shell/jails |
受限安全shell chroot运行环境目录 |
/usr/local/jail-shell |
jail-shell程序目录 |
当向chroot环境中复制命令后,复制后的命令如果执行失败,则需要调试,找出缺少的文件,并添加到chroot环境中。
调试需要的工具:strace
, 调试方法如下
将strace命令复制到chroot环境中,然后使用strace执行需要调试的命令,找出执行命令缺少的文件。对应的调试命令如下
strace -F -eopen command
-eopen表示跟踪进程打开的文件列表, 必要时,可以不使用此参数。
执行上述命令后,排查打开失败的文件列表是否在chroot环境中。
open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)
如上表示:/etc/ld-so.preload文件读取时不存在,可能需要将上述文件添加到chroot环境中。这时可使用clink
,file
命令将缺失文件添加到chroot环境中。
jail-shell安全受限shell采用GPL-V2 License。
jailkit https://olivier.sessink.nl/jailkit/
rshell https://en.wikipedia.org/wiki/Restricted_shell
firejail https://github.com/netblue30/firejail
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。