목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

프록시 구축의 다른 유형

TLS 핸드셰이크

HTTP 응답 코드

1xx: 정보

2xx: 성공

3xx:리디렉션

4xx 코드: 클라이언트 오류

5xx: 서버 오류

명시적 구축

인증이 없는 명시적 구축의 HTTP 트래픽

클라이언트 및 SWA

SWA 및 웹 서버

캐시된 데이터가 있는 트래픽

인증이 없는 명시적 구축의 HTTP 트래픽

클라이언트 및 SWA

SWA 및 웹 서버

통과 HTTPS 트래픽

투명한 구축

인증 없는 투명 구축의 HTTP 트래픽

클라이언트 및 SWA

SWA 및 웹 서버

캐시된 데이터가 있는 트래픽

인증 없는 투명 구축의 HTTP 트래픽

클라이언트 및 SWA

SWA 및 웹 서버

관련 정보

소개

이 문서에서는 특히 SWA(Secure Web Appliance)에 초점을 맞춘 프록시 구성 네트워크의 네트워크 흐름에 대해 설명합니다.

사전 요구 사항

요구 사항

다음 주제에 대한 지식을 보유하고 있으면 유용합니다.

- 기본 TCP/IP 개념

- 프록시 설정에 대한 기본 지식

- 프록시가 있는 환경에서 사용되는 인증 메커니즘에 대한 기본 지식

이 문서에는 다음과 같은 약어가 사용됩니다.

TCP: 전송 제어 프로토콜

UDP: 사용자 데이터그램 프로토콜

IP: 인터넷 프로토콜

GRE: 일반 라우팅 캡슐화

HTTP: 하이퍼텍스트 전송 프로토콜.

HTTPS: Hypertext Transfer Protocol Secure입니다.

URL: Uniform Resource Locator

TLS: 전송 계층 보안

사용되는 구성 요소

이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.

프록시 구축의 다른 유형

TLS 핸드셰이크

HTTPS의 TLS 핸드셰이크는 클라이언트와 서버가 인터넷을 통해 통신하면서 안전한 연결을 제공할 때 발생합니다. 이 프로세스는 두 통신 애플리케이션 간의 프라이버시 및 데이터 무결성을 유지합니다. 클라이언트와 서버가 모든 후속 전송에 대한 암호화 표준 및 코드에 동의하는 일련의 단계를 통해 작동합니다. 이 악수는 제3자에 의한 무단 접근이나 조작을 막는 것을 목적으로 한다. 또한 가장을 제거하기 위해 통신 당사자의 ID를 인증합니다. 이 프로세스는 HTTPS에서 데이터가 전송 중에 안전하게 유지되도록 하기 때문에 중요합니다.

다음은 TLS 핸드셰이크의 단계입니다.

1. Client Hello: 클라이언트가 hello 메시지로 핸드셰이크 프로세스를 시작합니다. 이 메시지에는 클라이언트 TLS 버전, 지원되는 암호 그룹 및 "클라이언트 임의"라는 임의 바이트 문자열이 포함되어 있습니다.

2. Server Hello: 서버가 hello 메시지로 응답합니다. 이 메시지에는 서버에서 선택한 TLS 버전, 선택한 암호 그룹, "서버 임의"로 알려진 임의 바이트 문자열 및 서버 디지털 인증서가 포함됩니다. 필요한 경우 서버는 상호 인증을 위해 클라이언트 디지털 인증서도 요청합니다.

3. 클라이언트가 서버 인증서를 확인: 클라이언트는 서버 디지털 인증서를 발급한 인증 기관에서 서버 디지털 인증서를 확인 합니다. 그러면 클라이언트가 합법적인 서버와 통신하게 됩니다.

4. Pre-master Secret: 클라이언트가 임의의 바이트 문자열("pre-master secret"이라고 함)을 전송하며, 이는 세션 키 생성에 기여합니다. 클라이언트는 서버 공개 키로 이 사전 마스터 암호를 암호화하므로 서버만 개인 키로 암호를 해독할 수 있습니다.

5. 마스터 보안: 클라이언트와 서버 모두 사전 마스터 보안 및 hello 메시지의 임의 바이트 문자열을 사용하여 동일한 "마스터 보안"을 독립적으로 계산합니다. 이 공유 암호는 세션 키를 생성하기 위한 기본입니다.

6. Client Finished(클라이언트 완료): 클라이언트가 세션 키로 암호화된 "Finished(완료)" 메시지를 보내 핸드셰이크의 클라이언트 부분이 완료되었음을 알립니다.

7. Server Finished(서버 완료): 서버가 핸드셰이크의 서버 부분이 완료되었음을 알리기 위해 세션 키로 암호화된 "Finished(완료)" 메시지를 보냅니다.

HTTP 응답 코드

1xx: 정보

코드

세부사항

100 계속

