chroot“jail”– 그게 무엇이며 어떻게 사용합니까?


99

나는 리눅스에서 chroot jail에 대해 많이 읽거나 읽었지만 아직 그것을 사용하지는 않았다. (나는 매일 Fedora를 사용한다) chroot "jail"은 무엇인가? 언제 그리고 왜 그것을 사용하거나 사용하지 않을 수 있으며 알아야 할 다른 것이 있습니까? 하나를 만들려면 어떻게해야합니까?

chroot 

여기에 대한 답변은 "어떻게 카테고리를 사용합니까?"에 부족한 것 같습니다. :(
Alexander Mills

답변:


87

chroot jail은 프로세스와 그 자식을 시스템의 나머지 부분과 격리시키는 방법입니다. 루트 사용자는 감옥에서 매우 쉽게 탈퇴 할 수 있으므로 루트로 실행되지 않는 프로세스에만 사용해야합니다.

프로세스 실행에 필요한 모든 시스템 파일을 복사하거나 링크하는 디렉토리 트리를 작성하는 것이 좋습니다. 그런 다음 chroot()시스템 호출을 사용하여 루트 디렉토리를이 새 트리의 기초가되도록 변경하고 해당 chroot 환경에서 실행중인 프로세스를 시작하십시오. 실제로 수정 된 루트 외부의 경로를 참조 할 수 없으므로 해당 위치에서 악의적으로 작업 (읽기 / 쓰기 등)을 수행 할 수 없습니다.

Linux에서는 바인드 마운트를 사용하는 것이 chroot 트리를 채우는 좋은 방법입니다. 당신이 같은 폴더에 끌어 수 있다는 것을 사용 /lib하고 /usr/lib있는 당기하지 않으면 서 /usr, 예를 들면. jail 디렉토리에서 생성 한 디렉토리에 원하는 디렉토리 트리를 바인딩하십시오.


10
당신의 대답은 훌륭합니다. 그러나 chroot는 안전한 메커니즘이 아닙니다 (프로세스가 루트가되면 때로는 탈옥 될 수 있음). 실제 교도소는 freebsd 교도소 등으로 시행 될 수 있습니다. 다음을 참조하십시오 en.wikipedia.org/wiki/FreeBSD_jail#Similar_technologies
nc3b

3
젠투 설치 프로세스는 chroot를 사용하므로 GRUB 및 Linux 커널 등을 설치하기 전에 새 OS를 설정할 수 있습니다.
Chris Huang-Leaver

3
모든 Linux 네임 스페이스를 사용하여 전체 jailed shell에 대해 firejail 을 살펴보십시오 . 사용 가능한 deb 및 rpm 패키지가 있습니다. 일반적으로 새 소프트웨어를 설치할 수 없거나firejail 실행 중일 때 사용자 관리를 수행 할 수 없다는 알려진 문제로 인해 커널 3.18 이상을 권장합니다 .
CivFan

좋은 답변입니다!-기본 예제는보기에 좋을 것입니다.
Gabriel Staples

chroot jail 아래의 사용자가 그 아래에있는 바이너리 파일을 /bin루트 사용자가 설치 한 것으로 호출 할 수 있습니까 ? @Ben Combee
alper

50

"chroot jail"은 실제로 죽어야하는 잘못된 이름이지만 사람들은 계속 사용합니다. chroot파일 시스템의 루트로 파일 시스템의 디렉토리를 시뮬레이션 할 수있는 도구입니다. 즉, 다음과 같은 폴더 구조를 가질 수 있습니다.

-- foo
    -- bar
    -- baz
-- bazz

당신 chroot foo과 할 경우 ls /, 당신은 볼 수 있습니다 :

-- bar
-- baz

지금까지로 ls(당신이 실행하는 다른 도구) 우려, 사람들은 파일 시스템에있는 유일한 디렉토리입니다. "jail"이 잘못된 이름 인 이유 는 프로그램이 시뮬레이션 된 파일 시스템에 머물 chroot도록 강요 하기위한 것이 아닙니다 . chroot "jail"에 있다는 것을 알고있는 프로그램은 상당히 쉽게 탈출 할 수 있으므로 chroot프로그램이 시뮬레이션 된 파일 시스템 외부의 파일을 수정하지 못하도록 보안 수단으로 사용해서는 안됩니다.


16
chroot"감옥" 을 피하는 방법에 대한 예를 갖는 것이 도움이 될 것 입니다. 내가 본 경우는 루트 권한을 확대해야합니다. 프로세스가 루트 권한으로 에스컬레이션되는 것을 방지하기가 어렵습니까?
CivFan

4
그것은 여전히 ​​"고백"이므로 "감옥"은 좋은 속기입니다. "레벨 3 격리 필드"가 더 좋을까요?!
MikeW

4
이 용어는 FreeBSD 감옥에서 나왔습니다. 교도소는 chroot에 구축됩니다. 교도소는 보안 문제를 해결하기위한 chroot것이 아닙니다. 이런 이유로 사람들은 종종 섞어 chrootjails동일한 것을 의미 할 수 있습니다. 그들은하지 않습니다. 그는 과자를 잡으려고 허니팟을 설정할 때 용어 "감옥은"빌 Cheswick 만들어 낸 것으로 알려져 : csrc.nist.gov/publications/secpubs/berferd.pdf
BugHunterUK

chroot jail 생각에 좋은 아이디어를 사용하지 않습니까?
Shafizadeh

10

기본적으로 환경의 루트 디렉토리를 변경하고 있습니다. 그래서

/

된다

/some-jail/ (or whatever directory you want)

응용 프로그램이 /에 액세스하면 / some-jail /이 표시됩니다. 또한 응용 프로그램은 / some-jail /에서 벗어날 수 없으므로 컴퓨터의 다른 항목에는 액세스하지 않습니다. '이봐, 내가주는 것에 만 액세스 할 수 있고 시스템의 다른 어떤 것에도 액세스 할 수 없습니다.


6

"언제 언제 사용할 수 있습니까?"

절대 경로 참조를 작성하거나 인터셉트 및 로그를 원할 수있는 명령을 실행하는 스크립트 (부팅 시간 등)를 테스트하는 데 사용됩니다. 실제로 실행 환경에서 작동합니다.

예를 들어 Linux를 실행하는 임베디드 장치가 있는데 a) 실제 장치에서 실행하지 않고 일부 bash의 작동을 확인하고 싶습니다 (데스크톱에 더 나은 도구가 있고 장치를 브릭 킹하지 않기 때문에) b) 실행 중 내 바탕 화면에서 실제 (내 데스크탑 시스템이 엉망이되지 않기 때문에)

또한 "chroot jail"에없는 명령 또는 쉘 스크립트를 실행하려고 시도 할 때마다 오류와 함께 실행이 종료되므로 사용 된 명령 또는 기타 스크립트 파일을 발견 할 수 있습니다.

(물론, 전체 호그로 이동하려면 QEMU 또는 Docker 또는 VM 내에서 실행할 수 있지만 VM 이미지 등을 만드는 것이 훨씬 더 많습니다.)

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