Kali Linux 환경에서 Docker를 활용한 DVWA 취약점 진단 환경 구축

취약점 분석이나 모의 해킹 연습을 위해 DVWA(Damn Vulnerable Web Application)를 구축할 때, Apache, PHP, MySQL(LAMP) 환경을 수동으로 구성하는 방식은 설정 오류나 종속성 문제로 인해 상당한 시간을 소모하게 합니다. Docker를 사용하면 이러한 복잡한 과정을 생략하고 단 몇 분 만에 격리된 분석 환경을 마련할 수 있습니다.

1. Docker 환경 준비

Kali Linux에서 Docker가 설치되어 있지 않다면 공식 저장소를 통해 최신 버전을 설치해야 합니다. 기존의 복잡한 수동 설정 대신 패키지 관리자를 통해 엔진을 구성합니다.

# 시스템 업데이트 및 필수 패키지 설치
sudo apt update && sudo apt install -y docker.io

# Docker 서비스 활성화 및 시작
sudo systemctl enable --now docker

# 현재 사용자를 docker 그룹에 추가 (로그아웃 후 재접속 시 sudo 없이 사용 가능)
sudo usermod -aG docker $USER

2. DVWA 이미지 최적화 및 로드

이미지를 내려받기 전, 다운로드 속도를 높이기 위해 미러 사이트를 설정하거나 직접 공식 이미지를 호출할 수 있습니다. citizenstig/dvwa는 가장 널리 사용되는 안정적인 이미지입니다.

# 최신 DVWA 이미지 가져오기
docker pull citizenstig/dvwa

이미지 내부에는 PHP 엔진과 MySQL 데이터베이스가 이미 최적으로 구성되어 있어 별도의 php.ini 수정이나 데이터베이스 권한 설정이 필요하지 않습니다.

3. 컨테이너 실행 및 포트 포워딩

Docker의 핵심은 포트 매핑입니다. 호스트 시스템의 특정 포트를 컨테이너의 80번 포트(HTTP)와 연결하여 웹 브라우저에서 즉시 접근할 수 있도록 설정합니다.

# DVWA 컨테이너 실행
docker run -d \
  --name my-pentest-lab \
  -p 8888:80 \
  --rm \
  citizenstig/dvwa
  • -d: 백그라운드에서 실행(Detached 모드).
  • --name: 컨테이너에 고유한 별칭 부여.
  • -p 8888:80: 호스트의 8888 포트를 컨테이너의 80 포트로 연결.
  • --rm: 컨테이너 종료 시 관련 파일을 자동으로 삭제하여 시스템 청결 유지.

4. 영구 데이터 저장을 위한 볼륨 설정

기본적으로 컨테이너를 삭제하면 내부의 데이터베이스 정보도 사라집니다. 실습 데이터를 보존하고 싶다면 -v 옵션을 사용하여 호스트 디렉터리와 마운트합니다.

# 데이터 보존용 볼륨 생성
docker volume create dvwa_storage

# 볼륨을 적용하여 컨테이너 실행
docker run -d \
  --name dvwa-persistent \
  -p 8888:80 \
  -v dvwa_storage:/var/lib/mysql \
  citizenstig/dvwa

5. 네트워크 격리 및 모의 해킹 시뮬레이션

보안 테스트 시 호스트 네트워크와 분리된 가상 네트워크를 구축하면 실제 침투 테스트와 유사한 환경을 만들 수 있습니다.

# 가상 네트워크 생성
docker network create target-net

# 특정 IP를 할당하여 DVWA 실행
docker run -d \
  --name target-server \
  --network target-net \
  --ip 172.18.0.10 \
  citizenstig/dvwa

6. 트러블슈팅 및 상태 모니터링

실행 중 문제가 발생하거나 내부 로그를 확인해야 할 경우 다음 명령어를 활용합니다.

명령어 용도
docker logs -f my-pentest-lab 실시간 실행 로그 확인 (DB 연결 오류 등 파악)
docker exec -it my-pentest-lab /bin/bash 실행 중인 컨테이너 내부 셸 접속
docker stats 컨테이너의 CPU 및 메모리 점유율 확인

환경 구축이 완료되면 웹 브라우저를 열고 http://localhost:8888에 접속합니다. 기본 자격 증명(admin / password)을 입력하고 하단의 'Create / Reset Database' 버튼을 클릭하면 즉시 취약점 진단 실습을 시작할 수 있습니다.

태그: docker Kali-Linux DVWA Pentesting Containerization

7월 28일 13:12에 게시됨