반응형
HashiCorp Vault의 OTP(One-Time Password) 방식을 이용하여 SSH 인증을 구성하는 방법
Vault가 SSH 접속용 일회용 비밀번호(OTP)를 발급하고, SSH 서버는 vault-ssh-helper를 통해 Vault에 OTP를 검증시켜 사용자를 로그인시키는 방식입니다.
테스트 환경
- Vault Server 192.168.10.48
- SSH Server 192.168.10.101
- SSH Client 192.168.10.10
1. Vault 서버 설정 (192.168.10.48, Docker 컨테이너)
docker compose exec vault sh
Vault 환경 설정
export VAULT_ADDR=http://127.0.0.1:8200
export VAULT_TOKEN="hvs.7EXpGL2yK5fzIPsasgcQTqdG"
Vault 로그인
vault login "$VAULT_TOKEN"
SSH Secret Engine 활성화
vault secrets enable ssh
OTP Role 생성
vault write ssh/roles/otp_role \
key_type=otp \
default_user="ubuntu" \
cidr_list="0.0.0.0/0"
2. SSH 서버 설정 (192.168.10.101)
sudo apt update
sudo apt install -y unzip curl jq
vault-ssh-helper 설치
wget https://releases.hashicorp.com/vault-ssh-helper/0.2.1/vault-ssh-helper_0.2.1_linux_amd64.zip
unzip vault-ssh-helper_0.2.1_linux_amd64.zip
sudo mv vault-ssh-helper /usr/local/bin/
sudo chmod +x /usr/local/bin/vault-ssh-helper
rm -f vault-ssh-helper_0.2.1_linux_amd64.zip
vault-ssh-helper --version
vault-ssh-helper v0.2.1
vault-ssh-helper 설정 파일 생성
sudo mkdir -p /etc/vault-ssh-helper.d
sudo tee /etc/vault-ssh-helper.d/config.hcl > /dev/null <<EOF
vault_addr = "http://192.168.10.48:8200"
tls_skip_verify = true
ssh_mount_point = "ssh"
allowed_roles = "otp_role"
EOF
설정 테스트
vault-ssh-helper -verify-only -config /etc/vault-ssh-helper.d/config.hcl
PAM 구성 수정
sudo sed -i '1iauth requisite pam_exec.so quiet /usr/local/bin/vault-ssh-helper -config=/etc/vault-ssh-helper.d/config.hcl' /etc/pam.d/sshd
sudo echo -e "\nauth requisite pam_exec.so quiet expose_authtok log=/var/log/vault-ssh.log /usr/local/bin/vault-ssh-helper -config=/etc/vault-ssh-helper.d/config.hcl" | sudo tee -a /etc/pam.d/sshd
SSH 설정 변경
sudo tee -a /etc/ssh/sshd_config > /dev/null <<EOF
ChallengeResponseAuthentication yes
PasswordAuthentication no
UsePAM yes
EOF
SSH 재시작
sudo systemctl restart ssh
3. OTP 생성 및 SSH 접속 테스트
Vault 서버 (192.168.10.48)에서 OTP 생성(또는 클라이언트가 수행)
export VAULT_ADDR=http://127.0.0.1:8200
export VAULT_TOKEN="hvs.7EXpGL2yK5fzIPsasgcQTqdG"
vault write ssh/creds/otp_role ip="192.168.10.101"
SSH 클라이언트 (192.168.10.10)에서 SSH 접속
ssh ubuntu@192.168.10.101
HashiCorp
Vault 쓰기 SSH/역할/OTP_ROLE \ key_type = otp \ default_user = "ubuntu"\ cidr_list = "0.0.0.0/0"
반응형
'리눅스' 카테고리의 다른 글
우분투 24.04에서 Kubernetes를 제거 및 재설치 방법 (1) | 2025.06.16 |
---|---|
HashiCorp Vault를 Docker 컨테이너로 설정하는 방법 (2) | 2025.06.16 |
KEX 알고리즘 호환 문제 (0) | 2025.06.13 |
리눅스에서 SMB/CIFS 프로토콜을 이용하여 Windows 공유 폴더를 마운트하는 방법 (1) | 2025.06.11 |
우분투 22.04에서 Go를 설치하는 방법 (2) | 2025.06.11 |