Docker를 실험하면서 더 나은 보안을 위해 컨테이너에서 브라우저를 실행할 수 있다는 것을 깨달았습니다. 깔끔하게 시작하게 됐어요도커 페도라, 여기서 패키지를 설치했습니다 openssh-daemon
. 거기에서 새 이미지를 만들고 firefox
.
결국 다음 명령줄을 사용하여 호스트에서 그래픽 Firefox를 시작할 수 있었습니다.
ssh -p2222 localhost -X firefox
지금까지는 괜찮았지만 여기서는 매우 관련된 두 가지 이상한 일이 일어나고 있습니다.
내가 내 것부터 시작하면진짜그런 다음 컨테이너에서 시작하면 실제 컴퓨터와 동일한 구성으로 두 번째 창이 나타납니다.
정반대입니다. 즉, 컨테이너에서 Firefox를 시작한 다음 실제 시스템에서 다른 Firefox를 시작하면 컨테이너의 두 번째 창이 나타납니다.
나는 아무리 말해도 놀랐다. 컨테이너는 프로세스를 완전히 격리해야 하지 않나요?
편집하다: 찾은 것 같아요관련 질문. 이 --no-remote
옵션으로 문제가 해결되었습니다. 나는 아직도 어떻게 이런 일이 일어났는지 이해하지 못한다. 두 인스턴스 사이에 다른 연결이 보이지 않기 때문에 이것이 XWindow 프로토콜과 관련이 있다고 생각합니다.
답변1
X에서 실행되는 모든 프로그램은 X에서 실행되는 다른 프로그램과 격리되지 않습니다.
X11 프로토콜을 사용하여 X 서버에서 실행되는 프로그램은 열려 있는 다른 창을 확인할 수 있습니다.
X11에는 몇 가지 다른 보안 문제가 있습니다. sshd를 구성할 때 X를 통한 액세스를 끄고 절대로 켜지 말라는 권장 사항만 보았습니다. Wayland는 이 점에서 개선되어야 합니다.
docker는 프로세스 격리에 관한 것이지만 보안 이외의 이유에 관한 것입니다. 기본 속도, 우수한 격리 및 컨테이너에서 실행 중인 작업에 대한 제어 기능을 얻을 수 있지만 적절한 샌드박싱(또는 Docker 컨테이너 내에서 SELinux와 같은 것을 실행)과 달리 프로세스가 100% 포함된다는 보장은 없습니다.
docker가 패배했다고 말하는 것은 문을 차는 것과 비슷합니다.