일반적으로 ICAP 프로토콜과 관련하여 표시됩니다. 이 메시지는 클라이언트에서 데이터를 계속 전송할 수 있음을 알리는 정보 응답입니다. ICAP 서비스(예: 바이러스 검사)와 관련하여 서버는 처음 x바이트의 양만 볼 수 있습니다. 첫 번째 바이트 집합 검사가 완료되었지만 바이러스를 탐지하지 못한 경우 100 Continue(계속)를 전송하여 클라이언트에서 나머지 개체를 전송할 것을 알립니다.

2xx: 성공

코드

세부사항

200개

가장 일반적인 응답 코드입니다. 이는 요청이 문제 없이 성공했음을 의미합니다.

3xx: 리디렉션

코드

세부사항

301 영구 리디렉션

영구 리디렉션입니다. www 하위 도메인으로 리디렉션하는 경우 이 코드를 볼 수 있습니다.

302 임시 리디렉션

이는 임시 리디렉션입니다. 클라이언트는 Location: 헤더에 지정된 객체에 대해 새 요청을 하도록 지시받습니다.

304 수정되지 않음

이는 GIMS(GET If-modified-since)에 대한 응답입니다. 이것은 문자 그대로 표준 HTTP GET이며 헤더 If-modified-since: <date>를 포함합니다. 이 헤더는 클라이언트에 로컬 캐시에 요청된 객체의 복사본이 있으며 객체를 가져온 날짜가 포함되었음을 서버에 알립니다. 해당 날짜 이후에 객체가 수정된 경우 서버는 200 OK 및 객체의 새 복사본으로 응답합니다. 가져온 날짜 이후 객체가 변경되지 않은 경우 서버는 304 Not Modified 응답을 다시 보냅니다.

307 인증 리디렉션

이는 대부분 투명 프록시 배포에서 프록시 서버가 요청을 인증하도록 구성되어 있고 다른 URL로 요청을 리디렉션하여 사용자를 인증하면 나타납니다.

4xx 코드: 클라이언트 오류

코드

세부사항

400 잘못된 요청

이는 HTTP 요청이 올바른 구문을 준수하지 않기 때문에 HTTP 요청에 문제가 있음을 나타냅니다. 한 줄에 여러 개의 헤더가 있거나, 헤더 내의 공백이 있거나, URI에 HTTP/1.1이 없는 것 등이 원인일 수 있습니다. 올바른 구문은 RFC 2616을 참조하십시오.

401 무단

웹 서버 인증 필요

요청한 객체에 액세스하려면 인증이 필요합니다. 401 코드는 대상 웹 서버와의 인증에 사용됩니다. SWA가 투명 모드에서 작동하고 프록시에서 인증이 활성화되면 어플라이언스가 OCS(origin content server)인 것처럼 표시되므로 클라이언트에 401을 반환합니다.

사용할 수 있는 인증 방법은 'www-authenticate:' HTTP 응답 헤더에 자세히 설명되어 있습니다. 그러면 서버가 NTLM, 기본 또는 기타 인증 형식을 요청하는지 여부를 클라이언트에 알립니다.

403 거부됨

클라이언트가 요청된 개체에 액세스할 수 없습니다. 여러 가지 이유로 인해 서버에서 개체 액세스를 거부할 수 있습니다. 일반적으로 서버는 HTTP 데이터 또는 HTML 응답 내에서 원인 설명을 제공합니다.

404 찾을 수 없음

요청한 개체가 서버에 없습니다.

407 프록시 인증 필요

이는 OCS가 아닌 프록시에 대한 인증용이라는 점을 제외하면 401과 동일합니다. 요청이 프록시에 명시적으로 전송된 경우에만 전송됩니다.

클라이언트가 프록시가 있는지 모르기 때문에 SWA가 투명 프록시로 구성된 동안에는 407을 클라이언트로 전송할 수 없습니다. 이 경우 클라이언트는 TCP 소켓을 FIN 또는 RST할 가능성이 높습니다.

5xx: 서버 오류

코드

세부사항

501 내부 서버 오류

일반 웹 서버 오류입니다.

502 불량 게이트웨이

게이트웨이 또는 프록시 역할을 하는 서버가 인바운드 서버로부터 잘못된 응답을 받을 때 발생합니다. 게이트웨이가 업스트림 또는 원천 서버로부터 부적절한 응답을 받았음을 알립니다.

503 서비스를 사용할 수 없음

서버가 현재 일시적인 오버로드 또는 예약된 유지 관리로 인해 요청을 처리할 수 없음을 나타냅니다. 서버가 일시적으로 작동하지 않지만 시간이 지나면 다시 사용할 수 있음을 의미합니다.

504 게이트웨이 시간 초과

클라이언트 또는 프록시가 웹 페이지를 로드하기 위해 액세스하거나 브라우저의 다른 요청을 수행하려고 시도한 웹 서버로부터 적시에 응답을 받지 못했음을 나타냅니다. 이는 업스트림 서버가 다운되었음을 시사하는 경우가 많습니다.

명시적 구축

....

인증이 없는 명시적 구축의 HTTP 트래픽

클라이언트 및 SWA

