Infograb logo
하드웨어 키 지원

소개

Enterprise

하드웨어 키 지원은 Teleport Enterprise가 필요합니다.

기본적으로 tsh, Teleport Connect 및 기타 Teleport 클라이언트는 사용자의 키와 인증서를 파일 시스템에 직접 저장합니다. 사용자의 파일 시스템이 손상되면, 활성 Teleport 사용자 키와 인증서도 손상될 수 있습니다.

세션별 MFA를 구성하여 사용자가 SSH 서비스, Kubernetes 서비스, 데이터베이스 서비스 등과 같은 Teleport 서비스로 새 세션을 시작할 때 다단계 인증 체크를 요구할 수 있습니다. 그러나 세션별 MFA는 손상된 세션 자격 증명이 tctl로 관리 명령을 실행하는 등의 다른 작업을 수행하는 것을 방지하지 않습니다.

이러한 유형의 공격을 방지하기 위해 Teleport는 하드웨어 기반 개인 키를 지원합니다. 디스크 기반 개인 키와 달리 하드웨어 기반 개인 키는 하드웨어 장치에서 직접 생성되고 저장되며 내보낼 수 없습니다. 하드웨어 기반 개인 키로는 키가 생성되고 저장된 하드웨어 장치에 접근할 수 있는 경우에만 로그인 세션이 작동합니다.

추가적으로, 이 기능을 구성하여 tctl edit와 같은 세션이 아닌 요청을 포함한 모든 Teleport 요청에 대해 터치가 필요하도록 설정할 수 있습니다. 터치가 필요할 경우, 하드웨어 키 지원은 세션별 MFA보다 더 나은 보안을 제공합니다.

터치 캐싱

사용자의 터치는 과도한 터치 프롬프트를 방지하기 위해 하드웨어 보안 키에 15초 동안 캐시됩니다.

호환성

하드웨어 키 지원은 가능한 최고의 보안을 제공합니다. 그러나 모든 서비스가 하드웨어 키와 호환되는 것은 아닙니다.

지원됨:

  • Teleport 클라이언트 tsh, tctl, 및 Teleport Connect.
  • tsh ls, tctl create 등의 표준 Teleport API 요청.
  • 서버 접근.
  • 에이전트 없는 OpenSSH 서버 접근.
  • tsh db connect 대신 tsh proxy db를 사용한 데이터베이스 접근.
  • tsh kube login 대신 tsh proxy kube를 사용한 Kubernetes 접근.
  • 웹 접근 (Teleport 웹 UI).
  • 애플리케이션 접근.

지원되지 않음:

  • 데스크탑 접근.
  • 이전 OpenSSH 서버 접근.

사용자가 인프라에 접근하기 위해 하드웨어 키를 요구하는 경우, 지원되지 않는 기능을 사용할 수 없습니다. 이는 하드웨어 키에 접근할 수 없거나 프로토콜이 원시 개인 키만 지원하기 때문입니다.

이러한 비호환성을 해결하기 위해, 중요한 인프라에 접근할 수 있는 역할에 대해서만 하드웨어 키 지원을 활성화할 것을 권장합니다. 이러한 역할은 필요에 따라 Access Requests를 통해 접근하여 사용자가 정상 로그인 세션에서 이러한 문제를 피할 수 있습니다.

참고: 웹 및 앱 세션은 하드웨어 키에 의해 직접 지원되지 않지만, Auth Service 및 Proxy Service에 의해 엄격하게 보호됩니다. 따라서 웹 및 앱 세션은 하드웨어 키 지원을 우회할 수 있는 권한이 부여되며, 사용자 존재 또는 확인이 필요할 때 세션별 MFA와 같은 MFA 프롬프트로 대체됩니다.

전제 조건

  • 실행 중인 Teleport 클러스터. Teleport를 시작하려면 가입하기 무료 체험판을 이용해 보세요.

  • tctl 관리 도구 및 tsh 클라이언트 도구 버전 >= 16.2.0.

    tctltsh 다운로드 방법에 대한 지침은 설치를 방문하세요.

  • 시리즈 5 이상 YubiKey
PIV 지원

하드웨어 키 지원을 사용하려면 사용자가 PIV 호환 하드웨어 키를 사용해야 합니다. 현재 이 기능은 YubiKey 시리즈 5 이상만 지원한다고 보장됩니다.

  • 운영 체제에 맞는 스마트 카드 드라이버를 설치하세요. Teleport 클라이언트는 키 생성을 위해 스마트 카드 드라이버를 통해 YubiKey에 연결합니다.
  • 당신의 Teleport 클러스터에 연결할 수 있는지 확인하려면, tsh login으로 로그인한 다음 현재 자격 증명을 사용하여 tctl 명령어를 실행할 수 있는지 확인하십시오. 예를 들어:
    tsh login --proxy=teleport.example.com --user=email@example.com
    tctl status

    클러스터 teleport.example.com

    버전 16.2.0

    CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678

    클러스터에 연결하고 tctl status 명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 작업대에서 후속 tctl 명령어를 실행할 수 있습니다. 자신의 Teleport 클러스터를 호스팅하는 경우, Teleport 인증 서비스를 호스팅하는 컴퓨터에서 전체 권한으로 tctl 명령어를 실행할 수도 있습니다.

