설치 방식은 1)도커, 2)jar파일, 3)소스기반 3가지가 권장된다. (github 공식 가이드 상)
가장 손쉬운 도커방식으로 해보겠다.
DockerHub 클릭해서 관련 페이지에 들어가주자
2일전에 업데이트되었고, 친절하게 명령어도 나온다.
#1 도커설치
해당 명령어 쓰기 전에 도커를 설치해줘야된다.
필자는 우분투 서버(20.04.2 LTS)를 기반으로 한다.
//리눅스 버전 확인
cat /etc/issue
//도커 설치
sudo apt install docker.io
설치 완료되면 테스트도 해볼겸 docker --help 입력해보자.
하기 내용 처럼 잘나오면 설치된거다.
#웹고트 설치
아까 봐둔 명령어를 써서 설치를 해보자
<명령어 방식>
docker image pull [옵션] 리포지토리명[:태그명]
// sudo 권한으로 웹고트 리포지토리 최신꺼 다운
sudo docker pull webgoat/webgoat:latest
// 설치확인
sudo docker image ls
=> 설치된 도커 이미지 확인
#웹고트 실행
설치 완료되면 실행하자
docker 옵션 일부 정리
포멧
docker run <옵션> <이미지 식별자*> <명령어> <인자>
컨테이너종료 : docker kill
컨테이너삭제 : docker rm
-i, -t 옵션 : 컨테이너 종료하지 않은 상태로, 터미널 입력 계속해서 컨테이너로 전달
-e 옵션 : 컨테이너 환경변수 추가 (다수 추가 시 -e 여러번 사용)
--name 옵션 : 이름 부여 후, 컨테이너ID 대신 이름으로 컨테이너 식별(삭제/종료 등)
-p 옵션 : 컨테이너 간의 포트/배포/바인드 활용
호스트에서 컨테이너가 리스닝하고 있는 포트로 포트포워딩 설정
127.0.0.1:1234:5678 -> 호스트:1234 접속 시, 컨테이너:5678 접속됨
(앞이 호스트 / 뒤가 컨테이너)
위 정보 바탕 커스텀 하겠습니다.
<기존>
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e TZ=Europe/Amsterdam webgoat/webgoat
<커스텀-실행 성공한 명령어>
sudo docker run -it --name goattt -p 0.0.0.0:5000:8080 -p 0.0.0.0:5001:9090 -e TZ=Europe/Amsterdam webgoat/webgoat
이름은 goattt로, 호스트 5000.5001이랑 바인딩, TZ는 타임존이겠쥬..? 걍 귀찮으니 유럽
그럴땐 ip addr 명령어 쓰거나 / apt install net-tools 로 설치하자 그리고 방화벽 열어주자
// sudo iptables --list 로 조회하고 INPUT (라인) 설정해야됨
// 80,443,5000은 기존 있었음
// 정책 변경 후, netfilter 로 저장해야 / 재부팅 시 정책이 유지됨
순서1 (방화벽 등록)
sudo iptables -I INPUT 6 -i ens3 -p tcp --dport 5001 -m state --state NEW,ESTABLISHED -j ACCEPT
순서2 (정책 저장)
netfilter-persistent save
(없을 시 설치 apt install netfilter-persistent 또는 iptables-persistent)
(방화벽 정책 리로드 : netfilter-persistent start)
//net인터페이스 확인
ip addr