일회용 SSH 비밀번호

일회용 SSH 비밀번호 (One-Time SSH Passwords)

일회용 SSH 비밀번호(OTP) SSH 시크릿 엔진 유형은 Vault 서버가 클라이언트가 원격 호스트에 SSH하려 할 때마다 일회용 비밀번호를 발급하되, 원격 호스트의 헬퍼 명령이 검증을 수행하게 해요.

인증된 클라이언트는 Vault 서버에서 크레덴셜을 요청하고, 승인되면 OTP를 발급받아요. 클라이언트가 원하는 원격 호스트에 SSH 연결을 설정하면, SSH 인증 중 사용된 OTP는 Vault 헬퍼가 받아서 Vault 서버로 OTP를 검증해요. 그러면 Vault 서버는 이 OTP를 삭제해 한 번만 사용되도록 보장해요.

SSH 연결 설정 중에 Vault 서버에 접촉하므로 모든 로그인 시도와 그에 연관된 Vault 리스 정보가 감사 시크릿 엔진에 기록돼요.

헬퍼에 대한 자세한 내용은 Vault-SSH-Helper를 참고하세요.

이 페이지에서는 이 시크릿 엔진의 빠른 시작을 보여 드릴게요. 모든 경로에 대한 자세한 문서는 시크릿 엔진을 마운트한 후 vault path-help를 사용하세요.

출처: 문서

본문

단점 (Drawbacks)

OTP 시크릿 엔진 유형의 주요 우려 사항은 원격 호스트의 Vault 연결이에요. 손상되면 공격자가 성공적인 요청을 반환하는 Vault 서버를 스푸핑할 수 있어요. 이 위험은 Vault 연결에 TLS를 사용하고 인증서 유효성을 확인함으로써 완화할 수 있어요. 이 시크릿 엔진의 향후 개선은 TLS가 제공하는 것보다 더 많은 보안을 허용할 수 있어요.

시크릿 엔진 마운트하기

$ vault secrets enable ssh
Successfully mounted 'ssh' at 'ssh'!

역할 만들기

key_type 파라미터가 otp로 설정된 역할을 만들어요. 역할의 CIDR 목록이 나타내는 모든 머신에 헬퍼가 제대로 설치되고 구성되어 있어야 해요.

$ vault write ssh/roles/otp_key_role \
    key_type=otp \
    default_user=username \
    cidr_list=x.x.x.x/y,m.m.m.m/n
Success! Data written to: ssh/roles/otp_key_role

크레덴셜 만들기

otp_key_role에 속하는 원격 호스트의 IP에 대한 OTP 크레덴셜을 만들어요.

$ vault write ssh/creds/otp_key_role ip=x.x.x.x
Key             Value
lease_id        ssh/creds/otp_key_role/73bbf513-9606-4bec-816c-5a2f009765a5
lease_duration  600
lease_renewable false
port            22
username        username
ip              x.x.x.x
key             2f7e25a2-24c9-4b7b-0d35-27d5e5203a5c
key_type        otp

SSH 세션 설정하기

$ ssh [email protected]
Password: <Enter OTP>
[email protected]:~$

자동화하기!

단일 CLI 명령으로 새 OTP를 만들고 올바른 파라미터로 SSH를 호출해 호스트에 연결할 수 있어요.

$ vault ssh -role otp_key_role -mode otp [email protected]
OTP for the session is `b4d47e1b-4879-5f4e-ce5c-7988d7986f37`
[Note: Install `sshpass` to automate typing in OTP]
Password: <Enter OTP>

OTP는 sshpass가 설치되어 있으면 자동으로 입력돼요.

$ vault ssh -role otp_key_role -mode otp -strict-host-key-checking=no [email protected]
username@<IP of remote host>:~$

참고: sshpass는 호스트 키 검사를 처리할 수 없어요. 호스트 키 검사는 -strict-host-key-checking=no를 설정해 비활성화할 수 있어요.

튜토리얼 (Tutorial)

SSH 시크릿 엔진: 일회용 SSH 비밀번호 튜토리얼을 참고해 Vault SSH 시크릿 엔진으로 머신 접근에 대한 인증·인가를 보호하는 방법을 배워 보세요.

API

SSH 시크릿 엔진은 완전한 HTTP API를 제공해요. 자세한 내용은 SSH 시크릿 엔진 API 문서를 참고해 주세요.

더 알아보기 (Learn more)

  • SSH 시크릿 엔진의 다른 모드에 대한 자세한 내용은 SSH 시크릿 엔진 문서를 참고하세요.
  • Vault SSH 시크릿 엔진 전체 API는 SSH API 문서를 참고하세요.