나는 권한이 없는 lxc
컨테이너(루트로 실행되지만 사용자 네임스페이스를 사용함)를 사용하고 다음 구성을 사용하여 의류를 활용했습니다.
lxc.apparmor.profile = generated
lxc.apparmor.allow_nesting = 1
컨테이너가 실행되면 의류 프로필이 실제로 생성되어 시스템 로그에 로드되는 것을 볼 수 있습니다. 예를 들어:
Jan 15 04:00:16 localhost kernel: [1315978.637961] audit: type=1400 audit(1673776816.182:395): apparmor="STATUS" operation="profile_remove" profile="/usr/bin/lxc-start" name="lxc-apache_</var/lib/lxc>" pid=2951275 comm="apparmor_parser"
Jan 15 04:00:34 localhost kernel: [1315996.830889] audit: type=1400 audit(1673776834.374:396): apparmor="STATUS" operation="profile_load" profile="/usr/bin/lxc-start" name="lxc-apache_</var/lib/lxc>" pid=2953280 comm="apparmor_parser"
ls -la '/var/lib/lxc/apache/apparmor/lxc-apache_<-var-lib-lxc>'
-rw------- 1 root root 38155 Jan 15 04:00 'lxc-apache_<-var-lib-lxc>'
그러나 실행하면 aa-status
다음과 같은 결과가 나타납니다.
/usr/bin/busybox (2954962) lxc-apache_</var/lib/lxc>//&:lxc-apache_<-var-lib-lxc>:unconfined
/usr/sbin/sshd (2956272) lxc-apache_</var/lib/lxc>//&:lxc-apache_<-var-lib-lxc>:unconfined
/usr/sbin/httpd (2956340) lxc-apache_</var/lib/lxc>//&:lxc-apache_<-var-lib-lxc>:unconfined
/usr/sbin/httpd (2956353) lxc-apache_</var/lib/lxc>//&:lxc-apache_<-var-lib-lxc>:unconfined
/usr/sbin/httpd (2956363) lxc-apache_</var/lib/lxc>//&:lxc-apache_<-var-lib-lxc>:unconfined
/usr/bin/busybox (2956473) lxc-apache_</var/lib/lxc>//&:lxc-apache_<-var-lib-lxc>:unconfined
제가 올바르게 이해했다면 두 개의 의류 프로파일 이 적용되고 있다고 나와요 lxc-apache_</var/lib/lxc>//&
.lxc-apache_<-var-lib-lxc>:unconfined
unconfined
모드에서 동일한 구성 파일을 두 번째로 로드하라는 메시지가 표시되는 것이 무엇을 의미하는지 잘 모르겠습니다. 이는 nesting
및/또는 을 사용한 결과입니까 userns
?
컨테이너는 권한 없는 방식으로 실행되므로 컨테이너의 보안에는 관심이 없지만 이 상황에서 AppArmor가 어떻게 작동하는지에는 관심이 있습니다.