Infograb logo
Teleport 정책으로 안전하지 않은 SSH 액세스 발견하기

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

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

  • Teleport를 우회하는 데 사용될 수 있는 SSH 권한 부여 키가 있는 서버는 무엇인가요?
  • SSH 서버에 대한 액세스를 부여하는 SSH 개인 키를 가진 사용자는 누구인가요?
  • 보호되지 않은 SSH 개인 키를 가진 랩탑은 무엇인가요?

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

Teleport UI에 로그인한 후, 관리 탭으로 이동합니다. 활성화된 경우, 액세스 그래프 옵션은 권한 관리 섹션에서 찾을 수 있습니다.

작동 방식

Teleport 및 Teleport 정책의 액세스 그래프는 SSH 권한 부여 키 및 개인 키를 포함한 다양한 리소스를 동기화합니다.

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

SSH 권한 부여 키 가져오기

Teleport 보호 서버에서 실행되는 Teleport SSH 서비스는 서버에 있는 SSH 권한 부여 키를 지속적으로 스캔합니다. 이러한 키의 공개 지문은 Teleport 인증 서비스에 전송되어 액세스 그래프에 푸시됩니다. 키 지문과 함께 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 클러스터에 인증하며, 이는 등록된 디바이스만이 클러스터에 개인 키를 제출할 수 있도록 보장합니다. 디바이스의 Secure Enclave 또는 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 정책이 활성화된 최신 license.pem.
  • 자가 호스팅 클러스터의 경우, 실행 중인 Access Graph 노드 v1.22.0 이상. 액세스 그래프 설정 방법에 대한 자세한 내용은 액세스 그래프 페이지를 확인하십시오.
  • 자가 호스팅 클러스터의 경우, Access Graph 서비스가 실행 중인 노드는 Teleport 인증 서비스에 도달할 수 있어야 합니다.
  • Teleport SSH 서비스가 실행 중인 Linux/macOS 서버.
  • Teleport 디바이스 신뢰 기능에 등록된 장치들입니다.
  • Jamf Pro 통합의 경우, 장치는 Jamf Pro에 등록되어 있고 서명된 tsh 바이너리가 설치되어야 합니다.

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

SSH 키 스캐닝을 활성화하려면 Teleport 클러스터를 구성하여 SSH 권한 부여 키를 스캔해야 합니다.

SSH 키 스캐닝 기능을 활성화하려면, Teleport 액세스 그래프 구성 파일을 편집하고 spec.secrets_scan_config 필드를 enabled로 설정하십시오. 아래와 같이 표시됩니다:

$ tctl edit access_graph_settings

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

변경 사항을 저장하고 편집기를 종료합니다. 이제 Teleport 클러스터는 Teleport 보호 서버에 SSH 권한 부여 키를 스캔하도록 알리기 시작합니다. 이 프로세스는 완료하는 데 몇 분이 걸릴 수 있습니다.

몇 분 후, Teleport UI에서 액세스 그래프 페이지로 이동하여 가져온 SSH 권한 부여 키와 로컬 사용자를 볼 수 있습니다.

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

Teleport에 등록된 디바이스에서 tsh CLI 도구를 사용하여 SSH 개인 키를 스캔할 수 있습니다. Teleport에 디바이스를 등록하는 방법에 대한 자세한 사항은 디바이스 신뢰를 확인하십시오. 특히 Jamf Pro를 사용하는 경우에 대해서입니다.

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 파일에서 발견된 승인된 키를 나타냅니다.
  • 개인 키와 승인된 키 노드를 연결하는 경로가 있으며, 지문이 일치하면 안전하지 않은 액세스 경로를 나타냅니다.

안전하지 않은 경로도 사용자의 액세스 경로에서 볼 수 있습니다. 이를 보려면 사용자 노드를 클릭하고 컨텍스트 메뉴에서 액세스 보기를 선택하십시오. 이로 인해 사용자에게 부여된 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 클러스터로 전송하기 시작합니다. 그러면 키가 가져와져서 액세스 그래프에 표시됩니다.

문제 해결

"디바이스가 등록되지 않음" 오류

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

"바이너리에 서명 또는 권한이 없음" 오류

신뢰할 수 있는 디바이스에 등록하고 사용하기 위해서는 서명되고 인증된 tsh 바이너리가 필요합니다. 문제를 해결하려면 macOS tsh 설치 프로그램 다운로드를 진행하세요.

Teleport 원문 보기