반응형

 

쿠버네티스 환경에서 DVWA를 설치해보도록 하자.

 

다양한 방법이 있지만 helm 차트를 통해서 아주 간단하게 설치하는 것으로 결정!

 

단계별 설치 방법

1. Helm 설치

먼저 Helm을 설치해야 합니다. 아래 명령어를 사용해 Helm을 설치합니다:

2. DVWA Helm 차트 다운로드

DVWA를 설치하기 위한 Helm 차트를 작성하거나 이미 작성된 차트를 사용합니다. 아래는 DVWA의 간단한 Helm 차트 예제입니다.

Helm 차트 생성

helm create dvwa

values.yaml 수정

Helm 차트의 values.yaml 파일을 수정하여 DVWA와 MySQL을 설정합니다:

# values.yaml

mysql:
  image: mysql:5.7
  rootPassword: rootpassword
  database: dvwa
  service:
    port: 3306

dvwa:
  image: vulnerables/web-dvwa
  service:
    port: 80
  environment:
    - name: MYSQL_HOST
      value: mysql
    - name: MYSQL_USER
      value: root
    - name: MYSQL_PASSWORD
      value: rootpassword
    - name: MYSQL_DB
      value: dvwa

3. Helm 차트 배포

이제 Helm 차트를 사용해 DVWA를 쿠버네티스에 배포할 수 있습니다:

helm install my-dvwa ./dvwa

4. DVWA 접속

배포가 완료되면, kubectl get svc 명령어를 사용해 DVWA 서비스의 외부 IP 주소를 확인한 후 웹 브라우저에서 해당 주소로 접속합니다:

kubectl get svc

요약!!

  1. Helm 설치
  2. DVWA를 위한 Helm 차트 작성 및 values.yaml 파일 수정
  3. Helm 차트를 사용해 DVWA 배포
  4. 서비스의 외부 IP 주소 확인 후 접속

 

** 만약, 자동으로 curl을 통해 설치가 되지 않는다면? 수동으로 설치 가능!!

 

Helm 수동 설치 방법

1. Helm 바이너리 다운로드

먼저 Helm 바이너리를 다운로드합니다. 최신 버전은 Helm 공식 웹사이트에서 확인할 수 있습니다. 아래는 Helm 3.11.2 버전을 예시로.

다운로드한 파일을 압축 해제합니다.
tar -zxvf helm-v3.11.2-linux-amd64.tar.gz
 
3. 바이너리 이동
Helm 바이너리를 /usr/local/bin 디렉토리로 이동하여 시스템 전역에서 사용할 수 있도록 설정합니다.
sudo mv linux-amd64/helm /usr/local/bin/helm
 
4. 설치 확인
Helm이 올바르게 설치되었는지 확인합니다.
helm version

DVWA Helm 차트 설치

1. Helm 차트 생성
새로운 Helm 차트를 생성합니다.

helm create dvwa
2. Helm 차트 구성 파일 수정
values.yaml 파일을 수정하여 DVWA와 MySQL의 설정을 정의합니다.
# values.yaml

mysql:
  image: mysql:5.7
  rootPassword: rootpassword
  database: dvwa
  service:
    port: 3306

dvwa:
  image: vulnerables/web-dvwa
  service:
    port: 80
  environment:
    - name: MYSQL_HOST
      value: mysql
    - name: MYSQL_USER
      value: root
    - name: MYSQL_PASSWORD
      value: rootpassword
    - name: MYSQL_DB
      value: dvwa

 

3. Helm 차트 배포

Helm을 사용하여 DVWA를 배포합니다.

helm install my-dvwa ./dvwa
 
4. 서비스 확인
kubectl get svc 명령어를 사용하여 서비스의 외부 IP 주소를 확인합니다.
kubectl get svc

요약

  1. Helm 바이너리를 수동으로 다운로드하고 설치합니다.
  2. DVWA를 위한 Helm 차트를 생성하고 values.yaml 파일을 수정합니다.
  3. Helm 차트를 사용하여 DVWA를 배포합니다.
  4. 쿠버네티스 서비스의 외부 IP 주소를 확인하여 DVWA에 접속합니다.

 

[결과 확인 - 예시]

kubectl get svc

NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
my-dvwa         NodePort    *.*.*.*   <none>        80:30662/TCP   20m
mysql        ClusterIP   *.*.*.*   <none>        3306/TCP       20m

 

여기에서 응용하여 외부에서 접근 가능하도록 nodeport 형태로 바꾸어서 해보도록 하겠다.

 

1. my-dvwa 서비스 타입 변경

1.1 my-dvwa 서비스 타입을 NodePort로 변경

kubectl edit svc dvwa

type: ClusterIP를 type: NodePort로 변경합니다. 변경 후 YAML 파일은 다음과 같을 것입니다:

 

clusterIP -> nodeport로 변경

apiVersion: v1
kind: Service
metadata:
  name: my-dvwa
spec:
  selector:
    app: dvwa
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30080 # NodePort 설정 (기본적으로 30000-32767 범위 내에서 설정)
  type: NodePort

2. 서비스 접속

2.1 노드 IP 확인

kubectl get nodes -o wide

 

[출력 예시]

 
NAME       STATUS   ROLES           AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
node1      Ready    control-plane   24m   v1.19.3   192.168.1.1   <none>        Ubuntu 18.04.5 LTS   4.15.0-128-generic  docker://19.3.12

2.2 NodePort를 통한 접속

웹 브라우저에서 http://<노드 IP>:<NodePort> 형식으로 접속합니다.

예를 들어, 노드 IP가 192.168.1.1이고 NodePort가 30080이라면, 다음과 같이 접속합니다:

http://192.168.1.1:30080

요약

  1. my-dvwa 서비스 타입을 ClusterIP에서 NodePort로 변경합니다.
  2. 쿠버네티스 노드의 IP 주소를 확인합니다.
  3. 노드 IP와 NodePort를 사용하여 웹 브라우저에서 DVWA에 접속합니다.

 

** 여기서 노드의 IP는 어떻게 아는지 궁금하다?!

1. 노드 IP 주소 확인

다음 명령어를 사용하여 노드의 IP 주소를 확인합니다:

kubectl get nodes -o wide
 

이 명령어는 각 노드의 상태와 함께 IP 주소를 표시합니다.

출력 예시:

예를 들어, node1의 내부 IP 주소는 192.168.1.1입니다.

 
NAME       STATUS   ROLES           AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
node1      Ready    control-plane   24m   v1.19.3   192.168.1.1    <none>        Ubuntu 18.04.5 LTS   4.15.0-128-generic  docker://19.3.12
node2      Ready    <none>          24m   v1.19.3   192.168.1.2    <none>        Ubuntu 18.04.5 LTS   4.15.0-128-generic  docker://19.3.12

2. NodePort를 통한 접속

웹 브라우저에서 노드의 IP 주소와 NodePort를 사용하여 DVWA 애플리케이션에 접속합니다. 예를 들어, 노드 IP가 192.168.1.1이고 NodePort가 30080이라면 다음과 같이 접속합니다:

http://192.168.1.1:30080

이렇게 하면 DVWA 웹 애플리케이션에 접근할 수 있습니다.

반응형

+ Recent posts