네트워크 트래픽은 클라이언트의 IP 주소와 SWA 프록시 인터페이스의 IP 주소 간에 전달됩니다(일반적으로 P1 인터페이스이지만 프록시 컨피그레이션에 따라 P2 또는 관리 인터페이스일 수 있음).

클라이언트에서 오는 트래픽은 TCP 포트 80 또는 3128에서 SWA로 전달됩니다(기본 SWA 프록시 포트는 TCP 80 및 3128이며, 이 예에서는 포트 3128을 사용합니다).

- TCP 핸드셰이크.

- 클라이언트에서 HTTP 가져오기(대상 IP = SWA IP, 대상 포트 = 3128)

- 프록시의 HTTP 응답(소스 IP = SWA)

- 데이터 전송

- TCP 연결 종료(4-Way Handshake)

SWA, HTTP 명시적 모드에 대한 이미지 클라이언트

SWA 및 웹 서버

네트워크 트래픽은 프록시의 IP 주소와 웹 서버의 IP 주소 간에 발생합니다.

SWA의 트래픽은 TCP 포트 80으로 향하며 프록시 포트가 아닌 임의 포트를 통해 소싱됩니다

- TCP 핸드셰이크.

- 프록시에서 HTTP 가져오기(대상 IP = 웹 서버, 대상 포트 = 80)

- 웹 서버의 HTTP 응답(소스 IP = 프록시 서버)

- 데이터 전송

- TCP 연결 종료(4-Way Handshake)

이미지 - HTTP-SWA-웹 서버-명시적-캐시 없음

다음은 Client에서 HTTP Get의 샘플입니다

이미지- 클라이언트에서 SWA HTTP GET- 명시적

이는 클라이언트에서 SWA로, 웹 서버로, 마지막으로 클라이언트로 다시 이동하는 트래픽의 전체 흐름을 나타냅니다.

Image(이미지) - 모든 트래픽 HTTP Explicit-no cache

참고: 각 트래픽 스트림은 서로 다른 색상으로 구분됩니다. 클라이언트에서 SWA로의 흐름은 한 색상이고 SWA에서 웹 서버로의 흐름은 다른 색상입니다.

이미지 - 트래픽 흐름 HTTP Explicit - 캐시 없음

다음은 액세스 로그의 예입니다.

1706172876.686 224 10.61.70.23 TCP_MISS/200 1721 GET http://www.example.com/ - DIRECT/www.example.com text/html DEFAULT_CASE_12-DefaultGroup-DefaultGroup-NONE-NONE-NONE-DefaultGroup-NONE <"IW_ref",3.7,1,"-",0,0,0,1,"-",-,-,-,"-",1,-,"-","-",-,-,"IW_ref",-,"Unknown","Reference","-","Unknown","Unknown","-","-",61.46,0,-,"Unknown","-",1,"-",-,-,"-","-",-,-,"-",-,-> - - [ Request Details: ID = 10, User Agent = "curl/8.4.0", AD Group Memberships = ( NONE ) - ] [ Tx Wait Times (in ms): 1st byte to server = 108, Request Header = 0, Request to Server = 0, 1st byte to client = 3, Response Header = 0, Client Body = 0 ] [ Rx Wait Times (in ms): 1st request byte = 0, Request Header = 0, Client Body = 0, 1st response byte = 106, Response header = 0, Server response = 1, Disk Cache = 0; Auth response = 0, Auth total = 0; DNS response = 0, DNS total = 2, WBRS response = 0, WBRS total = 0, AVC response = 0, AVC total = 0, DCA response = 0, DCA total = 0, McAfee response = 0, McAfee total = 0, Sophos response = 0, Sophos total = 0, Webroot response = 0, Webroot total = 0, Anti-Spyware response = 0, Anti-Spyware total = 1, AMP response = 0, AMP total = 0; Latency = 4; "25/Jan/2024:09:54:36 +0100" ][Client Port = 65238, Server IP = 10.184.216.34, Server Port = 80]

캐시된 데이터가 있는 트래픽

데이터가 SWA 캐시에 있을 때 클라이언트에서 SWA로의 전체 트래픽 흐름을 나타냅니다.

이미지 - HTTP 명시적 캐시 데이터

참고: 웹 서버에서 HTTP 응답 304: Cache not Modified를 반환하는 것을 볼 수 있습니다. (이 예에서는 패킷 번호 1947)

Image- Flow HTTP Explicit(캐시 포함)

다음은 HTTP 응답 304의 샘플입니다

Image(이미지) - HTTP Explicit 304 응답

다음은 액세스 로그의 예입니다.

