Infograb logo
인프라 접근을 위한 FedRAMP 준수

Teleport는 인프라에 접근하기 위한 FedRAMP 요구사항을 충족하는 기초를 제공합니다.
여기에는 연방 정보 처리 표준 FIPS 140-2에 대한 지원이 포함됩니다.
이 표준은 미국 정부가 승인한 암호 모듈 표준입니다. 이 문서에서는
Teleport FIPS 모드가 어떻게 작동하는지와 그것이 귀사의 FedRAMP 인증을 받는 데 어떤 도움이 되는지를 설명합니다.

Teleport로 FedRAMP 인증 받기

Teleport는 정부 기관에 판매하는 회사를 지원하기 위해 FedRAMP 및 FIPS 140-2 기능을 포함합니다.

접근 제어

제어Teleport 기능
AC-02 계정 관리사용자가 생성, 업데이트, 삭제, 잠금 또는 잠금 해제될 때 Auth 서비스에서 감사 이벤트가 발생합니다.
AC-03 접근 시행Teleport Enterprise는 다음을 위한 강력한 역할 기반 접근 제어 (RBAC)를 지원합니다:
• 사용자가 접근할 수 있는 인프라 자원 제어.
• 클러스터 수준 구성 제어 (세션 기록, 구성 등)
• 사용자가 서버에 로그인할 때 사용할 수 있는 Unix 로그인을 제어합니다.
AC-07 실패한 로그인 시도Teleport Enterprise는 다음을 위한 강력한 역할 기반 접근 제어 (RBAC)를 지원합니다:
• 사용자가 접근할 수 있는 자원 제어.
• 클러스터 수준 구성 제어 (세션 기록, 구성 등)
• 사용자가 서버에 로그인할 때 사용할 수 있는 Unix 로그인을 제어합니다.
AC-08 시스템 사용 통지Teleport Enterprise는 다음을 위한 강력한 역할 기반 접근 제어 (RBAC)를 지원합니다:
• 사용자가 접근할 수 있는 자원 제어.
• 클러스터 수준 구성 제어 (세션 기록, 구성 등)
• 사용자가 서버에 로그인할 때 사용할 수 있는 Unix 로그인을 제어합니다.
AC-10 동시 세션 제어Teleport 관리자는 Teleport의 RBAC를 사용하여 동시 세션 제한을 정의할 수 있습니다.
AC-12 세션 종료관리자는 세션 잠금을 통해 활성 세션을 종료할 수 있습니다. Teleport는 만료 또는 비활동 시 세션을 종료합니다.
AC-17 원격 접근Teleport 관리자는 시스템 자원에 대한 접근을 허용하거나 거부할 수 있는 구성 가능한 역할로 사용자를 생성합니다.
AC-20 외부 정보 시스템 사용Teleport는 신뢰할 수 있는 클러스터라는 기능을 사용하여 여러 독립 클러스터를 연결하는 것을 지원합니다. 한 클러스터에서 다른 클러스터로의 접근을 허용할 때, 역할은 접근 범위의 미리 정의된 관계에 따라 매핑됩니다.

감사 및 책임

제어Teleport 기능
AU-03, AU-04, AU-12 감사 및 책임 – 감사 기록의 내용 및 AU-12 감사 생성Teleport에는 다음과 같은 클러스터 전체 이벤트를 기록하는 감사 로그가 포함되어 있습니다:
• 로그인 실패 시도.
• 실행된 명령(SSH "exec" 명령).
• 전달된 포트.
• 시작된 파일 전송.
AU-10 부인 방지Teleport 감사 로그는 이벤트와 전체 SSH 세션에 대한 감사를 모두 지원합니다. 부인 방지를 위해 전체 세션을 재생할 수 있고 볼 수 있습니다.

구성 관리

제어Teleport 기능
CM-08 정보 시스템 구성요소 인벤토리Teleport는 클러스터 내 모든 노드의 실시간 목록을 유지합니다. 이 노드 목록은 사용자(접근할 수 있는 부분 집합만 봄)와 관리자가 언제든지 쿼리할 수 있습니다.

식별 및 인증

제어Teleport 기능
IA-02 동시 세션 제어GitHub, Okta, Google 등 SSO 공급자와 통합됩니다. 자체 SSO 공급자로 작동합니다. 세션당 MFA를 포함하여 다단계 인증(MFA)을 적용합니다. PIV 호환 하드웨어 키를 지원하며 연결 및 사용자 제한이 설정됩니다.
IA-04 식별자 관리여러 고유 식별자를 유지합니다: 로컬 사용자는 고유해야 합니다(고유 사용자 이름), 역할은 고유 이름이 필요하고 SSO를 통해 조직 역할에 연결됩니다. 장치의 식별자는 무작위로 생성된 고유 ID(UUID)입니다.
IA-08 식별 및 인증 (비조직 사용자)Teleport는 PIV 호환 하드웨어 키를 지원합니다.
IA-03 장치 식별 및 인증Teleport는 Teleport 인증 기관에서 발급한 유효한 x509 또는 SSH 인증서가 필요하여 Teleport 구성 요소 간의 장치 간 네트워크 연결을 수립합니다.

