Vault 서버 구축하기 1
평소 클라우드 계정의 비밀번호 등과 같은 계정 정보를 평문으로 보관하거나 SSL 인증서 또는 RSA PRIVATE KEY를 주고 받을 때 메일로 주고 받는 등 이러한 요소들이 보안에 취약하다고 생각이 많이 되었고 사후약방문이 되지 않게 하기 위해서 오픈소스를 알아보던 중 Hashicorp의 Vault를 알게 되었고 앞서 포스팅한 공식문서의 튜토리얼 과정을 거쳐 Vault에 대해서 작게나마 이해한 후 NHN Cloud 인스턴스에 Nginx와 Vault 서버 설정 그리고 SSL 보안 설정까지 구축한 과정들을 기록하였습니다.
인스턴스의 이미지는 Ubuntu 22.04 버전으로 진행하였습니다.
Vault 설치
- GPG key 추가
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
- 리포지토리 추가
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
- apt 업데이트
sudo apt-get update
- Vault 설치
sudo apt-get install vault
- 환경변수 설정
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 포트를 오픈한 후 설정한 도메인에 접속
Response 응답 헤더 확인