목차/13. 고급 브라우저 인증

13고급 브라우저 인증고급 브라우저 인증

Browser-Based Authentication을 더 다듬는 고급 설정들을 모았습니다. 이 장은 Captive Portal의 표시 문구를 조직에 맞게 바꾸고, 새 언어를 추가해 다국어로 보여 주며, Transparent Kerberos Authentication 으로 AD에 이미 로그인한 사용자를 자격 증명 재입력 없이 투명하게 인증 하는 마무리 손질을 빠짐없이 정리합니다. 원문이 절차·표·주의로 나열한 내용을 그대로 담되, 왜 그렇게 하는지를 함께 풀어 둡니다.

텍스트 문자열 맞춤 (Customizing Text Strings)

웹 인터페이스는 일부를 직접 손볼 수 있습니다. 대표적으로 Captive Portal의 Network Login 페이지에 뜨는 문구(text strings)를 바꾸는 것입니다. 방법은 두 갈래입니다 — 기본 영어 문구를 다른 영어 문구로 바꾸거나, 언어 파일을 편집해 다른 언어로 문구를 보여 주는 것입니다.

두 방식은 저장 위치와 업그레이드 동작이 다르니 미리 구분해 두어야 합니다.

  • 영어 문구 변경 — SmartConsole에서 바꿉니다. 변경 내용은 데이터베이스에 저장되고 업그레이드 때도 유지 됩니다.
  • 다른 언어 설정 — Security Gateway에 언어 파일을 구성합니다. 이 파일들은 게이트웨이에 저장되지만 업그레이드되지 않 습니다.

String ID Help Mode로 문자열 ID 확인하기

어떤 문구를 바꾸려면 그 문구가 어떤 문자열 ID(string ID) 에 해당하는지 알아야 편합니다. Captive Portal을 String ID Help Mode 로 두면 각 텍스트 캡션에 쓰인 문자열 ID가 화면에 그대로 보입니다.

  1. Security Gateway에서 다음 파일을 엽니다.
   
  1. 파일 안에서 // return $stringID; 줄을 return $stringID; 로 바꿉니다 — 즉 return $stringID 앞에 붙은 슬래시 두 개(//)를 지우는 것입니다.
  2. 웹 브라우저에서 Captive Portal을 다시 로드합니다. 그러면 포털이 문자열 ID를 표시한 상태로 열립니다.
  3. 원래 보기 모드로 되돌리려면 L10N.php 파일을 다시 열어 return $stringID 앞에 슬래시를 다시 붙입니다.

SmartConsole에서 포털 문구 바꾸기

영어 문구를 다른 영어 문구로 바꾸는 절차입니다.

  1. SmartConsole에서 Menu > Global properties 로 갑니다.
  2. 왼쪽 탐색 트리에서 Advanced > Configure 를 클릭합니다.
  3. Identity Awareness > Portal Texts 로 이동합니다.
  4. 필요한 필드에서 DEFAULT 라는 단어를 지우고 새 영어 문구를 입력합니다.
  5. OK 를 클릭합니다.
  6. 정책을 설치(Install policy)합니다.

새 언어 추가 (Adding a New Language)

Captive Portal은 Network Login 페이지를 여러 언어로 보여 줄 수 있습니다. 언어 선택 목록을 켜 두면 사용자가 페이지 하단에서 로그인할 언어를 직접 고를 수 있습니다.

기본 상태에서는 목록에 English 하나만 있고, 그에 해당하는 언어 파일이 함께 들어 있습니다. 새 언어마다 두 가지 를 해 줘야 합니다 — 지원 언어 파일(supported languages file)에 항목을 만들고, 새 언어 파일을 만드는 것입니다. 전체 과정은 다음 네 단계입니다.

1단계 — 새 언어 로케일을 언어 배열에 추가

지원 언어 파일에는 Captive Portal 목록에 보일 언어 항목들이 들어 있습니다.

  1. 다음 파일을 엽니다.
   
  1. $arLanguages 배열 안에 새 로케일 항목을 "xx_XX" => "XName" 구문으로 만듭니다.

예를 들어 독일어라면 이렇게 적습니다.

"de_DE" => "German"

2단계 — 새 언어 파일 만들기

