[TryHackMe] Docker+Kali에서 OpenVPN(+α에 설명된 해당 매개변수의 값

개요


CTF에 관심을 가지고 TryHackMe와 HackTheBox 계정을 만든 후 OpenVPN에 대한 튜토리얼이 있어 VM을 추천했지만 드문 기회라서 Docker로 해보고 싶어요.
걸려 넘어진 곳이 많아서 비망록으로도 기록되어 있다.

목표


기계 규격에 불안해하는 사람과 가상 기기의 설정이 번거로워지다

본론


Docker는 용기의 제작과 폐기를 빈번하게 해야 하는 자세이기 때문에 Dockerfile과 docker-compose.관리 준비를 위해yml을 만듭니다.

최소 구성


CTF 전용 Kali-linux를 사용합니다.
이번에 사용한 인상은 booyaabes/kali-linux-full입니다.
Dockerfile
FROM booyaabes/kali-linux-full

docker-compose.yml
version: '3'
services:
  kali-linux:
    container_name: kali
    build:
     context: .
     dockerfile: Dockerfile
    volumes:
      - ./test:/test
    stdin_open: true
    tty: true


이 두 파일을 같은 디렉터리에 놓고test 디렉터리를 만들고 용기에 파일 공유 공간을 만듭니다.
TryHackMe의 OpenVPN/Task1 페이지에서 My 프로필을 가져와 방금 만든test에 넣습니다.

넘어진 곳


먼저 이렇게 컨테이너를 가동하고 컨테이너 안으로 들어가 OpenVPN을 사용해 보세요.
$ docker-compose up --build -d
$ docker exec -it コンテナID bash
$ cd test
$ sudo openvpn testにいれたファイル名

#エラーメッセージ
ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)

No such file or directory이기 때문에 한번 보면 dev 이후에는 존재하지 않습니다.

솔루션 1


잘못된 정보를 조사한 결과 다음과 같은 알기 쉬운 설명문이 발견되었다.
일반 tun/TAP 장치 드라이버 정보
상술한 지시에 따라 아까 존재하지 않았던 아이들을 만들다.
$ mkdir /dev/net (まだ /dev/net が存在しない場合)
$ mknod /dev/net/tun c 10 200
하지만 이번에permission에 대한 오류가 발생했습니다.
ERROR: Cannot ioctl TUNSETIFF tun: Operation not permitted (errno=1)

솔루션 2


가장 간단한 방법은 Docker-compose다.yml에서privileged를 가지고 특권을 주면 성공하지만 안전에 문제가 큰 것 같습니다.
권한 모드에서 Docker 컨테이너를 실행하는 것이 위험한 이유
해외 니키들은 특권을 휘두르지 않을 수 있을지 모색하며 다음과 같은 질문을 던졌다.
Calling OpenConnect VPN client in docker container shows TUNSETIFF failed: Operation not permitted
개괄적으로 특권적으로도 가능--cap-add SYS_NET_ADMIN도 괜찮아요.
모든 권한을 주는 게 아니라 권한을 한정하는 느낌인 것 같아요.
따라서yml은 다음과 같이 변경됩니다.
version: '3'
services:
  kali-linux:
    container_name: kali
    build:
     context: .
     dockerfile: Dockerfile
    volumes:
      - ./test:/test
    stdin_open: true
    tty: true
    cap_add:
      - NET_ADMIN
#SYS_NET_ADMINだとそんなんないよってエラーが出た
여러 번 mkdir도 귀찮아서 Dockerfile도 변경되었습니다.
Dockerfile
FROM booyaabes/kali-linux-full

RUN mkdir -p /dev/net && \
    mknod /dev/net/tun c 10 200

Dockerfile의 명령은 기본적으로 한 번만 호출됩니다.용기의 제작 폐기 빈도도 아래에 소개된 책에 기재되어 있다.인터넷에서만 어느 정도의 지식을 수집했지만 이런 자주 사용하는 기술에 관한 책은 한 권 가져가는 것이 좋다.
(집에서 시작하는 Docker 시작)[https://books.rakuten.co.jp/rb/15828738/]

실행 결과


sudo에서 용기에서openvpn을 실행할 때 연결이 성공했습니다.

추가 정보 (Parrot OS)


Hach The Box는 Kali와 함께 Parrot가 되는 것을 추천합니다.
처음 듣는 얘기라서 조사해 봤는데 칼리처럼 백내화 테스트에 전문적으로 쓰이는 이탈리아 출신 리눅스가 나온 것 같아요.
일본 보도가 매우 적다는 단점이 있지만 칼리보다 가볍고 칼리 VS Parrot 같은 보도와 애니메이션도 대량으로 등장하는데 그 중의 평론과 보도에서 Parrot가 칼리를 앞질렀다는 의견도 상당히 많다.
개인적인 취향은 말할 것도 없고 어느 것이 더 훌륭하다고 일률적으로 말하는 것은 아니다. 그렇게 큰 힘이 있지만 일본 시장에서 점유율이 낮다는 것은 수수께끼다. 그래서 며칠 전에 구입한 쓰레기 ThinkPad에 실제로 Parrot를 넣었다. 지식이 깊어지면 나도 그것을 보도하고 싶다.
(이 기사의 내용은 Parrot에서 Docker를 시작하여 이동한 것입니다.)
이것에 관해서 자세한 분이 계시다면 트위터 등을 팔로우하시고 여러가지를 알려주세요.

좋은 웹페이지 즐겨찾기