간단하고 쉬운 방법으로 사용자를 감옥에


33

Oneiric의 홈 디렉토리에서 사용자를 감옥에 넣는 간단하고 쉬운 방법이 필요합니다. 사용자를 도용하거나 전체적인 도움을 받거나 훌륭한 웹 링크를 제공하는 간단한 구성이 있습니까?

10-20GB의 여유 공간이있는 온라인 무료 공용 서버를 제공 할 것입니다. 얼마나 많은 사용자가 있는지 모르겠습니다. FileZilla를 통해 연결할 수 있도록 SSH 및 SFTP를 제공하고 싶습니다.


사용자가 홈 디렉토리에 잠겨 있지 않은 경우 두 번째 업데이트
One Zero

@Marco가 언급 한대로 SSH 2 용 ChrootDirectory를 시도하고 싶다고 생각합니다. "많은"스토리지를 처리하기 위해이를 확장해야하기 때문에 표준 작업 방식을 넘어서고 싶을 수도 있습니다 ... 3- SSH가 최선의 선택입니까? 사람들이 서비스에 SSH가 필요합니까? 4- 행운을 빕니다
Ali

1
나는 다른 계획도 가지고 있습니다 .... 일반 사용자를 위해 우리는 MY SECURE SHELL과 함께 SFTP 만 제공 할 것입니다. 매우 쉬운 2 핸들
One Zero

이 jail eg (home / jail)을 어떻게 제거 할 수 있습니까? <br> jk_init -v -f / home / jail netutils와 같은 jail 섹션을 추가하면 어떻게 제거합니까?

답변:


23

Jailkit은 사용자 계정을 특정 디렉토리 트리 및 특정 명령으로 제한 할 수있는 유틸리티 세트입니다. '수동으로'하는 Jailkit 유틸리티를 사용하여 감옥을 설정하는 것이 훨씬 쉽습니다. 감옥은 파일 시스템 내에서 만드는 디렉토리 트리입니다. 사용자는 jail 디렉토리 외부에있는 디렉토리 나 파일을 볼 수 없습니다. 사용자는 해당 디렉토리와 하위 디렉토리에 갇혀 있습니다.

다운로드 및 설치 :

http://olivier.sessink.nl/jailkit/index.html#download

VERSION=2.20 # from November 2018
cd /tmp
wget https://olivier.sessink.nl/jailkit/jailkit-$VERSION.tar.gz
tar -zxvf jailkit-$VERSION.tar.gz
cd jailkit-$VERSION/
./configure
make
su -
make install

감옥 설정

이제 jail 디렉토리를 설정할 차례입니다. jailed 사용자는이 디렉토리를 서버의 루트 디렉토리로 보게됩니다. / home / jail을 사용하기로 결정했습니다.

mkdir /home/jail
chown root:root /home/jail

jk_init를 사용하면 특정 작업 또는 프로파일에 필요한 여러 파일 또는 디렉토리가있는 감옥을 빠르게 만들 수 있습니다 (클릭하여 자세한 내용 읽기).

jk_init -v /home/jail basicshell
jk_init -v /home/jail netutils
jk_init -v /home/jail ssh
jk_init -v /home/jail jk_lsh

사용자 추가

홈 디렉토리 및 bash 쉘을 사용하여 새 사용자를 추가하고 비밀번호를 설정하십시오.

useradd -d /home/jailtest -m jailtest -s /bin/bash
passwd jailtest

이제이 사용자를 감옥에 갈 시간입니다

다음 명령을 사용하십시오.

jk_jailuser -m -j /home/jail jailtest

당신 /etc/passwd은 지금 다음과 같은 것을 포함해야합니다 :

jailtest:x:1001:1001::/home/jail/./home/jailtest:/usr/sbin/jk_chrootsh

bash 사용

jk_cp 를 사용 하면 bash 라이브러리가 감옥에 복사됩니다.

jk_cp -v -f /home/jail /bin/bash

편집하다 /home/jail/etc/passwd

이 줄을 바꾸십시오 :

jailtest:x:1001:1001::test:/usr/sbin/jk_lsh

이것으로 :

jailtest:x:1001:1001::/home/jailtest:/bin/bash

유지

사용하여 jk_update실제 시스템에 업데이트를 감옥에 업데이트 할 수 있습니다.

드라이 런은 진행 상황을 보여줍니다.

jk_update -j /home/jail -d

-d 인수가 없으면 실제 업데이트가 수행됩니다. 더 많은 유지 보수 작업은 여기에서 찾을 수 있습니다.

( /home/jail/opt없는 경우 ,로 작성하고 다시 mkdir -p /home/jail/opt/ 실행 jk_update -j /home/jail하십시오)

다른 디렉토리에 대한 액세스 권한 부여

이제 감옥 사용자가 액세스 할 수있는 특수 폴더를 마운트 할 수 있습니다. 예 :

mount --bind /media/$USER/Data/ /home/jail/home/jailtest/test/

찍은 도움

http://olivier.sessink.nl/jailkit/howtos_chroot_shell.html

http://olivier.sessink.nl/jailkit/index.html#intro (아주 좋은 도움)

이것도

이것은 제대로 확인되고 확인되었습니다.


+1 매우 좋습니다. 높은 너무 당신이 "촬영 도움말"절에서 위에서 언급 한 링크를 읽어 보시기 바랍니다
CWD

2
우분투 13.10에서는 작동하지 않습니다. 마지막으로 로그인을 시도하면 즉시 환영 메시지가 표시되고 연결이 닫힙니다.
Matt H