1706173001.489 235 10.61.70.23 TCP_REFRESH_HIT/200 1721 GET http://www.example.com/ - DIRECT/www.example.com text/html DEFAULT_CASE_12-DefaultGroup-DefaultGroup-NONE-NONE-NONE-DefaultGroup-NONE <"IW_ref",3.7,1,"-",0,0,0,1,"-",-,-,-,"-",1,-,"-","-",-,-,"IW_ref",-,"Unknown","Reference","-","Unknown","Unknown","-","-",58.59,0,-,"Unknown","-",1,"-",-,-,"-","-",-,-,"-",-,-> - - [ Request Details: ID = 150, User Agent = "curl/8.4.0", AD Group Memberships = ( NONE ) - ] [ Tx Wait Times (in ms): 1st byte to server = 110, Request Header = 0, Request to Server = 0, 1st byte to client = 2, Response Header = 0, Client Body = 0 ] [ Rx Wait Times (in ms): 1st request byte = 0, Request Header = 0, Client Body = 0, 1st response byte = 119, Response header = 0, Server response = 0, Disk Cache = 0; Auth response = 0, Auth total = 0; DNS response = 0, DNS total = 0, WBRS response = 0, WBRS total = 0, AVC response = 0, AVC total = 0, DCA response = 0, DCA total = 0, McAfee response = 0, McAfee total = 0, Sophos response = 0, Sophos total = 0, Webroot response = 0, Webroot total = 0, Anti-Spyware response = 0, Anti-Spyware total = 1, AMP response = 0, AMP total = 0; Latency = 1; "25/Jan/2024:09:56:41 +0100" ][Client Port = 55709, Server IP = 10.184.216.34, Server Port = 80]

인증이 없는 명시적 구축의 HTTP 트래픽

클라이언트 및 SWA

네트워크 트래픽은 클라이언트의 IP 주소와 SWA 프록시 인터페이스의 IP 주소 간에 전달됩니다(일반적으로 P1 인터페이스이지만 프록시 컨피그레이션에 따라 P2 또는 관리 인터페이스일 수 있음).

클라이언트에서 오는 트래픽은 TCP 포트 80 또는 3128에서 SWA로 전달됩니다(기본 SWA 프록시 포트는 TCP 80 및 3128이며, 이 예에서는 포트 3128을 사용합니다).

- TCP 핸드셰이크.

- 클라이언트에서 HTTP 연결(대상 IP = SWA, 대상 포트 = 3128)

- 프록시의 HTTP 응답(소스 IP = SWA)

- URL의 SNI를 사용하는 Client Hello(소스 IP = 클라이언트)

- 서버 Hello( 소스 IP = SWA )

- 서버 키 교환(소스 IP = SWA)

- 클라이언트 키 교환(소스 IP = 클라이언트)

- 데이터 전송

- TCP 연결 종료(4-Way Handshake)

이미지- HTTPS 클라이언트에서 SWA-Explicit- 캐시 없음

다음은 SNI(Server Name Indication)에서 볼 수 있듯이 클라이언트에서 SWA로의 클라이언트 Hello에 대한 세부 정보입니다. 이 예에서 볼 수 있는 웹 서버의 URL은 www.example.com 및 클라이언트 알림 17 Cipher Suites입니다.

이미지- HTTPS 클라이언트 hello - 명시적 - 클라이언트-SWA

팁: Wireshark에서 이 필터를 사용하여 URL/SNI : tls.handshake.extensions_server_name == "www.example.com"를 검색할 수 있습니다.

다음은 SWA가 클라이언트로 보낸 인증서의 샘플입니다

이미지 - HTTPS 인증서 - 명시적 - 클라이언트에 대한 SWA

SWA 및 웹 서버

네트워크 트래픽은 프록시의 IP 주소와 웹 서버의 IP 주소 간에 발생합니다.

SWA의 트래픽은 프록시 포트가 아니라 TCP 포트 443으로 전달됩니다

- TCP 핸드셰이크.

- Client Hello(대상 IP = 웹 서버, 대상 포트 = 443)

- Server Hello(소스 IP = 웹 서버)

- 데이터 전송

- TCP 연결 종료(4-Way Handshake)

이미지 - HTTPS - 명시적 - 웹 서버에 대한 SWA

다음은 SWA에서 웹 서버로의 Client Hello에 대한 세부 정보입니다. SWA 알림 12 암호 그룹을 확인할 수 있습니다.

이미지- HTTPS 클라이언트 Hello - SWA-웹 서버- 캐시 없음

참고: 여기에서 관찰된 암호 그룹은 이 트래픽을 해독하도록 구성된 SWA가 자체 암호를 사용하므로 클라이언트에서 SWA로의 클라이언트 Hello의 암호 그룹과 다릅니다.

팁: Server Key Exchange(서버 키 교환)에서 SWA에서 웹 서버로, 웹 서버 인증서가 나타납니다. 그러나 업스트림 프록시가 SWA에 대한 컨피그레이션을 찾으면 웹 서버 인증서 대신 해당 인증서가 표시됩니다.

다음은 클라이언트의 HTTP CONNECT 샘플입니다

이미지 - 클라이언트 HTTP 연결

이는 클라이언트에서 SWA로, 웹 서버로, 마지막으로 클라이언트로 다시 이동하는 트래픽의 전체 흐름을 나타냅니다.

이미지 - 전체 HTTPS 명시적-캐시 없음