영어 언어 파일을 틀(template) 로 삼아 새 언어 파일을 만든 뒤, 그 안의 문자열을 번역합니다. 영어 파일 portal_en_US.php 가 원본 언어 기준이며, 메시지 문자열을 담고 있습니다. 모든 문자열을 다 번역할 필요는 없지만, 새 언어 파일에는 모든 문자열이 포함되어 있어야 합니다.

번역할 때는 번역문의 길이를 원래 영어 문자열과 거의 비슷하게 맞추세요. 길이가 크게 달라지면 페이지 레이아웃이 깨지기 때문입니다. 도저히 맞출 수 없으면 기술 지원에 문의하는 편이 낫습니다.

실제로 언어 파일을 만드는 절차는 다음과 같습니다.

  1. 영어 언어 파일을 복사합니다.
   
  1. portal_xx_XX.php 구문으로 새 언어 이름을 붙여 이름을 바꿉니다. 예: portal_de_DE.php.
  2. 새 언어 파일 안의 문자열을 번역합니다.
  3. 새 언어 파일의 읽기 권한을 원본 언어 파일과 동일 하게 맞춥니다. 다음 명령으로 읽기·쓰기 권한을 설정합니다.
   chmod 666 <file name>
   

3단계 — 새 언어 파일 저장 (UTF-8 인코딩)

언어 파일은 반드시 UTF-8 인코딩 으로 저장해야 합니다.

  1. Notepad, Microsoft Word 등 편집기로 파일을 UTF-8 인코딩으로 저장합니다. Microsoft Word를 쓴다면 인코딩 방식을 UTF-8로 해 .txt 파일로 저장한 뒤 portal_xx_XX.php 로 이름을 바꿉니다 (예: portal_de_DE.php).
  2. 파일이 아직 그 위치에 없다면 /opt/CPNacPortal/phpincs/conf/L10N 로 옮깁니다.

4단계 — Network Login 페이지에 언어 선택 목록 표시

영어만 쓸 때는 Captive Portal Network Login 페이지 하단에 언어 선택 목록이 보이지 않 습니다. 추가 언어를 구성했다면 Network Login 페이지에 언어 선택 목록이 나타나도록 설정 해야 합니다. 그래야 Captive Portal 사용자가 로그인할 언어를 고를 수 있습니다.

서버 인증서 보기 (Viewing the Certificate)

포털은 HTTPS로 동작하므로 서버 인증서가 필요합니다. Security Gateway는 브라우저로 포털에 접속할 때 이 인증서를 씁니다.

  • 웹 브라우저에서 보기 — 포털에 접속한 뒤, 대부분의 브라우저에서 주소창 옆의 자물쇠 아이콘 을 클릭하면 인증서를 볼 수 있습니다.
  • SmartConsole에서 보기 — 해당 blade/feature의 포털 설정 페이지에서 Certificate 섹션의 View 를 클릭합니다.

사용자가 보는 인증서는 실제 접속에 사용한 IP 주소 에 따라 달라집니다 — SmartConsole에 설정한 포털 IP만이 아닙니다.

Transparent Kerberos Authentication

Transparent Kerberos Authentication 의 SSO(Single Sign-On) 솔루션은 AD에 이미 로그인한 사용자를 투명하게 인증 합니다. 즉 사용자가 도메인에 한 번 인증하면, 자격 증명을 다시 입력하지 않고도 허가된 모든 네트워크 자원에 접근합니다. 투명 인증이 실패하면 사용자는 수동 인증을 위해 Captive Portal로 redirect 됩니다.

동작 원리 — Kerberos 티켓

Windows 도메인의 SSO는 Kerberos 인증 프로토콜로 동작합니다. Kerberos는 티켓(ticket) 개념을 기반으로 하는데, 티켓은 신뢰받는 기관인 Active Directory(AD)가 발급하는 암호화 데이터 패킷입니다. 사용자가 로그인하면 도메인 컨트롤러에 인증하고, 컨트롤러는 사용자 신원을 보증하는 초기 티켓인 TGT(Ticket Granting Ticket) 를 내줍니다.

