Linux LXC 및 FreeBSD 감옥

Linux LXC 및 FreeBSD 감옥

사이에 중요한 차이점이 있습니까?LXC(리눅스 컨테이너)그리고FreeBSD 감옥보안, 안정성, 성능 측면에서요?

언뜻 보면 두 가지 방법이 매우 유사해 보입니다.

답변1

여기에 사용된 멋진 이름이 무엇이든 둘 다 특정 문제에 대한 솔루션입니다. 즉, 기존 Unix보다 더 나은 격리 솔루션입니다.chroot. 운영 체제 수준 가상화, 컨테이너, 영역 및 심지어 "스테로이드를 사용하는 chroot"는 모두 사용자 공간 분리를 정의하는 동일한 개념에 대한 이름 또는 상표명이지만 기능은 다릅니다.

Chroot는 출시되기 불과 ​​몇 달 전인 1982년 3월 18일에 출시되었습니다.4.2BSD, 설치 및 빌드 시스템을 테스트하기 위한 도구이지만 오늘날에도 여전히 결함이 있습니다. chroot의 주요 목표는 단지 ​​제공하는 것입니다.새로운 뿌리그 과정에서 격리되거나 제어되어야 하는 시스템의 다른 측면(네트워크, 프로세스 보기, I/O 처리량)은 발견되지 않습니다. 이것이 첫 번째 컨테이너(사용자 수준 가상화)가 등장하는 곳입니다.

두 기술(FreeBSD Jails 및 LXC)은 사용자 공간 격리를 활용하여 또 다른 보안 계층을 제공합니다. 이 분할은 결정된 프로세스가 동일한 호스트의 동일한 컨테이너에 있는 다른 프로세스하고만 통신하도록 보장하며 네트워크 리소스가 "외부" 통신에 사용되는 경우 모든 통신은 해당 컨테이너가 할당한 인터페이스/채널로 전달됩니다.

특징

FreeBSD 감옥:

  • FreeBSD 4.0부터 기능이 되었기 때문에 안정적인 기술로 간주됩니다.
  • ZFS 파일 시스템을 최대한 활용하며 감옥을 복제하고 생성할 수 있습니다.감옥 템플릿더 많은 감옥을 쉽게 배포하세요. 더ZFS 미친;
  • 잘 기록 된, 그리고끊임없이 진화하는;
  • 계층화된 감옥을 사용하면 감옥 내에 감옥을 만들 수 있습니다(더 깊이 들어가야 합니다!). 더 많은 권한을 얻기 위해 최대 아동 감옥 정의 allow.mount.zfs와 같은 다른 변수를 결합합니다 .children.max
  • 제어 센터(8)감옥의 리소스 제한(메모리, CPU, 디스크...)을 처리합니다.
  • FreeBSD 감옥 처리 Linux사용자 공간;
  • 네트워크 격리 vnet- 각 교도소가 자체 네트워크 스택, 인터페이스, 주소 지정 및 라우팅 테이블을 가질 수 있도록 합니다.
  • nullfs폴더를 실제 서버에 있는 폴더에 연결하는 데 도움이 됩니다.
  • 에자르대규모로 교도소를 배치하고 관리하는 데 도움이 되는 유틸리티
  • 많은 커널 조정 가능 매개변수( sysctl). security.jail.allow.*매개변수는 이 감옥의 루트 사용자의 작업을 제한합니다.
  • 아마도 FreeBSD Jail은 VPS 프로젝트의 일부 기능을 확장할 것입니다.실시간 마이그레이션가까운 미래에.
  • ZFS와 Docker는 약간의 노력을 기울였습니다.완성달리기. 아직은 실험단계입니다.
  • 프리BSD 12감옥 내부의 bhyve와 감옥 내부의 pf를 지원하여 이러한 도구에 대한 추가 격리를 만듭니다.
  • 지난 몇 년 동안 많은 흥미로운 도구가 개발되었습니다. 그 중 일부는 색인화되어 있습니다.이 블로그 게시물.
  • 대안: FreeBSD VPS 프로젝트