참고: 각 트래픽 스트림은 서로 다른 색상으로 구분됩니다. 클라이언트에서 SWA로의 흐름은 한 색상이고 SWA에서 웹 서버로의 흐름은 다른 색상입니다.

이미지- HTTPS 흐름- 명시적 - 캐시 없음

다음은 액세스 로그의 예입니다.

1706174571.215 582 10.61.70.23 TCP_MISS_SSL/200 39 CONNECT tunnel://www.example.com:443/ - DIRECT/www.example.com - DECRYPT_WEBCAT_7-DefaultGroup-DefaultGroup-NONE-NONE-NONE-DefaultGroup-NONE <"IW_ref",3.7,-,"-",-,-,-,-,"-",-,-,-,"-",-,-,"-","-",-,-,"IW_ref",-,"-","Reference","-","Unknown","Unknown","-","-",0.54,0,-,"-","-",-,"-",-,-,"-","-",-,-,"-",-,-> - - [ Request Details: ID = 1600, User Agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:122.0) Gecko/20100101 Firefox/122.0", AD Group Memberships = ( NONE ) - ] [ Tx Wait Times (in ms): 1st byte to server = 113, Request Header = 0, Request to Server = 0, 1st byte to client = 113, Response Header = 0, Client Body = 79 ] [ Rx Wait Times (in ms): 1st request byte = 0, Request Header = 0, Client Body = 0, 1st response byte = 0, Response header = 0, Server response = 344, Disk Cache = 0; Auth response = 0, Auth total = 0; DNS response = 0, DNS total = 0, WBRS response = 0, WBRS total = 0, AVC response = 0, AVC total = 0, DCA response = 0, DCA total = 0, McAfee response = 0, McAfee total = 0, Sophos response = 0, Sophos total = 0, Webroot response = 0, Webroot total = 0, Anti-Spyware response = 0, Anti-Spyware total = 0, AMP response = 0, AMP total = 0; Latency = 0; "25/Jan/2024:10:22:51 +0100" ][Client Port = 24953, Server IP = 10.184.216.34, Server Port = 443]

1706174571.486 270 10.61.70.23 TCP_MISS_SSL/200 1106 GET https://www.example.com:443/ - DIRECT/www.example.com text/html DEFAULT_CASE_12-DefaultGroup-DefaultGroup-NONE-NONE-NONE-DefaultGroup-NONE <"IW_ref",3.7,1,"-",0,0,0,1,"-",-,-,-,"-",1,-,"-","-",-,-,"IW_ref",-,"Unknown","Reference","-","Unknown","Unknown","-","-",32.77,0,-,"Unknown","-",1,"-",-,-,"-","-",-,-,"-",-,-> - - [ Request Details: ID = 1630, User Agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:122.0) Gecko/20100101 Firefox/122.0", AD Group Memberships = ( NONE ) - ] [ Tx Wait Times (in ms): 1st byte to server = 0, Request Header = 0, Request to Server = 0, 1st byte to client = 3, Response Header = 0, Client Body = 0 ] [ Rx Wait Times (in ms): 1st request byte = 0, Request Header = 0, Client Body = 0, 1st response byte = 264, Response header = 0, Server response = 2, Disk Cache = 0; Auth response = 0, Auth total = 0; DNS response = 0, DNS total = 0, WBRS response = 0, WBRS total = 1, AVC response = 0, AVC total = 0, DCA response = 0, DCA total = 0, McAfee response = 0, McAfee total = 0, Sophos response = 0, Sophos total = 0, Webroot response = 0, Webroot total = 0, Anti-Spyware response = 0, Anti-Spyware total = 1, AMP response = 0, AMP total = 0; Latency = 2; "25/Jan/2024:10:22:51 +0100" ][Client Port = 24953, Server IP = 10.184.216.34, Server Port = 443]

참고: HTTPS 트래픽에 대한 투명 배포에서 볼 수 있듯이 Accesslogs에는 2개의 줄이 있습니다. 첫 번째 줄은 트래픽이 암호화되어 CONNECT를 볼 수 있으며 웹 서버의 URL이 tunnel://으로 시작됩니다. SWA에서 암호 해독이 활성화된 경우 두 번째 줄에 GET이 포함되고 전체 URL이 HTTPS로 시작되므로 트래픽이 암호 해독되었습니다.

통과 HTTPS 트래픽

트래픽을 통과하도록 SWA를 구성한 경우, 전체적인 흐름은 다음과 같습니다.

이미지 - HTTPS 통과 - 명시적 - 흐름

다음은 SWA에서 웹 서버로의 Client Hello 샘플입니다.

이미지- HTTPS Passthrough - Explicit - SWA to Webserver - Client hello

이는 클라이언트에서 SWA로의 클라이언트 Hello와 동일합니다.

이미지- HTTPS 패스스루 - 명시적 - 클라이언트-SWA - 클라이언트 hello

다음은 샘플 액세스 로그입니다.