1단계/2단계. 하드웨어 키 지원 강제화

하드웨어 키 지원은 기본적으로 요구되지 않습니다.

하드웨어 키 지원에 대한 세 가지 주요 옵션이 있습니다:

  • hardware_key: 사용자 키는 터치/PIN 보호 없이 하드웨어 키에 저장됩니다. 세션 및 기타 MFA 의존 기능(중재 세션 등)에 대해 별도의 MFA 체크가 사용됩니다.
  • hardware_key_touch: 사용자 키는 터치 보호와 함께 하드웨어 키에 저장됩니다. 각 요청 시 사용자는 하드웨어 키를 터치해야 합니다.
  • hardware_key_touch_and_pin: 사용자 키는 터치 및 PIN 보호와 함께 하드웨어 키에 저장됩니다. 각 요청 시 사용자는 하드웨어 키를 터치하고 PIV PIN을 입력해야 합니다.
    • PIV 코드를 설정하지 않은 사용자는 로그인 시 설정하라는 프롬프트가 표시됩니다.

특정 역할에 대해 하드웨어 키 지원을 강제화할 수 있습니다. 아래와 같이 설정하세요:

kind: role
metadata:
  name: admin
spec:
  options:
    require_session_mfa: hardware_key_touch

Teleport 구성 파일을 업데이트하여 클러스터 전체에 하드웨어 키 지원을 강제화할 수도 있습니다:

tctl edit cap

spec.require_session_mfa의 값을 hardware_key_touch로 설정하세요:

kind: cluster_auth_preference
metadata:
  ...
  name: cluster-auth-preference
spec:
  ...
  require_session_mfa: hardware_key_touch
  ...
version: v2

편집기를 저장하고 종료한 후, tctl은 리소스를 업데이트합니다:

클러스터 인증 기본 설정이 업데이트되었습니다.

2단계/2단계. 로그인

하드웨어 키가 필요하도록 역할이나 클러스터를 구성한 후, 해당 역할로 로그인 하거나 해당 클러스터에 로그인하는 모든 사용자는 모든 Teleport 요청에 대해 하드웨어 키를 사용해야 합니다.

영향을 받는 사용자는 YubiKey를 연결하고 터치하라는 프롬프트가 표시됩니다. 사용자가 하드웨어 키로 처음 로그인 할 때 즉시 다시 로그인해야 할 수도 있습니다.

tsh login --user=dev --proxy=proxy.example.com:3080

Teleport 사용자 dev의 비밀번호를 입력하세요:

만족되지 않은 개인 키 정책 "hardware_key_touch".

하드웨어 백업된 개인 키로 다시 로그인 중입니다.

Teleport 사용자 dev의 비밀번호를 입력하세요:

YubiKey를 터치하세요

> 프로필 URL: https://example.com

로그인 사용자: dev

클러스터: example.com

...

tsh login --user=dev --proxy=proxy.example.com:3080

Teleport 사용자 dev의 비밀번호를 입력하세요:

만족되지 않은 개인 키 정책 "hardware_key_touch".

하드웨어 백업된 개인 키로 다시 로그인 중입니다.

Teleport 사용자 dev의 비밀번호를 입력하세요:

YubiKey를 터치하세요

> 프로필 URL: https://example.com

로그인 사용자: dev

클러스터: example.com

...

tsh login --user=dev --proxy=proxy.example.com:3080

Teleport 사용자 dev의 비밀번호를 입력하세요:

만족되지 않은 개인 키 정책 "hardware_key_touch".

하드웨어 백업된 개인 키로 다시 로그인 중입니다.

Teleport 사용자 dev의 비밀번호를 입력하세요:

YubiKey를 터치하세요

> 프로필 URL: https://example.com

로그인 사용자: dev

클러스터: example.com

...

영향을 받는 사용자는 하드웨어 키로 지원되지 않는 기존 세션에서 다음 요청 시 다시 로그인하라는 프롬프트가 표시됩니다. 예를 들어:

tsh clusters

만족되지 않은 개인 키 정책 "hardware_key_touch"

하드웨어 백업된 개인 키로 다시 로그인 중입니다.

Teleport 사용자 dev의 비밀번호를 입력하세요:

YubiKey를 터치하세요

클러스터 이름 상태 클러스터 유형 레이블 선택됨

----------- ------ ------------ ------ --------

example.com 온라인 root *

사용자 정의 PIV 설정

사용자 정의 PIV 슬롯

기본적으로 Teleport 클라이언트는 각 옵션에 대해 다음 PIV 슬롯을 사용합니다:

  • hardware_key: 슬롯 9a
  • hardware_key_touch: 슬롯 9c
  • hardware_key_touch_and_pin: 슬롯 9d
  • hardware_key_pin: 슬롯 9e