시스템 및 통신 보호

제어Teleport 기능
SC-10 네트워크 연결 해제Teleport는 Teleport 인증 기관에서 발급한 유효한 X.509 또는 SSH 인증서가 필요하여 Teleport 구성 요소 간의 장치 간 네트워크 연결을 수립합니다.
SC-12 암호 키 수립 및 관리Teleport는 추가로 x509 및 SSH 인증서를 발급하기 위한 인증 기관(CA) 역할을 하는 암호 키를 초기화합니다. 발급된 SSH 및 x509 사용자 인증서는 CA에 의해 서명되며 기본적으로 단기적입니다. SSH 호스트 인증서도 CA에 의해 서명됩니다. Teleport는 하드웨어 보안 모듈(HSM)을 지원합니다.
Teleport Enterprise는 FIPS 140-2 준수 라이브러리(BoringCrypto)로 빌드됩니다.
또한 Teleport Enterprise가 FedRAMP/FIPS 140-2 모드일 때, Teleport는 FIPS 140-2 준수 암호화만 시작하고 사용합니다.
SC-13 암호화 사용Teleport Enterprise는 FIPS 140-2 준수 라이브러리(BoringCrypto)로 빌드됩니다. 또한 Teleport Enterprise가 FedRAMP/FIPS 140-2 모드일 때, Teleport는 FIPS 140-2 준수 암호화만 시작하고 사용합니다.
SC-17 공개 키 기반 구조Teleport는 암호 키를 초기화하여 추가로 X.509 및 SSH 인증서를 발급하기 위한 인증 기관(CA) 역할을 수행합니다. 발급된 SSH 및 X.509 사용자 인증서는 CA에 의해 서명되며 기본적으로 단기적입니다. SSH 호스트 인증서도 CA에 의해 서명됩니다.
SC-23 세션 진위Teleport SSH 및 TLS 세션은 SSH 사용자 및 X.509 클라이언트 인증서로 보호됩니다. 웹 UI 접근을 위해 Teleport는 세션을 인증하기 위해 브라우저 토큰에 저장된 배너 토큰 인증을 사용합니다. 사용자가 로그아웃할 때 SSH 및 TLS 인증서는 디스크에서 삭제되고 쿠키는 브라우저에서 제거됩니다.

mTLS

Teleport는 사용자 클라이언트와 Teleport 서버 간의 모든 통신에 대해 mTLS를 구현합니다. 아래에 나열된 몇 가지 예외가 있습니다.

SSO Identity Provider에 대한 인증이 성공적으로 이루어진 후, Teleport는 자체 내부 x.509 인증 기관(CA)에 의해 서명된 인증된 사용자 x.509 클라이언트 인증서를 발급합니다. 대상 Teleport 서비스 및 클라이언트는 모든 대상 SSH, K8s, 데이터베이스 및 웹 애플리케이션 연결에 대해 유효한 x.509 인증서 및 mTLS를 요구합니다.

ATO 경계 내에서는 Teleport 프록시와 모든 프로토콜이 실행되는 내부 호스트 간의 통신에 mTLS가 사용됩니다.

mTLS 예외

  • Teleport 구성 요소는 TLS만 요구되는 읽기 전용 상태 점검 REST 엔드포인트를 제공합니다.
  • Teleport는 Windows Desktop 및 SSH용 선택적 웹 UI를 제공합니다. 웹 UI 접근을 위해 Teleport는 TLS + 세션 쿠키 + 프록시로 구성된 배너 토큰을 사용합니다. Teleport 프록시는 웹 세션을 mTLS로 변환하여 Teleport 서버에 연결합니다.
  • Teleport는 선택적 SSH 호환 모드를 제공합니다. 이 모드에서는 Teleport가 Teleport OpenSSH CA에 의해 발급되고 서명된 OpenSSH 클라이언트 인증서를 사용하여 대상 OpenSSH 서비스에 연결합니다.
  • Teleport 프록시와 Teleport 데스크탑 에이전트 간의 연결은 mTLS이지만, Teleport 데스크탑 에이전트와 RDP 서버 간의 연결은 TLS만 가능합니다. 에이전트는 Teleport의 내부 CA에서 발급된 사용자 인증서를 포함하는 가상 PIV 호환 스마트카드를 통해 RDP 서버에 인증합니다.

FIPS mTLS 세부정보

FIPS 빌드에서 Teleport는 모든 프로토콜에 대해 Go의 BoringCrypto 기반 네트워킹 스택을 사용합니다.