1706185288.920 53395 10.61.70.23 TCP_MISS/200 6549 CONNECT tunnel://www.example.com:443/ - DIRECT/www.example.com - PASSTHRU_WEBCAT_7-DefaultGroup-DefaultGroup-NONE-NONE-NONE-DefaultGroup-NONE <"IW_ref",3.7,-,"-",-,-,-,-,"-",-,-,-,"-",-,-,"-","-",-,-,"IW_ref",-,"-","Reference","-","Unknown","Unknown","-","-",0.98,0,-,"-","-",-,"-",-,-,"-","-",-,-,"-",-,-> - - [ Request Details: ID = 210, User Agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:122.0) Gecko/20100101 Firefox/122.0", AD Group Memberships = ( NONE ) - ] [ Tx Wait Times (in ms): 1st byte to server = 233, Request Header = 0, Request to Server = 0, 1st byte to client = 119, Response Header = 0, Client Body = 0 ] [ Rx Wait Times (in ms): 1st request byte = 0, Request Header = 0, Client Body = 0, 1st response byte = 0, Response header = 0, Server response = 436, Disk Cache = 0; Auth response = 0, Auth total = 0; DNS response = 0, DNS total = 22, WBRS response = 0, WBRS total = 0, AVC response = 0, AVC total = 0, DCA response = 0, DCA total = 0, McAfee response = 0, McAfee total = 0, Sophos response = 0, Sophos total = 0, Webroot response = 0, Webroot total = 0, Anti-Spyware response = 0, Anti-Spyware total = 0, AMP response = 0, AMP total = 0; Latency = 22; "25/Jan/2024:13:21:28 +0100" ][Client Port = 59939, Server IP = 10.184.216.34, Server Port = 443]

참고: 보시다시피 한 줄이며 작업은 PASSTHRU입니다.

투명한 구축

인증 없는 투명 구축의 HTTP 트래픽

클라이언트 및 SWA

네트워크 트래픽은 클라이언트의 IP 주소와 웹 서버의 IP 주소 간에 전달됩니다.

클라이언트에서 오는 트래픽은 프록시 포트가 아닌 TCP 포트 80으로 전달됩니다

- TCP 핸드셰이크.

- 클라이언트에서 HTTP 가져오기(대상 IP = 웹 서버, 대상 포트 = 80)

- 프록시의 HTTP 응답(소스 IP = 웹 서버)

- 데이터 전송

- TCP 연결 종료(4-Way Handshake)

이미지 - 클라이언트에서 프록시로 - HTTP - 투명 - 인증 없음

다음은 클라이언트에서 가져온 HTTP Get의 샘플입니다

이미지 - 클라이언트에서 프록시로 - HTTP - 투명 - 인증 없음 - 클라이언트 HTTP 가져오기

SWA 및 웹 서버

네트워크 트래픽은 프록시의 IP 주소와 웹 서버의 IP 주소 간에 발생합니다.

SWA의 트래픽은 프록시 포트가 아닌 TCP 포트 80으로 전달됩니다

- TCP 핸드셰이크.

- 프록시에서 HTTP 가져오기(대상 IP = 웹 서버, 대상 포트 = 80)

- 웹 서버의 HTTP 응답(소스 IP = 프록시 서버)

- 데이터 전송

- TCP 연결 종료(4-Way Handshake)

이미지 - 프록시 및 웹 서버 - HTTP - 투명 - 인증 없음

다음은 프록시에서 HTTP Get의 샘플입니다.

이미지 - 웹 서버에 대한 프록시 - HTTP - 투명 - 인증 없음 - 프록시 HTTP 가져오기

이는 클라이언트에서 SWA로, 웹 서버로, 마지막으로 클라이언트로 다시 이동하는 트래픽의 전체 흐름을 나타냅니다.

이미지 - 총 트래픽 - HTTP - 투명 - 인증 없음

참고: 각 트래픽 스트림은 서로 다른 색상으로 구분됩니다. 클라이언트에서 SWA로의 흐름은 한 색상이고 SWA에서 웹 서버로의 흐름은 다른 색상입니다.

이미지 - WCCP HTTP 흐름

다음은 액세스 로그의 예입니다.

1702318427.181 124 192.168.1.10 TCP_MISS/200 1787 GET http://www.example.com/ - DIRECT/www.example.com text/html DEFAULT_CASE_12-DefaultGroup-DefaultGroup-NONE-NONE-NONE-DefaultGroup-NONE <"-",-,-,"-",-,-,-,-,"-",-,-,-,"-",-,-,"-","-",-,-,"-",-,"-","-","-","-","-","-","-",115.29,0,-,"-","-",-,"-",-,-,"-","-",-,-,"-",-,-> - - [ Request Details: ID = 50, User Agent = "curl/8.4.0", AD Group Memberships = ( NONE ) - ] [ Tx Wait Times (in ms): 1st byte to server = 0, Request Header = 0, Request to Server = 0, 1st byte to client = 0, Response Header = 0, Client Body = 0 ] [ Rx Wait Times (in ms): 1st request byte = 1, Request Header = 0, Client Body = 0, 1st response byte = 124, Response header = 0, Server response = 0, Disk Cache = 0; Auth response = 0, Auth total = 0; DNS response = 0, DNS total = 0, WBRS response = 0, WBRS total = 0, AVC response = 0, AVC total = 0, DCA response = 0, DCA total = 0, McAfee response = 0, McAfee total = 0, Sophos response = 0, Sophos total = 0, Webroot response = 0, Webroot total = 0, Anti-Spyware response = 0, Anti-Spyware total = 0, AMP response = 124>, AMP total = 124<; Latency = 1; "11/Dec/2023:19:13:47 +0100" ][Client Port = 54468, Server IP = 10.184.216.34, Server Port = 80]

