진단 실습 가정 및 환경 Docker는 Client - Server 구조를 갖기 때문에 Client가 원격으로 REST API를 통해 Docker를 이용할 수 있습니다. 그러나 관리자의 Container에 대한 접근 제한 미비 등 안전하지 않은 설정(Misconfiguration)으로 인해 악의적인 공격자는 REST API를 이용하여 Container ID 뿐 아니라 원격에서 Container 실행 뿐 아니라 종료, 로그 또한 남길 수 있습니다. 원래는 Attacker 환경, Victim 환경을 따로 구성해야하지만, 본 실습에서는 Victim에서 REST API 서비스 포트를 임의로 지정한 후, 공격자가 이를 찾아냈다는 가정 하에 하나의 Victim 가상환경에서 공격자 입장으로 여러 명령을 실행해보도록 ..
보안/Docker
사전 준비 이전 실습에서 0.0.0.0의 IP주소와 8000포트로 선언해주었다. 다음 주소로 실행하면 이와 같이 연결이 잘 수행되고 있는 것을 확인할 수 있다. 0.0.0.0:8000 이제 index.html이라는 기본 페이지를 수정하고자 한다. 방법은 크게 두 가지로 나눌 수 있다. 직접 Container 안에 접속하여 html 파일을 수정하거나, 호스트와 컨테이너의 파일 시스템과 매핑한 후 호스트에서 작업을 하는 것이다. Container 에 접속하여 파일 수정 직접 Container 안에 접속한 후, 쉘로 접근하여 파일을 직접 수정할 수 있다. TestWS1 컨테이너를 실행하고, 쉘로 작업하기 위한 명령어를 실행한다. docker start TestWS1 docker exec -it TestWS1 ..
Docker란? Go언어로 작성된 리눅스 컨테이너 기반으로하는 오픈소스 가상화 플랫폼이다. 우리에게 익숙한 가상화 플랫폼인 VMware와 VirtualBox는 호스트 OS위에 게스트 OS 전체를 가상화하여 사용하는 방식이다. 이 방식은 여러가지 OS를 가상화할 수 있고 비교적 사용법이 간단하지만 무겁고 느려서 운영환경에선 사용할 수 없다. 이와 달리 도커는 OS가 아닌 프로세스를 격리 하는 방식이다. 리눅스에서는 이 방식을 리눅스 컨테이너라고 하고, 단순히 프로세스를 격리시키기 때문에 가볍고 빠르게 동작한다. CPU나 메모리는 딱 프로세스가 필요한 만큼만 추가로 사용하고 성능적으로도 거의 손실이 없다. 여러 개의 컨테이너들을 동시에 구동해도 서로 영향을 미치지 않고 독립적으로 실행되기 때문에 마치 가벼운..