미식별 사용자가 Captive Portal로 redirect되려는 순간, 다음 흐름이 일어납니다.

  1. Captive Portal이 브라우저에 인증을 요청합니다.
  2. 브라우저가 Captive Portal에 Kerberos 티켓을 제시합니다.
  3. Captive Portal이 그 티켓을 게이트웨이(Identity Awareness Gateway)로 보냅니다.
  4. 게이트웨이가 티켓을 복호화해 사용자 신원을 추출하고, Identity Awareness가 있는 모든 Security Gateway에 게시 합니다.
  5. 인가·식별된 사용자는 원래 요청했던 URL로 redirect됩니다.
  6. 투명 자동 인증(2~5단계)이 실패하면 사용자는 식별을 위해 Captive Portal로 redirect됩니다.

Transparent Kerberos Authentication은 Kerberos를 협상하기 위해 GSS-API Negotiation Mechanism(SPNEGO) 인터넷 표준을 사용합니다. 이는 Identity Agent가 Kerberos 티켓을 제시할 때 쓰는 방식과 같습니다(자세한 내용은 Identity Awareness Clients Administration Guide 참고).

구성 개요 (Configuration Overview)

전체 구성은 세 갈래로 나뉘며, 아래에서 차례로 설명합니다.

  • AD 구성 — 사용자 계정을 만들고 Kerberos principal name에 매핑합니다.
    • HTTP 연결: HTTP/<captive portal full dns name>@DOMAIN
    • HTTPS 연결: HTTPS/<captive portal full dns name>@DOMAIN
  • SmartConsole 구성
    • LDAP Account Unit을 만들고 SSO로 구성합니다.
    • Identity Awareness Gateway에서 Transparent Kerberos Authentication을 켭니다.
  • 엔드포인트 클라이언트 구성 — 브라우저에서 신뢰 사이트(trusted sites)를 설정합니다.

각 절차는 적용되는 곳마다 HTTP·HTTPS 두 경우를 모두 안내합니다.

새 사용자 계정 만들기 (AD)

  1. Active Directory에서 Active Directory Users and Computers 를 엽니다(Start > Run > dsa.msc).
  2. 새 사용자 계정을 추가합니다. 사용자 이름과 암호는 하나만 골라 정합니다. 예를 들어 도메인 corp.acme.com 에 계정 이름 ckpsso, 암호 qwe123!@# 처럼 정할 수 있습니다.
  3. User must change password at next logon 옵션을 해제하고 Password Never Expires 를 선택합니다.

사용자 계정을 Kerberos Principal Name에 매핑

setspn 유틸리티를 실행해 Security Gateway와 AD가 함께 쓰는 Kerberos principal name 을 만듭니다. principal name은 서비스 이름(브라우저가 접속하는 Security Gateway용)과 도메인 이름(서비스가 속한 도메인) 으로 이뤄집니다. setspn은 Windows Server 2000 이상에서 쓸 수 있는 명령줄 유틸리티입니다.

setspn.exe 설치

AD 서버에 맞는 버전의 setspn.exe를 설치합니다. Windows 2003에는 기본 설치되어 있지 않 습니다.

  • Windows 2003
    1. 설치 전에 Microsoft Support 사이트에서 서비스 팩에 맞는 실행 파일 을 받습니다. 이는 Windows 2003 support tools의 일부입니다(예: AD 2003 SP2는 2003 SP2용 support tools 필요).
    2. support.cabsuptools.msi 파일을 AD 서버의 새 폴더로 내려받습니다.
    3. suptools.msi 를 실행합니다.
  • Windows Server 2008 이상 — setspn 유틸리티가 Windows\System32 폴더에 이미 설치 되어 있습니다. 명령 프롬프트를 관리자 권한으로 실행하세요.

setspn 사용

  1. 명령줄을 엽니다(Start > Run > cmd).
  2. 다음 구문으로 setspn을 실행합니다. HTTP 연결의 경우:
   setspn -A HTTP/<captive_portal_full_dns_name> <username>
   

예시는 다음과 같습니다.

setspn -A HTTP/mycaptive.corp.acme.com ckpsso

이제 AD는 Security Gateway용 Kerberos 인증을 지원할 준비가 됐습니다. principal name에 연결된 사용자를 보려면 다음을 실행합니다.

