
CentOS 5.8 서버에 Jailkit을 설치하고 찾은 온라인 가이드에 따라 구성했습니다. 다음은 루트로 실행된 명령입니다.
mkdir /var/jail
jk_init -j /var/jail extshellplusnet
jk_init -j /var/jail sftp
adduser testuser; passwd testuser
jk_jailuser -j /var/jail testuser
그런 다음 SSH를 통해 전체 bash 쉘에 대한 액세스 권한을 부여 하기 /var/jail/etc/passwd
위해 로그인 쉘을 변경하도록 편집했습니다 .testuser
/bin/bash
다음으로 다음과 같이 편집했습니다 /var/jail/etc/jailkit/jk_lsh.ini
(정확한지 확실하지 않음).
[testuser]
paths= /usr/bin, /usr/lib/
executables= /usr/bin/scp, /usr/lib/openssh/sftp-server, /usr/bin/sftp
테스트 사용자는 SSH를 통해 연결할 수 있으며 chroot Jail 디렉터리만 볼 수 있도록 제한되어 있고 SFTP를 통해 로그인할 수도 있지만 전체 파일 시스템을 볼 수 있고 탐색할 수 있습니다.
SSH 출력:
> ssh testuser@server
Password:
Last login: Sat Oct 20 03:26:19 2012 from x.x.x.x
bash-3.2$ pwd
/home/testuser
SFTP 출력:
> sftp testuser@server
Password:
Connected to server.
sftp> pwd
Remote working directory: /var/jail/home/testuser
감옥에 대한 SFTP 접근을 차단하려면 어떻게 해야 합니까?
답변1
나는 doublesharp의 고통을 확실히 느끼지만(이 문제도 발생함) 여기에서 doublesharp의 답변을 사용해서는 안 됩니다(안전하지 않음). 여기서 문제는 /usr/sbin/jk_chrootsh가 실행되기 전에 sshd의 내부 sftp가 실행되고 있다는 것입니다. 이는 보안상의 이유로 실행되어야 합니다. 따라서 이 문제를 해결하기 위해 해야 할 일은 /etc/ssh/sshd_config 파일에 다음 줄이 있는지 확인하는 것입니다.
Subsystem sftp /usr/lib/openssh/sftp-server
... 그리고 이 줄은 아닙니다 ...
Subsystem sftp internal-sftp
또한 이 파일에서 사용자/그룹 일치를 수행하지 않는지 확인하십시오. 여기서 중요한 아이디어는 Linux 시스템에서 사용자를 격리하기 위해 Jailkit을 사용하려는 경우 필요한 경우 자체 SFTP 기능을 실행할 수 있는 /usr/sbin/jk_chrootsh를 통해 모든 사용자를 강제해야 한다는 것입니다.
/etc/ssh/sshd_config를 변경한 후 sshd를 다시 시작해야 합니다(방법은 시스템에 따라 다를 수 있음).
답변2
여기에 문제가 있으면 수정하고 싶지만 다음 구성이 효과가 있었던 것 같습니다.
/etc/passwd
( 에서 사용자를 변경했습니다 .~ 아니다 /var/jail/etc/passwd
) 이는 Jailkit에 의해 수정되었습니다:
원래의testuser:503:503::/var/jail/./home/testuser:/usr/sbin/jk_chrootsh
수정됨testuser:503:503::/home/testuser:/bin/bash
다음에 구성이 추가되었습니다 /etc/ssh/sshd_config
.
Match Group testuser
ChrootDirectory /var/jail/
SSH
이제 또는 SFTP
사용자를 통해 로그인할 때 사용자는 /var/jail
이하로 제한되고 기본적으로 홈 디렉토리로 설정됩니다./var/jail/home/testuser