전문
나는 사람들이 인터넷을 통해 오해를 되풀이하고 있다고 들었습니다.
우선; 단순히 .. 인해, 이는 얼마나 많은 실수로 발견 한 거기 원인과 결과 , 결국 뭔가를 사용하는 다른 의도 한 목적과?
Chroot 감옥이란 무엇인가?
Chroot는 처음에 프로세스 또는 사용자의 루트 디렉토리를 변경하도록 설계되었습니다 (알 수없는 소스에서 소프트웨어를 컴파일하는 데 적합). 이를 통해 손쉬운 청소를 포함한 빠른 테스트 베드 어플라이언스뿐만 아니라 기본 시스템에 보안 을 제공 할 수 있습니다. 그 이후로 몇 년이 지났으며, 개념과 묵시적 용도도 마찬가지로 변경되었습니다.
chroot를 사용하고있다 효과적으로 , 그리고에 대한 코드베이스에서 바로 여러 프로그램과 라이브러리 (즉 openSSHd, 아파치 + mod_security2 / mod_chroot, 비둘기장, 센드 메일, OpenVPN을, pam_chroot, 그리고 훨씬 더 ). 이러한 모든 주류 응용 프로그램이 잘못된 보안 솔루션을 구현했다고 가정하면 사실이 아닙니다.
chroot는 파일 시스템 가상화를위한 솔루션입니다. chroot jail 내부에서 프로세스 실행 지침을 준수하는 한 chroot에서 쉽게 벗어날 수 있다는 가정도 마찬가지입니다.
chroot 교도소를 확보하기위한 몇 가지 단계
즉 , 루트로 프로세스를 실행 하지 마십시오 . 그러면 루트 에스컬레이션 벡터가 열릴 수 있습니다 (chroot 내부 또는 외부에서도 마찬가지 임). chroot 외부 의 다른 프로세스와 동일한 사용자를 사용하여 chroot 내부 에서 프로세스를 실행하지 마십시오 . 공격 영역을 제한하고 프라이버시를 제공하기 위해 각 프로세스와 사용자를 고유 한 Chroot로 분리합니다. 필요한 파일, 라이브러리 및 장치 만 마운트하십시오. 마지막으로 chroot는 기본 시스템 보안을 대체하지 않습니다. 시스템을 완전히 보호하십시오.
또 다른 중요한 참고 사항 : 많은 사람들이 OpenVZ가 고장 나거나 전체 시스템 가상화와 비교하여 동일하지 않다고 생각합니다. 그들은 본질적으로 Chroot이고 멸균 된 공정 테이블을 가지고 있기 때문에 이러한 가정을합니다. 하드웨어 및 장치에 대한 보안 조치가 마련되어 있습니다. 대부분 은 chroot에서 구현할 수 있습니다.
모든 관리자가 전용 서버 또는 전체 시스템 가상화에서 필요한 모든 커널 매개 변수를 보호하는 데 필요한 지식 수준을 가지고있는 것은 아닙니다. 이는 OpenVZ를 배포한다는 것은 고객이 애플리케이션을 배포하기 전에 시도하고 보호해야 할 공격 영역이 훨씬 적다는 것을 의미합니다. 좋은 호스트는 이러한 매개 변수를 안전하게 보호하고 노드 또는 데이터 센터의 모든 사람뿐만 아니라 인터넷 전체에 더 좋습니다.
명시된 바와 같이 chroot는 파일 시스템 가상화를 제공합니다. 공격자가 COULD 손상 바인딩을 바인딩 할 경우 setuid 실행 파일, 안전하지 않은 응용 프로그램, 라이브러리, 매달려있는 소유자없는 심볼릭 링크 등이 없는지 확인해야합니다. 다른 방법으로, 특권 에스컬레이션을 통해 또는 교도소를 기본 시스템에 주입하여 일반적으로 감옥에서 탈출하는 것을 훼손합니다.
이 경우 일반적으로 잘못된 업데이트, 제로 데이 익스플로잇 또는 관용적 인 사람 오류의 결과 입니다.
전체 시스템 가상화와 달리 chroot가 여전히 사용되는 이유
이 시나리오를 고려하십시오. 호스트 노드가 OpenVZ를 실행하면서 Virtual Private Server를 실행 중입니다. 당신은 단순히 수없는 커널 레벨에서 작동 아무것도 실행합니다. 이것은 또한 운영 체제 가상화를 사용하여 프로세스를 분리하고 추가 보안을 제공 할 수 없음을 의미합니다. 따라서이 목적으로 chroot를 사용해야 합니다.
또한 chroot는 사용 가능한 리소스에 관계없이 모든 시스템에서 지속 가능합니다. 간단히 말해서 모든 가상화 유형의 오버 헤드가 가장 적습니다. 이것은 많은 저가형 박스에서 여전히 중요하다는 것을 의미합니다.
다른 시나리오를 고려하십시오. 가상화 된 환경에서 실행중인 아파치가 있습니다. 각 사용자를 분리하려고합니다. 아파치에 chroot 애드온 (mod_chroot, mod_security 등)을 통해 가상화 된 파일 시스템을 제공하는 것은 최종 사용자 간의 최대한의 프라이버시를 보장하는 가장 좋은 옵션입니다. 또한 인텔 수집을 방지하고 또 다른 보안 계층을 제공합니다.
간단히 말해서, 계층으로 보안을 구현하는 것이 중요합니다 . Chroot는 잠재적으로 그들 중 하나입니다. 모든 사람과 모든 시스템이 커널에 액세스 할 수있는 사치가있는 것은 아니므로 chroot STILL 이 목적을 달성합니다. 전체 시스템 가상화가 본질적으로 과도하게 사용되는 다양한 응용 프로그램이 있습니다.
귀하의 질문에 대한 답변
특히 CentOS를 사용하지 않지만 Bind는 이제 작업 전에 권한을 삭제합니다. 그러나 바인드는 공격 벡터 히스토리 및 잠재적 취약점으로 인해 근절이 있다고 가정합니다.
또한 ... 모든 사람이 전체 시스템 / 운영 체제 수준 가상화에 액세스 할 수있는 것은 아니기 때문에이 응용 프로그램을 자동으로 chroot하는 것이 더 합리적입니다. 이는 이론적으로 CentOS 사용자 기반에 보안을 제공하는 데 도움이됩니다.
운영 체제 공급자는 모든 시스템이 동일한 시스템을 실행한다고 가정 할 필요가 없습니다. 이런 식으로, 그들은 추가 보안 계층을 제공 할 수 있습니다 ...
많은 응용 프로그램이 이것을 사용 하는 이유 와 OS가 보안 기능으로 사용되며 작동하기 때문에 OS가 기본적으로 분명히하는 이유가 있습니다. 앞서 언급 한 바와 같이 신중한 준비를 통해 잠재적 공격자가 대부분 극복해야 할 또 다른 장애물이되어 치트 교도소에 대한 피해를 제한합니다.