setspn -Q HTTP*/*

Account Unit 구성 (SmartConsole)

  1. AD 도메인 컨트롤러를 나타낼 새 호스트를 추가합니다. SmartConsole에서 Object Explorer(Ctrl+E)를 열고 New > Host 를 클릭합니다.
  2. AD 오브젝트의 이름과 IP 주소를 입력합니다.
  3. OK 를 클릭합니다.
  4. 새 LDAP Account Unit을 추가합니다. Object Explorer에서 New > More > User/Identity > LDAP Account Unit 을 클릭합니다.
  5. LDAP Account Unit의 General 탭에서:
    • a. 이름을 입력합니다.
    • b. Profile 에서 Microsoft_AD 를 선택합니다.
    • c. Domain 에 도메인 이름을 입력합니다.
    • d. CRL retrievalUser management 를 선택합니다.
  1. Active Directory SSO configuration 을 클릭하고 값을 구성합니다.
    • a. Use Kerberos Single Sign On 을 선택합니다.
    • b. 도메인 이름을 입력합니다.
    • c. "새 사용자 계정 만들기"에서 만든 계정 사용자 이름 을 입력합니다.
    • d. 그 사용자의 계정 암호(AD에 설정한 것과 같은 암호) 를 입력하고 확인란에 한 번 더 입력합니다.
    • e. Ticket encryption method 는 기본값 그대로 둡니다.
    • f. OK 를 클릭합니다.
  2. Servers 탭에서:
    • a. Add 를 클릭해 LDAP Server 속성을 입력합니다.
    • b. Host 에서 앞서 구성한 AD 오브젝트를 선택합니다.
    • c. Login DN 에 LDAP 작업에 쓸, AD에 미리 추가한 사용자의 login DN을 입력합니다.
    • d. LDAP 사용자 암호를 입력하고 확인란에 한 번 더 입력합니다.
    • e. Check Point Gateways are allowed to 섹션에서 Read data from this server 를 선택합니다.
    • f. Encryption 탭에서 Use Encryption (SSL) 을 선택합니다. fingerprint를 가져온(Fetch) 뒤 OK 를 클릭합니다.
  1. Objects Management 탭에서:
    • a. Server to connect 에서 구성한 AD 오브젝트를 선택합니다.
    • b. Fetch Branches 를 클릭해 사용 중인 branch를 구성합니다.
    • c. 지원할 항목(entry) 수를 설정합니다.
  2. Authentication 탭에서 Default authentication scheme > Check Point Password 를 선택합니다.
  3. OK 를 클릭합니다.

Transparent Kerberos Authentication 켜기

  1. SmartConsole에 로그인합니다.
  2. 왼쪽 Navigation Toolbar에서 Gateways & Servers 를 클릭합니다.
  3. Identity Awareness Gateway 오브젝트를 엽니다.
  4. 왼쪽 트리에서 Identity Awareness 페이지로 갑니다.
  5. Browser-Based Authentication > Settings 를 클릭하면 Captive Portal Settings 창이 열립니다.
  6. Authentication Settings 섹션에서 Edit 를 클릭합니다.
  7. Automatically authenticate users from machines in the domain 을 선택합니다.

여기서 Main URL 필드에는 SSO 과정을 시작하는 URL(IP 주소 또는 Hostname 포함) 이 들어 있습니다. 투명 인증이 실패하면 사용자는 구성된 Captive Portal로 redirect됩니다.

  1. OK 를 클릭해 모든 창을 닫습니다.
  2. Access Control Policy를 설치합니다.

브라우저 구성 (Browser Configuration)

Transparent Kerberos Authentication이 동작하려면 브라우저가 Captive Portal URL을 신뢰 하도록 설정해야 합니다. 포털이 HTTPS로 동작한다면 추가로 HTTPS를 통해 그 URL을 Local Internet 영역에 넣어야 합니다.

Internet Explorer

IE에서는 Captive Portal URL을 Trusted Sites에 넣을 필요가 없 습니다. 대신 다음처럼 합니다.

  1. Internet Explorer를 엽니다.
  2. Internet Tools > Options > Security > Local intranet > Sites > Advanced 로 갑니다.
  3. 해당 칸에 Captive Portal URL을 입력하고 Add 를 클릭합니다.

Google Chrome

  1. Chrome을 엽니다.
  2. 메뉴(스패너) 아이콘을 클릭하고 Settings 를 선택합니다.
  3. Show advanced settings 를 클릭합니다.
  4. Network 섹션에서 Change Proxy Settings 를 클릭합니다.
  5. Internet Properties 창에서 Security > Local intranet > Sites > Advanced 로 갑니다.
  6. 해당 칸에 Captive Portal URL을 입력합니다.