본문 바로가기
가치관 쌓기/개발 돌아보기

[우아한테크코스Pro] 그럴듯한 서비스 만들기 - 2 [4/9]

by simplify-len 2021. 7. 1.

이번 미션에서 했던 작업

  • 진짜 운영하는 듯한 서비스 구성하기(with Bastion Server)
  • 웹 애플리케이션 앞단에 Reverse Proxy 구축하기
  • nginx에 TLS 설정하기

진짜 운영하는 듯한 서비스 구성하기(with Bastion Server)

Bastion Server 란 무엇인가?
Bastion의 의미는 성 외곽을 보호하기 위해 돌출된 부분으로서 적으로부터 효과적으로 방어하기 위한 수단입니다. 서비스를 구성하는 과정에서도 보안을 한 작업으로서 Bastion Server 를 구축합니다. 이 서버에 침입 차단 소프트웨어가 설치되어 내부와 외부 네트워크 사이에서 일종의 게이트 역할을 수행하는 호스트를 뜻합니다.
- 출처 펜타시큐리티시스템

 

EC2에서 Bastion 을 위한 EC2를 생성합니다. 

앞에 최후의 보호망 역할의 Bastion을 통해 타 서버에 접근합니다.

EC2 인스턴스

 

위 인스턴스에서는 lenkim-admin-ec2 가 베스션 서버 역할을 합니다.

만약, lenkim-external-web-ec2 에 접근하고 싶다면, lenkim-admin-ec2 을 통해서만 접근가능해야 합니다.

이렇게 하기 위해서는 먼저 외부망(lenkim-external-web)의 AWS Security Group은 무조건 admin-ec2 의 CIDR 서브넷만 접근을 허용합니다.

 그리고, 나서 다음과 같은 명령어를 통해서 `.pem` 없이 접근가능하도록 설정합니다.

## Bastion Server에서 공개키를 생성합니다.
bastion $ ssh-keygen -t rsa
bastion $ cat ~/.ssh/id_rsa.pub

## 접속하려는 서비스용 서버에 키를 추가합니다.
$ vi ~/.ssh/authorized_keys

## Bastion Server에서 접속을 해봅니다.
bastion $ ssh ubuntu@[서비스용 서버 IP]

Bastion 서버에는 아래와 같은 명령어를 통해서 SSH Config 를 설정합니다.

bastion $ vi /etc/hosts
[서비스용IP]    [별칭]

bastion $ ssh [별칭]

웹 애플리케이션 앞단에 Reverse Proxy 구축하기

Reverse Proxy 를 구축하는 이유부터 설명하면, TLS 또는 캐싱 서버를 구축하는 용도로 많이 활용됩니다. 실습에서는 Docker 를 활용해 nginx 를 구축할 예정입니다.

 

도커 설치 명령어

sudo apt-get update && \
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \
sudo apt-key fingerprint 0EBFCD88 && \
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" && \
sudo apt-get update && \
sudo apt-get install -y docker-ce && \
sudo usermod -aG docker ubuntu && \
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \
sudo chmod +x /usr/local/bin/docker-compose && \
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

 

저 같은 경우에는 WEB 서버에 nginx를 앞단에 설치했지만, 따로 서버를 둘 수 있습니다.

Dockerfile 은 아래와 같은 설정하고,

FROM nginx

COPY nginx.conf /etc/nginx/nginx.conf  

nginx.conf 를 아래와 같이 설정 후 Docker 의 볼륨을 연결하여 도커를 활용해 nginx 를 뛰웁니다.

events {}

http {
  upstream app {
    server 172.17.0.1:8080;
  }

  server {
    listen 80;

    location / {
      proxy_pass http://app;
    }
  }
}
docker build -t reverse-proxy .
docker run -d -p 80:80 reverse-proxy

댓글