FIPS 모드에서 사용되는 암호 알고리즘에 대한 자세한 목록은 Teleport FIPS 문서를 참조하시기 바랍니다.

또한 적절한 FIPS 준수 이진 파일을 다운로드하고 설치하기 위해 설치 지침을 따를 수 있습니다.
Teleport Enterprise 버전을 위해 운영 환경 및 패키지 관리자를 위해 압축된 아카이브(tarball)에서 다운로드하고 설치할 수 있습니다.

예를 들어, 다음 명령을 실행하여 압축된 아카이브에서 다운로드하고 설치할 수 있습니다:

Teleport Enterprise 고객은 [Teleport 계정](https://teleport.sh)에서 사용자 지정 FIPS 패키지를 다운로드할 수 있습니다. `Linux 64-bit (FedRAMP/FIPS)`를 찾으십시오.
curl https://cdn.teleport.dev/teleport-ent-16.2.0-linux-$SYSTEM_ARCH-fips-bin.tar.gz.sha256
<checksum> <filename>
curl -O https://cdn.teleport.dev/teleport-ent-16.2.0-linux-$SYSTEM_ARCH-fips-bin.tar.gz

체크섬이 일치하는지 확인

shasum -a 256 teleport-ent-16.2.0-linux-$SYSTEM_ARCH-fips-bin.tar.gz

tar -xvf teleport-ent-16.2.0-linux-$SYSTEM_ARCH-fips-bin.tar.gz
cd teleport-ent
sudo ./install

다운로드 및 설치 후, 모든 Teleport Enterprise 이진 파일은 /usr/local/bin 디렉토리에 설치됩니다. teleport version 명령을 실행하고 X:boringcrypto 라이브러리가 나열되어 있는지 확인하여 FIPS 준수 이진 파일이 설치되었는지 확인할 수 있습니다. 예를 들어:

teleport version
Teleport Enterprise 16.2.0 api/14.0.0-gd1e081e 1.22 X:boringcrypto

귀하의 Teleport 클러스터가 AWS에서 실행되는 경우, 클러스터는 서비스가 낮거나 중간의 영향 수준일 경우 US-East 또는 US-West 지역에서 실행될 수 있습니다. 높은 영향 수준의 서비스에 대해서는 FIPS를 지원하기 위해 GovCloud 지역에서 클러스터가 실행되어야 합니다.

Teleport Auth 서비스 구성

다음 구성 파일을 Teleport Auth 서비스의 /etc/teleport.yaml로 저장하십시오:

version: v3
teleport:
  auth_token: xxxx-token-xxxx
  # 클러스터에 새 노드를 추가하기 위한 미리 정의된 토큰. 각 토큰은 새 노드가 맡을 수 있는 역할을 지정합니다. 
  # 더 안전한 방식으로 노드를 추가하는 방법은 `ttl node add --ttl` 명령을 사용하여 자동 만료 
  # 토큰을 생성하는 것입니다.
  #
  # 32바이트 이상의 충분히 임의의 토큰을 생성하기 위해 `pwgen`과 같은 도구를 사용하는 것을 권장합니다.
  # 또한 인증 서버의 IP인 "10.1.1.10:3025"를 사용할 수도 있습니다.
  auth_server: 10.1.1.10:3025

auth_service:
  # 인증 서비스를 활성화합니다:
  enabled: true

  tokens:
  # 이 정적 토큰은 다른 노드가 이 Teleport 클러스터에 가입하는 데 사용됩니다
  - proxy,node:xxxx-token-xxxx
  # 이 토큰은 다른 Teleport 클러스터와의 신뢰를 설정하는 데 사용됩니다
  - trusted_cluster:xxxx-different-token-xxxx

  # FIPS를 지원하려면 로컬 인증을 끄고 Teleport에 로그인하기 위한 SSO 커넥터가 필요합니다.
  authentication:
    # FIPS 모드에서는 로컬 인증을 false로 설정해야 합니다.
    local_auth: false
    type: saml

  # 프록시 모드를 사용하는 경우, Teleport에는 호스트 키 검사가 필요합니다.
  # 이 설정은 FIPS 모드에서 Teleport를 시작하는 데 필요합니다.
  proxy_checks_host_keys: true

  # 이 노드에서 SSH도 활성화됩니다:
ssh_service:
  enabled: false

Teleport SSH 서비스 구성

다음 구성 파일을 Node 서비스 호스트의 /etc/teleport.yaml로 저장하십시오:

version: v3
teleport:
  auth_token: xxxx-token-xxxx

  # 프록시 서비스 주소를 지정하거나...
  proxy_server: teleport.example.com:3080
  # 또는 인증 서비스 주소를 지정합니다.
  auth_server: 10.1.1.10:3025

# SSH 서비스를 활성화하고 인증 및 프록시 서비스를 비활성화합니다:
ssh_service:
  enabled: true
auth_service:
  enabled: false
proxy_service:
  enabled: false

서비스 단위 파일 구성

예제 디렉토리에서 systemd 서비스 단위 파일을 다운로드하여 두 서버 모두에 /etc/systemd/system/teleport.service로 저장합니다.

두 서버에서 이 작업을 실행하십시오:

sudo systemctl daemon-reload
sudo systemctl enable teleport

FIPS 모드에서 Teleport 시작

teleport start --fips를 사용할 때, Teleport는 FIPS 모드로 시작됩니다.

  • --fips 플래그가 선택되면, Teleport는 적절한 암호 모듈(BoringCrypto)로 컴파일된 이진 파일이 없는 경우 시작하지 못합니다.
  • TLS 또는 SSH 암호화 원시가 지정되지 않으면, Teleport는 FIPS 준수 암호 알고리즘을 기본으로 사용합니다.
  • TLS 또는 SSH 암호화 원시가 FIPS 140-2 준수하지 않는 경우, Teleport는 시작하지 못합니다.
  • Teleport는 DynamoDB와 S3 모두에 대해 항상 저장시 암호화를 활성화합니다.
  • 기록 프록시 모드가 선택된 경우, 호스트 인증서의 유효성을 항상 확인해야 합니다.
  • ps aux와 같은 명령을 실행하면 Teleport가 FIPS 모드에서 실행되고 있음을 확인하는 데 유용할 수 있습니다.

FIPS 모드에서 Helm을 사용하여 Teleport 클러스터 배포

당신의 cluster-values.yaml 구성에서 다음 값을 설정하십시오:

enterpriseImage: public.ecr.aws/gravitational/teleport-ent-fips-distroless
authentication:
  localAuth: false

Teleport 버전 15부터는 FIPS 모드를 활성화하기 위해 values 파일에 versionOverride 및 extraArgs를 설정할 필요가 없습니다.

기본 암호 알고리즘

FIPS 모드에서 Teleport는 기본적으로 다음의 암호 알고리즘을 사용합니다.

SSH를 위한 기본 FIPS 암호:

  • aes128-gcm@openssh.com
  • aes256-gcm@openssh.com
  • aes128-ctr
  • aes192-ctr
  • aes256-ctr

SSH를 위한 기본 FIPS 키 교환 알고리즘(KEX):

  • ecdh-sha2-nistp256
  • ecdh-sha2-nistp384

SSH를 위한 기본 FIPS 메시 인증 코드(MAC):

  • hmac-sha2-256-etm@openssh.com
  • hmac-sha2-512-etm@openssh.com
  • hmac-sha2-256
  • hmac-sha2-512

SSH를 위한 기본 FIPS 공개 키 인증 알고리즘:

  • ecdsa-sha2-nistp256
  • ecdsa-sha2-nistp384
  • rsa-sha2-256
  • rsa-sha2-512

TLS 1.2를 위한 기본 FIPS 암호 모음:

  • tls-ecdhe-ecdsa-with-aes-128-gcm-sha256
  • tls-ecdhe-rsa-with-aes-128-gcm-sha256
  • tls-ecdhe-ecdsa-with-aes-256-gcm-sha384
  • tls-ecdhe-rsa-with-aes-256-gcm-sha384

TLS 1.3을 위한 기본 FIPS 암호 모음:

  • tls-aes-128-gcm-sha256
  • tls-aes-256-gcm-sha384

FedRAMP 감사 로그

연결이 종료되면(*srv.ServerContext 종료 시), 전송 및 수신된 총 데이터가 감사 로그에 기록됩니다.

Teleport FIPS 이진 파일이 무엇을 강제합니까?

  • TLS 프로토콜 버전은 TLS 1.2 및 TLS 1.3으로 제한됩니다.
  • NaCl과 같은 비준수 알고리즘의 모든 사용이 제거되고 비준수 알고리즘인 AES-GCM으로 대체됩니다.
  • Teleport는 BoringCrypto로 컴파일됩니다.
  • 사용자, 호스트 및 CA 인증서(기록 프록시 모드의 호스트 키)는 모두 2048비트 RSA 개인 키만 사용합니다.

원격 데스크탑 접근

Teleport는 RDP 연결을 위해 Rust를 사용하며, 따라서 FIPS 준수 TLS 암호화를 위해 Cloudflare의 boring 라이브러리의 포크를 사용합니다. 상기 명세에 대한 주요 주목할 만한 차이점은
TLS가 TLS 1.2로만 제한된다는 것입니다(1.3은 지원되지 않습니다).

arm64 FIPS 빌드는 Windows 데스크탑 접근을 지원하지 않음을 유의하십시오.

Teleport 원문 보기