쉘이 즉시 닫히지 않도록 사용자를 감옥에 넣는 올바른 방법

쉘이 즉시 닫히지 않도록 사용자를 감옥에 넣는 올바른 방법

Centos7에서 Jailkit을 사용하려고 합니다. 소스에서 설치하고 RPM도 사용했습니다.http://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사용자를 위한 쉘을 지정할 수 있습니다 -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로 로그인을 시도하면 쉘이 즉시 닫힙니다.

[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하므로 쉘이 즉시 닫히지 않습니다. 이것이 왜 필요한지 또는 -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 ~]#

내 질문: 쉘이 즉시 닫히지 않도록 사용자를 감옥에 가두는 올바른 방법은 무엇입니까?

답변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

노트:저는 이 도구의 개발자이므로 이것은 약간의 자기 홍보입니다.

페니크 = 피무무

관련 정보