본문 바로가기
💻Information Security

Segfault Web Server VM 설치 및 실행법

by Prof. Panda 2024. 2. 4.

Segfault Web Server 개요

Segfault Web Server는 'Segfault'에서 한정된 통로를 통해 배포한 가상머신으로 초보 해커들의 교육과 편의를 위해 제공되었습니다. 해당 가상머신에는 웹앱과 DB 등 웹서비스를 하기 위해 필요한 기능들이 기본적으로 구현되어 있는 Docker 이미지가 설치되어 있습니다. 해당 웹서버를 실행시키기 위해서는 Docker를 실행시키는 등, Docker와 관련된 기본 지식을 익힐 필요가 있지만, 그렇지 않더라도 실행시킬 수 있도록 최소한의 조치가 되어있습니다. 실행시키는 과정을 아래에서 단계별로 진행해 보겠습니다.

 

설치 방법

VM 파일을 다운로드한 뒤에 'VmWare' 또는 'Virtual Box'과 같은 가상화 소프트웨어를 통해 실행시켜 주면 됩니다.

 

웹 실행

설치가 완료되었다면 필요한 절차는 다음과 같습니다.

  1. VM 네트워크 설정
    1. '브리지 모드' 또는 'NAT 포트포워딩'
    2. ping 8.8.8.8을 통해 인터넷과 연결되었는지 확인
  2. IP 할당
    1. 'ifconfig'로 이더넷 연결이 되었는지 확인
    2. 'sudo dhclient'로 DHCP에서 IP를 할당
    3. 성공적으로 IP를 받았다면 ifconfig에서 새로운 ip주소가 생긴 것을 확인
  3. 웹앱을 실행시킬 디렉터리로 이동
  4. Docker 이미지 관리 및 실행
    1. 실행 중인 docker 이미지가 있는지 확인 (sudo docker ps -a)
    2. 실행중인 docker 이미지가 있다면 'sudo docker rm -f [컨테이너아이디]'로 삭제
    3. 'sudo ./dockerCMD &'를 통해서 도커 이미지를 "백그라운드"에서 실행
      (dockerCMD는 실행의 편리를 위해 만들어진 셸스크립트)
  5. 이제 정상적으로 실행되었다면 위에서 ifconfig로 확인한 IP와 docker에서 실행시킨 포트의 값의 주소로 브라우저를 통해 접속

dockerCMD의 정체

이후 다시 가상머신을 켜고 웹서버를 켜는 것만 해야 한다면 1번을 건너뛰고 2번부터 진행하면 됩니다. IP가 자동으로 할당되는 경우라면 3번부터입니다. 웹앱을 실행시키는 디렉터리로 이동을 해서 실행해야 웹서버의 디렉토리가 정상적으로 참조됩니다.

 

절차별 참고 이미지 자료

1) VM 네트워크 설정 및 로그인

브릿지 모드로 연결된 모습입니다.

2) ping 8.8.8.8로 인터넷 연결 확인

ping 8.8.8.8을 해보면 인터넷에 연결되지 않은 것을 확인할 수 있습니다.

 

3) ifconfig을 통해서 IP 상태확인

docker0과 lo(loopback) 주소만 있는 것으로 보아 ip주소를 받지 않은 것을 볼 수 있습니다.

 

4) sudo dhclient로 IP 할당 및 확인(ifconfig)

sudo dhclient로 ip를 받고 ifconfig으로 주소를 받은 것을 확인합니다. 새로운 주소가 생긴 것을 확인할 수 있습니다.

 

5) 웹앱 디렉토리로 이동

dockerCMD와 webApp 디렉토리가 있는 디렉토리로 이동했습니다. (/home/student/webDev)

 

6) sudo docker ps -a

이미 올라와 있는 이미지가 있습니다. 삭제하고 새로 시작하여 충돌을 방지하겠습니다.

 

7) sudo docker rm -f

container ID의 일부인 '85'만 치더라도 잘 찾아서 삭제되었으며, 남은 이미지가 없는 것을 확인할 수 있습니다./

 

8) sudo ./dockerCMD &

이렇게 뒤에 &를 넣어서 백그라운드로 실행시키면 웹이 실행된 후에도 CLI를 계속 사용할 수 있습니다.
docker ps를 치면 도커 이미지가 1018번 포트에서 실행중인 것을 볼 수 있습니다.

9) 브라우저로 해당 주소 접근하여 웹서버 작동 여부 확인

ifconfig에서 확인한 ip와 docker ps 로 확인한 포트를 입력하면 서버가 열려있는 것을 확인할 수 있습니다.