Docker를 통한 DVWA 웹 서버 구축하기

맑음·2025년 5월 1일
0
post-thumbnail

Docker란?

Docker는 애플리케이션을 컨테이너(Container) 라는 단위로 격리하여 실행할 수 있게 해주는 오픈소스 플랫폼입니다
이를 통해 개발자는 어떤 환경에서도 동일하게 동작하는 소프트웨어를 만들 수 있습니다

컨테이너(Container)

  • 애플리케이션과 실행 환경(라이브러리, 설정 등)을 함께 패키징한 실행 단위입니다
  • 가볍고 빠르며, VM(가상 머신)보다 자원 소모가 적습니다

이미지(Image)

  • 컨테이너를 실행하기 위한 설정 파일과 실행 파일의 정적 묶음입니다
  • 컨테이너는 이미지를 기반으로 실행됩니다

Dockerfile

  • 이미지를 만들기 위한 명령어 스크립트입니다
  • 어떤 환경에서 어떻게 앱을 실행할지를 정의합니다

Docker의 장점

  • 일관성: Docker 컨테이너는 운영체제, 라이브러리, 설정 파일 등 모든 실행 환경을 패키징합니다
    따라서 개발자 로컬 환경, 테스트 서버, 운영 서버 등 어디서 실행하든 동일하게 동작합니다
  • 빠른 배포 및 확장: Docker 이미지는 버전별로 관리할 수 있어 특정 버전의 컨테이너를 빠르게 배포하거나 문제가 생겼을 때 이전 버전으로 빠르게 롤백할 수 있습니다
  • 자원 효율성: Docker는 기존의 가상 머신(VM)과 달리 호스트 OS 위에서 직접 실행되며 하이퍼바이저가 필요하지 않아 자원 사용량이 적고 실행 속도도 빠릅니다

Docker를 통한 DVWA 웹 서버 구축하기

웹 서버에 대해 공부하기 위해 DVWA 웹 서버를 구축하고자 합니다
Docker를 활용하여 구축할 예정이며 방법은 아래와 같습니다

준비물: Docker Desktop, Terminal
사전 조건: Docker 회원가입 및 로그인 필수!

Window : cmd, powershell (관리자 권한 실행)
Mac : Terminal ( 관리자 권한 막히면 sudo 앞에 sudo 입력)

1. DVWA 이미지 pull

아래의 명령어를 통해 Docker Image에 vulnerables를 생성합니다

$ docker pull vulnerables/web-dvwa

위 사진과 같이 뜨면 성공적으로 pull이 완료된 것입니다
Docker Desktop에서 Images에 들어가면 위와 같이 추가된 것을 볼 수 있습니다
만약 위 그림같이 401 Unauthorized 에러가 나타나면 다음 명령어를 사용하도록 합니다

$ docker login -u <username>
  • -u: --username의 줄임말로, 로그인 시 로그인할 사용자 이름을 지정할 때 사용합니다

위 명령어를 통해 터미널에서 로그인을 합시다
이제 이미지 pull이 완료되었고 이미지를 사용할 준비가 되었습니다!

2. 컨테이너 실행(localhost 80포트에서 웹 서버 실행)

다음으로는 아래의 명령어를 통해 컨테이너를 실행해주도록 합니다

$ docker run -d -p 80:80 vulnerables/web-dvwa
  • -d: detached의 약자로 컨테이너가 백그라운드에서 실행이 됩니다 즉 터미널을 점유하지 않으며 터미널을 계속 사용할 수 있습니다
  • -p 80:80: 이 부분은 포트 매핑을 해주는 것이며 다음과 같습니다
    • 앞의 80: 호스트 포트로 브라우저에서 접속 시 사용할 포트입니다
    • 뒤의 80: 컨테이너 포트로 Docker 컨테이너 내부에서 DVWA가 실행되는 포트입니다

그럼 Docker Desktop에서 위 사진과 같이 왼쪽에 불이 들어오는 것을 확인할 수 있습니다
또한 Containers에 들어가면 저렇게 80:80이 되어있는 것을 볼 수 있습니다
Name은 지정하지 않았기 때문에 랜덤으로 생성될 것입니다

--name <Name>

위 코드를 추가적으로 -p 앞에 넣어주면 Name 지정도 가능합니다

3. localhost:80 접속

다음으로는 브라우저에서 입력창에 localhost:80 혹은 127.0.0.1:80을 입력하고 들어갑니다
접속 시 아래와 같은 화면이 확인 가능할 것입니다

  • localhost는 로컬 디바이스에서 사용되는 도메인 이름이며, 127.0.0.1은 현재 기기의 로컬 IP 주소를 의미합니다

4. Login 및 Create / Reset Database

그럼 아래의 정보로 로그인을 하도록 하면 아래와 같은 사진처럼 나타납니다

Username: admin
Password: password

위 사진이 나타났으면 아래에 Create / Reset Database 버튼을 눌러줍니다

5. Re-login

다시 로그인 창으로 돌아가 위의 정보로 재로그인 하면 아래와 같은 화면이 나타납니다

6. DVWA Security

마지막으로 DVWA Security를 눌러 보안 레벨을 설정해줍시다

Low: 가장 취약한 상태이며 기본적인 악용 기법을 배우거나 학습할 수 있습니다
Medium: 잘못된 보안 관행이 적용된 상태로 사용자는 부분적으로 보안이 적용된 상태에서 발생할 수 있는 취약점을 이해하고 악용 기법을 다듬을 수 있습니다
High: 중간 보안 수준을 확장한 것으로 CTF 대회와 같은 환경에서 나타날 수 있는 더 복잡한 문제와 유사한 문제를 제공합니다
Impossible: 모든 취약점으로부터 안전한 상태이며 보안이 완벽하게 적용된 상태입니다

이제 가상 환경 구축을 완료했습니다!

Docker 작업 끝났을 경우 꼭 해야하는 것!

작업이 끝났을 경우 Containers에 들어가 꼭 Stop을 해주도록 합시다
Start 버튼을 눌러 언제든지 웹 서버로 다시 접속이 가능합니다

마무리

알아두면 도움되는 Docker, 열심히 활용해보도록 합시다!

profile
내일도 맑음

0개의 댓글