샌드박스 환경으로서의 LXC 컨테이너

샌드박스 환경으로서의 LXC 컨테이너

현재 안전한 샌드박스 환경에서 신뢰할 수 없는 프로그램(학생 과제)을 평가하는 프로젝트를 시작하고 있습니다. 주요 아이디어는 LXC 컨테이너를 관리하기 위해 lxc-utils 주변에 GlassFish 및 Java 래퍼용 웹 앱을 만드는 것입니다. 여기에는 대기 중인 프로그램의 대기열이 있으며 Java 래퍼는 고정된 수(풀)의 LXC 컨테이너를 유지하여 각 프로그램에 하나의(사용되지 않은) 컨테이너를 할당합니다.

호스트 시스템을 보호하려면 각 컨테이너를 SELinux로 보호해야 합니다.

내 질문은 다음과 같습니다. 샌드박스 환경을 위한 메커니즘을 만드는 것이 좋은 생각입니까, 아니면 이 문제에 더 적합한 솔루션이 있습니까? 학생의 창의성에 대해 가볍고 안전해야 합니다.

답변1

가장 안전한 가상화 솔루션이 아니기 때문에 LXC를 선택하는 이유를 밝히지 않았습니다. 저는 KVM/XEN과 LXC를 많이 사용하고 있으며 보안에 관해서는 절대로 Linux 컨테이너를 사용하지 않습니다(LXC/OpenVZ/VServer 여부에 관계 없음). KVM/XEN을 사용하면 더 쉽고 안정적입니다.

성능이나 하드웨어 요구 사항에 관한 것이라면 괜찮습니다. LXC로 시도해 볼 수 있지만 따라야 할 몇 가지 규칙이 있습니다.

  • libvirt는 SELinux를 사용할 때 컨테이너를 엄격하게 제한합니다(LXC_driver 덕분에). RHEL/Centos/Fedora 사례인지는 확실하지 않습니다(저는 Ubuntu/Debian을 그렇게 많이 사용하지 않습니다).https://www.redhat.com/archives/libvir-list/2012-January/msg01006.html- 따라서 SELinux를 사용하는 것은 좋은 생각입니다(제 생각에는 그런 상황에서는 "반드시 있어야" 합니다).
  • 게스트가 호스트를 정지시키거나 다른 컨테이너에 영향을 주지 않도록 엄격한 cgroups 규칙을 설정하십시오.
  • 저는 LVM 기반 컨테이너를 선호합니다. 항상 "보안" 계층이 하나 더 추가되는 것입니다.
  • 네트워크 솔루션과 아키텍처에 대해 생각해 보세요. 해당 컨테이너는 서로 통신해야 합니까?

독서부터 시작하세요이것- 꽤 오래됐지만 그래도 - 거기에는 많은 지식이 있습니다. 그리고 또한 - 만나사용자 네임스페이스

그런 다음 다시 생각해 보십시오. 실제로 LXC 보안을 사용할 시간이 그렇게 많습니까? KVM은 훨씬 더 간단합니다...

답변2

신뢰할 수 없는 프로그램을 실행하려면 Linux 네임스페이스가 여전히 최상의 솔루션입니다. KVM보다 설정이 더 쉽고 리소스도 덜 필요합니다. LXC를 사용해 볼 수 있지만 LXC는 전체 Linux 배포 이미지를 실행하기 위한 보다 일반적인 샌드박스로 구축되었습니다. 두 가지 다른 Linux 네임스페이스 샌드박스가 떠오릅니다.

  • 구글 크롬현재 Google Chrome/Chromium과 함께 배포되는 샌드박스
  • 방화 감옥, Mozilla Firerfox 및 기타 GUI 프로그램을 실행하기 위해 구축된 보안 샌드박스입니다.

관련 정보