Infograb logo
Teleport 정책으로 안전하지 않은 SSH 접근 발견

Teleport 정책의 접근 그래프를 통해 환경 내에서 SSH 키가 어떻게 사용되는지에 대한 통찰력을 얻을 수 있습니다. 서버에 존재하는 모든 SSH 승인 키와 회사에서 관리하는 노트북에 존재하는 SSH 개인 키를 스캔함으로써, Teleport 정책은 접근 패턴의 시각적 표현을 제공하고 환경의 보안을 강화하는 데 도움을 줄 수 있습니다.

이 기능은 다음 영역에 대한 통찰력을 제공합니다:

  • 어떤 서버에 Teleport를 우회할 수 있는 SSH 승인 키가 존재하는가?
  • 어떤 사용자가 SSH 서버에 대한 접근 권한을 부여하는 SSH 개인 키를 소유하고 있는가?
  • 어떤 노트북에 보호되지 않은 SSH 개인 키가 존재하는가?

접근 그래프는 Teleport 정책 제품의 기능으로, Teleport Enterprise 에디션 고객에게 제공됩니다.

Teleport UI에 로그인한 후, 관리 탭으로 이동하십시오. 활성화된 경우, 접근 그래프 옵션은 권한 관리 섹션 아래에서 찾을 수 있습니다.

작동 방식

Teleport와 Teleport 정책의 접근 그래프는 SSH 승인 키와 개인 키를 포함한 다양한 리소스를 동기화합니다.

이러한 리소스는 접근 그래프 페이지에서 상세히 설명된 그래프 표현을 사용하여 시각화됩니다.

SSH 승인 키 가져오기

Teleport SSH 서비스가 실행되는 Teleport 보호 서버는 서버에 존재하는 SSH 승인 키를 지속적으로 스캔합니다. 이러한 키의 공개 지문이 Teleport Auth 서비스로 전송되며, 이후 이를 접근 그래프에 푸시합니다. 키 지문과 함께, Teleport 보호 서버는 다음 메타데이터도 전송합니다:

  • public_fingerprint : 공개 키의 SHA256 지문.
  • host_id : 서버의 고유 식별자.
  • username : 키에 의해 접근 권한이 부여된 로컬 사용자 이름.
  • key_comment : authorized_keys 파일에 있는 키와 관련된 주석.

기본적으로 Teleport는 $HOME/.ssh/authorized_keys$HOME/.ssh/authorized_keys2 파일에서 승인 키를 스캔합니다. 여기서 $HOME 은 시스템의 각 사용자의 홈 디렉토리를 가리키며, 이는 로컬 사용자 또는 LDAP 관리 사용자일 수 있습니다.

사용자의 SSH 개인 키 가져오기

Teleport의 tsh CLI 도구는 사용자의 노트북에서 SSH 개인 키를 스캔할 수 있습니다. 이는 지정된 디렉토리를 통해 탐색하며, macOS의 경우 /Users , Linux의 경우 /home , Windows의 경우 C:\Users 로 기본 설정됩니다. 파일을 들여다보아 SSH 개인 키를 식별합니다.

tsh 도구는 Teleport 클러스터와 장치 신뢰 기능을 통해 인증합니다. 이는 등록된 장치만 클러스터에 개인 키를 제출할 수 있도록 보장합니다. 장치의 보안 인클레이브 또는 TPM 개인 키를 활용하여, 등록된 장치와 동일함을 확인하고, 이를 통해 Teleport는 추가 인증이나 자격 증명 없이 개인 키 보고서를 신뢰하고 수락할 수 있도록 하여 사용자 상호작용 없이 스캔 작업을 수행할 수 있게 합니다.

