현재 저는 chroot 감옥을 만들고 있습니다. 그래서 몇 가지 기사를 읽었는데 한 가지를 제외하고 모든 것이 명확해 보입니다: chroot Jail Shell
한 소스에서 그들은 다음과 같은 설정을 만들었습니다(물론 설정이 훨씬 크지만 이것이 제가 문제가 있는 부분입니다).
감옥에는 일부 프로그램과 라이브러리가 갖추어져 있습니다.
chroot 감옥 폴더는 이제 사용자를 생성해야 합니다 /jail/
.
감옥우리의 새로운 감옥에서.
따라서 파일을 열고 /etc/sudoers
다음 줄을 작성합니다.
prison ALL=NOPASSWD: /usr/bin/chroot, /bin/su - prison
/bin/chroot-shell
그런 다음 사용자가 SSH에 연결할 때 사용해야 하는 셸로 이 파일을 감옥에 생성합니다 . 내용은 다음과 같습니다:
#!/bin/bash
/usr/bin/sudo /usr/bin/chroot /jail/ /bin/su - $USER "@"
흥미로운 부분은 링크가 .Expected 에 복사 되지도 않았고 복사 /usr/bin/sudo
되지도 않는다는 것입니다 . 사용자가 sftp(예: WinSCP)를 사용하여 로그인을 시도할 때 작동합니다. 그러나 SSH를 통해 터미널을 사용하려고 하면(예: Putty 사용) 다음 줄과 함께 실패합니다. /bin/chroot
/jail/
sudo: unknown uid 1001: who are you?
그래서 내 질문은 다음과 같습니다
- chroot 감옥을 구성하는 이 방법은 안전하지 않은 방법이 아닌가요? 수감된 사람을 sudo 프로필에 넣는 것이 나에게는 이해가 되지 않는 것 같습니다. 그렇다면 그 뒤에 숨은 아이디어는 무엇입니까?
/bin/bash
감옥에 복사하여 사용자가 자신의bin/chroot-shell
sudo 항목 대신 사용하도록 하면 어떨까요 ? - 이 방법이 를 사용하는 것보다 안전하다면
/bin/bash
어떻게 작동하게 할 수 있나요? 첫 번째 단계는 감옥 디렉토리를 복사하여 이동하는 것입니다. 그렇죠/usr/bin/sudo
?/usr/bin/chroot
하지만 다음은 무엇입니까? sudo는 사용자를 모릅니다 ...
나의 서투른 영어 실력에 대해 사과하고 도움을 주셔서 감사합니다.
감사합니다,
크리스
해결책
지금까지 내가 읽은 기사의 작성자가 왜 자체 쉘을 만들고 감옥에 있는 사용자에게 특정 명령에 대한 sudo 액세스 권한을 부여하려고 했는지 모르겠습니다.
그런데 이 글은 2008년 기사라 좀 낡았습니다.
이제 감옥에 갇힌 사용자를 위한 기본 쉘로 쉘이 있습니다 /bin/bash
(명령 사용 chsh
). 또한 라이브러리 /lib/libdl.so.2 /lib/libc.so.6 /lib/ld-linux.so.2
(내 경우에는 32비트 및 64비트)가 모두 감옥에 있는지 확인해야 하여 감옥에 갇힌 사용자의 사용자 이름이 올바른지 확인해야 했습니다. 이것이 없으면 파일의 사용자 ID에서 사용자 이름을 가져오는 올바른 방법이 없습니다 paswd
.
그 후, 사용자는 작동 중인 쉘을 사용하여 올바른 SSH 연결을 열 수 있으며, 명령줄은 사용자가 누구인지 알 수 있습니다(줄 시작 부분의 기본 이름과 명령 whoami
).
이제 모든 것이 정상입니다 ^^