InfoGrab Docs

인프라 접근을 위한 FedRAMP 컴플라이언스

요약

Teleport는 인프라 접근 목적으로 FedRAMP 요구사항을 충족하기 위한 기반을 제공합니다. Teleport Enterprise FIPS 빌드는 FIPS 140 검증 모듈에 대해 컴파일됩니다. Teleport는 정부 기관에 제품을 판매하는 기업을 지원하기 위해 FedRAMP 및 FIPS 기능을 포함합니다.

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

FIPS 모듈#

Teleport Enterprise FIPS 빌드는 FIPS 140 검증 모듈에 대해 컴파일됩니다.

  • 17.7.3+ 및 18.0.0+ 버전의 Teleport 릴리즈는 BoringCrypto 태그 fips-20220613을 사용합니다 (CMVP 인증서 #4735, FIPS 140-3)
  • 17.7.3 이전 버전의 Teleport 릴리즈는 BoringCrypto 태그 fips-20210429를 사용합니다 (CMVP 인증서 #4407, FIPS 140-2)

Teleport로 FedRAMP 승인 획득#

Teleport는 정부 기관에 제품을 판매하는 기업을 지원하기 위해 FedRAMP 및 FIPS 기능을 포함합니다.

접근 제어#

제어 항목 Teleport 기능
[AC-02 계정 관리]([fedramp.control_url]AC-02) Teleport는 GitHub, Okta, Google 등의 SSO 공급자와 통합됩니다. 인프라 접근을 위한 역할 기반 접근 제어를 지원합니다. Teleport를 통한 인증서 기반 인증 및 감사 로깅. 사용자가 생성, 업데이트, 삭제, 잠금 또는 잠금 해제될 때 Auth Service에서 감사 이벤트가 발생합니다.
[AC-03 접근 시행]([fedramp.control_url]AC-03) Teleport Enterprise는 다음을 위한 강력한 역할 기반 접근 제어(RBAC)를 지원합니다:
• 사용자가 접근할 수 있거나 없는 인프라 리소스 제어.
• 클러스터 수준 구성 제어 (세션 녹화, 구성 등)
• 서버에 로그인할 때 사용자가 사용할 수 있는 Unix 로그인 제어.
[AC-07 로그온 시도 실패]([fedramp.control_url]AC-07) Teleport는 로컬 계정과 SSO 기반 계정(GitHub, Google Apps, Okta 등) 두 가지 유형의 사용자를 지원합니다. 로컬 계정의 경우, 기본적으로 Teleport는 5번의 로그인 시도 실패 후 30분 동안 계정을 잠급니다. SSO 기반 계정의 경우, 잘못된 로그인 시도 횟수와 잠금 기간은 SSO 공급자에 의해 제어됩니다.
[AC-08 시스템 사용 알림]([fedramp.control_url]AC-08) Teleport는 Linux PAM(플러그어블 인증 모듈)과 통합됩니다. PAM 모듈은 세션 관리 프리미티브 내에서 MOTD(오늘의 메시지) 모듈을 사용하여 로그인 시 사용자 정의 메시지를 표시하는 데 사용할 수 있습니다. 사전 인증 MOTD도 사용 가능합니다.
[AC-10 동시 세션 제어]([fedramp.control_url]AC-10) Teleport 관리자는 Teleport의 RBAC를 사용하여 동시 세션 제한을 정의할 수 있습니다. 최대 연결 수와 동시에 연결된 최대 사용자 수를 모두 지원합니다.
[AC-12 세션 종료]([fedramp.control_url]AC-12) 관리자는 세션 잠금으로 활성 세션을 종료할 수 있습니다. Teleport는 만료 또는 비활성 시 세션을 종료합니다. 모든 세션 로그아웃(자격 증명 파기)은 모든 세션 종료를 나타내며 명시적인 로그아웃 메시지를 포함합니다.
[AC-17 원격 접근]([fedramp.control_url]AC-17) Teleport 관리자는 시스템 리소스에 대한 접근을 허용하거나 거부하는 데 사용할 수 있는 구성 가능한 역할로 사용자를 생성합니다.
[AC-20 외부 정보 시스템 사용]([fedramp.control_url]AC-20) Teleport는 신뢰할 수 있는 클러스터라는 기능을 사용하여 여러 독립 클러스터를 연결하는 것을 지원합니다. 한 클러스터에서 다른 클러스터로의 접근을 허용할 때, 역할은 접근 범위의 미리 정의된 관계에 따라 매핑됩니다.

감사 및 책임#

제어 항목 Teleport 기능
[AU-03, AU-04, AU-12 감사 및 책임]([fedramp.control_url]AU) – 감사 기록 내용 및 [AU-12 감사 생성]([fedramp.control_url]AU-12) Teleport에는 다음과 같은 클러스터 전체 이벤트를 기록하는 감사 로그가 포함되어 있습니다:
• 로그인 시도 실패.
• 실행된 명령 (SSH "exec" 명령).
• 포워딩된 포트.
• 시작된 파일 전송.
[AU-10 부인 방지]([fedramp.control_url]AU-10) Teleport 감사 로깅은 이벤트뿐만 아니라 전체 SSH 세션의 감사도 지원합니다. 부인 방지 목적으로 전체 세션을 다시 재생하고 볼 수 있습니다.

구성 관리#

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

식별 및 인증#

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

시스템 및 통신 보호#

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

mTLS#

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

SSO 아이덴티티 공급자에 대한 성공적인 인증 후, Teleport는 인증된 사용자에게 자체 내부 x.509 CA에 의해 서명된 x.509 클라이언트 인증서를 발급합니다. 대상 Teleport 서비스 및 클라이언트는 모든 대상 SSH, K8s, 데이터베이스, 웹 애플리케이션 연결에 대해 유효한 x.509 인증서와 mTLS를 요구합니다.

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

mTLS 예외#

  • Teleport 구성 요소는 TLS만 필요한 읽기 전용 헬스 체크 REST 엔드포인트를 제공합니다.
  • Teleport는 Windows 데스크톱 및 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는 모든 프로토콜에 FIPS 140 검증 네트워킹 스택을 사용합니다.

FIPS 모드에서 사용되는 암호화 알고리즘의 자세한 목록은 Teleport FIPS 문서를 참조하세요.

또한 Teleport Enterprise 에디션의 설치 지침을 따라 운영 환경 및 패키지 관리자 또는 압축 아카이브(tarball)에서 적절한 FIPS 바이너리를 다운로드하고 설치할 수 있습니다.

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

Teleport Enterprise 고객은 [Teleport 계정](https://teleport.sh)에서 사용자 정의 FIPS 패키지를 다운로드할 수 있습니다. `Linux 64-bit (FedRAMP/FIPS)`를 찾으세요.

$ curl https://cdn.teleport.dev/teleport-ent-(= teleport.version =)-linux--fips-bin.tar.gz.sha256
<checksum> <filename>
$ curl -O https://cdn.teleport.dev/teleport-ent-(= teleport.version =)-linux--fips-bin.tar.gz

# 체크섬이 일치하는지 확인
$ shasum -a 256 teleport-ent-(= teleport.version =)-linux--fips-bin.tar.gz

$ tar -xvf teleport-ent-(= teleport.version =)-linux--fips-bin.tar.gz
$ cd teleport-ent
$ sudo ./install

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

$ teleport version

출력은 X:boringcrypto로 끝나야 합니다.

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

Teleport Auth Service 구성#

Teleport Auth Service 호스트의 /etc/teleport.yaml로 다음 구성 파일을 저장합니다:

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

auth_service:
  # auth service 활성화:
  enabled: true

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

  # FIPS를 지원하려면 local_auth를 비활성화해야 하고
  # Teleport에 로그인하려면 SSO 커넥터가 필요합니다.
  authentication:
    # FIPS 모드에서는 local_auth를 false로 설정해야 합니다.
    local_auth: false
    type: saml

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

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

Teleport SSH Service 구성#

Node Service 호스트의 /etc/teleport.yaml로 다음 구성 파일을 저장합니다:

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

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

# SSH Service를 활성화하고 Auth 및 Proxy Service를 비활성화합니다:
ssh_service:
  enabled: true
auth_service:
  enabled: false
proxy_service:
  enabled: false

서비스 유닛 파일 구성#

GitHub의 예제 디렉터리에서 systemd 서비스 유닛 파일을 다운로드하고 두 서버에 /etc/systemd/system/teleport.service로 저장합니다.

# 두 서버 모두에서 실행:
$ sudo systemctl daemon-reload
$ sudo systemctl enable teleport

FIPS 모드로 Teleport 시작#

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

  • --fips 플래그가 선택된 경우, 바이너리가 적절한 암호화 모듈로 컴파일되지 않으면 Teleport는 시작에 실패합니다.
  • TLS 또는 SSH 암호화 프리미티브가 지정되지 않은 경우, Teleport는 FIPS 호환 암호화 알고리즘을 기본값으로 사용합니다.
  • TLS 또는 SSH 암호화 프리미티브가 FIPS 140 호환이 아닌 경우, Teleport는 시작에 실패합니다.
  • Teleport는 항상 DynamoDB와 S3 모두에 대해 저장 시 암호화를 활성화합니다.
  • 녹화 프록시 모드가 선택된 경우, 호스트 인증서 검증이 항상 수행되어야 합니다.
  • ps aux와 같은 명령을 실행하면 Teleport가 FIPS 모드로 실행 중임을 확인하는 데 유용할 수 있습니다.

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

cluster-values.yaml 구성에 다음 값을 설정합니다:

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

versionOverrideextraArgs는 FIPS 모드를 활성화하기 위해 values 파일에 설정할 필요가 없습니다.

기본 암호화 알고리즘#

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는 FIPS 140 검증 암호화 모듈로 컴파일됩니다.
  • 사용자, 호스트, CA 인증서(및 녹화 프록시 모드의 호스트 키)는 NIST-P256 곡선의 ECDSA 키 또는 2048비트 RSA 개인 키만 사용합니다.

원격 데스크톱 접근#

Teleport는 RDP 연결에 Rust를 사용하므로, FIPS 호환 TLS 암호화를 위해 내부적으로 Cloudflare의 boring 라이브러리 포크를 사용합니다. 위에 나열된 사양과의 주요 차이점은 TLS가 TLS 1.2로만 제한된다는 것입니다(1.3은 지원되지 않음).

arm64 FIPS 빌드는 Windows 데스크톱 접근을 지원하지 않습니다.

비FIPS에서 FIPS로 마이그레이션#

v17부터 Teleport의 새 설치는 기본적으로 Ed25519 키를 사용합니다. 이는 현재 FIPS 바이너리에서 지원되지 않습니다. Teleport Auth Service가 이미 표준 바이너리로 또는 --fips 플래그 없이 배포된 경우, 인증 기관을 업데이트해야 합니다. 그렇지 않으면 User Message: only RSA and ECDSA keys supported 오류가 발생합니다.

FIPS 설치로 마이그레이션하려면, 서명 알고리즘 스위트를 설정하여 fips-v1로 지정합니다. 그런 다음 Ed25519 키가 있는 모든 CA는 CA 교체를 진행해야 합니다. tctl status 명령은 v17+에서 사용 중인 서명 알고리즘을 확인하는 데 사용할 수 있습니다. 모든 CA 교체가 완료된 후 FIPS 바이너리 설치를 진행합니다.

Teleport FIPS 바이너리 사용의 트레이드오프#

Teleport의 FIPS 바이너리 사용을 전면적인 보안 개선으로 고려해서는 안 됩니다. FedRAMP와 같은 특정 규정 및 컴플라이언스 요구사항을 충족하도록 설계되었지, 범용 배포에서 보안을 향상시키기 위한 것이 아닙니다.

엄격하게 요구되지 않는 경우 Teleport FIPS 빌드 사용을 고려할 때 여러 트레이드오프가 있습니다.

제한된 암호 스위트 선택#

FIPS 빌드는 FIPS 인증 프로그램 하에 승인된 암호, 키 교환 메커니즘 및 서명 알고리즘만 허용합니다. 엄격하고 긴 인증 과정으로 인해, FIPS 승인 알고리즘은 종종 최신 기술보다 뒤처집니다. 결과적으로, FIPS 빌드는 향상된 성능이나 미래 지향적 보안 속성을 가진 최신 알고리즘(예: ChaCha20-Poly1305, Ed25519)을 지원하지 않습니다.

성능 저하#

암호화 작업은 표준 빌드에 비해 최대 2배 느릴 수 있습니다. 이는 대용량 클러스터의 처리량에 영향을 미칠 수 있습니다.

운영 복잡성#

FIPS 빌드를 실행하면 피어가 다른 암호 지원을 기대하는 경우 연결 문제 해결과 같은 추가적인 유지 관리 부담이 발생할 수 있습니다.

컴플라이언스 필요 없이 보안 이점 없음#

규제 환경 외부에서 FIPS 바이너리를 사용해도 Teleport의 보안 태세가 향상되지 않습니다. 사실, 현대 암호화 알고리즘 사용을 제한함으로써 순효과가 부정적일 수 있습니다.

인프라 접근을 위한 FedRAMP 컴플라이언스

원문 보기
요약

Teleport는 인프라 접근 목적으로 FedRAMP 요구사항을 충족하기 위한 기반을 제공합니다. Teleport Enterprise FIPS 빌드는 FIPS 140 검증 모듈에 대해 컴파일됩니다. Teleport는 정부 기관에 제품을 판매하는 기업을 지원하기 위해 FedRAMP 및 FIPS 기능을 포함합니다.

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

FIPS 모듈#

Teleport Enterprise FIPS 빌드는 FIPS 140 검증 모듈에 대해 컴파일됩니다.

  • 17.7.3+ 및 18.0.0+ 버전의 Teleport 릴리즈는 BoringCrypto 태그 fips-20220613을 사용합니다 (CMVP 인증서 #4735, FIPS 140-3)
  • 17.7.3 이전 버전의 Teleport 릴리즈는 BoringCrypto 태그 fips-20210429를 사용합니다 (CMVP 인증서 #4407, FIPS 140-2)

Teleport로 FedRAMP 승인 획득#

Teleport는 정부 기관에 제품을 판매하는 기업을 지원하기 위해 FedRAMP 및 FIPS 기능을 포함합니다.

접근 제어#

제어 항목 Teleport 기능
[AC-02 계정 관리]([fedramp.control_url]AC-02) Teleport는 GitHub, Okta, Google 등의 SSO 공급자와 통합됩니다. 인프라 접근을 위한 역할 기반 접근 제어를 지원합니다. Teleport를 통한 인증서 기반 인증 및 감사 로깅. 사용자가 생성, 업데이트, 삭제, 잠금 또는 잠금 해제될 때 Auth Service에서 감사 이벤트가 발생합니다.
[AC-03 접근 시행]([fedramp.control_url]AC-03) Teleport Enterprise는 다음을 위한 강력한 역할 기반 접근 제어(RBAC)를 지원합니다:
• 사용자가 접근할 수 있거나 없는 인프라 리소스 제어.
• 클러스터 수준 구성 제어 (세션 녹화, 구성 등)
• 서버에 로그인할 때 사용자가 사용할 수 있는 Unix 로그인 제어.
[AC-07 로그온 시도 실패]([fedramp.control_url]AC-07) Teleport는 로컬 계정과 SSO 기반 계정(GitHub, Google Apps, Okta 등) 두 가지 유형의 사용자를 지원합니다. 로컬 계정의 경우, 기본적으로 Teleport는 5번의 로그인 시도 실패 후 30분 동안 계정을 잠급니다. SSO 기반 계정의 경우, 잘못된 로그인 시도 횟수와 잠금 기간은 SSO 공급자에 의해 제어됩니다.
[AC-08 시스템 사용 알림]([fedramp.control_url]AC-08) Teleport는 Linux PAM(플러그어블 인증 모듈)과 통합됩니다. PAM 모듈은 세션 관리 프리미티브 내에서 MOTD(오늘의 메시지) 모듈을 사용하여 로그인 시 사용자 정의 메시지를 표시하는 데 사용할 수 있습니다. 사전 인증 MOTD도 사용 가능합니다.
[AC-10 동시 세션 제어]([fedramp.control_url]AC-10) Teleport 관리자는 Teleport의 RBAC를 사용하여 동시 세션 제한을 정의할 수 있습니다. 최대 연결 수와 동시에 연결된 최대 사용자 수를 모두 지원합니다.
[AC-12 세션 종료]([fedramp.control_url]AC-12) 관리자는 세션 잠금으로 활성 세션을 종료할 수 있습니다. Teleport는 만료 또는 비활성 시 세션을 종료합니다. 모든 세션 로그아웃(자격 증명 파기)은 모든 세션 종료를 나타내며 명시적인 로그아웃 메시지를 포함합니다.
[AC-17 원격 접근]([fedramp.control_url]AC-17) Teleport 관리자는 시스템 리소스에 대한 접근을 허용하거나 거부하는 데 사용할 수 있는 구성 가능한 역할로 사용자를 생성합니다.
[AC-20 외부 정보 시스템 사용]([fedramp.control_url]AC-20) Teleport는 신뢰할 수 있는 클러스터라는 기능을 사용하여 여러 독립 클러스터를 연결하는 것을 지원합니다. 한 클러스터에서 다른 클러스터로의 접근을 허용할 때, 역할은 접근 범위의 미리 정의된 관계에 따라 매핑됩니다.

감사 및 책임#

제어 항목 Teleport 기능
[AU-03, AU-04, AU-12 감사 및 책임]([fedramp.control_url]AU) – 감사 기록 내용 및 [AU-12 감사 생성]([fedramp.control_url]AU-12) Teleport에는 다음과 같은 클러스터 전체 이벤트를 기록하는 감사 로그가 포함되어 있습니다:
• 로그인 시도 실패.
• 실행된 명령 (SSH "exec" 명령).
• 포워딩된 포트.
• 시작된 파일 전송.
[AU-10 부인 방지]([fedramp.control_url]AU-10) Teleport 감사 로깅은 이벤트뿐만 아니라 전체 SSH 세션의 감사도 지원합니다. 부인 방지 목적으로 전체 세션을 다시 재생하고 볼 수 있습니다.

구성 관리#

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

식별 및 인증#

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

시스템 및 통신 보호#

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

mTLS#

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

SSO 아이덴티티 공급자에 대한 성공적인 인증 후, Teleport는 인증된 사용자에게 자체 내부 x.509 CA에 의해 서명된 x.509 클라이언트 인증서를 발급합니다. 대상 Teleport 서비스 및 클라이언트는 모든 대상 SSH, K8s, 데이터베이스, 웹 애플리케이션 연결에 대해 유효한 x.509 인증서와 mTLS를 요구합니다.

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

mTLS 예외#

  • Teleport 구성 요소는 TLS만 필요한 읽기 전용 헬스 체크 REST 엔드포인트를 제공합니다.
  • Teleport는 Windows 데스크톱 및 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는 모든 프로토콜에 FIPS 140 검증 네트워킹 스택을 사용합니다.

FIPS 모드에서 사용되는 암호화 알고리즘의 자세한 목록은 Teleport FIPS 문서를 참조하세요.

또한 Teleport Enterprise 에디션의 설치 지침을 따라 운영 환경 및 패키지 관리자 또는 압축 아카이브(tarball)에서 적절한 FIPS 바이너리를 다운로드하고 설치할 수 있습니다.

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

Teleport Enterprise 고객은 [Teleport 계정](https://teleport.sh)에서 사용자 정의 FIPS 패키지를 다운로드할 수 있습니다. `Linux 64-bit (FedRAMP/FIPS)`를 찾으세요.

$ curl https://cdn.teleport.dev/teleport-ent-(= teleport.version =)-linux--fips-bin.tar.gz.sha256
<checksum> <filename>
$ curl -O https://cdn.teleport.dev/teleport-ent-(= teleport.version =)-linux--fips-bin.tar.gz

# 체크섬이 일치하는지 확인
$ shasum -a 256 teleport-ent-(= teleport.version =)-linux--fips-bin.tar.gz

$ tar -xvf teleport-ent-(= teleport.version =)-linux--fips-bin.tar.gz
$ cd teleport-ent
$ sudo ./install

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

$ teleport version

출력은 X:boringcrypto로 끝나야 합니다.

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

Teleport Auth Service 구성#

Teleport Auth Service 호스트의 /etc/teleport.yaml로 다음 구성 파일을 저장합니다:

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

auth_service:
  # auth service 활성화:
  enabled: true

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

  # FIPS를 지원하려면 local_auth를 비활성화해야 하고
  # Teleport에 로그인하려면 SSO 커넥터가 필요합니다.
  authentication:
    # FIPS 모드에서는 local_auth를 false로 설정해야 합니다.
    local_auth: false
    type: saml

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

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

Teleport SSH Service 구성#

Node Service 호스트의 /etc/teleport.yaml로 다음 구성 파일을 저장합니다:

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

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

# SSH Service를 활성화하고 Auth 및 Proxy Service를 비활성화합니다:
ssh_service:
  enabled: true
auth_service:
  enabled: false
proxy_service:
  enabled: false

서비스 유닛 파일 구성#

GitHub의 예제 디렉터리에서 systemd 서비스 유닛 파일을 다운로드하고 두 서버에 /etc/systemd/system/teleport.service로 저장합니다.

# 두 서버 모두에서 실행:
$ sudo systemctl daemon-reload
$ sudo systemctl enable teleport

FIPS 모드로 Teleport 시작#

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

  • --fips 플래그가 선택된 경우, 바이너리가 적절한 암호화 모듈로 컴파일되지 않으면 Teleport는 시작에 실패합니다.
  • TLS 또는 SSH 암호화 프리미티브가 지정되지 않은 경우, Teleport는 FIPS 호환 암호화 알고리즘을 기본값으로 사용합니다.
  • TLS 또는 SSH 암호화 프리미티브가 FIPS 140 호환이 아닌 경우, Teleport는 시작에 실패합니다.
  • Teleport는 항상 DynamoDB와 S3 모두에 대해 저장 시 암호화를 활성화합니다.
  • 녹화 프록시 모드가 선택된 경우, 호스트 인증서 검증이 항상 수행되어야 합니다.
  • ps aux와 같은 명령을 실행하면 Teleport가 FIPS 모드로 실행 중임을 확인하는 데 유용할 수 있습니다.

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

cluster-values.yaml 구성에 다음 값을 설정합니다:

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

versionOverrideextraArgs는 FIPS 모드를 활성화하기 위해 values 파일에 설정할 필요가 없습니다.

기본 암호화 알고리즘#

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는 FIPS 140 검증 암호화 모듈로 컴파일됩니다.
  • 사용자, 호스트, CA 인증서(및 녹화 프록시 모드의 호스트 키)는 NIST-P256 곡선의 ECDSA 키 또는 2048비트 RSA 개인 키만 사용합니다.

원격 데스크톱 접근#

Teleport는 RDP 연결에 Rust를 사용하므로, FIPS 호환 TLS 암호화를 위해 내부적으로 Cloudflare의 boring 라이브러리 포크를 사용합니다. 위에 나열된 사양과의 주요 차이점은 TLS가 TLS 1.2로만 제한된다는 것입니다(1.3은 지원되지 않음).

arm64 FIPS 빌드는 Windows 데스크톱 접근을 지원하지 않습니다.

비FIPS에서 FIPS로 마이그레이션#

v17부터 Teleport의 새 설치는 기본적으로 Ed25519 키를 사용합니다. 이는 현재 FIPS 바이너리에서 지원되지 않습니다. Teleport Auth Service가 이미 표준 바이너리로 또는 --fips 플래그 없이 배포된 경우, 인증 기관을 업데이트해야 합니다. 그렇지 않으면 User Message: only RSA and ECDSA keys supported 오류가 발생합니다.

FIPS 설치로 마이그레이션하려면, 서명 알고리즘 스위트를 설정하여 fips-v1로 지정합니다. 그런 다음 Ed25519 키가 있는 모든 CA는 CA 교체를 진행해야 합니다. tctl status 명령은 v17+에서 사용 중인 서명 알고리즘을 확인하는 데 사용할 수 있습니다. 모든 CA 교체가 완료된 후 FIPS 바이너리 설치를 진행합니다.

Teleport FIPS 바이너리 사용의 트레이드오프#

Teleport의 FIPS 바이너리 사용을 전면적인 보안 개선으로 고려해서는 안 됩니다. FedRAMP와 같은 특정 규정 및 컴플라이언스 요구사항을 충족하도록 설계되었지, 범용 배포에서 보안을 향상시키기 위한 것이 아닙니다.

엄격하게 요구되지 않는 경우 Teleport FIPS 빌드 사용을 고려할 때 여러 트레이드오프가 있습니다.

제한된 암호 스위트 선택#

FIPS 빌드는 FIPS 인증 프로그램 하에 승인된 암호, 키 교환 메커니즘 및 서명 알고리즘만 허용합니다. 엄격하고 긴 인증 과정으로 인해, FIPS 승인 알고리즘은 종종 최신 기술보다 뒤처집니다. 결과적으로, FIPS 빌드는 향상된 성능이나 미래 지향적 보안 속성을 가진 최신 알고리즘(예: ChaCha20-Poly1305, Ed25519)을 지원하지 않습니다.

성능 저하#

암호화 작업은 표준 빌드에 비해 최대 2배 느릴 수 있습니다. 이는 대용량 클러스터의 처리량에 영향을 미칠 수 있습니다.

운영 복잡성#

FIPS 빌드를 실행하면 피어가 다른 암호 지원을 기대하는 경우 연결 문제 해결과 같은 추가적인 유지 관리 부담이 발생할 수 있습니다.

컴플라이언스 필요 없이 보안 이점 없음#

규제 환경 외부에서 FIPS 바이너리를 사용해도 Teleport의 보안 태세가 향상되지 않습니다. 사실, 현대 암호화 알고리즘 사용을 제한함으로써 순효과가 부정적일 수 있습니다.