전송 계층 보안(TLS)으로 암호화된 웹 트래픽은 모든 웹 트래픽의 상당 부분을 차지하며, 위협자는 이러한 암호화된 채널을 사용하여 악의적인 공격을 시작할 수 있습니다. 따라서 TLS로 암호화된 트래픽을 대상으로 전달하기 전에 이 트래픽을 확인하는 것이 중요합니다.
보안 웹 프록시는 TLS 트래픽을 가로채고, 암호화된 요청을 검사하고, 보안 정책을 시행할 수 있게 해주는 TLS 검사 서비스를 제공합니다.
구현된 웹 규칙과 TLS 검사 구성에 따라 보안 웹 프록시 솔루션은 클라이언트 연결과 외부 서버 연결의 두 가지 보안 연결을 설정합니다. 그런 다음 보안 웹 프록시 솔루션이 두 보안 연결 간의 트래픽을 검사합니다. 확인에 성공하면 암호화되지 않은 트래픽과 동일한 방식으로 암호화된 트래픽에 필터링 및 보안 제어를 적용할 수 있습니다.
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 풀 만들기를 참조하세요.