캐시된 데이터가 있는 트래픽

데이터가 SWA 캐시에 있을 때 클라이언트에서 SWA로의 전체 트래픽 흐름을 나타냅니다.

이미지 - 캐시됨 - 총 트래픽 - HTTP - 투명 - 인증 없음

참고: 웹 서버에서 HTTP 응답 304: Cache not Modified를 반환하는 것을 볼 수 있습니다. (이 예에서는 패킷 번호 27)

다음은 HTTP 응답 304의 샘플입니다

Image(이미지) - Cached(캐시됨) - HTTP response(HTTP 응답) 304 - HTTP - Transparent(투명) - No Auth(인증 없음)

다음은 액세스 로그의 예입니다.

1702318789.560 105 192.168.1.10 TCP_REFRESH_HIT/200 1787 GET http://www.example.com/ - DIRECT/www.example.com text/html DEFAULT_CASE_12-DefaultGroup-DefaultGroup-NONE-NONE-NONE-DefaultGroup-NONE <"-",-,-,"-",-,-,-,-,"-",-,-,-,"-",-,-,"-","-",-,-,"-",-,"-","-","-","-","-","-","-",136.15,0,-,"-","-",-,"-",-,-,"-","-",-,-,"-",-,-> - - [ Request Details: ID = 360, User Agent = "curl/8.4.0", AD Group Memberships = ( NONE ) - ] [ Tx Wait Times (in ms): 1st byte to server = 0, Request Header = 0, Request to Server = 0, 1st byte to client = 0, Response Header = 0, Client Body = 0 ] [ Rx Wait Times (in ms): 1st request byte = 2, Request Header = 0, Client Body = 0, 1st response byte = 104, Response header = 0, Server response = 0, Disk Cache = 0; Auth response = 0, Auth total = 0; DNS response = 0, DNS total = 0, WBRS response = 0, WBRS total = 0, AVC response = 0, AVC total = 0, DCA response = 0, DCA total = 0, McAfee response = 0, McAfee total = 0, Sophos response = 0, Sophos total = 0, Webroot response = 0, Webroot total = 0, Anti-Spyware response = 0, Anti-Spyware total = 0, AMP response = 105>, AMP total = 105<; Latency = 2; "11/Dec/2023:19:19:49 +0100" ][Client Port = 54487, Server IP = 10.184.216.34, Server Port = 80]

인증 없는 투명 구축의 HTTP 트래픽

클라이언트 및 SWA

네트워크 트래픽은 클라이언트의 IP 주소와 웹 서버의 IP 주소 간에 전달됩니다.

클라이언트에서 오는 트래픽은 프록시 포트가 아닌 TCP 포트 443으로 전달됩니다

- TCP 핸드셰이크.

- TLS 핸드셰이크 클라이언트 Hello - 서버 Hello - 서버 키 교환 - 클라이언트 키 교환

- 데이터 전송

- TCP 연결 종료(4-Way Handshake)

이미지 - 클라이언트에서 프록시로 - HTTP - 투명 - 인증 없음

다음은 SNI(Server Name Indication)에서 볼 수 있듯이 클라이언트에서 SWA로의 클라이언트 Hello에 대한 세부 정보입니다. 웹 서버의 URL을 확인할 수 있으며 이 예에서는 www.example.com입니다.

이미지- 클라이언트 Hello - 클라이언트에서 프록시로 - 투명 - 인증 없음

팁: Wireshark에서 이 필터를 사용하여 URL/SNI : tls.handshake.extensions_server_name == "www.example.com"을 검색할 수 있습니다.

다음은 서버 키 교환 샘플입니다.

이미지 - 서버 키 교환 - 클라이언트에서 프록시로 - 투명 - 인증 없음

참고: 보시다시피 인증서가 SWA에서 암호 해독 인증서로 구성된 인증서입니다.

SWA 및 웹 서버

네트워크 트래픽은 프록시의 IP 주소와 웹 서버의 IP 주소 간에 발생합니다.

SWA의 트래픽은 프록시 포트가 아니라 TCP 포트 443으로 전달됩니다

- TCP 핸드셰이크.

- TLS 핸드셰이크 클라이언트 Hello - 서버 Hello - 서버 키 교환 - 클라이언트 키 교환