장치가 인증되면, tsh 도구는 개인 키에서 공개 키 지문을 추출합니다. 만약 공개 키가 없는 경우, 공개 키 파일에서 지문을 생성합니다. 그런 다음, 이 지문은 메타데이터와 함께 Teleport 클러스터에 전송됩니다:

  • device_id : 장치의 고유 식별자.
  • public_fingerprint : 사용 가능한 경우 공개 키의 SHA256 지문.
  • derivation_mode : 개인 키에서 공개 키를 도출하는 데 사용되는 방법. 개인 키에서 공개 키가 추출될 경우 private_key , 개인 키가 암호화되고 공개 키가 별도의 파일에 존재할 경우 public_key_file , 또는 공개 키 지문이 사용 불가능한 경우 protected 로 설정될 수 있습니다.

tsh 는 개인 키를 Teleport 클러스터에 전송하지 않으므로, 개인 키는 장치에서 안전하게 유지됩니다. 또한 개인 키 경로나 기타 민감한 정보를 전송하지 않습니다.

전제 조건

  • 실행 중인 Teleport Enterprise 클러스터 v15.4.16/v16.2.0 이상.
  • 계정에 대한 Teleport 정책이 활성화됨.
  • Teleport SSH 서비스가 실행 중인 Linux/macOS 서버.
  • Teleport Device Trust 기능에 등록된 장치.
  • Jamf Pro 통합을 위해 장치는 Jamf Pro에 등록되어 있어야 하며 서명된 tsh 바이너리가 설치되어 있어야 합니다.
  • 자체 호스팅 클러스터의 경우:
    • 최신 license.pem 이 인증 서비스 구성에 사용되고 있는지 확인합니다.
    • 실행 중인 Access Graph 노드 v1.22.0 이상. Access Graph 설정 방법에 대한 자세한 내용은 Teleport 정책 페이지를 확인하십시오.
    • Access Graph 서비스를 실행 중인 노드가 Teleport 인증 서비스에서 도달 가능해야 합니다.

1/3단계. SSH 키 스캐닝 활성화

SSH 키 스캐닝을 활성화하려면 Teleport 클러스터를 구성하여 SSH 승인된 키를 스캔하도록 해야 합니다.

SSH 키 스캐닝 기능을 활성화하려면 Teleport Access Graph 구성 파일을 편집하십시오:

tctl edit access_graph_settings

spec.secrets_scan_config 필드를 아래와 같이 enabled 로 설정합니다:

kind: access_graph_settings
metadata:
  name: access-graph-settings
spec:
  secrets_scan_config: enabled # 가능한 값: enabled, disabled
version: v1

변경 사항을 저장하고 편집기를 종료합니다. 이제 Teleport 클러스터는 Teleport 보호 서버에 SSH 승인된 키를 스캔하라고 알리기 시작합니다. 이 과정은 완료되는 데 몇 분이 걸릴 수 있습니다.

몇 분 후에 Teleport UI의 Access Graph 페이지로 이동하여 가져온 SSH 승인된 키와 로컬 사용자를 확인할 수 있습니다.

2/3단계. SSH 개인 키 스캔하기

Teleport에 등록된 장치에서 tsh CLI 도구를 사용하여 SSH 개인 키를 스캔할 수 있습니다. Jamf Pro를 사용하는 경우 Teleport에 장치를 등록하는 방법에 대한 자세한 내용은 Device Trust를 확인하십시오.

SSH 개인 키를 스캔하려면 등록된 장치에서 다음 명령어를 실행합니다:

tsh scan keys --proxy=teleport.example.com --dirs=/dir1,/dir2

tsh 도구는 지정된 디렉터리와 하위 디렉터리를 스캔하여 SSH 개인 키를 찾고 공개 키 지문을 Teleport 클러스터로 전송합니다. 그런 다음 Teleport 클러스터는 키를 가져와서 Access Graph에 표시합니다.

tsh scan keys 는 다음 플래그를 지원합니다:

  • --proxy : 연결할 Teleport 프록시 주소.
  • --insecure : 프록시의 TLS 인증서 검증 건너뛰기.
  • --dirs : SSH 개인 키를 스캔할 디렉터리의 쉼표로 구분된 목록. 기본 디렉터리는 macOS의 /Users , Linux의 /home , Windows의 C:\\Users 입니다.
  • --skip-paths : 스캔 중 건너뛸 경로의 쉼표로 구분된 목록. 여러 경로와 일치하는 glob 패턴을 지원합니다. 예: --skip-paths="/Users/*/Library/*,/home/*/Library/*".

