이 문서에서는 Kerberos 인증의 기본 사항 및 SWA(Secure Web Appliance)에서 Kerberos 인증 문제를 해결하는 단계에 대해 설명합니다.
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
이미지: 샘플 Kerberos 네트워크 흐름
Kerberized 환경에서 인증을 위한 기본 단계는 다음과 같습니다.
1. 클라이언트가 KDC에 TGT를 요청합니다.
2. KDC는 클라이언트 시스템 사용자 자격 증명을 확인하고 암호화된 TGT 및 세션 키를 다시 전송합니다.
3. TGT가 TGS 비밀 키로 암호화됩니다.
4. 클라이언트가 TGT를 저장하고 만료 시 자동으로 새 TGT를 요청합니다.
서비스 또는 리소스에 액세스하는 경우
1. 클라이언트가 원하는 리소스의 SPN과 함께 TGT를 TGS에 보냅니다.
2. KDC는 TGT를 확인하고 사용자 클라이언트 시스템 액세스 권한을 확인합니다.
3. TGS가 클라이언트에 서비스별 세션 키를 보냅니다.
4. 클라이언트가 액세스를 증명하기 위해 서비스에 세션 키를 제공하고, 서비스는 액세스를 허용합니다.

1. 클라이언트가 SWA를 통해 www.google.com에 대한 액세스를 요청합니다.
2. SWA가 인증을 요청하면서 HTTP 407 상태로 응답합니다.
3. 클라이언트는 도메인 가입 중에 받는 TGT를 사용하여 HTTP/SWA.domain.com 서비스에 대한 AD 서버의 서비스 티켓을 요청합니다.
4. AD 서버는 클라이언트를 검증하고 서비스 티켓을 발급하며, 성공하고 SWA의 SPN을 찾은 경우 다음 단계로 진행합니다.
5. 클라이언트가 이 티켓을 SWA로 보냅니다.
6. SWA가 티켓을 해독하고 인증을 확인합니다.
7. 인증에 성공하면 SWA가 정책을 확인합니다.
8. 트랜잭션이 허용되는 경우 SWA가 클라이언트에 HTTP 200 OK 응답을 보냅니다.
SPN은 Kerberos 인증에서 서비스 인스턴스를 고유하게 식별합니다. 서비스 인스턴스를 서비스 계정에 연결하여 클라이언트가 계정 이름 없이 서비스에 대한 인증을 요청할 수 있습니다. KDC 구현(예: AD 또는 OpenLDAP)의 각 계정에는 SPN이 있습니다. SPN은 서비스를 엄격하게 식별하지만, 서비스가 클라이언트 역할을 하는 시나리오에서 클라이언트 이름(UPN)을 참조하는 데 잘못 사용되는 경우가 있습니다.
Kerberos에서 SPN은 네트워크 내에서 서비스 인스턴스를 고유하게 식별합니다. 클라이언트가 특정 서비스에 대한 인증을 요청할 수 있습니다. SPN은 서비스 인스턴스를 해당 계정에 연결하여 Kerberos가 해당 서비스에 대한 액세스 요청을 올바르게 인증하고 권한을 부여할 수 있도록 합니다.
1. 새 사용자 계정을 생성하거나 사용할 기존 사용자 계정을 선택합니다.
2. 선택한 사용자 계정에 사용할 SPN을 등록합니다.
3. 중복 SPN이 등록되어 있지 않은지 확인합니다.
팁: 로드 밸런서 또는 트래픽 관리자/트래픽 셰이퍼 뒤에서 SWA를 사용하는 Kerberos는 어떻게 다릅니까?
Kerberos 구현에 대한 모범 사례를 찾을 수 있습니다.
Kerberos 환경에서 SPN을 관리하는 데 유용한 setspn 명령 목록입니다. 이러한 명령은 일반적으로 Windows 환경에서 관리자 권한이 있는 CLI에서 실행됩니다.
| 특정 계정의 SPN 나열: |
지정된 계정에 대해 등록된 모든 SPN을 나열합니다. |
| 계정에 SPN 추가: |
지정된 SPN을 지정된 계정에 추가합니다. |
| 계정에서 SPN 삭제: |
지정된 SPN을 지정된 계정에서 제거합니다. |
| SPN이 이미 등록되어 있는지 확인: |
지정한 SPN이 도메인에 이미 등록되어 있는지 확인합니다. |
| 도메인의 모든 SPN 나열 |
도메인에 있는 모든 SPN을 나열합니다. |
| 컴퓨터 계정에 대한 SPN 설정: |
SPN을 컴퓨터 계정에 추가하여 중복 항목이 없도록 합니다. |
| 특정 계정의 SPN 재설정: |
지정한 계정의 SPN을 다시 설정하여 중복된 SPN 문제를 해결합니다. |
제공된 예는 사용 방법을 보여줍니다.
SPN이 사용자 계정과 이미 연결되어 있는지 확인:
setspn -q
setspn -q http/proxyha.localdomain


setspn -s
예를 들면 다음과 같습니다.
setspn -s http/proxyha.localdomain vrrpserviceuser

setspn -d
예를 들면 다음과 같습니다.
setspn -d http/proxyha.localdomain pod1234-wsa0

나중에 오류가 발생할 수 있으므로 HA 가상 호스트 이름에 대해 중복된 SPN이 없는지 확인합니다.
setspn –x
따라서 Kerberos 서비스 티켓이 클라이언트에 제공되지 않으며 Kerberos 인증이 실패합니다.

주의: 중복 항목이 발견되면 setspn -d 명령을 실행하는 중복 항목을 제거합니다.
setspn –l
예를 들면 다음과 같습니다.
setspn –l vrrpserviceuser

Kerberos 인증 문제를 해결할 때 Cisco 지원에 필요한 정보:
server IP address = %k, Client IP address= %a, Auth-Mech = %m, Auth_Type= %m, Auth_group= %g, Authenticated_Username= %A, Date= %L, Transaction_ID= %I Auth response = %:a;

한 가지 일반적인 오류 사례는 "Kerberos 데이터베이스에서 서버를 찾을 수 없습니다"와 함께 웹 요청이 실패하는 경우입니다.
curl -vx proxyha.local:3128 --proxy-negotiate -u: http://www.cisco.com/
* About to connect() to proxy proxyha.localdomain port 3128 (#0)
* Connected to proxyha.local (10.8.96.30) port 3128 (#0)
< HTTP/1.1 407 Proxy Authentication Required
< Via: 1.1 pod1234-wsa02.local:80 (Cisco-SWA/10.1.2-003)
< Content-Type: text/html
gss_init_sec_context() failed: : Server not found in Kerberos database
< Proxy-Authenticate: Negotiate
< Connection: close
* HTTP/1.1 proxy connection set close!
이 경우 오류는 프록시 주소 값 proxyha.local에 해당하는 서비스 사용자 이름이 Active Directory 서버에 등록되지 않았음을 나타냅니다. 이 문제를 해결하려면 SPN http/proxyha.local이 AD DC에 등록되어 있고 적절한 서비스 계정에 추가되었는지 확인해야 합니다.
| 개정 | 게시 날짜 | 의견 |
|---|---|---|
3.0 |
22-Oct-2026
|
맞춤법, 문법, 간격, 삽입된 가로 선을 가독성을 위해 별도의 섹션으로, 고정된 URL로 업데이트했습니다. |
2.0 |
01-Apr-2025
|
대체 텍스트, 고정 서식 및 구두점, 문법을 추가했습니다. |
1.0 |
24-Mar-2025
|
최초 릴리스 |