- 데이터 전송

- TCP 연결 종료(4-Way Handshake)

이미지 - 웹 서버에 대한 프록시 - HTTP - 투명 - 인증 없음

다음은 SWA에서 웹 서버로의 Client Hello 샘플입니다

이미지- 클라이언트 Hello - 웹 서버에 대한 프록시 - 투명 - 인증 없음

참고: 여기에서 관찰된 암호 그룹은 이 트래픽을 해독하도록 구성된 SWA가 자체 암호를 사용하므로 클라이언트에서 SWA로의 클라이언트 Hello의 암호 그룹과 다릅니다.

팁: Server Key Exchange(서버 키 교환)에서 SWA에서 웹 서버로, 웹 서버 인증서가 나타납니다. 그러나 업스트림 프록시가 SWA에 대한 컨피그레이션을 찾으면 웹 서버 인증서 대신 해당 인증서가 표시됩니다.

다음은 액세스 로그의 예입니다.

1702319784.943 558 192.168.1.10 TCP_MISS_SSL/200 0 TCP_CONNECT 10.184.216.34:443 - DIRECT/www.example.com - DECRYPT_ADMIN_DEFAULT_ACTION_7-DefaultGroup-DefaultGroup-NONE-NONE-NONE-DefaultGroup-NONE <"-",-,-,"-",-,-,-,-,"-",-,-,-,"-",-,-,"-","-",-,-,"-",-,"-","-","-","-","-","-","-",0.00,0,-,"-","-",-,"-",-,-,"-","-",-,-,"-",-,-> - - [ Request Details: ID = 940, User Agent = -, AD Group Memberships = ( NONE ) - ] [ Tx Wait Times (in ms): 1st byte to server = 0, Request Header = 0, Request to Server = 0, 1st byte to client = 0, Response Header = 0, Client Body = 50 ] [ Rx Wait Times (in ms): 1st request byte = 0, Request Header = 45, Client Body = 0, 1st response byte = 0, Response header = 0, Server response = 249, Disk Cache = 0; Auth response = 0, Auth total = 0; DNS response = 0, DNS total = 5, WBRS response = 0, WBRS total = 0, AVC response = 0, AVC total = 0, DCA response = 0, DCA total = 0, McAfee response = 0, McAfee total = 0, Sophos response = 0, Sophos total = 0, Webroot response = 0, Webroot total = 0, Anti-Spyware response = 0, Anti-Spyware total = 0, AMP response = 558>, AMP total = 558<; Latency = 50; "11/Dec/2023:19:36:24 +0100" ][Client Port = 54515, Server IP = 10.184.216.34, Server Port = 443]

1702319785.190 247 192.168.1.10 TCP_MISS_SSL/200 1676 GET https://www.example.com:443/ - DIRECT/www.example.com text/html DEFAULT_CASE_12-DefaultGroup-DefaultGroup-NONE-NONE-NONE-DefaultGroup-NONE <"-",-,-,"-",-,-,-,-,"-",-,-,-,"-",-,-,"-","-",-,-,"-",-,"-","-","-","-","-","-","-",54.28,0,-,"-","-",-,"-",-,-,"-","-",-,-,"-",-,-> - - [ Request Details: ID = 960, User Agent = "curl/8.4.0", AD Group Memberships = ( NONE ) - ] [ Tx Wait Times (in ms): 1st byte to server = 0, Request Header = 0, Request to Server = 0, 1st byte to client = 50, Response Header = 50, Client Body = 0 ] [ Rx Wait Times (in ms): 1st request byte = 0, Request Header = 97, Client Body = 0, 1st response byte = 48, Response header = 0, Server response = 0, Disk Cache = 0; Auth response = 0, Auth total = 0; DNS response = 0, DNS total = 0, WBRS response = 0, WBRS total = 0, AVC response = 0, AVC total = 0, DCA response = 0, DCA total = 0, McAfee response = 0, McAfee total = 0, Sophos response = 0, Sophos total = 0, Webroot response = 0, Webroot total = 0, Anti-Spyware response = 0, Anti-Spyware total = 0, AMP response = 247>, AMP total = 247<; Latency = 97; "11/Dec/2023:19:36:25 +0100" ][Client Port = 54515, Server IP = 10.184.216.34, Server Port = 443]

참고: HTTPS 트래픽에 대한 투명 구축에서 볼 수 있듯이 Accesslogs에는 2개의 줄이 있습니다. 첫 번째 줄은 트래픽이 암호화되어 있는 경우이며 TCP_CONNECT 및 웹 서버의 IP 주소를 볼 수 있습니다. SWA에서 암호 해독이 활성화된 경우 두 번째 줄에 GET이 포함되고 전체 URL이 HTTPS로 시작합니다. 이는 트래픽이 암호 해독되었고 SWA가 URL을 알고 있음을 의미합니다.

관련 정보

- 기술 지원 및 문서 − Cisco Systems

- 액세스 로그의 성능 매개변수 구성 - Cisco