인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
인프라 접근을 위한 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는 로컬 사용자와 SSO 기반 계정(GitHub, Google Apps, Okta 등) 두 가지 유형의 사용자를 지원합니다. 로컬 계정의 경우 기본적으로 Teleport는 5회 로그인 실패 후 30분 동안 계정을 잠급니다. SSO 기반 계정의 경우, 유효하지 않은 로그인 시도 횟수 및 잠금 시간 기간은 SSO 제공자에 의해 제어됩니다. |
AC-08 시스템 사용 알림 | Teleport는 Linux 플러그형 인증 모듈(PAM)과 통합됩니다. PAM 모듈을 사용하여 세션 관리 원시에서 하루의 메시지(MOTD) 모듈을 사용하여 로그인 시 사용자 정의 메시지를 표시할 수 있습니다. |
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(다중 인증)의 사용을 강제합니다. PIV 호환 하드웨어 키 및 연결 및 사용자 제한을 지원합니다. |
IA-04 식별자 관리 | 여러 고유 식별자를 유지합니다: 로컬 사용자는 고유해야 하며 (고유 사용자 이름), 역할은 고유한 이름을 가지고 있으며 SSO를 통해 조직 역할에 연결되어 있습니다. 장치 식별자는 고유하게 생성된 랜덤 ID (UUID)입니다. |
IA-08 식별 및 인증(조직 외 사용자) | Teleport는 PIV 호환 하드웨어 키를 지원합니다. |
IA-03 장치 식별 및 인증 | Teleport는 Teleport 인증 기관(CA)에서 발급한 유효한 x509 또는 SSH 인증서를 요구하여 Teleport 구성 요소 간의 장치 간 네트워크 연결을 설정합니다. |
시스템 및 통신 보호
제어 | Teleport 기능 |
---|---|
SC-10 네트워크 연결 끊기 | Teleport는 Teleport 인증 기관(CA)에서 발급한 유효한 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는 인증 기관(CA) 역할을 하는 암호 키를 초기화하여 X.509 및 SSH 인증서를 추가로 발급합니다. 발급된 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 경계 내에서 mTLS는 Teleport 프록시와 모든 프로토콜을 실행하는 내부 호스트 간의 통신에 사용됩니다.
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 버전의 설치 지침을 따라하실 수 있습니다.
예를 들어, 다음 명령을 실행하여 압축된 아카이브에서 다운로드하고 설치할 수 있습니다:
Teleport Enterprise 고객은 [Teleport 계정](https://teleport.sh)에서 사용자 정의 FIPS 패키지를 다운로드할 수 있습니다. `Linux 64-bit (FedRAMP/FIPS)`를 찾으십시오.curl https://cdn.teleport.dev/teleport-ent-17.0.0-dev-linux-$SYSTEM_ARCH-fips-bin.tar.gz.sha256<checksum> <filename>curl -O https://cdn.teleport.dev/teleport-ent-17.0.0-dev-linux-$SYSTEM_ARCH-fips-bin.tar.gz체크섬이 일치하는지 확인
shasum -a 256 teleport-ent-17.0.0-dev-linux-$SYSTEM_ARCH-fips-bin.tar.gztar -xvf teleport-ent-17.0.0-dev-linux-$SYSTEM_ARCH-fips-bin.tar.gzcd teleport-entsudo ./install
다운로드 및 설치를 완료한 후 모든 Teleport Enterprise 바이너리는 /usr/local/bin
디렉토리에 설치됩니다. teleport version
명령을 실행하고 X:boringcrypto
라이브러리가 나열되어 있는지 확인하여 FIPS 호환 바이너리가 설치되었는지 검증할 수 있습니다. 예를 들어:
teleport versionTeleport Enterprise 17.0.0-dev api/14.0.0-gd1e081e 1.22 X:boringcrypto
AWS에서 Teleport 클러스터가 실행되는 경우, 클러스터는 서비스의 낮은 또는 중간 영향 수준에 대해 US-East 또는 US-West 지역에서 실행될 수 있습니다. 높은 영향 수준의 서비스에 대해 클러스터는 FIPS를 지원하기 위해 GovCloud 지역에서 실행되어야 합니다.
Teleport Auth 서비스 구성
다음 구성 파일을 Teleport Auth Service의 /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를 지원하기 위해 local_auth는 끄고 SSO 커넥터가
# Teleport에 로그인하는 데 필요합니다.
authentication:
# FIPS 모드에서는 local_auth를 false로 설정해야 합니다.
local_auth: false
type: saml
# Proxy 모드를 사용하는 경우 Teleport는 호스트 키 검사를 요구합니다.
# FIPS 모드에서 Teleport를 시작하려면 이 설정이 필요합니다
proxy_checks_host_keys: true
# SSH도 이 노드에서 활성화됩니다:
ssh_service:
enabled: false
Teleport SSH 서비스 구성
다음 구성 파일을 Node Service 호스트의 /etc/teleport.yaml
로 저장하십시오:
version: v3
teleport:
auth_token: xxxx-token-xxxx
# Proxy 서비스 주소를 지정하거나...
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
서비스 유닛 파일 구성
GitHub의 examples directory에서 systemd
서비스 유닛 파일을 다운로드하고 두 서버 모두 /etc/systemd/system/teleport.service
로 저장합니다.
두 서버에서 이 명령을 실행하세요:
sudo systemctl daemon-reloadsudo systemctl enable teleport
FIPS 모드에서 Teleport 시작
teleport start --fips
를 사용할 경우, Teleport는 FIPS 모드로 시작됩니다.
--fips
플래그가 선택되면, 바이너리가 적절한 암호화 모듈(BoringCrypto)로 컴파일되지 않는 한 Teleport는 시작되지 않습니다.- 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 데스크탑에 대한 액세스를 지원하지 않습니다.