도쿠마루 책의 환경 구축을 편하게 하는 툴을 Ansible와 쉘로 만들어 보았다

체계적으로 배우는 안전한 웹 애플리케이션을 만드는 방법 제2판(통칭 도쿠마루 책) 은 웹 애플리케이션의 보안 코딩을 체계적으로 정리한 바이블 책입니다. 실제로 취약성을 체험할 수 있는 풍부한 연습도 있고, 실제로 체험하면서 배울 수 있는 점도 훌륭한 서적입니다. 다만, 연습의 환경 구축이 번잡한 작업이며, 수고가 걸립니다. 또한 FireFox에 추가 기능을 설치하여 사용하기 때문에 가능한 한 연습 전용 환경을 구축하고 싶습니다. 본 기사에서는 RedHat이 개발하고 있는 환경 구축 자동화를 실현하는 OSS의 Ansible과 쉘을 이용하여 적당한 VM상에 환경 구축을 할 수 있는 툴을 개발했으므로 소개하고 싶습니다.

자동화할 수 있는 프로세스가 얼마나 있는지 확인



도쿠마루 책의 연습 환경의 구축 방법은, 서적의 제2장에서 해설되어 있습니다. 이 구축 방법 중 모두가 자동화 가능이라고 하는 것은 아닙니다. 자동화 여부를 아래 표에 정리했습니다.


행정
자동화 여부


필요한 소스 VM 파일 다운로드
1

Firefox 설치
2

VirtualBox 설치


호스트 네트워크 관리자 설정 (VirtualBox)


VM 가져 오기 (VirtualBox) 및 설정


hosts 파일에 FQDN 등록


OWASP ZAP 설치


OWASP ZAP 초기 설정
불가

FoxyProxy-Standard 설치
불가


이번에는 Ubuntu가 설치되어 있는 VM에 환경 구축을 실시하는 것을 상정해 툴을 구축했기 때문에, Firefox의 인스톨은 툴에서는 실시하지 않습니다. 따라서 7할 5분의 행정은 자동화 가능하다는 것을 위의 표에서 알 수 있습니다.

환경 구축 지원 도구 구현



툴의 구현은, 실행부는 쉘로 구현해, 내부에서 Ansible가 실행되도록(듯이) 하고 있습니다. 소스는 필자의 GitLab에 있습니다. 자유롭게 다운로드하여 사용하실 수 있습니다 (MIT 라이센스). 구축 매뉴얼 도 놓고 있습니다.

build.sh (실행 부)

#!/bin/bash

apt install -y ansible wget
ansible-playbook -i inventory playbook.yml


playbook.yml (2021/5/19 개정)

- hosts: localhost
  environment:
    zap_ver: 2.10.0
  become: yes
  tasks:
   - name: Download sources
     shell: cat auth.txt | xargs -n 2 sh -c 'wget -P /home/wasbook/ --http-user=$0 --http-password=$1 https://wasbook.org/download/wasbook.zip' && \
            unzip -od /home/wasbook/wasbook /home/wasbook/wasbook.zip warn=False && \
            chown -R wasbook /home/wasbook/wasbook warn=False && \
            chgrp -R wasbook /home/wasbook/wasbook warn=False

   - name: Download VM image file
     shell: cat auth.txt | xargs -n 2 sh -c 'wget -P /home/wasbook/ --http-user=$0 --http-password=$1 https://wasbook.org/download/wasbook.ova' && \
            chown wasbook /home/wasbook/wasbook.ova warn=False && \
            chgrp wasbook /home/wasbook/wasbook.ova warn=False

   - name: Install Open JDK 11
     apt:
        name: openjdk-11-jdk

   - name: Install OWASP ZAP
     shell: wget https://download.opensuse.org/repositories/home:/cabelo/xUbuntu_18.04/amd64/owasp-zap_{{ ansible_env.zap_ver }}_amd64.deb -P /home/wasbook/ warn=False && \
            dpkg -i /home/wasbook/owasp-zap_{{ ansible_env.zap_ver }}_amd64.deb

   - name: Register hosts
     shell: echo "192.168.56.101 example.jp api.example.net trap.example.com" >> /etc/hosts

   - name: Add oracle vbox 2016 keys
     shell: wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -  warn=False && \
            add-apt-repository "deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian bionic contrib"

   - name: Install Virtual Box
     apt:
       name: virtualbox-6.0
       update_cache: yes

   - name: Change HOME 
     shell: export HOME=/home/wasbook

   - name: Import VM
     shell: vboxmanage import --options keepallmacs /home/wasbook/wasbook.ova && \
            vboxmanage hostonlyif create && \
            vboxmanage modifyvm wasbook --nic1 nat && \
            vboxmanage modifyvm wasbook --nic2 hostonly && \
            vboxmanage modifyvm wasbook --hostonlyadapter2 "vboxnet0"
     become_user: wasbook

   - name: Restore HOME  
     shell: export HOME=/root

인벤토리
[localhost]
127.0.0.1 ansible_connection=local

인벤토리 파일을 수정하여 원격으로 VM에 환경을 구축할 수도 있습니다.

VM 상에 구축할 때의 유의 사항



VM상에서 구축할 때 OS마다 추천 하이퍼바이저를 기재해 둡니다.

Mac


  • VMware Fusion (상용 소프트웨어)
  • (2020/8/24 추가) 차기 버전의 Fusion 12부터 Fusion Player라는 개인 이용은 무료로 이용할 수 있는 버전이 추가됩니다. ( 참고 )

  • Windows


  • VMware Workstation Player (개인 이용은 무료)

  • Mac 용 하이퍼 바이저 (가상화 소프트웨어)를 비교해 보았습니다.에서 다루었지만 Mac 용 하이퍼 바이저의 Parallels Desktop의 일반 버전에서는 Nested Virtualization을 지원하지 않으므로이 도구는 제대로 작동하지 않습니다.

    Oracle VirtualBox는 동작이 무겁기 때문에 연습 실행 환경 구축 용도에는 적합하지 않다고 생각합니다. (어디까지나 필자의 의견)

    요약



    도쿠마루 책의 연습 환경의 구축을 지원하는 툴을 Ansible와 쉘로 구현해 보았습니다. 실제로 Ubuntu의 인스톨 된 VM상에서 실행한 곳, 환경 구축이 원활하게 실행할 수 있었습니다. 이 도구는 MIT 라이센스입니다. 개량안의 제안, Issue의 발행, 풀 리퀘스트는 환영합니다.

    Reference



    Software Design 2018년 12월호
    htps : // / cs. 오 c. 코 m/엔/ゔぃr 츠아아자치온/ゔぃr



    소스 및 VM 파일을 다운로드하려면 책의 자격 증명이 필요합니다. 이번에 구현한 도구도 자격 증명이 필요합니다.

    VM에서 Linux를 사용하는 경우 설치 필요 없음

    좋은 웹페이지 즐겨찾기