尝试在Centos7上使用jailkit。我已经通过源代码安装并且还使用了 RPMhttp://dries.eu/rpms/jailkit/jailkit,并得到相同的结果。我主要关注的是https://olivier.sessink.nl/jailkit/howtos_chroot_shell.html然而,也查看了许多其他文件。
步骤1:创建监狱。我还应该包括吗jk_lsh
?稍后会详细介绍这一点。另外,没什么大不了的,但是您是否建议使用选项-k
来创建链接而不是复制它们?请注意,有几个文件不存在。
[root@mybox ~]# jk_init -v -j /home/jail basicshell editors extendedshell netutils ssh sftp scp | grep 'do not exist'
Source file(s) /lib/libnsl.so.1 do not exist
Source file(s) /lib/libnss*.so.2 do not exist
Source file(s) /etc/bash.bashrc do not exist
Source file(s) /usr/lib/locale/en_US.utf8 do not exist
Source file(s) /etc/vimrc do not exist
Source file(s) /etc/joe do not exist
Source file(s) /etc/bash.bashrc do not exist
Source file(s) /usr/lib/locale/en_US.utf8 do not exist
Source file(s) /usr/share/mc do not exist
Source file(s) /etc/vimrc do not exist
Source file(s) /etc/joe do not exist
Source file(s) /lib/libnss_dns.so.2 do not exist
Source file(s) /usr/lib/sftp-server do not exist
Source file(s) /usr/lib/misc/sftp-server do not exist
Source file(s) /usr/libexec/sftp-server do not exist
Source file(s) /usr/lib/openssh/sftp-server do not exist
Source file(s) /usr/lib/sftp-server do not exist
Source file(s) /usr/lib/misc/sftp-server do not exist
Source file(s) /usr/libexec/sftp-server do not exist
Source file(s) /usr/lib/openssh/sftp-server do not exist
[root@mybox ~]#
第2步:将用户添加到监狱。无法添加用户,因为/usr/sbin/jk_lsh
未添加。我可以使用 添加它jk_init
,或者为用户指定 shell -s /bin/bash
(这似乎很合适,因为稍后需要更改它)。我两种都试过了。
[root@mybox ~]# jk_jailuser -m -v -j /home/jail testuser1
invalid shell, /home/jail/usr/sbin/jk_lsh does not exist
enter jail directory: /home/jail
invalid shell, /home/jail/usr/sbin/jk_lsh does not exist
enter jail directory: ^C
aborted..
[root@mybox ~]#
# add jk_lsh and jail users...
[root@mybox ~]# cat /etc/passwd | grep testuser
testuser1:x:1002:1002::/home/jail/./home/testuser1:/usr/sbin/jk_chrootsh
testuser2:x:1003:1003::/home/jail/./home/testuser2:/usr/sbin/jk_chrootsh
[root@mybox ~]# cat /home/jail/etc/passwd
root:x:0:0:root:/root:/bin/bash
testuser1:x:1002:1002::/home/testuser1:/usr/sbin/jk_lsh
testuser2:x:1003:1003::/home/testuser2:/bin/bash
[root@mybox ~]#
步骤3: 以新用户身份登录。尝试以 testuser1 或 testuser2 身份登录时,shell 会立即关闭。
[root@mybox ~]# tail -6 /var/log/secure
Sep 7 14:12:24 mybox sshd[2615]: Accepted password for testuser1 from 11.22.333.444 port 62008 ssh2
Sep 7 14:12:24 mybox sshd[2615]: pam_unix(sshd:session): session opened for user testuser1 by (uid=0)
Sep 7 14:12:24 mybox sshd[2615]: pam_unix(sshd:session): session closed for user testuser1
Sep 7 14:12:36 mybox sshd[2623]: Accepted password for testuser2 from 11.22.333.444 port 62009 ssh2
Sep 7 14:12:36 mybox sshd[2623]: pam_unix(sshd:session): session opened for user testuser2 by (uid=0)
Sep 7 14:12:37 mybox sshd[2623]: pam_unix(sshd:session): session closed for user testuser2
[root@mybox ~]#
我的黑客解决方法: 从源代码安装并使用 时jk_init -k ..
,我jk_cp -v -f -j /home/jail /bin/bash
在添加用户之前执行,这样做会阻止 shell 立即关闭。不确定为什么这是必要的,或者 -k 标志或需要从源代码中执行是否进行了更改。无论如何,在我看来,需要执行此步骤可能是一个糟糕的解决方法。
最后一个小问题: 没什么大不了的,但更新时也会出现这些错误:
[root@mybox ~]# jk_update -j /home/jail -d
ERROR: while scannign dir /home/jail/lib/: No such file or directory
ERROR: while scannign dir /home/jail/opt/: No such file or directory
[root@mybox ~]#
我的问题: 监禁用户以使 shell 不会立即关闭的正确方法是什么?
答案1
你可以试试这个,很容易使用。
只需 3 步即可将用户设置为监狱。
1. add user to system
2. create a jail with jail-shell command.
3. set user into jail with jail-shell command.
这是该工具:https://github.com/pymumu/jail-shell
笔记:我是这个工具的开发者,所以这是一种自我推销。
彭尼克 = pymumu