InfoGrab Docs

TLS 라우팅

Teleport가 TLS 라우팅으로 단일 포트 설정을 구현하는 방법

TLS 라우팅 모드에서 Teleport proxy 는 모든 클라이언트 연결을 단일 TLS 포트에서 멀티플렉싱합니다. TLS 라우팅을 통해 클러스터 관리자는 프록시가 하나의 포트에서만 수신 대기하므로 네트워크 구성을 단순화할 수 있습니다. 모든 연결은 상호 TLS로 인증되며 사용자는 SSH와 같이 네트워크에서 차단될 수 있는 프로토콜을 터널링할 수 있습니다. TLS 라우팅을 구현하기 위해 Teleport는 SNI( Server Name Indication )와 ALPN( Application-Level Protocol Negotiation ) TLS 확장을 사용합니다. 작동 방식 # Teleport Proxy Service는 기본적으로 web_listen_addr 에서 모든 클라이언트 연결을 수신 대기합니다: proxy_service: web_listen_addr: "0.0.0.0:443" SSH, 웹 브라우저, kubectl, 데이터베이스 및 역방향 터널 클라이언트를 포함한 모든 Teleport 클라이언트는 프록시의 웹 포트에 TLS 터널을 설정하고 SNI 및 ALPN TLS 확장을 사용하여 요청하는 프로토콜을 나타냅니다. 새 연결을 수락할 때 프록시는 TLS 핸드셰이크의 SNI/ALPN 값을 검사하고 적절한 백엔드 서비스로 연결을 전달합니다. 로컬 프록시 # psql 또는 mysql 과 같은 클라이언트는 프로토콜별 연결 협상 단계(일명 STARTTLS )의 일부로 TLS 핸드셰이크를 구현합니다. 이러한 클라이언트와 TLS를 지원하지만 사용자 정의 ALPN 값을 설정할 수 없는 클라이언트를 지원하기 위해, Teleport의 tsh 클라이언트는 로컬 TLS 라우팅 인식 프록시를 시작하는 기능을 포함합니다. 이러한 클라이언트는 Teleport 프록시에 직접 연결하는 대신 로컬 프록시에 연결합니다. 로컬 프록시는 적절한 SNI/ALPN 값이 설정된 Teleport 프록시에 TLS 연결을 설정하고 클라이언트의 연결을 그 위로 터널링합니다. 대부분의 경우 클라이언트는 연결을 설정할 때 TLS 라우팅을 투명하게 처리합니다. 예를 들어 tsh 클라이언트는 로컬 프록시를 시작하고 자동으로 적절한 SNI/ALPN 값을 설정합니다. tsh db connect 대신 네이티브/GUI 데이터베이스 클라이언트와 같은 일부 클라이언트의 경우, 사용자가 로컬 프록시를 시작하여 이러한 클라이언트가 연결할 수 있도록 해야 합니다. 다이어그램 # Teleport가 지원하는 각 프로토콜이 TLS 라우팅을 구현하는 방법을 살펴보겠습니다. SSH # Teleport 클라이언트 tsh 는 SSH 노드에 연결할 때 먼저 TLS를 통해 Teleport 프록시에 접속하고 teleport-proxy-ssh ALPN 프로토콜을 요청합니다. tsh 는 SSH 연결을 설정하기 위한 전송으로 이 TLS 연결을 사용하므로 이 경우 로컬 프록시가 시작되지 않습니다. OpenSSH # 표준 OpenSSH 클라이언트를 지원하기 위해, Teleport는 ProxyCommand 로 사용할 수 있는 ts