문맥
내 "추구"에서Raspbian에서 LXC 실행하기강제로 로드를 비활성화할 수 있습니다.보안 컴퓨팅컨테이너가 시작될 때 주석 처리하여 구성합니다 /usr/share/lxc/config/debian.common.conf
.
# Blacklist some syscalls which are not safe in privileged
# containers
# lxc.seccomp = /usr/share/lxc/config/common.seccomp
(atm)으로만비교하다컨테이너가 시작됩니다(그렇지 않으면 오류가 발생합니다)..
어떤 면에서는 컨테이너화/샌드박싱과 밀접하게 관련된 기본 보안 설정을 끄는 것은 LXC의 목적을 무산시키는 것입니다. 보안/안정성 관점에서 나는 LXC 컨테이너를 실행할 때 대부분의 시스템 호출을 블랙리스트에 추가하고 싶습니다(LXC 기본값에 표시됨 /usr/share/lxc/config/common.seccomp
).
2
blacklist
[all]
kexec_load errno 1
open_by_handle_at errno 1
init_module errno 1
finit_module errno 1
delete_module errno 1
질문
"LXC 컨테이너에 대한 seccomp 규칙을 로드"하지 않으면 다음이 발생합니다.
- 중요한* 보안 질문?
- 다른 사람인위적인(애플리케이션 또는 안정성) 문제가 있나요?
*내가 "어머니" 시스템과 그 LXC 컨테이너를 사용하는 유일한 사람이라고 가정합니다. (그렇지 않으면 분명할 것입니다..)
답변1
seccomp 규칙은 컨테이너가 호스트 커널을 수정하는 것을 방지합니다. 그것들이 없으면 컨테이너의 UID 0은 kexec를 사용하여(Raspbian에서도 작동하는지 확실하지 않음) 새 커널을 로드하고(분명히 시작하지는 않음) 모듈 및 기타 시스템 호출을 로드/언로드할 수 있습니다 insmod
. rmmod
사용자 이름을 적절한 공간으로 고려하지 마십시오.
이것이 중요한 보안 문제인지 여부는 귀하에게 달려 있습니다. 이제 컨테이너 내부의 UID 0이 컨테이너 외부의 UID 0이 될 수 있다는 점만 기억하면 됩니다. 즉 루트는 예를 들어 제작된 모듈을 로드하여 컨테이너를 벗어날 수 있습니다.