하나의 우분투 서버는 3 개의 앱을 모두 별도 도메인에 호스팅합니다.
각 앱에는 자체 개발자가 있습니다.
앱 개발자는 Linux “sftp”그룹에 속합니다.
chroot
각 앱 개발자의 비밀번호 sftp 액세스를 허용합니다.
/home/app1/prod
/home/app2/prod
/home/app3/prod
sshd_config에서
Match Group sftp
PasswordAuthentication yes
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
우리의 관심사는 한 앱의 프로그래밍 취약점으로 인해 다른 2 개의 앱에서 문제가 발생하는 것입니다.
chroot 대신 lxc 컨테이너를 사용해야합니까? 왜? lxc 컨테이너 변경은 앱 개발자에게 투명합니까?
답변
LXC (Linux Containers)는 단일 제어 호스트에서 여러 개의 격리 된 서버 설치 (컨테이너)를 실행하기위한 운영 체제 수준 가상화 방법입니다. LXC는 가상 머신을 제공하지 않고 자체 프로세스 및 네트워크 공간이있는 가상 환경을 제공합니다. chroot와 비슷하지만 훨씬 더 많은 격리를 제공합니다.
Linux 컨테이너에는 몇 가지 기능 / 장점이 있습니다.
장점 :
chroot (chroot jail)에 비해 더 나은 격리. 오버 헤드가 낮습니다. LXC는 가상 시스템 (VMWare / VirtualBox / KVM)에 게스트 OS를 설치하는 오버 헤드없이 RAM 및 하드 드라이브 공간에서 최소한의 리소스를 사용합니다.
응용 프로그램 및 서비스 (서버)는 기본 속도로 실행됩니다.
libvirt에는 Linux 컨테이너가 지원됩니다.
Linux 컨테이너는 btrfs와 잘 작동합니다.
그러나 단점도 있습니다.
Linux 컨테이너는 Linux 커널에서 Linux 프로세스를 실행합니다. 이것은 Linux (Ubuntu 호스트에서 Fedora 컨테이너)를 실행할 수 있지만 다른 운영 체제 (BSD / OSX / Windows 아님)는 실행할 수 없음을 의미합니다.
컨테이너를 구성하거나 관리하기위한 GUI (그래픽) 인터페이스가 없습니다.
컨테이너를 설치하고 구성하는 방법에 대한 문서가 부족합니다. 컨테이너를 구성하려면 적절한 기술 지식과 기술 (그리고 많은 인내심)이 필요합니다.