Matt H : 마지막 두 단계를 따르십시오. bash 바이너리를 복사하고 / home / jail / etc / passwd 파일을 편집하십시오.
ONOZ

2
이것은 더 이상 작동하지 않거나이 튜토리얼이 작성된 이후로 변경되었습니다. MattH와 정확히 같은 문제가 발생합니다.
James Heald

또한 환영 메시지가 표시된 직후 연결이 끊어졌습니다. 여기 읽으면서 떠들썩한 파티에 jk_lsh에서는 chroot의 passwd 파일에서 로그인 쉘을 변경 linuxquestions.org/questions/linux-software-2/... 그것은 솔루션하지만 해결 방법은 아니다!
Attila Fulop

6

시스템 바이너리 및 / etc의 bash 및 구성 파일에 액세스해야하므로 / home로 제한 할 수 없습니다.

IMO는 사용자를 보호하는 가장 쉬운 방법은 의류를 사용하는 것입니다.

당신은 하드 링크를 만들

ln /bin/bash /usr/local/bin/jailbash

/ etc / shells에 jailbash를 추가합니다

그런 다음 jailbash를 사용자 쉘에 할당 한 다음 최소한의 액세스를 허용하는 jailbash에 대한 apparmor 프로파일을 작성하십시오.

sudo chsh -s /usr/local/bin/jailbash user_to_confine

Apparmor 프로파일을 직접 작성해야하지만 잠재적으로 시작할 수있는 프로파일이 있습니다.

http://bodhizazen.com/aa-profiles/bodhizazen/ubuntu-10.04/usr.local.bin.jailbash


You can not confine them to /home as they need access to the system binaries and bash and configuration files in /etc필요한 파일을 링크 / 복사하는 것을 막을 수있는 것은 없습니다.
user606723

1
예, user606723이 제안한대로 "할 수"있지만 그렇게 쉬운 것은 아니며 모든 잠재적 솔루션의 IMO가 가장 실용적이지 않거나 쉬운 것입니다. chroot를 만들거나 lxc를 사용할 수도 있습니다. 바이너리를 복사 한 다음 lib를 복사합니다. ldd를 사용하여 lib를 수동으로 식별해야하는 경우가 종종 있습니다. 이 방법은 설정하는 데 많은 작업이 필요합니다. 그런 다음 감옥을 최신 상태로 유지해야하며 바이너리 / 라이브러리를 수동으로 업데이트 (복사)해야합니다. 링크는 업데이트 측면에서 더 잘 작동 할 수 있지만 여전히 모두 설정해야합니다. 어쨌든 나는 이것이 OP가 생각한 것이라고 생각하지 않습니다. 그렇다면 어떻게 그들을 국한 시키는가?
Panther

1
문제의 핵심 jailkit은 OP가 언급 한 도구와 같이이 프로세스를 자동화하는 도구를 지적하는 것이라고 생각 합니다.
user606723

@ bodhi.zazen. u .. debootstrap (oneiric)에 대해 생각한 다음 lxc를 사용하여 컨테이너를 만듭니다. jail kit> 사용자를 컨테이너로 사용>. 내가 지금까지 한 일은 작업 미세> 내가 debbootstrap oneiric 최소 다음 jailkit을 사용한 적이있다
하나의 제로

이 작업에 LXC를 사용할 수 있습니다. LXC에서는 격리가 불완전한 경우가 있으므로주의하십시오. 사용자가 컨테이너에 루트 액세스 권한이없는 한 확인이 가능해야하며 LXC 메일 링리스트에 가입 할 수 있습니다.
Panther

1

어떤 목적을 달성하고자하는지 추측하기가 어렵습니다. FTP를 통해 탈옥 된 액세스를 제공하는 동안 ssh / sftp를 거부하려면 ... 쉬운 방법 :

새 쉘을 / etc / shells에 추가하십시오.

sudo -e /etc/shells

한 줄 추가 :

/bin/false

구하다. ssh / sftp를 거부하려는 각 사용자에 대해 사용자 쉘을 변경하십시오.

sudo chsh -s /bin/false userx

이제 userx는 ssh / sftp를 통해 로그인 할 수 없습니다.

vsftpd 설치 :

sudo apt-get install vsftpd

구성 파일을 편집하십시오.

sudo -e /etc/vsftpd.conf

그리고 약간의 변화 ....

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES

구하다. vsftpd를 다시 시작하십시오.

sudo /etc/init.d/vsftpd restart

잘 메신저 그들에게 ssh + sftp (filezilla를 통해 연결)를 제공하고 싶습니다
One Zero

0

사용자 rbash를위한 쉘로 체크 아웃 할 수 있습니다.

man bash

RESTRICTED SHELL섹션 검색

또는이 페이지 http://linux.die.net/man/1/bash를보십시오


3
rbash에 매우 조심하십시오. 빠져 나오기가 쉽고 구식이라고 생각됩니다. 블로그를
Panther

@ bodhi.zazen 당신은 rbash?
Karlson

네, 죄송합니다. 몇 년 전 누군가가 내가 설정 한 붉은 감옥을 깨뜨린 블로그가있었습니다. 5 분이 채 걸리지 않았습니다. 아무도 감옥에서 빠져 나오지 않았습니다.
Panther

u plz는 어떻게 구성 할 수 있는지 말해 줄 수 있습니까
One Zero

예, bash 제한 쉘 기능을 사용하는 것이 더 간단합니다
c4f4t0r
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.