bastion 인스턴스에 VPN 설치하여 보안 강화하기
졸업 작품팀에서 나는 백엔드 파트 및 인프라 구축을 담당하게 되었다. Terraform과 AWS를 사용하여 내가 구축한 인프라 환경의 보안에 신경쓰고자 VPN을 활용하기로 하였다.
서론
작년 SW마에스트로 활동을 통해 나는 Terraform을 활용하여 인프라 구축을 할 수 있게 되었다. 이를 졸업 작품에서 활용하고자 하였다.
Cloud Architecture
개발 환경
- bastion, was: AWS EC2 Ubuntu t2.micro
- local: mac 14.2.1
- terminal: Warp
본론
1. bastion 서버 - 접속
ssh -i xxx.pem ubuntu@xxx.xxx.xxx.xxx
SSH 방식으로 bastion 인스턴스에 원격 접속 하도록 한다.
2. bastion 서버 - Docker 설치
# 1. 우분투 시스템 패키지 업데이트
sudo apt-get update
# 2. 관련 패키지 설치
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# 3. Docker 공식 GPG키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 4. Docker 공식 apt 저장소 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 5. 우분투 시스템 패키지 업데이트
sudo apt-get update
# 6. Docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 7. Docker 설치 확인
sudo systemctl status docker
아래와 같은 화면이 출력된다면 정상적으로 설치가 완료된 것이다.
3. bastion 서버 - openvpn 설정
sudo docker run \
--name openvpn \
--volume openvpn-data:/etc/openvpn \
--detach=true \
-p 1194:1194/udp \
--cap-add=NET_ADMIN \
-e "OVPN_SERVER_CN=${public_ip}" \
-e "OVPN_NETWORK=172.22.16.0 255.255.240.0" \
-e "OVPN_ROUTES=172.22.16.0 255.255.240.0, 10.42.0.0 255.255.0.0" \
-e "OVPN_NAT=true" \
-e "OVPN_DNS_SERVERS=${private_ip(xxx.xxx.xxx.2)}" \
-e "USE_CLIENT_CERTIFICATE=true" \
wheelybird/openvpn-ldap-otp:v1.8
4. bastion 서버에서 .ovpn 파일 추출
sudo docker exec -it openvpn show-client-config
해당 명령어를 통해 출력된 내용을 그대로 복사하여 xxx.ovpn
파일로 생성하면 된다. 필자는 Warp
라는 어플리케이션을 터미널로 사용하고 있어 그대로 복사하여 내 로컬 환경에 저장할 수 있었다.
5. VPN 파일 실행
로컬 환경에서 ovpn 파일을 실행한다. 필자는 Tunnelblick
이라는 어플리케이션을 통해 VPN을 실행하였다.
6. was 서버 접근
ssh -i xxx.pem ubuntu@xxx.xxx.xxx.xxx
SSH 방식으로 was 인스턴스에 원격 접속할 수 있다. 여기서 유의할 점은 xxx.xxx.xxx.xxx
가 private_ip라는 점이다. 즉 public ip를 할당받지 않더라도 vpn을 실행하면 private ip를 통해 was 서버에 접근할 수 있다!
결론
이점
bastion 인스턴스에 vpn을 설치하여 was에 접근할 수 있게 함으로써 얻을 수 있는 가장 큰 이점은 보안이다. bastion
인스턴스가 외부에서 내부 네트워크로의 단일 진입점 역할을 함으로써 보안 감사 및 모니터링을 간소화할 수 있으며, 이를 통해 보안 위험을 최소화할 수 있다.
그 외에도 승인된 사용자만이 was에 접근할 수 있기 때문에 접근 제어에 있어 이점을 가질 수 있다.
TMI
지난 번 다른 프로젝트의 환경 구축을 위해 NCP를 사용하여 VPN을 설치하였으나 동작하지 않았다. 이는 internet gateway의 유무로 판단되며 이에 대한 자세한 이유는 추후 포스팅 해보겠다.