본문 바로가기

리눅스

Vault OTP 계정과 로컬 계정을 함께 사용하는 SSH 인증 구성하는 방법

반응형

Vault OTP 계정과 로컬 계정을 함께 사용하는 SSH 인증 구성하는 방법

HashiCorp Vault 기반 OTP 계정 접속과 기존 로컬 Unix 계정 접속을 동시에 지원하기 위한 PAM 기반 SSH 인증 구성 방법입니다.

인증 동작 방식

Vault OTP 계정 로그인 (예: vault_user1)

vault_user1 + OTP
 └─ pam_exec(vault-ssh-helper) → 성공
     └─ sufficient → 로그인 허용

로컬 계정 로그인 (예: local_user1)

local_user1 + local password
 └─ pam_exec(vault-ssh-helper) → 실패 (OTP 아님)
     └─ sufficient 무시
         └─ common-auth (pam_unix) → 성공 → 로그인 허용

PAM 설정 (/etc/pam.d/sshd)

설정 파일 백업

sudo cp /etc/pam.d/sshd /etc/pam.d/sshd_$(date +%Y%m%d_%H%M%S)

PAM 인증 설정 수정

sudo vim /etc/pam.d/sshd
# Vault OTP 인증 시도
# 성공하면 sufficient 조건으로 이후 auth 단계 건너뜀
auth sufficient pam_exec.so quiet expose_authtok log=/var/log/vault-ssh.log /usr/local/bin/vault-ssh-helper -dev -config=/etc/vault-ssh-helper.d/config.hcl
# pam_exec 실패 시(OTP 아님) 로컬 인증으로 자연스럽게 fallback
auth optional pam_unix.so use_first_pass nodelay

# Vault 인증 실패 시 로컬 Unix 계정 인증 수행
@include common-auth
...

SSH 데몬 설정 확인

PAM 인증이 정상 동작하려면 sshd_config 설정이 반드시 필요하다.

sudo grep -E "PasswordAuthentication|KbdInteractive|UsePAM" /etc/ssh/sshd_config | grep -v "^#"
728x90

AllowUsers - 접속 가능한 사용자 명시 제한

권장 설정

AllowUsers vault_user1 vault_user2 local_user1 local_user2

또는 그룹 기반

AllowGroups vault-ssh-users local-ssh-users

SSH 서비스 재시작

sudo systemctl restart ssh

접속 테스트

Vault OTP 계정 접속

Vault에서 OTP 발급

$ vault write ssh/creds/otp_key_role ip=192.168.10.102
Key                Value
---                -----
lease_id           ssh/creds/otp_key_role/HbRXT2KMipS0Dz71FfTA1xbt
lease_duration     768h
lease_renewable    false
ip                 192.168.10.102
key                b336d9fa-3919-dbf8-fdff-5c6a4c040f19
key_type           otp
port               22
username           vault_user1

SSH 접속(key[b336d9fa-3919-dbf8-fdff-5c6a4c040f19] 입력)

ssh vault_user1@192.168.0.111

로컬 계정 접속

SSH 접속(로컬 비밀번호 입력)

ssh local_user1@192.168.0.111

 

728x90
반응형