본문 바로가기

리눅스

HashiCorp Vault의 SSH OTP 방식을 통해 SSH 접속을 관리하는 방법

반응형

HashiCorp Vault의 SSH OTP(One-Time Password) 방식을 통해 SSH 접속을 관리하는 방법

1. Vault 서버 설정 (Node141 - 192.168.0.141)

Vault 서버 주소와 인증 토큰 설정

export VAULT_ADDR=http://127.0.0.1:8200
export VAULT_TOKEN="hvs.OXgyLZfl8wnutNnda1FK3Cd2"

Vault 로그인

vault login "$VAULT_TOKEN"

Vault 서버 상태 확인

vault status

활성화된 경로 확인

vault secrets list

SSH Secret Engine 활성화

vault secrets enable ssh

OTP Role 생성

vault write ssh/roles/otp_role \
    key_type=otp \
    default_user="vuser2" \
    cidr_list="0.0.0.0/0" \
    ttl=60

2. SSH 서버 설정 (Node142 - 192.168.0.142)

Vault 및 Vault SSH Helper 설치

sudo apt install -y unzip

wget https://releases.hashicorp.com/vault/1.18.0/vault_1.18.0_linux_amd64.zip
unzip vault_1.18.0_linux_amd64.zip
sudo mv vault /usr/local/bin/
rm -f LICENSE.txt vault_1.18.0_linux_amd64.zip

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/
rm -f vault-ssh-helper_0.2.1_linux_amd64.zip
export VAULT_ADDR=http://192.168.0.141:8200
export VAULT_TOKEN="hvs.OXgyLZfl8wnutNnda1FK3Cd2"

Vault Server와의 연결 확인

curl -s http://192.168.0.141:8200/v1/sys/health | jq

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.0.141:8200"
namespace = ""
tls_skip_verify = true
ssh_mount_point = "ssh"
allowed_roles = "otp_role"
EOF

config.hcl 검토

vault-ssh-helper -verify-only -config /etc/vault-ssh-helper.d/config.hcl

PAM 구성 수정

/etc/pam.d/sshd 파일을 수정하여 Vault SSH Helper가 OTP 인증을 처리할 수 있도록 PAM 모듈을 추가합니다.

echo "auth requisite pam_exec.so quiet /usr/local/bin/vault-ssh-helper -config=/etc/vault-ssh-helper.d/config.hcl" | sudo tee -a /etc/pam.d/sshd

SSH 설정 변경

/etc/ssh/sshd_config 파일에서 다음 설정을 추가/수정하여 OTP 인증을 활성화합니다.

sudo tee -a /etc/ssh/sshd_config > /dev/null <<EOF
ChallengeResponseAuthentication yes
PasswordAuthentication no
EOF

SSH 서비스 재시작

sudo systemctl restart sshd

3. Vault에서 OTP 생성 및 SSH 접속 테스트

OTP 생성 (Vault 서버에서 실행)

vault write ssh/creds/otp_role ip="192.168.0.142"

OTP는 key 필드에 표시됩니다.

SSH 클라이언트 (Node143 - 192.168.0.143)에서 SSH 접속

SSH 접속을 시도합니다.

ssh vuser2@192.168.0.142

 

728x90
반응형