
잠재적으로 적대적인 네트워크(예: 인터넷)에 노출되는 서비스에서 이러한 관행을 추구해야 하는 이유에 대한 명확한 답변을 원합니다. 내가 이해하는 바에 따르면 chroot 감옥에서 탈출할 수 있는 방법이 있는데, 이 보안 조치에 대한 실질적인 가치가 없다면 일부 설치에서 여전히 이를 추구하는 이유는 무엇입니까?
답변1
chroot를 완전한 보안 기능으로 간주해서는 안됩니다. 이것이 공격을 더 어렵게 만드는 반면, chroot 내부에서 어느 정도 제어권을 확보할 수 있다면 상당히 쉽게 빠져나갈 수 있습니다. 상위 디렉터리로 루트를 변경하는 방법이 있습니다(..) 추가 정보여기. chroot가 보안상의 이점을 제공하는 이유는 해커가 갖고 있을 것으로 예상하는 많은 응용 프로그램이 존재하지 않기 때문입니다. chroot된 항목과 chroot되지 않은 항목 중에서 선택할 수 있는 경우 chrooted 옵션을 선택합니다.
더 나은 접근 방식은 BSD의 감옥, Solaris의 영역 또는 KVM이나 Xen과 같은 일부 가상화 기술과 같은 것입니다. 이러한 접근 방식은 chroot와 동일한 비교 아이디어를 사용하여 더욱 강력하게 만듭니다. SELinux와 같은 것을 볼 수도 있지만 이는 약간 더 복잡하므로 실수가 발생하기 쉽습니다.
답변2
제가 이해한 바에 따르면 chroot 감옥에서 탈출하는 방법이 있습니다(...). 그런데 왜 일부 설치에서는 여전히 이를 추구하고 있습니까?
비밀번호에 대해서도 똑같이 말할 수 있습니다. 요점은 일부 자원을 확보한다는 것은 침입자가 목표에 도달하기 전에 포기하도록 강요하는 침입자의 길에 너무 많은 장애물을 배치하는 것을 의미한다는 것입니다. 특정 리소스를 보호하기 위해 단일 방법에만 의존할 수는 없습니다. 게다가 chrooting을 사용하면 실행 중인 애플리케이션을 더 효과적으로 제어할 수 있습니다. 이 앱이 액세스할 수 있는 파일 시스템 리소스를 제한할 수 있습니다.
답변3
네, 그렇습니다.
- 귀하의 데몬이나 서비스를 제공하는 모든 것이 루트로 실행되지 않으면 해당 데몬의 구멍조차도 시스템의 나머지 부분과 격리됩니다.
- OS가 chroot()된 동안 수행할 수 있는 작업을 제한할 수 있다면 훨씬 더 좋습니다. 예를 들어 Linux에 대한 grsec-patches는 chroot 내부 루트 사용자의 기능을 제거하거나 chroot 내부에 /dev-nodes를 생성할 수 있습니다.
그러나 chroot 내부에 악용 가능한 커널 버그(또는 grsec 또는 BSD Jail이 아닌 경우 루트 구멍)가 있으면 전체 시스템을 소유하게 됩니다. 실제 가상화 프로그램(VMWare 등을 실행하지만 BSD 감옥은 아님)을 실행하는 경우에는 그렇지 않습니다. 모든 "시스템"에 동일한 커널을 사용하기 때문에 도움이 되지 않습니다.
그렇습니다. 올바르게 사용하면 보안 계층이 추가됩니다.
답변4
나는 chroot가 너무 복잡하고 한번도 설치할 수 없다고 생각합니다. 내가 그렇게 할 수 있었다면 그것에 큰 관심을 가지게 되었을 것이라고 주장할 수도 있지만, 아직까지는 그렇지 않습니다.
내 생각에 가상 머신에서 서비스를 격리하는 것은(물론 Xen에서는 가능하지만, 주장한다면 VMWare도 작동할 것입니다 :-P ) 요즘 사용 가능한 컴퓨팅 성능을 고려하면 훨씬 더 나은 아이디어라고 생각합니다. 가상 머신은 또한 chroot가 가지고 있지 않은 백업/마이그레이션이 매우 쉽다는 큰 이점을 가지고 있습니다. 또한 chroot에는 없는 VM 관리를 위한 포괄적인 인터페이스도 있습니다.