Infograb logo
PROXY 프로토콜
Note

Teleport Cloud 사용자들은 PROXY 프로토콜 설정을 수동으로 관리할 필요가 없습니다. 이는 자동으로 on으로 설정되며, 변경할 수 없습니다. 클라우드 Proxy/Auth 서비스는 Teleport에 의해 관리되며, PROXY 프로토콜이 구성된 L4 로드 밸런서 뒤에서 실행됩니다.

PROXY 프로토콜이란

PROXY 프로토콜은 클라이언트 IP에 대한 정보를 포함하는 TCP 연결에 추가된 접두사입니다. 이는 사용자와 엔드포인트 서비스(예: Teleport Proxy/Auth) 사이에 L4 로드 밸런서가 포함된 네트워크 구성에서 가장 일반적으로 사용됩니다. L4 로드 밸런서는 설계상 연결을 전달할 때 원래 클라이언트의 IP 주소와 포트를 유지하지 않으며, PROXY 프로토콜은 실제 TCP 스트림 이전에 클라이언트의 원래 IP 주소와 포트를 추가하여 이 문제를 해결합니다.

PROXYv1 프로토콜 헤더의 예:

PROXY TCP4 127.0.0.1 127.0.0.2 12345 42\r\n

보안

PROXY 프로토콜 동작의 잘못된 구성은 보안 문제를 초래할 수 있습니다. PROXY 프로토콜에는 내장된 인증이 없기 때문에, 악의적인 공격자가 위조된 사용자 정의 PROXY 프로토콜 헤더를 전송하여 자신의 IP 주소를 위조할 수 있습니다. 이를 방지하기 위해서는 네트워크 구성에 따라 PROXY 프로토콜 설정을 명시적으로 구성해야 합니다. Teleport를 L4 로드 밸런서 뒤에서 실행하지 않는 경우, 그 로드 밸런서가 PROXY 헤더를 전송하지 않는다면, PROXY 프로토콜 지원을 Teleport에서 비활성화해야 합니다.

Teleport에 대한 PROXY 프로토콜 구성

Teleport Proxy/Auth는 L4 로드 밸런서 뒤에 있을 때 클라이언트의 실제 IP 주소를 얻기 위해 PROXY 프로토콜에 의존합니다. 신뢰할 수 있는 클라이언트 IP 정보는 보안 관점에서 중요하며, 감사 로그 및 IP 고정 같은 기능이 이에 따라 달라지며 PROXY 프로토콜이 올바르게 구성되지 않으면 이러한 기능이 손상될 수 있습니다.

Teleport에서 PROXY 프로토콜의 사용은 proxy_protocol 설정을 통해 제어되며, 이는 각각 proxy_serviceauth_service 섹션의 구성에서 따로 관리됩니다.

새로운 Teleport 설치의 기본값에서는 proxy_protocol이 지정되지 않으며, 사용자는 수동으로 proxy_protocolon 또는 off로 설정할 수 있습니다:

  • on: PROXY 프로토콜이 활성화되고 필수입니다. PROXY 프로토콜 헤더가 수신되면, Teleport는 헤더를 구문 분석하고 클라이언트의 IP 주소와 포트를 추출합니다. 헤더가 없으면, 오류와 함께 연결이 거부됩니다.
  • off: PROXY 프로토콜이 비활성화되고 금지됩니다. PROXY 프로토콜 헤더가 있는 모든 연결은 자동으로 거부됩니다.

사용자들은 네트워크 설정에 따라 proxy_protocol 설정을 on 또는 off 모드로 명시적으로 설정할 것을 권장합니다. 기본값이 지정되지 않은 값 모드는 생산 환경에 적합하지 않으며, 테스트 환경에만 적합합니다. proxy_protocol이 지정되지 않은 경우 Teleport는 연결을 위해 PROXY 헤더를 요구하지 않지만, 존재하는 경우 구문 분석하며, 클라이언트의 출처 IP 주소는 PROXY 헤더에서 가져온 주소로 대체되며 이 주소는 감사 이벤트에 나타납니다. PROXY 헤더가 있는 수신 연결은 출처 포트를 0으로 설정하여 표시되며, 이것은 감사 이벤트에서도 보입니다.

Warning

구성이 명시적으로 설정되지 않은 경우 IP 고정이 작동하지 않습니다. 출처 포트 = 0으로 표시된 연결은 IP 고정 검사 중에 거부됩니다.

proxy_protocol 설정을 구성하는 주요 규칙은 Teleport가 PROXY 프로토콜 헤더를 전송하도록 설정된 L4 로드 밸런서 뒤에서 실행되는 경우 proxy_protocol: on으로 설정해야 합니다.

proxy_service:
  proxy_protocol: on

그렇지 않으면 proxy_protocol: off로 설정해야 합니다.

proxy_service:
  proxy_protocol: off

proxy_protocol: on으로 실행하는 경우, Teleport가 로드 밸런서를 통해서만 접근 가능하도록 해야 하며, 악의적인 공격자가 자신의 IP 주소를 위조하거나 직접 연결하여 사용자 정의 PROXY 헤더를 전송하여 IP 고정 제한을 우회할 수 없도록 해야 합니다. Teleport는 수신 연결에 대해 하나의 PROXY 프로토콜 헤더만 허용하며, 여러 개의 PROXY 라인이 포함된 요청은 거부하여 proxy_protocol: on으로 설정된 경우 공격을 방지합니다.

PROXY 프로토콜 동작은 Auth 서비스와 Proxy 서비스에서 따로 제어됩니다. 따라서 두 서비스 모두 올바른 설정을 가지고 있도록 해야 합니다. Proxy와 Auth 서비스 사이에 PROXY가 활성화된 L4 로드 밸런서가 있는 경우, Auth에서 proxy_protocol: on으로 설정해야 하며, 그렇지 않으면 off로 설정해야 합니다.

일부 Teleport 프록시를 로드 밸런서 뒤에서 실행하고 일부는 그렇지 않은 경우, 예를 들어 사설 및 공용 네트워크를 위한 전용 프록시가 있는 경우, Teleport 프록시가 서로 다른 PROXY 프로토콜 설정을 가질 수 있습니다.

PROXY 프로토콜 헤더를 전송하지 않는 L4 로드 밸런서 뒤에서 Teleport를 실행하면 Teleport의 관점에서 모든 수신 연결이 동일한 IP 주소에서 오는 것처럼 보이게 되어 감사 추적의 유용성이 떨어지고 IP 고정 기능이 도움이 되지 않게 됩니다.

Teleport 원문 보기