Docker는 거대한 보안 허점을 설치합니까?

Docker는 거대한 보안 허점을 설치합니까?

내가 Ubuntu 시스템을 가지고 있다고 가정해 보겠습니다 sudo apt install docker.io. 터미널 액세스 권한이 있는 사람은 누구나 루트로 에스컬레이션할 수 있도록 시스템에 큰 보안 허점을 설정했습니까?

어떤 디렉터리든 컨테이너 내부의 볼륨으로 마운트할 수 있고, 컨테이너 내부의 루트 디렉터리로 승격할 수 있고, 마운트된 볼륨에서 원하는 것은 무엇이든 할 수 있을 것 같아서 여쭤봅니다. 이 모든 것이 잘못된 것 같고 뭔가 빠진 것 같은 느낌이 듭니다. 아니면 그렇게 간단하고 Ubuntu 저장소에 비밀번호가 없는 "sudo" 대안이 실제로 있습니까?

답변1

정확히는 아니지만 docker그룹의 모든 사람이 루트로 업그레이드할 수 있도록 허용합니다. 이것은/usr/share/doc/docker.io/README.Debian:

업스트림 문서에 명시된 대로(https://docs.docker.io), Docker는 "docker" 그룹의 루트가 아닌 사용자가 "docker.sock"에 액세스하여 데몬과 통신할 수 있도록 허용합니다. "docker" 그룹에 자신을 추가하려면 다음 명령을 사용하십시오.

adduser YOURUSER docker

업스트림 문서에 명시된 대로 "docker" 그룹(및 Docker API에 액세스하는 다른 방법)은 루트와 동일합니다. 머신에서 루트 권한이 있는 사용자를 신뢰하지 않는다면 Docker에서도 해당 사용자를 신뢰해서는 안 됩니다. Docker 보안에 대한 추가 정보에 관심이 있는 경우 업스트림 문서에서 "Docker 보안" 문서를 읽어보세요.

https://docs.docker.com/engine/security/security/

동등한 루트가 필요 없이 (대부분의) OCI 컨테이너를 실행하는 데 관심이 있다면 다음을 확인하세요.보드맨.

답변2

캔트. Docker를 설치하면 기본적으로 누구도 Docker를 사용할 수 없습니다.

$ docker info  
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/info: dial unix /var/run/docker.sock: connect: permission denied

일반 사용자는 Docker 데몬에 연결할 권한도 없고 컨테이너에서 무언가를 실행하도록 지시할 수도 없습니다.

반면에 이 그룹 docker의 모든 사용자는 실제로 호스트에 대한 루트 권한을 갖습니다. 사용자가 호스트에 대한 루트 권한을 부여하지 않고 Docker 컨테이너를 생성하도록 허용하는 것은 매우 어렵습니다. 컨테이너 구성이 안전하다면 사용자가 Docker 컨테이너에서 애플리케이션을 실행하도록 허용할 수 있습니다. 보안 구성은 호스트의 민감한 파일에 대한 액세스 권한을 부여해서는 안 되며 USER컨테이너 내에서 루트 액세스 권한을 부여하지 말라는 지침을 포함해야 합니다. (루트가 컨테이너를 탈출하는 것을 방지하는 것은 가능하지만 까다롭습니다.)

"sudo 교체"는 설치뿐만 아니라 adduser alice docker입니다 .alice ALL = ( : docker) docker/etc/sudoersdocker.io

답변3

예, 하지만 생각만큼 나쁘지는 않을 것입니다. 다른 답변에서 알 수 있듯이 일부 액세스 제어가 있으므로 임의의 로컬 사용자(액세스 목록에 있는 사용자만)에게 즉시 루트 액세스 권한을 부여하지는 않지만 여전히 큰 총입니다.도커는 샌드박스가 아니다, 적어도 표준 구성은 아닙니다.

가능하다면 읽고 사용하는 것을 고려해야 합니다.뿌리 없는 도커, 또는 적어도 사용사용자 재매핑모델. 이는 샌드박스처럼 작동할 수 있으며 주의 깊게 구성하면 Docker에 액세스할 수 있는 사용자가 호스트에서 루트 권한을 얻는 것을 허용하지 않습니다(적어도 다른 로컬 취약점이 없는 경우).

관련 정보