답변:
LXC 에 대해 보았 듯이 컨테이너 정보와 (기본 백업 저장소와 함께) 루트 파일 시스템을 / var / lib / lxc에 저장합니다. 컨테이너 생성 템플릿은 캐시 된 배포 정보를 / var / cache / lxc에 저장하는 경향이 있습니다.
따라서 일반적으로 루트 파일 시스템에 대한 액세스는 작성하는 동안 잘못 사용되거나 잘못된 구성 사용자 프로파일이없는 한 관리자에게만 허용됩니다.
그러나 Ubuntu Developers는 이미이 시점에 왔으며 AppArmor의 도움으로 안전한 솔루션을 제공했습니다.
LXC는 컨테이너 내부의 우발적 인 권한 오용으로부터 호스트를 보호하기위한 Apparmor 프로파일과 함께 제공됩니다. 예를 들어 컨테이너는 /proc/sysrq-trigger
대부분의 /sys
파일 에 쓰거나 쓸 수 없습니다 .
usr.bin.lxc-start 프로파일은 lxc-start를 실행하여 입력됩니다. 이 프로파일은 주로 lxc-start가 컨테이너의 루트 파일 시스템 외부에 새로운 파일 시스템을 마운트하지 못하게합니다. 컨테이너의 초기화를 실행하기 전에 LXC는 컨테이너의 프로파일로 전환을 요청합니다. 기본적으로이 프로필은에 정의 된 lxc-container-default 정책입니다 /etc/apparmor.d/lxc/lxc-default
. 이 프로파일은 컨테이너가 많은 위험한 경로에 액세스하고 대부분의 파일 시스템을 마운트하지 못하게합니다.
Apparmor 정책에 의해 거부 된 합법적 인 액세스로 인해 lxc-start가 실패하는 경우 다음을 수행하여 lxc-start 프로파일을 비활성화 할 수 있습니다.
sudo apparmor_parser -R /etc/apparmor.d/usr.bin.lxc-start
sudo ln -s /etc/apparmor.d/usr.bin.lxc-start /etc/apparmor.d/disabled/
이것은 lxc-start를 제한없이 실행하지만 컨테이너 자체를 계속 제한합니다. 컨테이너 제한을 사용하지 않으려면 usr.bin.lxc-start
프로파일 을 비활성화하는 것 외에도 다음을 추가 해야합니다.
lxc.aa_profile = unconfined
컨테이너의 구성 파일에. 사용자 정의 프로파일에서 컨테이너를 실행하려면 아래에서 새 프로파일을 작성할 수 있습니다 /etc/apparmor.d/lxc/
. lxc-start가 해당 프로파일로 전환 될 수 있으려면 이름이 lxc-로 시작해야합니다. 정책을 만든 후 다음을 사용하여로드하십시오.
sudo apparmor_parser -r /etc/apparmor.d/lxc-containers
파일이 파일을 제공하므로 재부팅 후 프로파일이 자동으로로드됩니다 /etc/apparmor.d/lxc-containers
. 마지막으로 컨테이너 CN이이 new를 사용 lxc-CN-profile
하도록하려면 구성 파일에 다음 줄을 추가하십시오.
lxc.aa_profile = lxc-CN-profile
lxc-execute
Apparmor 프로파일에 들어 가지 않지만, 생성되는 컨테이너는 제한됩니다.
dmesg
모든 컨테이너에서 (적어도 기본 구성에서는) 호출 할 수있는 것으로 나타났습니다 . 그것이 유일한 보안 위험은 아닙니다 ....