네트워크
SSL VPN(anyconnect) 이론 #2
CBROJIN
2025. 6. 8. 09:26
🧩 SSL VPN 접속 전체 흐름 및 프로토콜 구조 설명
🧩 Step-by-Step 접속 흐름
Step 1: TLS (SSL) Handshake
- 목적: ASA와 클라이언트 간에 안전한 암호화 채널 형성
- 포트: TCP 443
- 프로토콜: TLSv1.0~1.2, AES, RSA, SHA1 등 암호화 알고리즘 협상
- 결과: 인증서 교환, 세션 키 설정 완료 → 이후 모든 통신은 암호화됨
Connected to HTTPS on 50.50.50.1 with ciphersuite (TLS1.0)-(RSA)-(AES-128-CBC)-(SHA1)
Step 2: HTTP/1.1 로그인 요청
- 내용: 클라이언트가 ASA에 로그인 시도 (username/password 입력)
- 형식: HTTP POST / 요청
- 응답: ASA가 HTTP/1.1 200 OK 로 세션 생성 응답
POST https://50.50.50.1/
Got CONNECT response: HTTP/1.1 200 OK
Step 3: CSTP (Cisco Secure Tunnel Protocol)
- 기반: HTTP/1.1 포맷을 기반으로 하는 TCP 캡슐화 터널
- 기능: 실질적인 VPN 트래픽은 CSTP 구조로 전송
- 특징: TLS 위에서 작동하는 안정적인 구조, DPD/Keepalive 포함
CSTP connected. DPD 30, Keepalive 20
Step 4: DTLS Handshake (선택적)
- 목적: CSTP보다 빠른 UDP 기반 고속 터널 생성 시도
- 포트: UDP 443 (또는 UDP 62515 등)
- 프로토콜: DTLS 1.0 또는 1.2 (TLS over UDP)
- 특징: NAT/방화벽 환경에서 실패 가능성 있음
실패 로그
Invalid handshake packet headers. Discarding.
DTLS handshake failed: Resource temporarily unavailable, try again.
# DTLS는 실패해도 CSTP 터널은 유지되므로 VPN 사용 가능
🧩 프로토콜별 역할 요약표
프로토콜 | 역할 | 특징/설명 |
TLS/SSL | 암호화된 채널 형성 | 443/tcp, 인증서 기반 연결, 기본 보호 계층 |
HTTP/1.1 | 로그인 및 세션 초기화 | POST 요청으로 사용자 인증 및 tunnel-group 선택 |
CSTP | 실질적인 VPN 터널링 (TCP) | TLS 위에서 암호화된 VPN 트래픽 전송 (AnyConnect 전용) |
DTLS | 고성능 터널 (UDP 기반, 선택적) | 빠름. 실패해도 CSTP fallback 가능 |
🧩 결론 정리
SSL VPN은 TLS → CSTP → (DTLS 선택) 순서로 세션을 수립하며, TLS는 안전한 암호화 계층, CSTP는 신뢰성 있는 전송 터널, DTLS는 성능 향상용 보조 채널 역할을 합니다.
DTLS가 실패해도 접속은 유지되며, 접속 안정성과 보안은 기본적으로 TLS + CSTP로도 충분히 확보됩니다.