Linux 컨테이너(LXC):

  • 새로운 "핵심" 기술이지만 대기업(특히 Canonical)에서 인정합니다.
  • 권한이 없는 컨테이너LXC 1.0부터 컨테이너 내부 보안 측면에서 큰 진전이 이루어졌습니다.
  • 컨테이너 내의 UID 및 GID 매핑
  • IPC, 마운트, PID, 네트워크 및 사용자를 구분하는 데 사용되는 커널 네임스페이스입니다. 이러한 네임스페이스는 다음을 사용하여 분리된 방식으로 처리될 수 있습니다.다양한 네트워크 네임스페이스스토리지와 같은 다른 측면에서 반드시 격리되어 있는 것은 아닙니다.
  • 제어 그룹(cgroup)은 리소스를 관리하고 그룹화하는 데 사용됩니다.CG매니저그것을 실현하는 사람이 되십시오.
  • 컨테이너에 액세스할 수 있는 커널 기능을 더 효과적으로 구현하기 위한 Apparmor/SELinux 프로필 및 커널 기능입니다. Seccomp는 lxc 컨테이너와 함께 사용하여 시스템 호출을 필터링할 수도 있습니다. 기타 보안 측면여기.
  • 실시간 마이그레이션 기능은 개발 중입니다. docker/lxc가 사용자 공간 프로세스 일시 중지, 스냅샷, 마이그레이션 및 통합을 처리해야 하기 때문에 언제 프로덕션 용도로 사용할 준비가 될지 말하기는 정말 어렵습니다.참고문헌 1,참고문헌 2.실시간 마이그레이션직장에서기본 컨테이너를 사용합니다(디바이스 통과 없음, 복잡한 네트워크 서비스 또는 특수 스토리지 구성 없음).
  • API 바인딩은 python3 및 2, lua, Go, Ruby 및 Haskell의 개발을 지원합니다.
  • 중앙화된 "최신 뉴스" 영역. 이는 일부 버그가 수정되었는지 또는 새 기능이 적용되었는지 확인해야 할 때마다 유용합니다.여기.
  • 흥미로운 대안은 다음과 같습니다.긴 xd, 내부적으로 lxc와 함께 작동하지만 REST API, OpenStack 통합 등과 같은 몇 가지 멋진 기능이 있습니다.
  • 또 다른 흥미로운 점은 Ubuntu가 컨테이너의 기본 파일 시스템으로 zfs를 사용하는 것 같다는 것입니다.16.04. 프로젝트의 일관성을 유지하기 위해 lxd는 버전 2.0을 출시했으며 그 중 일부에는 다음 기능이 포함되어 있습니다.zfs 관련.
  • 대안:오픈VZ,루스트어바웃
  • 루스트어바웃. Docker는 네임스페이스, cgroup을 사용하여 "애플리케이션별"/"소프트웨어별" 격리를 생성합니다. 주요 차이점여기. LXC는 여러 프로세스로 컨테이너를 생성하는 반면, Docker는 컨테이너를 최대한 단일 프로세스로 줄여 Docker에서 관리합니다.
  • Docker를 SELinux와 통합하고 컨테이너 내 기능을 줄여 더욱 안전하게 만들기 위한 노력 -Docker 및 SELinux, Dan Walsh
  • Docker, LXD 및 LXC의 차이점은 무엇입니까

Docker는 더 이상 lxc를 사용하지 않습니다. 이제 그들은 다음과 같은 특정 라이브러리를 가지고 있습니다.계급낮은 수준의 커널 네임스페이스 및 cgroups 기능과의 통합을 직접 처리합니다.

두 기술 모두 보안 만병통치약은 아니지만 둘 다 혼합 운영 체제 인프라로 인해 전체 가상화가 필요하지 않은 환경을 격리하는 훌륭한 방법입니다. 보안은 많은 문서를 읽고 OS 수준 virt가 제공하는 이러한 커널 조정 가능 항목, MAC 및 격리를 구현한 후에 이루어집니다.

또한보십시오:

관련 정보