[server] 도커 컨테이너에서 연결 또는 실행을 방지하는 방법

사전 빌드 된 도커 컨테이너 사용자가 해당 컨테이너의 실행중인 인스턴스 내에서 쉘에 액세스 할 수 없도록하려면 어떻게해야합니까? 나는이 시나리오와 관련된 모든 게시물을 봤으며 읽고 해결책을 찾지 못했습니다. 컨테이너의 주어진 리소스에 대한 액세스를 막으려 고합니다.이 질문을 위해 구성 파일에 일련 번호를 말하겠습니다. 나는에 건물입니다 자바 : 7 를 기반으로 이미지 우분투 이미지를.

솔루션을 테스트하려면 다음을 수행하십시오.

  1. 도커 컨테이너 만들기 및 실행

  2. 컨테이너 수출

    도커 내보내기 [컨테이너 이름] | gzip -c> mycontainer.tar.gz

  3. 외부 시스템에서 컨테이너 가져 오기

    gzip -dc mycontainer.tar.gz | 도커 가져 오기-[컨테이너 이름]

  4. 컨테이너를 실행

  5. 다음 방법 중 하나를 사용하여 실행중인 컨테이너에 셸합니다.

    docker exec -it [컨테이너 이름] bash

    도커 첨부 [컨테이너 이름]

    docker run -ti –entrypoint = / bin / bash [컨테이너 이름]

[컨테이너 이름]은 컨테이너의 이름입니다

bash, dash 및 sh는 모두 유효한 쉘입니다.



답변

을 위해 bash특별히 명령, 나는의 .bashrc 파일에 명령을 추가 exit, 사용자가 로그인 결국 쫓겨하지만, 사용자가 여전히 사용할 수 있도록 파일의 끝에 sh명령을 사용합니다.


답변

Jose의 답변에 덧붙여서, 또 다른 해결책은 …

docker exec :id -it /bin/rm -R /bin/*

그것은 리눅스에서 sh와 bin 유용한 명령을 제거합니다. 그 시점에서 컨테이너에 들어가기 위해 무엇을 할 것인지 잘 모르겠습니다. 메모리 디버거를 사용하여 실행중인 컨테이너의 환경 변수를 얻을 수 있다는 것을 알고 있지만 훨씬 성가 시게합니다. 링 0에서 해당 메모리를 잠그고 제거 할 수있는 방법이 있는지 궁금합니다. 호스트에 대한 ssh 액세스.

누군가가 그것을 깨는 방법을 알고 있다면, 나는 방법을 알고 싶어합니다.

편집하다

민감한 정보를 보호하는 경우 도커 비밀을 사용하려고합니다. 체크 아웃 :

https://docs.docker.com/engine/swarm/secrets/


답변

보호하려는 정보가 일련 번호 인 경우 해당 정보를 암호화하는 것이 정보를 보호하는 유일한 방법입니다. 비밀 데이터를 암호화하는 다양한 방법을 선택할 수 있으며 강력한 키를 사용하고 있는지 확인하십시오. 또한 응용 프로그램에서 서버로 비밀 데이터를 보내서 유효성을 확인하고 서버의 응답을 기반으로 앱이 계속 작동하거나 메시지를 중지 및 표시 할 수 있습니다.

짧게 말하면 항상 응용 프로그램을 완전하고 철저하게 해부 할 수 있다고 가정하십시오. 항상 강력한 키를 사용하여 모든 비밀 및 중요한 데이터를 암호화하므로 키를 해독하는 데 시간이 오래 걸립니다 (암호화 알고리즘이 공개적으로 사용 가능하거나 잘 알려져 있다고 가정).

액세스 방법을 찾더라도 액세스 자체를 방지하는 것은 잘못된 보안 감각을 제공합니다.


답변