전송 계층 보안(TLS)으로 암호화된 웹 트래픽은 모든 웹 트래픽의 상당 부분을 차지하며, 위협자는 이러한 암호화된 채널을 사용하여 악의적인 공격을 시작할 수 있습니다. 따라서 TLS로 암호화된 트래픽을 대상으로 전달하기 전에 이 트래픽을 확인하는 것이 중요합니다.
보안 웹 프록시는 TLS 트래픽을 가로채고, 암호화된 요청을 검사하며, 보안 정책을 시행할 수 있는 TLS 검사 서비스를 제공합니다.
구현된 보안 규칙과 TLS 검사 구성에 따라 보안 웹 프록시 솔루션은 클라이언트와의 보안 연결 1개와 외부 서버와의 보안 연결 1개를 설정합니다. 그러면 보안 웹 프록시 솔루션이 두 보안 연결 간의 트래픽을 검사합니다. 확인에 성공하면 암호화되지 않은 트래픽과 동일한 방식으로 암호화된 트래픽에 필터링 및 보안 제어를 적용할 수 있습니다.
TLS 검사에서 인증 기관 역할
보안 웹 프록시에서 TLS 연결을 검사해야 하는지 확인하기 위해 개별 보안 정책 규칙에서 tls_inspection_enabled
플래그를 확인합니다. 플래그가 설정되어 있고 TLS 연결이 감지되면 보안 웹 프록시에서 새 서버 인증서를 생성합니다. 하위 인증 기관(CA) 풀에서 서명하도록 이 인증서를 Certificate Authority Service(CAS)로 보냅니다.
그런 다음 이 인증서가 클라이언트에 제공되고 TLS 연결이 설정됩니다. 생성된 인증서는 같은 호스트에 대한 이후 연결에 사용하기 위해 잠시 동안 캐시됩니다.
TLS 트래픽을 검사하려면 클라이언트가 연결하려는 호스트의 서버 인증서를 생성해야 합니다. 조직에서 관리하는 비공개 CA가 이 서버 인증서에 서명해야 합니다. 이 비공개 CA를 신뢰하도록 구성된 클라이언트만 생성된 서버 인증서를 신뢰합니다. 여기에는 브라우저와 삽입된 HTTP 클라이언트가 포함됩니다. 따라서 TLS 검사는 조직에서 관리하는 클라이언트의 TLS 연결을 가로채고 검사하는 데만 사용할 수 있습니다.
조직에서 관리 권한을 보유한 머신에서도 일부 TLS 연결은 가로채지 못할 수 있습니다. 이는 일부 클라이언트(특히 다른 애플리케이션 내에 삽입된 클라이언트)가 특정 서버 인증서 또는 특정 CA에서 서명한 인증서만 수락하도록 하드코딩되기 때문입니다(인증서 고정이라고 함). 여기에는 Microsoft Windows, MacOS, Chrome 소프트웨어 업데이트가 포함됩니다. 이러한 연결은 TLS 검사가 있는 경우 실패합니다. 이는 보안 웹 프록시가 클라이언트에 제공하는 서버 인증서의 공개 키와 CA 체인이 로컬에 저장된 매개변수와 일치하지 않기 때문에 발생합니다.
규칙이 TLS 트래픽을 검사하도록 구성되었지만 클라이언트가 보안 웹 프록시에서 제공하는 검사 인증서를 신뢰하지 않으면 연결이 실패합니다. 이러한 경우 TLS 검사는 서버가 신뢰할 수 있는 경우에도 클라이언트-서버 연결을 중단하는 것으로 알려져 있습니다. 이 문제를 해결하려면 특정 기준에 대해 TLS 검사를 우회하는 규칙을 추가하면 됩니다. 또한 규칙의 SessionMatcher
속성을 사용하여 특정 대상 호스트(FQDN 사용), 소스(보안 태그, 서비스 계정 또는 IP 주소 사용)에 대한 TLS 검사를 제한할 수 있습니다.
지원되는 기능
보안 웹 프록시 TLS 검사는 다음 기능을 지원합니다.
- 비공개 CA를 위한 가용성이 높고 확장 가능한 저장소인 CAS와의 긴밀한 통합
- 필요한 경우 자체 신뢰할 수 있는 루트 사용. 기존 루트 CA를 사용하여 CAS에 있는 하위 CA에 서명할 수도 있습니다. 원하는 경우 CAS 내에서 새 루트 인증서를 생성할 수 있습니다.
- 보안 웹 프록시 정책 규칙 내에서
SessionMatcher
를 사용한 상세 복호화 기준. 이 기준에는 URL 목록, 정규 표현식, IP 주소 범위, 유사 표현식에 있는 일치하는 호스트가 포함됩니다. 필요한 경우 불리언 표현식과 기준을 결합할 수 있습니다. - 각 보안 웹 프록시 정책은 자체 TLS 검사 정책 및 CA 풀로 구성할 수 있습니다. 또는 여러 보안 웹 프록시 정책에서 단일 TLS 검사 정책을 공유할 수 있습니다.
일반 사용 사례
TLS 검사를 사용 설정하려면 다음 방법 중 하나를 사용하세요.
기존 루트 CA를 사용하여 CAS 내에 있는 하위 CA에 서명합니다. CAS 내에 있는 하위 CA는 런타임에서 생성된 서버 인증서에 서명하는 데 사용됩니다.
외부(CAS 아님)에 있는 기존 루트 CA를 사용하여 하위 CA에 서명합니다. 하위 CA가 루트 CA에서 서명한 경우 이를 사용하여 런타임에 생성된 서버 인증서에 서명할 수 있습니다.
CAS 내에서 생성된 루트 인증서를 사용합니다. 루트 인증서를 만든 후에는 새 루트 CA에서 서명한 하위 CA를 만듭니다. 하위 CA는 런타임에서 생성된 서버 인증서에 서명하는 데 사용됩니다.
이러한 방법에 대한 자세한 내용은 하위 CA 풀 만들기를 참조하세요.