PROXY 프로토콜로 Teleport 실행
이 가이드에서는 L4(레이어 4) 로드 밸런서 뒤에서 Teleport Auth Service와 Proxy Service를 실행하도록 구성하는 방법을 알아봅니다. 이 설정에서 Auth Service와 Proxy Service는 L4 로드 밸런서 뒤에 있을 때 클라이언트의 IP 주소를 가져오기 위해 PROXY 프로토콜에 의존합니다.
이 가이드에서는 L4(레이어 4) 로드 밸런서 뒤에서 Teleport Auth Service와 Proxy Service를 실행하도록 구성하는 방법을 알아봅니다.
이 설정에서 Auth Service와 Proxy Service는 L4 로드 밸런서 뒤에 있을 때 클라이언트의 IP 주소를 가져오기 위해 PROXY 프로토콜에 의존합니다. 감사 로깅 및 IP 고정과 같은 기능이 신뢰할 수 있는 클라이언트 IP 정보에 의존하기 때문에 이는 보안 관점에서 중요합니다. PROXY 프로토콜이 올바르게 구성되지 않으면 이러한 기능이 손상됩니다.
Teleport Enterprise(Cloud) 사용자는 PROXY 프로토콜 설정을 관리할 필요가 없습니다. Teleport 관리형 Auth Service 및 Proxy Service 배포는 PROXY 프로토콜이 구성된 L4 로드 밸런서 뒤에서 실행됩니다.
작동 방식#
PROXY 프로토콜은 클라이언트 IP에 대한 정보를 포함하는 접두사를 TCP 연결에 추가합니다. Teleport Auth Service 및 Proxy Service처럼 사용자와 엔드포인트 서비스 사이에 L4 로드 밸런서가 있는 네트워크에서 가장 일반적으로 사용됩니다.
L4 로드 밸런서는 설계상 연결을 전달할 때 원래 클라이언트의 IP 주소와 포트를 유지하지 않으며, PROXY 프로토콜은 TCP 스트림 앞에 클라이언트의 원래 IP 주소와 포트를 추가하여 시스템이 이 문제를 극복할 수 있게 합니다.
PROXYv1 프로토콜 헤더의 예:
PROXY TCP4 127.0.0.1 127.0.0.2 12345 42\r\n
사전 요구 사항#
-
자체 호스팅 Teleport Enterprise 계정. 자체 호스팅 Teleport Enterprise를 시작하려면 영업팀에 문의하세요. Teleport Community Edition으로 데모 환경을 설정할 수도 있습니다.
PROXY 프로토콜을 사용하도록 Teleport 클러스터를 구성하기 전에 이 가이드를 완전히 읽고 이해하는 것을 권장합니다.
-
tctl관리 도구와tsh클라이언트 도구.tctl과tsh다운로드 지침은 설치를 방문하세요.
1/2단계. Teleport 배포 계획#
PROXY 프로토콜 동작의 잘못된 구성은 보안 문제로 이어질 수 있습니다. PROXY 프로토콜에는 내장된 인증이 없으므로 악의적인 공격자가 위조된 사용자 지정 PROXY 프로토콜 헤더를 보내 IP 주소를 스푸핑할 수 있습니다. 이를 방지하려면 네트워크 설정에 따라 PROXY 프로토콜 설정을 명시적으로 구성해야 합니다:
-
PROXY 프로토콜을 활성화해야 하는 Auth Service 및 Proxy Service 인스턴스를 결정합니다. PROXY 프로토콜 동작은 Auth Service와 Proxy Service에 대해 별도로 제어됩니다.
Proxy Service와 Auth Service 인스턴스 사이에 PROXY를 지원하는 L4 로드 밸런서가 있는 경우, Auth Service에서 PROXY 프로토콜을 활성화해야 합니다. 그렇지 않으면 비활성화할 수 있습니다.
Teleport Proxy Service 인스턴스는 서로 다른 PROXY 프로토콜 설정을 가질 수도 있습니다. Proxy Service 인스턴스의 일부만 L4 로드 밸런서 뒤에서 실행하는 경우, 해당 인스턴스에만 PROXY 프로토콜을 활성화할 수 있습니다.
-
PROXY 프로토콜 지원으로 실행하는 Auth Service 또는 Proxy Service 인스턴스가 L4 로드 밸런서를 통해서만 접근할 수 있도록 합니다. 이는 공격자가 직접 연결하여 사용자 지정 PROXY 헤더를 보냄으로써 IP 주소를 스푸핑하고 IP 고정 제한을 우회하는 것을 방지합니다. Teleport는 들어오는 연결에 대해 하나의 PROXY 프로토콜 헤더만 허용하며, 공격을 방지하기 위해 여러 PROXY 줄을 포함하는 요청을 거부합니다.
-
PROXY 헤더를 보내는 L4 로드 밸런서 뒤에서 Teleport를 실행하지 않는 경우, Auth Service 및 Proxy Service에서 PROXY 프로토콜 지원을 반드시 비활성화해야 합니다. PROXY 프로토콜 헤더를 보내지 않는 L4 로드 밸런서 뒤에서 Teleport를 실행하면 Teleport 관점에서 모든 들어오는 연결이 동일한 IP 주소에서 오는 것처럼 보여, Teleport 감사 로그와 IP 고정 기능을 손상시킵니다.
-
IPv6 전용 네트워크에서 IPv4 전용 네트워크로 연결해야 하는 경우 Teleport 구성 파일을 사용하여 소스 주소를 다운그레이드할 수 있습니다(다음 단계에서 설명).
2/2단계. 정적 Teleport 구성 편집#
Teleport 프로세스에서 Auth Service와 Proxy Service는 각각 클라이언트와의 자체 통신에 PROXY 프로토콜을 지원할 수 있습니다. PROXY 프로토콜을 활성화하거나 비활성화하려면 각 서비스는 Teleport 구성 파일의 해당 섹션에서 proxy_protocol 필드를 읽습니다:
proxy_service:
proxy_protocol: on | off
proxy_protocol_allow_downgrade: on | off
# ...
auth_service:
proxy_protocol: on | off
기본적으로 proxy_protocol은 지정되지 않습니다. 사용자는 proxy_protocol을 on 또는 off로 수동으로 설정할 수 있습니다:
- 미지정(기본값): 관련 Teleport 서비스는 연결에 PROXY 헤더를 요구하지 않지만, 있는 경우 파싱하고 클라이언트의 소스 IP 주소를 PROXY 헤더의 주소로 교체합니다. 이 주소는 감사 이벤트에 표시됩니다. PROXY 헤더가 있는 들어오는 연결은 소스 포트를
0으로 설정하여 표시되며, 이는 감사 이벤트에서도 볼 수 있습니다. 이는 테스트 환경에만 적합하며 프로덕션에서는 절대 활성화해서는 안 됩니다. on: PROXY 프로토콜이 활성화되고 필수입니다. PROXY 프로토콜 헤더가 수신되면 Teleport 서비스는 헤더를 파싱하고 클라이언트의 IP 주소와 포트를 추출합니다. 헤더가 없으면 Teleport 서비스는 오류와 함께 연결을 거부합니다.off: PROXY 프로토콜이 비활성화되고 금지됩니다. PROXY 프로토콜 헤더가 있는 모든 연결은 자동으로 거부됩니다.
네트워크 설정에 따라 proxy_protocol 설정을 on 또는 off 모드로 명시적으로 설정하는 것을 권장합니다.
사용자는 이중 스택 네트워킹 없이 IPv6 네트워크에서 IPv4 네트워크로의 연결을 용이하게 하기 위해 proxy_protocol_allow_downgrade를 활성화할 수도 있습니다:
on: IPv6 소스 주소와 IPv4 대상이 있는 PROXY 프로토콜 헤더는 소스 주소가 의사 IPv4로 다운그레이드됩니다.off: PROXY 프로토콜 헤더 소스 주소는 수정되지 않으며 혼합 IP 버전은 오류를 초래합니다.
proxy_protocol_allow_downgrade를 활성화하기 위해 Teleport를 업그레이드하는 경우, 활성화하기 전에 Teleport Proxy Service의 모든 인스턴스를 업그레이드해야 합니다. 이 구성을 지원하지 않는 버전은 PROXY 헤더 서명을 확인할 수 없으며 다운그레이드된 연결을 수락하지 못합니다.
구성에서 proxy_protocol 설정이 명시적으로 설정되지 않았거나 연결이 다운그레이드된 경우 IP 고정이 작동하지 않습니다. 소스 포트가 0으로 표시된 연결은 IP 고정 확인 시 거부됩니다.
