포너블을 위한 docker 구축하기
티스토리 에러로 글을 못 쓰던 3일간 포너블 환경 구축을 다시 진행했습니다.
기존에
서버를 구축해서 서버에서 직접적으로 vm을 돌리는데에는 문제가 있었습니다.
1. 왜인지 모를 이유로 20.04에서 ssh 사용이 막힘 -> 다시 구축하는데 시간이 오래 걸린다.
2. 서버 컴퓨터에서 vm을 모두 켜놓고 싶은데 램이 부족함.
3개의 vm만 켜둬도 메모리를 거의 100에 가깝게 쓰는 상태였습니다. (16GB 메모리였음에도)
그래서 remote desktop을 사용해서 vm을 켜고 끄고를 반복했는데 그 과정도 불편했습니다.
최근에 docker을 배워야 할 상황에 놓이기도 하고, 저번에 mac에 직접적으로 구축하려다 실패하면서(아키텍쳐 문제였습니다) 좀 알게되었고
docker로 서버를 구축해보자고 결심했습니다.
설계
필요한 vm을 두 개 까지 쓰는건 괜찮으니,
하나는 네트워크 프로젝트를 위해서 빼두고 하나는 우분투로 만들어서 우분투 내에 docker을 구축하고자 했습니다.
아무래도 우분투에서 docker에 익숙하다보니 그랬고, 그렇게 되면 네트워크 구조가 복잡해지는 것일테니
vm으로 사용하는 우분투를 NAT가 아닌 Bridged로 빼어서 직접 포트포워딩하려고 했습니다.
기존에 사용하던 노트북 포맷도 진행하고 chrome과 vm만 남아있도록 했습니다.
docker로 버전별로 구축할 때, vm의 드래그 앤 드롭을 통해 파일을 옮기는게 편리하기도 하고 그래서
-v 옴션으로 vm우분투의 binary라는 폴더와 docker 우분투의 binary폴더를 연결했습니다.
문제점
여러 시행착오를 거쳐, 16.04는 거의 불가능해서 포기했었고
18.04, 20.04, 22.04 세 개의 버전을 완성했었습니다.
그러나 18.04에서 heap 관련 명령어만 입력하면 에러가 뜨길래
하.. 드림핵 하려면 18.04를 포기할 순 없는데 라는 마음에
참고했었던 sangjun님 블로그에 댓글을 남겼었습니다.
sangjun님이 https://github.com/n1net4il/pwn-docker/blob/main/18.04/Dockerfile
n1net4il님의 도커파일을 알려주셔서
보니까 dpkg..? 로 인한 파이썬..? 문제인거 같긴 한데 자세히는 모르겠습니다.
해당 도커파일을 허브에서 내려받고
제가 하려던 대로 수정해서 완성했습니다.
18.04, 16.04는 그렇게 만들게 되었답니다.
완성!
완성본 이미지는 docker hub에 올려두었습니다.
https://github.com/63um3um/pwn-ubuntu
제가 만든 20.04, 22.04는 여기에 있고
docker run 명령어를 할 때
20.04, 22.04는
docker run -it --name [name] -p [포트포워딩]:22 -v "$(pwd)/binary":/root/binary 63um3um/pwn-ubuntu:20.04 usr/bin/zsh
이런 식으로 하면 되고 (세팅 후 ctrl+p, ctrl+q로 빠져나옴)
18.04, 16.04는
docker run -it --name [name] -p [포트포워딩]:22 -v "$(pwd)/binary":/root/binary/ 63um3um/pwn-ubuntu:18.04
이런 식으로 하시면 될 것 같습니다.
run을 하는 폴더 내에 binary라는 폴더가 있어야 마운트가 된답니다.
https://hub.docker.com/repository/docker/63um3um/pwn-ubuntu
ssh 연결 시에는
service ssh start.. 이런걸 사용합니다.
순서
1. 이미지 다운로드
2. 컨테이너 생성(마운트, 포트 연결 등 작업)
3. 컨테이너 내에서 설정할거 설정하고 pwndbg 설치 등 작업(20.04, 22.04)
4. passwd로 root 비밀번호 설정하고 sshd_config에서 루트 접속 허용되었는지 확인
5. ssh 켜기
6. ctrl +p , ctrl+q로 빠져나오기
7. 포트포워딩 하기
8. ssh 연결하기
메모리가 많이 줄었답니다.
..! 완성하니 뿌듯하네요.