나는 리눅스에서 chroot jail에 대해 많이 읽거나 읽었지만 아직 그것을 사용하지는 않았다. (나는 매일 Fedora를 사용한다) chroot "jail"은 무엇인가? 언제 그리고 왜 그것을 사용하거나 사용하지 않을 수 있으며 알아야 할 다른 것이 있습니까? 하나를 만들려면 어떻게해야합니까?
나는 리눅스에서 chroot jail에 대해 많이 읽거나 읽었지만 아직 그것을 사용하지는 않았다. (나는 매일 Fedora를 사용한다) chroot "jail"은 무엇인가? 언제 그리고 왜 그것을 사용하거나 사용하지 않을 수 있으며 알아야 할 다른 것이 있습니까? 하나를 만들려면 어떻게해야합니까?
답변:
chroot jail은 프로세스와 그 자식을 시스템의 나머지 부분과 격리시키는 방법입니다. 루트 사용자는 감옥에서 매우 쉽게 탈퇴 할 수 있으므로 루트로 실행되지 않는 프로세스에만 사용해야합니다.
프로세스 실행에 필요한 모든 시스템 파일을 복사하거나 링크하는 디렉토리 트리를 작성하는 것이 좋습니다. 그런 다음 chroot()
시스템 호출을 사용하여 루트 디렉토리를이 새 트리의 기초가되도록 변경하고 해당 chroot 환경에서 실행중인 프로세스를 시작하십시오. 실제로 수정 된 루트 외부의 경로를 참조 할 수 없으므로 해당 위치에서 악의적으로 작업 (읽기 / 쓰기 등)을 수행 할 수 없습니다.
Linux에서는 바인드 마운트를 사용하는 것이 chroot 트리를 채우는 좋은 방법입니다. 당신이 같은 폴더에 끌어 수 있다는 것을 사용 /lib
하고 /usr/lib
있는 당기하지 않으면 서 /usr
, 예를 들면. jail 디렉토리에서 생성 한 디렉토리에 원하는 디렉토리 트리를 바인딩하십시오.
firejail
실행 중일 때 사용자 관리를 수행 할 수 없다는 알려진 문제로 인해 커널 3.18 이상을 권장합니다 .
/bin
루트 사용자가 설치 한 것으로 호출 할 수 있습니까 ? @Ben Combee
"chroot jail"은 실제로 죽어야하는 잘못된 이름이지만 사람들은 계속 사용합니다. chroot
파일 시스템의 루트로 파일 시스템의 디렉토리를 시뮬레이션 할 수있는 도구입니다. 즉, 다음과 같은 폴더 구조를 가질 수 있습니다.
-- foo
-- bar
-- baz
-- bazz
당신 chroot foo
과 할 경우 ls /
, 당신은 볼 수 있습니다 :
-- bar
-- baz
지금까지로 ls
(당신이 실행하는 다른 도구) 우려, 사람들은 파일 시스템에있는 유일한 디렉토리입니다. "jail"이 잘못된 이름 인 이유 는 프로그램이 시뮬레이션 된 파일 시스템에 머물 chroot
도록 강요 하기위한 것이 아닙니다 . chroot "jail"에 있다는 것을 알고있는 프로그램은 상당히 쉽게 탈출 할 수 있으므로 chroot
프로그램이 시뮬레이션 된 파일 시스템 외부의 파일을 수정하지 못하도록 보안 수단으로 사용해서는 안됩니다.
chroot
것이 아닙니다. 이런 이유로 사람들은 종종 섞어 chroot
과 jails
동일한 것을 의미 할 수 있습니다. 그들은하지 않습니다. 그는 과자를 잡으려고 허니팟을 설정할 때 용어 "감옥은"빌 Cheswick 만들어 낸 것으로 알려져 : csrc.nist.gov/publications/secpubs/berferd.pdf
"언제 언제 사용할 수 있습니까?"
절대 경로 참조를 작성하거나 인터셉트 및 로그를 원할 수있는 명령을 실행하는 스크립트 (부팅 시간 등)를 테스트하는 데 사용됩니다. 실제로 실행 환경에서 작동합니다.
예를 들어 Linux를 실행하는 임베디드 장치가 있는데 a) 실제 장치에서 실행하지 않고 일부 bash의 작동을 확인하고 싶습니다 (데스크톱에 더 나은 도구가 있고 장치를 브릭 킹하지 않기 때문에) b) 실행 중 내 바탕 화면에서 실제 (내 데스크탑 시스템이 엉망이되지 않기 때문에)
또한 "chroot jail"에없는 명령 또는 쉘 스크립트를 실행하려고 시도 할 때마다 오류와 함께 실행이 종료되므로 사용 된 명령 또는 기타 스크립트 파일을 발견 할 수 있습니다.
(물론, 전체 호그로 이동하려면 QEMU 또는 Docker 또는 VM 내에서 실행할 수 있지만 VM 이미지 등을 만드는 것이 훨씬 더 많습니다.)