스캔이 완료되면 tsh 는 발견된 키의 수, 지문 및 경로를 표시합니다. 프로그램 출력은 개인 키 경로가 표시되는 유일한 장소입니다. 경로는 Teleport 클러스터로 전송되지 않습니다.

3/3단계. 접근 그래프 보기

SSH 승인 키와 개인 키가 가져오면 접근 그래프 페이지에서 이를 볼 수 있습니다. 개인 키가 있는 사용자의 기기는 자신이 접근할 수 있는 서버로 가는 직접 경로를 볼 수 있습니다.

표시되는 접근 경로에는 다음과 같은 관계가 포함됩니다:

  • 사용자에게 연결된 장치 노드.
  • 장치에 있는 개인 키를 나타내는 장치 노드에 연결된 개인 키 노드.
  • 등록된 Teleport 보호 서버에 연결된 호스트 사용자.
  • authorized_keys 파일에서 발견된 승인된 키를 나타내는 호스트 사용자 노드에 연결된 승인된 키 노드.
  • 지문이 일치할 경우 불안전한 접근 경로를 나타내는 개인 키와 승인된 키 노드 간의 경로.

불안전한 경로는 사용자의 접근 경로에서도 볼 수 있습니다. 이를 보려면 사용자 노드를 클릭하고 상황에 맞는 메뉴에서 접근 보$1 를 선택합니다. 이렇게 하면 사용자에게 부여된 Teleport 권한, 그들이 접근할 수 있는 리소스, 및 감지된 불안전한 경로가 표시됩니다.

Jamf Pro 통합

Jamf Pro를 사용하여 장치를 관리하는 경우, Teleport와 통합하여 장치 등록 프로세스를 자동화하고 SSH 개인 키를 주기적으로 스캔할 수 있습니다. 장치 등록 및 스캔 프로세스 설정 방법에 대한 자세한 내용은 Jamf Pro 통합 페이지를 확인하십시오.

Jamf Pro 페이지에서 환경설정 > 스크립트로 이동하여 tsh scan keys 명령을 실행하는 새로운 스크립트 명령을 생성합니다. 이때 필요한 플래그를 사용하십시오.

tsh scan keys --proxy=teleport.example.com --dirs=/dir1,/dir2

Jamf Pro 페이지에서 컴퓨터 > 정책으로 이동하여 tsh scan keys 명령을 주기적으로 실행하는 새로운 정기 정책을 생성합니다. 정책은 필요한 플래그로 명령을 실행해야 하며, 정기적으로 실행되도록 일정을 설정해야 합니다. 또한 특정 시간이나 요일에 실행되지 않도록 정책을 설정하여 사용자 경험을 방해하지 않도록 관리할 수 있습니다. 이는 명령이 스캔 중 시스템 리소스를 소모할 수 있기 때문입니다.

tsh 는 스캔을 실행하기 위해 장치에 설치되어 있어야 합니다. tsh 바이너리가 설치되어 있지 않은 경우, 동일한 정책 또는 별도의 정책을 사용하여 장치에 배포하는 것을 고려하십시오.

정책을 생성하면 장치가 SSH 개인 키를 스캔하고 그 지문을 Teleport 클러스터로 전송하기 시작합니다. 키는 가져와지며 접근 그래프에 표시됩니다.

문제 해결

"device not enrolled" 오류

tsh scan keys 명령을 실행할 때 device not enrolled 오류가 발생하면 해당 장치가 Teleport 장치 신뢰 기능에 등록되지 않았음을 의미합니다. 장치를 Teleport에 등록하는 방법에 대한 자세한 내용은 장치 신뢰 페이지를 확인하십시오.

"binary missing signature or entitlements" 오류

신뢰할 수 있는 장치를 등록하고 사용하려면 서명되고 공증된 tsh 바이너리가 필요합니다. 문제를 해결하려면 macOS tsh 설치 프로그램을 다운로드하십시오.

Teleport 원문 보기