다른 PIV 애플리케이션을 사용하는 경우, 다른 슬롯을 명시해야 할 수 있습니다. 예를 들어, yubikey-agent는 슬롯 9a를 사용합니다. yubikey-agent 키 및 인증서를 덮어쓰지 않도록 하려면, hardware_key 요구 사항이 있는 사용자가 다른 슬롯을 지정해야 합니다.

로그인 시 사용자는 --piv-slot 명령줄 옵션 또는 환경 변수를 사용하여 PIV 슬롯을 지정할 수 있습니다. 예를 들어:

  • tsh login --piv-slot=9c
  • TELEPORT_PIV_SLOT=9c tsh login

PIV 슬롯은 구성 옵션으로 클러스터 전체에 설정할 수 있습니다:

kind: cluster_auth_preference
metadata:
  ...
  name: cluster-auth-preference
spec:
  ...
  require_session_mfa: hardware_key
  hardware_key:
    piv_slot: 9c
  ...
version: v2

사용자 정의 키

Teleport 클라이언트는 기본 관리 키를 사용하여 지정된 슬롯에서 키를 생성합니다.

PIV 키가 다른 관리 키를 사용하는 경우, 사용자가 직접 키를 생성해야 합니다. 이는 YubiKey 관리 도구 CLI를 사용하여 수행할 수 있습니다:

ykman piv keys generate -a ECCP256 [슬롯] --touch-policy=[never|cached|always] --pin-policy=[never|once|always] -

이 명령을 실행한 후, 요청을 완료하기 위해 관리 키를 입력하라는 메시지가 표시됩니다. 터치 및 PIN 정책이 클러스터 및 역할에 대한 하드웨어 키 요구 사항을 충족하는지 확인하세요.

문제 해결

ERROR: 개인 키 정책이 충족되지 않음

이 오류는 사용자에 대한 필수 개인 키 정책을 충족하지 않을 경우 Auth 및 Proxy 서비스에서 반환됩니다. tsh 및 Teleport Connect는 이러한 오류를 자동으로 잡아서 사용자가 유효한 하드웨어 기반 개인 키로 다시 로그인해야 합니다.

ERROR: 관리 키로 인증 중: 인증 도전: 스마트 카드 오류 6982: 보안 상태가 충족되지 않음

스마트 카드 인증 도전 오류는 잘못된 관리 키가 사용된 경우 발생할 수 있습니다.

Teleport 클라이언트는 기본 관리 키로 새 PIV 키를 기대합니다. 기존 PIV 키 및 인증서와 함께 이 키를 재설정할 수 있습니다. YubiKey 관리 도구 CLIykman piv reset 명령어를 사용하세요.

다른 관리 키를 사용하고 싶으시면 사용자 정의 PIV 설정 지침을 따르세요.

ERROR: ssh: 핸드쉐이크 실패: 명령 실패: 요청 전송: 존재하지 않는 트랜잭션을 종료하려는 시도

때때로, YubiKey와의 PIV 상호 작용이 예기치 않은 방식으로 실패할 수 있습니다.

예를 들어, MFA를 위해 YubiKey를 터치한 다음 하드웨어 키 지원을 위해 YubiKey를 터치할 경우 드물게 오류가 발생할 수 있습니다.

왜 여러 번 로그인하라고 요청받나요?

설정에 따라, YubiKey를 여러 번 터치하라는 요청을 받을 수 있습니다. 각 터치는 안전하게 인증하기 위해 필요합니다.

예를 들어, cluster_auth_preference에서 second_factor: webauthn이 설정되고, 역할에 require_session_mfa: hardware_key_touch가 설정되어 있으면, 처음 로그인 할 때 다음과 같은 출력이 표시됩니다:

tsh login --user=dev --proxy=root.example.com:3080

첫 번째 로그인 시에는 사용자가 역할에서 요구되는 "hardware_key_touch"를 유추할 수 없으므로 일반적으로 로그인합니다.


Teleport 사용자 dev의 비밀번호를 입력하세요:보안 키를 터치하세요보안 키 터치 감지됨

로그인 결과 "hardware_key_touch" 오류가 발생합니다.


만족되지 않은 개인 키 정책 "hardware_key_touch".

이 시점에서, `tsh`는 오류로부터 사용자의 역할이 "hardware_key_touch"를 요구한다는 것을 유추할 수 있으며, 하드웨어 키에서 바로 개인 키를 생성하고 로그인 프로세스를 다시 시작합니다.


하드웨어 백업된 개인 키로 다시 로그인 중입니다.

이번에는 `tsh`가 역할에 대한 개인 키 정책을 통과하는 인증서를 얻기 위해 YubiKey로 지원된 개인 키를 로그인 요청에 사용합니다.


Teleport 사용자 dev의 비밀번호를 입력하세요:보안 키를 터치하세요보안 키 터치 감지됨YubiKey를 터치하세요> 프로필 URL: https://root.example.com:3080 로그인 사용자: dev 클러스터: root.example.com ...
Teleport 원문 보기