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
'리눅스' 카테고리의 다른 글
우분투에 Go 언어(Golang)를 설치하는 방법 (0) | 2023.06.02 |
---|---|
Nginx에서 POST 데이터를 Nginx 로그에 기록하는 방법 (0) | 2023.06.02 |
리눅스 플랫폼, 아키텍처, 시스템의 비트를 확인하는 방법 (0) | 2023.06.01 |
[리눅스] Vault-SSH 플러그인을 설치하는 방법 (0) | 2023.06.01 |
[리눅스] httpie 명령어 (0) | 2023.05.31 |