본문 바로가기

리눅스

[리눅스] Hashicorp Vault를 사용하여 SSH CA를 구성하고, SSH 서버와 SSH 클라이언트를 연동하는 방법

728x90

Hashicorp Vault를 사용하여 SSH CA(Certificate Authority)를 구성하고, SSH 서버와 SSH 클라이언트를 연동하는 방법

Vault 설치 및 구성

  • Vault 설치
curl -LO https://releases.hashicorp.com/vault/1.13.2/vault_1.13.2_linux_amd64.zip
unzip vault_1.13.2_linux_amd64.zip
mv vault /usr/local/bin/
  • Vault 디렉터리 만들기
mkdir -p /etc/vault.d
  • Vault 환경 설정 파일 생성(config.hcl)
tee /etc/vault.d/config.hcl <<EOF
ui = true
disable_mlock = true

storage "raft" {
  path    = "/etc/vault.d/data"
  node_id = "node1"
}

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

api_addr = "http://127.0.0.1:8200"
cluster_addr = "https://127.0.0.1:8201"
EOF
  • 데이터 디렉터리 만들기
mkdir -p /etc/vault.d/data
  • Vault 서버 시작
vault server -config=/etc/vault.d/config.hcl
  • Vault 서버를 백그라운드로 시작(> /dev/null 2>&1)
vault server -config=/etc/vault.d/config.hcl > /dev/null 2>&1 &
  • 환경 변수 설정
export VAULT_ADDR='http://192.168.0.59:8200'
export VAULT_TOKEN="hvs.cTqNmrjszzsoWEzP4xvLaq7X"

 

vault status
vault login hvs.cTqNmrjszzsoWEzP4xvLaq7X
vault secrets list

 

Vault SSH CA 구성

  • SSH CA 백엔드 활성화
vault secrets enable -path=ssh-client-signer ssh
  • SSH CA 로그인 역할을 생성하고 필요한 권한과 설정을 구성
vault write ssh-client-signer/config/ca generate_signing_key=true
vault write ssh-client-signer/roles/ssh-srv-role - <<"EOH"
{
  "allow_user_certificates": true,
  "allowed_users": "*",
  "allowed_extensions": "permit-pty,permit-port-forwarding",
  "default_extensions": [
    {
      "permit-pty": ""
    }
  ],
  "key_type": "ca",
  "default_user": "centos",
  "ttl": "30m0s"
}
EOH
vault read ssh-client-signer/roles/ssh-srv-role

 

SSH 서버 구성

  • Vault에서 SSH CA의 공개 키를 가져와서 신뢰할 수 있는 CA 키로 설정합니다.
curl -s http://192.168.0.59:8200/v1/ssh-client-signer/public_key -o /etc/ssh/trusted-user-ca-keys.pem

(또는 아래와 같이 실행)

vault read -field=public_key ssh-client-signer/config/ca > /etc/ssh/trusted-user-ca-keys.pem
  • SSH 서버의 sshd_config 파일을 수정하여 TrustedUserCAKeys 설정을 추가합니다.
echo "TrustedUserCAKeys /etc/ssh/trusted-user-ca-keys.pem" >> /etc/ssh/sshd_config
  • SSH 서버를 재시작하여 변경사항을 적용합니다.
sudo systemctl restart sshd

 

SSH 클라이언트 구성

  • SSH 클라이언트에서 SSH 키를 생성하고 Vault에 SSH CA에 대한 서명된 키를 요청합니다.
ssh-keygen -t rsa -C "client@vault"
vault write ssh-client-signer/sign/ssh-srv-role public_key=@$HOME/.ssh/id_rsa.pub

(또는 아래와 같이 실행)

vault write -field=signed_key ssh-client-signer/sign/ssh-srv-role public_key=@$HOME/.ssh/id_rsa.pub > ~/.ssh/signed.pub
  • 서명된 키를 SSH 클라이언트에 저장하고, 해당 키를 사용하여 SSH 서버에 접속합니다.
ssh -i ~/.ssh/signed.pub -i ~/.ssh/id_rsa ubuntu@192.168.56.102

 

위의 단계를 따라하면 Vault를 사용하여 SSH CA를 구성하고, SSH 서버와 클라이언트를 연동할 수 있습니다. 단계별로 진행하면서 필요에 따라 경로 및 설정을 수정하세요. 자세한 내용은 Vault와 SSH 서버/클라이언트의 문서를 참조하세요.

 

728x90