Skip to main content

Vault 서버 구축하기 1

평소 클라우드 계정의 비밀번호 등과 같은 계정 정보를 평문으로 보관하거나 SSL 인증서 또는 RSA PRIVATE KEY를 주고 받을 때 메일로 주고 받는 등 이러한 요소들이 보안에 취약하다고 생각이 많이 되었고 사후약방문이 되지 않게 하기 위해서 오픈소스를 알아보던 중 Hashicorp의 Vault를 알게 되었고 앞서 포스팅한 공식문서의 튜토리얼 과정을 거쳐 Vault에 대해서 작게나마 이해한 후 NHN Cloud 인스턴스에 Nginx와 Vault 서버 설정 그리고 SSL 보안 설정까지 구축한 과정들을 기록하였습니다.

인스턴스의 이미지는 Ubuntu 22.04 버전으로 진행하였습니다.

Vault 설치

  1. GPG key 추가
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
  1. 리포지토리 추가
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
  1. apt 업데이트
sudo apt-get update
  1. Vault 설치
sudo apt-get install vault
  1. 환경변수 설정
vi ~/.bashrc
export VAULT_ADDR='http://127.0.0.1:8200'

/etc/vault.d/vault.hcl 수정

storage "raft" {
path = "/opt/vault/data" # 스토리지 저장 위치
node_id = "node1"
}

listener "tcp" {
address = "127.0.0.1:8200"
tls_disable = "true"
}

disable_mlock = true

api_addr = "http://127.0.0.1:8200"
cluster_addr = "https://127.0.0.1:8201"
ui = true

만약 스토리지 저장 위치에 폴더가 없을 경우 아래 명령어를 통해 폴더를 생성한다.

mkdir -p ~/opt/vault/data

Vault 동작 확인

sudo systemctl status vault.service

Nginx 설치

sudo apt update
sudo apt install nginx
sudo systemctl start nginx
sudo systemctl status nginx

/etc/nginx/site-enabled/default 수정

server {
listen 80;
server_name [설정할 도메인];
return 301 https://$host$request_uri; # http 요청의 경우 301 반환 / https 리디렉트
}

server {
listen 443 ssl;
server_name [설정할 도메인];

ssl_certificate /etc/ssl/certs/cert.pem; # 인증서
ssl_certificate_key /etc/ssl/private/cert.key; # RSA PRIVATE KEY

ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

location / {
# vault 서버
proxy_pass http://127.0.0.1:8200;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
  • /etc/ssl/certs/cert.pem에 SSL 인증서 등록
  • /etc/ssl/private/cert.key에 RSA PRIVATE KEY 등록
  • 헤더 변경을 위해 라이브러리 설치
sudo apt-get install nginx-extras

/etc/nginx/nginx.conf 수정

# 하단 내용 추가하여 응답 헤더 변경
more_set_headers 'Server: Managed Vault'

nginx 테스트

nginx -t # 테스트

인스턴스의 보안 그룹 중 443 포트를 오픈한 후 설정한 도메인에 접속

setup1

Response 응답 헤더 확인

setup2