Teleport Identity Security로 안전하지 않은 SSH 액세스 탐지하기
Identity Security와 Access Graph를 사용하면 환경 내에서 SSH 키가 어떻게 사용되는지에 대한 인사이트를 얻을 수 있습니다. 이 기능을 통해 다음 영역에 대한 인사이트를 얻을 수 있습니다: Access Graph is a feature of the Teleport Identity Security product available to Teleport Enterprise edition customers.
Identity Security와 Access Graph를 사용하면 환경 내에서 SSH 키가 어떻게 사용되는지에 대한 인사이트를 얻을 수 있습니다. 서버에 있는 모든 SSH authorized key와 회사 관리 노트북에 있는 SSH 개인 키를 스캔함으로써, Identity Security는 액세스 패턴의 시각적 표현을 제공하고 환경의 보안을 강화하는 데 도움을 줍니다.
이 기능을 통해 다음 영역에 대한 인사이트를 얻을 수 있습니다:
- Teleport를 우회하는 데 사용될 수 있는 SSH authorized key가 있는 서버는 어디인가요?
- SSH 서버에 대한 액세스 권한을 부여하는 SSH 개인 키를 가진 사용자는 누구인가요?
- 보호되지 않은 SSH 개인 키가 있는 노트북은 어떤 것인가요?
Access Graph is a feature of the Teleport Identity Security product available to Teleport Enterprise edition customers.
To verify that Access Graph is set up correctly for your cluster, sign in to the Teleport Web UI, click the Identity Security sidebar button, and then the Browse menu item. Identities, resources, etc. should be listed.
작동 방식#
Access Graph는 SSH authorized key와 개인 키를 포함한 다양한 리소스를 동기화합니다.
이러한 리소스는 Access Graph 페이지에서 자세히 설명된 그래프 표현을 사용하여 시각화됩니다.
SSH authorized key 가져오기#
Teleport SSH Service를 실행하는 Teleport 보호 서버는 서버에 있는 SSH authorized key를 지속적으로 스캔합니다. 이 키의 공개 지문은 Teleport Auth Service로 전송되고, 그런 다음 Access Graph에 푸시됩니다. 키 지문과 함께 Teleport 보호 서버는 다음 메타데이터도 전송합니다:
public_fingerprint: 공개 키의 SHA256 지문.host_id: 서버의 고유 식별자.username: 키에 의해 액세스가 부여되는 로컬 사용자 이름.key_comment:authorized_keys파일의 키와 관련된 주석.
기본적으로 Teleport는 authorized key에 대해 $HOME/.ssh/authorized_keys 및 $HOME/.ssh/authorized_keys2 파일을 스캔합니다.
여기서 $HOME은 로컬 또는 LDAP 관리 사용자 여부와 관계없이 시스템의 각 사용자의 홈 디렉터리를 의미합니다.
SSH 개인 키 가져오기#
Teleport의 tsh CLI 도구는 사용자의 노트북에서 SSH 개인 키를 스캔할 수 있습니다.
macOS에서는 /Users, Linux에서는 /home, Windows에서는 C:\Users를 기본으로 하는
지정된 디렉터리를 검색하여 파일을 살펴보며 SSH 개인 키를 식별합니다.
tsh 도구는 Device Trust 기능을 통해 Teleport 클러스터와 인증하며,
등록된 기기만 클러스터에 개인 키를 제출할 수 있도록 보장합니다. 기기의 Secure
Enclave 또는 TPM 개인 키를 활용하여 등록된 것과 동일한 기기임을 확인하고,
Teleport가 추가 인증이나 자격 증명 없이 개인 키 보고를 신뢰하고 수락할 수 있도록 하여
사용자 상호 작용 없이도 스캔 작업을 수행할 수 있습니다.
기기가 인증되면, tsh 도구는 개인 키에서 공개 키 지문을 추출하고,
그렇지 않은 경우 마지막으로 공개 키 파일이 존재하면 해당 파일에서 지문을 생성합니다. 그런 다음 지문은 다음과 같은 메타데이터와 함께 Teleport 클러스터로 전송됩니다:
device_id: 기기의 고유 식별자.public_fingerprint: 공개 키의 SHA256 지문 (사용 가능한 경우).derivation_mode: 개인 키에서 공개 키를 유도하는 데 사용된 방법. 개인 키에서 공개 키가 추출된 경우private_key, 개인 키가 암호화되어 있고 공개 키가 별도 파일로 제공된 경우public_key_file, 공개 키 지문을 사용할 수 없는 경우protected중 하나일 수 있습니다.
tsh는 개인 키 자체를 Teleport 클러스터로 전송하지 않으며, 이를 통해 개인 키가 기기에서 안전하게 유지됩니다.
또한 개인 키 경로나 기타 민감한 정보도 전송하지 않습니다.
사전 요구 사항#
- v15.4.16/v16.2.0 이상의 실행 중인 Teleport Enterprise 클러스터.
- 계정에 Identity Security가 활성화되어 있어야 합니다.
- Teleport SSH Service를 실행하는 Linux/macOS 서버.
- Teleport Device Trust 기능에 등록된 기기.
- Jamf Pro 통합의 경우, 기기가 Jamf Pro에 등록되어 있고 서명된
tsh바이너리가 설치되어 있어야 합니다. - 자체 호스팅 클러스터의 경우:
- Auth Service 구성에서 최신
license.pem이 사용되고 있는지 확인하세요. - v1.22.0 이상의 실행 중인 Access Graph 노드. Access Graph 설정 방법에 대한 자세한 내용은 Identity Security 페이지를 확인하세요.
- Access Graph 서비스를 실행하는 노드는 Teleport Auth Service에서 접근 가능해야 합니다.
- Auth Service 구성에서 최신
1/3단계. SSH 키 스캔 활성화#
SSH 키 스캔을 활성화하려면 SSH authorized key를 스캔하도록 Teleport 클러스터를 구성해야 합니다.
SSH 키 스캔 기능을 활성화하려면 Teleport Identity Security 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 # possible values: enabled, disabled
version: v1
변경 사항을 저장하고 편집기를 종료하세요. 이제 Teleport 클러스터는 Teleport 보호 서버에 SSH authorized key 스캔을 시작하도록 알립니다. 이 프로세스는 완료되는 데 몇 분이 걸릴 수 있습니다.
몇 분 후, Teleport UI의 Access Graph 페이지로 이동하여 가져온 SSH authorized key와 로컬 사용자를 볼 수 있습니다.
2/3단계. SSH 개인 키 스캔#
Teleport에 등록된 기기에서 tsh CLI 도구를 사용하여 SSH 개인 키를 스캔할 수 있습니다. Teleport에 기기를 등록하는 방법에 대한 자세한 내용은, 특히 Jamf Pro를 사용하는 경우 Device Trust를 확인하세요.
SSH 개인 키를 스캔하려면, 등록된 기기에서 다음 명령을 실행하세요:
$ tsh scan keys --proxy= --dirs=
tsh 도구는 지정된 디렉터리와 하위 디렉터리에서 SSH 개인 키를 스캔하고 공개 키 지문을 Teleport 클러스터로 전송합니다. 그러면 Teleport 클러스터가 키를 가져와 Access Graph에 표시합니다.
tsh scan keys는 다음 플래그를 지원합니다:
--proxy: 연결할 Teleport Proxy 주소.--insecure: 프록시의 TLS 인증서 확인을 건너뜁니다.--dirs: SSH 개인 키를 스캔할 디렉터리의 쉼표로 구분된 목록. 기본 디렉터리는 macOS에서는/Users, Linux에서는/home, Windows에서는C:\\Users입니다.--skip-paths: 스캔 중 건너뛸 경로의 쉼표로 구분된 목록. 여러 경로를 일치시키기 위한 glob 패턴을 지원합니다. 예:--skip-paths="/Users/*/Library/*,/home/*/Library/*".
스캔이 완료되면, tsh는 발견된 키의 수, 지문 및 경로를 표시합니다. 프로그램 출력은 개인 키 경로가 표시되는 유일한 곳입니다. 경로는 Teleport 클러스터로 전송되지 않습니다.
3/3단계. Access Graph 보기#
SSH authorized key와 개인 키가 가져와지면, Access Graph 페이지에서 확인할 수 있습니다. 개인 키가 있는 기기를 보유한 사용자는 액세스할 수 있는 서버로의 직접 경로를 볼 수 있습니다.
표시된 액세스 경로에는 다음 관계가 포함됩니다:
- 기기를 소유한 사용자에 연결된 기기 노드.
- 기기에서 발견된 개인 키를 나타내는 Device 노드에 연결된 개인 키 노드.
- 등록된 Teleport 보호 서버에 연결된 호스트 사용자.
authorized_keys파일에서 발견된 authorized key를 나타내는 호스트 사용자 노드에 연결된 authorized key 노드.- 지문이 일치하는 경우 안전하지 않은 액세스 경로를 나타내는 개인 키와 authorized key 노드를 연결하는 경로.
안전하지 않은 경로는 사용자의 액세스 경로에서도 볼 수 있습니다. 이를 보려면 사용자 노드를 클릭하고 컨텍스트 메뉴에서 View Access를 선택하세요. 사용자에게 부여된 Teleport 권한, 액세스할 수 있는 리소스 및 탐지된 안전하지 않은 경로가 표시됩니다.
Access Graph: 전용 ssh_keys SQL 뷰#
v1.25.0 버전부터 Access Graph는 SSH 액세스 경로를 관리하기 위한 전용 ssh_keys SQL 뷰를 도입합니다.
이 뷰는 Teleport를 통해 부여된 액세스 경로를 제외하고 다음에 초점을 맞춥니다:
- ID와 SSH 노드 간에 식별된 액세스 경로를 표시합니다.
tsh scan keys가 일치하는 SSH 개인 키를 감지하지 못하더라도 노드에 구성된 기존 SSH authorized key를 나열합니다.
다음은 ssh_keys 뷰가 잠재적인 백도어를 식별하는 데 어떻게 유용한지 보여주는 몇 가지 예시 쿼리입니다.
- Teleport SSH 노드와 사용자의 모든 SSH 액세스 경로 나열:
SELECT * FROM ssh_keys; - 특정 노드에 대한 안전하지 않은 액세스 경로와 SSH authorized key 보기:
SELECT * FROM ssh_keys WHERE resource='RESOURCE_NAME'; - 레이블을 사용하여 노드 하위 집합에 대한 안전하지 않은 액세스 경로와 SSH authorized key 보기:
SELECT * FROM ssh_keys WHERE resource_labels @> '{"env": "dev"}';
Jamf Pro 통합#
Jamf Pro를 사용하여 기기를 관리하는 경우, 기기 등록 프로세스를 자동화하고 주기적으로 SSH 개인 키를 스캔하기 위해 Teleport와 통합할 수 있습니다. 기기 등록 및 스캔 프로세스 설정 방법에 대한 자세한 내용은 Jamf Pro 통합 페이지를 확인하세요.
Jamf Pro 페이지에서 Settings > Scripts로 이동하여 필요한 플래그와 함께 tsh scan keys 명령을 실행하는 새 스크립트 명령을 생성하세요.
$ tsh scan keys --proxy= --dirs=
Jamf Pro 페이지에서 Computers > Policies로 이동하여 주기적으로 tsh scan keys 명령을 실행하는 새 반복 정책을 생성하세요. 정책은 필요한 플래그와 함께 명령을 실행하고 정기적인 간격으로 실행되도록 예약해야 합니다.
스캔 중에 명령이 시스템 리소스를 소비할 수 있으므로 사용자 경험을 방해하지 않도록
특정 시간이나 요일에 실행되지 않도록 정책을 설정할 수도 있습니다.

스캔을 실행하려면 기기에 tsh가 설치되어 있어야 합니다. tsh 바이너리가 설치되어 있지 않은 경우, 동일한 정책이나 별도의 정책을 사용하여 기기에 배포하는 것을 고려하세요.
정책이 생성되면, 기기는 SSH 개인 키 스캔을 시작하고 지문을 Teleport 클러스터로 전송합니다. 키가 가져와지면 Access Graph에 표시됩니다.
문제 해결#
"device not enrolled" 오류#
tsh scan keys 명령을 실행할 때 device not enrolled 오류가 표시되면, 해당 기기가 Teleport Device Trust 기능에 등록되지 않았음을 의미합니다. Teleport에 기기를 등록하는 방법에 대한 자세한 내용은 Device Trust 페이지를 확인하세요.
"binary missing signature or entitlements" 오류#
서명되고 공증된 tsh 바이너리는 신뢰할 수 있는 기기를 등록하고 사용하는 데 필요합니다. 문제를 해결하려면 macOS tsh 설치 프로그램 다운로드를 받으세요.
