리눅스

우분투에서 HashiCorp Boundary를 설치하고 설정하는 방법

변군이글루 2024. 11. 12. 20:16
반응형

우분투에서 HashiCorp Boundary를 설치하고 설정하는 방법

Boundary는 SSH, RDP와 같은 원격 접근에 대한 보안을 강화하고 접근 제어를 중앙에서 관리하는 솔루션입니다.

필수 패키지 설치

sudo apt update
sudo apt install -y wget unzip curl gnupg software-properties-common

1. PostgreSQL 설치

sudo apt install postgresql
psql --version
$ psql --version
psql (PostgreSQL) 14.13 (Ubuntu 14.13-0ubuntu0.22.04.1)

SSL 인증서 생성

더보기

---

기본 "snakeoil" SSL 인증서를 생성합니다.

sudo make-ssl-cert generate-default-snakeoil --force-overwrite

PostgreSQL 재설치

sudo apt-get remove -y --purge postgresql*
sudo apt autoremove -y
sudo apt-get install postgresql

---

PostgreSQL 설정 파일

sudo vim /etc/postgresql/$(ls /etc/postgresql)/main/postgresql.conf

PostgreSQL 서비스 시작 및 확인

sudo systemctl enable --now postgresql
sudo systemctl restart postgresql
sudo systemctl status postgresql

PostgreSQL 서비스 로그 확인

sudo journalctl -xeu postgresql
sudo journalctl -u postgresql -b

2. Boundary 설치

컨트롤러 및 워커 노드를 구성하고 PostgreSQL을 백엔드 데이터베이스로 사용하는 방법입니다.

HashiCorp APT 저장소 추가

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" \
    | sudo tee /etc/apt/sources.list.d/hashicorp.list

Boundary 설치

sudo apt update
sudo apt install -y boundary
boundary version
$ boundary version

Version information:
  Build Date:          2024-10-10T15:04:49Z
  Git Revision:        2e3fdb718cb5ed20017b124deb6f438310b9dd0f
  Version Number:      0.18.0

개발 모드(Dev Mode) 시작

boundary dev -api-listen-address=0.0.0.0:9200 &
  • Boundary UI 로그인 정보
    • Id : admin
    • Password : password

3. PostgreSQL 데이터베이스 설정

데이터베이스와 사용자 생성 PostgreSQL에서 Boundary 전용 데이터베이스와 사용자를 생성합니다.

sudo -u postgres psql
CREATE DATABASE boundary_db;
CREATE USER boundary_user WITH ENCRYPTED PASSWORD 'boundary_password';
GRANT ALL PRIVILEGES ON DATABASE boundary_db TO boundary_user;

PostgreSQL 외부 접근 허용

vim /etc/postgresql/<version>/main/pg_hba.conf
sudo tee -a /etc/postgresql/$(ls /etc/postgresql)/main/pg_hba.conf > /dev/null <<EOF
host    all             all             192.168.10.111/32       md5
EOF

4. Boundary 설정 파일 구성

boundary 구성 파일(boundary.hcl)을 작성하여 Boundary의 동작을 정의합니다.

sudo vim /etc/boundary.d/boundary.hcl
sudo tee /etc/boundary.d/boundary.hcl > /dev/null <<EOF
# Disable memory lock
disable_mlock = true

# Controller configuration
controller {
  name = "demo-controller-1"
  description = "A controller for a demo!"

  database {
      url = "postgresql://boundary_user:boundary_password@localhost:5432/boundary_db?sslmode=disable"
  }
}

# API listener
listener "tcp" {
  address = "0.0.0.0:9200"
  purpose = "api"
  tls_disable = true
}

# Data-plane listener (worker coordination)
listener "tcp" {
  address = "0.0.0.0:9201"
  purpose = "cluster"
}

# Root KMS
kms "aead" {
  purpose = "root"
  aead_type = "aes-gcm"
  key = "s130azffe4XVK4KBxm+cUi8FF5rFF7uyqbBut6kUrv0="
  key_id = "global_root"
}

# Worker authorization KMS
kms "aead" {
  purpose = "worker-auth"
  aead_type = "aes-gcm"
  key = "OXtfM9KOz6JRofbqqHf5xT4wfEPhEZISViEGMk64fxE="
  key_id = "global_worker-auth"
}

# Recovery KMS
kms "aead" {
  purpose = "recovery"
  aead_type = "aes-gcm"
  key = "OXtfM9KOz6JRofbqqHf5xT4wfEPhEZISViEGMk64fxE="
  key_id = "global_recovery"
}
EOF

Boundary 데이터베이스 초기화

boundary database init -config /etc/boundary.d/boundary.hcl
boundary database init -config /etc/boundary.d/boundary.hcl > ~/init_boundary.txt
더보기

---

Migrations successfully run.
Global-scope KMS keys successfully created.

Initial login role information:
  Name:      Login Grants
  Role ID:   r_8EIlX5b9Ab

Initial authenticated user role information:
  Name:      Authenticated User Grants
  Role ID:   r_XAGvJbir7w

Initial auth information:
  Auth Method ID:     ampw_iQSWaJhlN4
  Auth Method Name:   Generated global scope initial password auth method
  Login Name:         admin
  Password:           eXAhHe1qs4bPDzxwVofo
  Scope ID:           global
  User ID:            u_Oj6Mu0LBLl
  User Name:          admin

Initial org scope information:
  Name:       Generated org scope
  Scope ID:   o_fLcg8HqvEI
  Type:       org

Initial project scope information:
  Name:       Generated project scope
  Scope ID:   p_EAtg6J8abv
  Type:       project

Initial host resources information:
  Host Catalog ID:     hcst_SIPsi31fay
  Host Catalog Name:   Generated host catalog
  Host ID:             hst_4tmSi5fMi3
  Host Name:           Generated host
  Host Set ID:         hsst_Uqb4jmBTCn
  Host Set Name:       Generated host set
  Scope ID:            p_EAtg6J8abv
  Type:                static

Initial target information:
  Default Port:               22
  Name:                       Generated target with a direct address
  Scope ID:                   p_EAtg6J8abv
  Session Connection Limit:   -1
  Session Max Seconds:        28800
  Target ID:                  ttcp_C9ZvoAXlGB
  Type:                       tcp

Initial target information:
  Default Port:               22
  Name:                       Generated target using host sources
  Scope ID:                   p_EAtg6J8abv
  Session Connection Limit:   -1
  Session Max Seconds:        28800
  Target ID:                  ttcp_NcdKJq3ydG
  Type:                       tcp

---

Boundary 서비스 시작 및 확인

sudo systemctl enable --now boundary
sudo systemctl restart boundary
sudo systemctl status boundary

Boundary 서비스 로그 확인

sudo journalctl -xeu boundary
sudo journalctl -u boundary -b

Boundary UI 접속

http://192.168.0.111:9200
  • 로그인 정보
    • Login Name : admin
    • Password : eXAhHe1qs4bPDzxwVofo

Boundary를 통해 안전하게 대상 서버에 SSH 연결을 할 수 있습니다.

 

sudo tee -a /etc/postgresql/$(ls /etc/postgresql)/main/pg_hba.conf > /dev/null <<EOF 호스트 모두 모두 192.168.10.111/32 md5 EOF
 
728x90
반응형