소개
이 문서에서는 ISE(Identity Services Engine)에 대한 VPN 사용자 상태를 파악하기 위해 FTD(Firepower Threat Defense) 버전 6.4.0을 구성하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
- AnyConnect 원격 액세스 VPN
- FTD의 원격 액세스 VPN 구성
- ISE(Identity Services Engine) 및 상태 서비스
사용되는 구성 요소
이 문서의 정보는 다음 소프트웨어 버전을 기반으로 합니다.
- Cisco FTD(Firepower Threat Defense) 소프트웨어 버전 6.4.0
- Cisco FMC(Firepower Management Console) 소프트웨어 버전 6.5.0
- Microsoft Windows 10(Cisco AnyConnect Secure Mobility Client 버전 4.7 포함)
- Cisco ISE(Identity Services Engine) 버전 2.6 및 패치 3
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
구성
네트워크 다이어그램 및 트래픽 흐름
1. 원격 사용자가 FTD에 대한 VPN 액세스를 위해 Cisco Anyconnect를 사용합니다.
2. FTD가 해당 사용자에 대한 RADIUS 액세스 요청을 ISE에 전송합니다.
3. 해당 요청이 ISE의 FTD-VPN-Posture-Unknown이라는 정책에 도달합니다. ISE는 세 가지 특성을 가진 RADIUS Access-Accept를 전송합니다.
4. DACL이 전송 된 경우, RADIUS 액세스 요청/액세스 수락 DACL의 내용을 다운로드 하기 위해 교환 됩니다
5. VPN 사용자의 트래픽이 로컬로 정의된 ACL과 일치하면 ISE 클라이언트 프로비저닝 포털로 리디렉션됩니다. ISE는 AnyConnect Posture Module 및 Compliance Module을 프로비저닝합니다.
6. 에이전트는 클라이언트 시스템에 설치된 후 프로브를 사용하여 ISE를 자동으로 검색합니다. ISE가 성공적으로 탐지되면 엔드포인트에서 포스처 요건이 점검됩니다. 이 예에서 에이전트는 설치된 모든 안티멀웨어 소프트웨어를 확인합니다. 그런 다음 ISE에 상태 보고서를 보냅니다.
7. ISE가 에이전트로부터 포스처 보고서를 수신하면 ISE는 이 세션에 대한 포스처 상태를 변경하고 RADIUS CoA 유형 Push를 새 속성으로 트리거합니다. 이번에는 포스처 상태를 알고 다른 규칙을 맞춥니다.
- 사용자가 규정을 준수하는 경우 전체 액세스를 허용하는 DACL 이름이 전송됩니다.
- 사용자가 규정을 준수하지 않으면 제한된 액세스를 허용하는 DACL 이름이 전송됩니다.
8. FTD에서 리디렉션을 제거합니다. FTD는 ISE에서 DACL을 다운로드하기 위해 Access-Request를 전송합니다. 특정 DACL은 VPN 세션에 연결됩니다.
설정
FTD/FMC
1단계. ISE 및 리미디에이션 서버에 대한 네트워크 객체 그룹을 생성합니다(있는 경우). Objects(개체) > Object Management(개체 관리) > Network(네트워크)로 이동합니다.
2단계. 리디렉션 ACL을 생성합니다. Objects(개체) > Object Management(개체 관리) > Access List(액세스 목록) > Extended(확장)로 이동합니다. Add Extended Access List(확장 액세스 목록 추가)를 클릭하고 리디렉션 ACL의 이름을 제공합니다. 이 이름은 ISE 권한 부여 결과와 동일해야 합니다.
3단계. 리디렉션 ACL 항목을 추가합니다. Add(추가) 버튼을 클릭합니다. 리디렉션에서 제외하기 위해 DNS, ISE 및 리미디에이션 서버에 대한 트래픽을 차단합니다. 나머지 트래픽을 허용하면 리디렉션이 트리거됩니다(필요한 경우 ACL 항목이 더 구체화될 수 있음).
4단계. ISE PSN 노드/노드를 추가합니다. Objects(개체) > Object Management(개체 관리) > RADIUS Server Group(RADIUS 서버 그룹)으로 이동합니다. Add RADIUS Server Group(RADIUS 서버 그룹 추가)을 클릭한 다음 이름을 입력하고 check all(모두 선택) 확인란을 활성화한 다음 더하기 아이콘을 클릭합니다.
5단계. 열린 창에서 ISE PSN IP 주소, RADIUS 키를 제공하고 Specific Interface를 선택한 다음 ISE에 연결할 수 있는 인터페이스(이 인터페이스는 RADIUS 트래픽의 소스로 사용됨)를 선택한 다음 이전에 구성된 Redirect ACL을 선택합니다.
6단계. VPN 사용자를 위한 주소 풀을 생성합니다. Objects(개체) > Object Management(개체 관리) > Address Pools(주소 풀) > IPv4 Pools(IPv4 풀)로 이동합니다. Add IPv4 Pools(IPv4 풀 추가)를 클릭하고 세부 정보를 입력합니다.
7단계. AnyConnect 패키지를 만듭니다. Objects(개체) > Object Management(개체 관리) > VPN > AnyConnect File(AnyConnect 파일)로 이동합니다. Add AnyConnect File(AnyConnect 파일 추가)을 클릭하고 패키지 이름을 제공한 다음 Cisco Software Download(Cisco 소프트웨어 다운로드)에서 패키지를 다운로드하고 Anyconnect Client Image File Type(Anyconnect 클라이언트 이미지 파일 유형)을 선택합니다.
8단계. Certificate Objects(인증서 객체) > Object Management(객체 관리) > PKI > Cert Enrollment(인증서 등록)로 이동합니다. Add Cert Enrollment(인증서 등록 추가)를 클릭하고 이름을 입력한 다음 Enrollment Type(등록 유형)에서 Self Signed Certificate(자체 서명 인증서)를 선택합니다. Certificate Parameters(인증서 매개변수) 탭을 클릭하고 CN을 제공합니다.
9단계. 원격 액세스 VPN 마법사를 시작합니다. Devices(디바이스) > VPN > Remote Access(원격 액세스)로 이동하고 Add(추가)를 클릭합니다.
10단계. 이름을 입력하고 SSL을 VPN Protocol(VPN 프로토콜)로 선택하고 VPN Concentrator로 사용되는 FTD를 선택한 후 Next(다음)를 클릭합니다.
11단계. Connection Profile name(연결 프로파일 이름)을 입력하고 Authentication/Accounting Servers(인증/어카운팅 서버)를 선택한 다음 이전에 구성한 주소 풀을 선택하고 Next(다음)를 클릭합니다.
참고: 권한 부여 서버를 선택하지 마십시오. 단일 사용자에 대해 두 개의 액세스 요청을 트리거합니다(사용자 비밀번호로 한 번, 비밀번호 cisco로 두 번).
12단계. 이전에 구성된 AnyConnect 패키지를 선택하고 Next(다음)를 클릭합니다.
13단계. VPN 트래픽이 예상되는 인터페이스를 선택하고 이전에 구성된 Certificate Enrollment를 선택한 후 Next(다음)를 클릭합니다.
14단계. 요약 페이지를 확인하고 마침을 클릭합니다.
15단계. FTD에 컨피그레이션 구축 Deploy(구축)를 클릭하고 VPN Concentrator로 사용되는 FTD를 선택합니다.
ISE
1단계. 상태 업데이트를 실행 합니다. Administration(관리) > System(시스템) > Settings(설정) > Posture(상태) > Updates(업데이트)로 이동합니다.
2단계. Upload Compliance Module(규정 준수 모듈 업로드). Policy(정책) > Policy Elements(정책 요소) > Results(결과) > Client Provisioning(클라이언트 프로비저닝) > Resources(리소스)로 이동합니다. Add(추가)를 클릭하고 Cisco 사이트에서 Agent resources(에이전트 리소스)를 선택합니다
3단계. Cisco Software Download에서 AnyConnect를 다운로드한 다음 ISE에 업로드합니다. Policy(정책) > Policy Elements(정책 요소) > Results(결과) > Client Provisioning(클라이언트 프로비저닝) > Resources(리소스)로 이동합니다.
Add(추가)를 클릭하고 Agent Resources From Local Disk(로컬 디스크의 에이전트 리소스)를 선택합니다. Category(카테고리)에서 Cisco Provided Packages(Cisco 제공 패키지)를 선택하고 AnyConnect package from local disk(로컬 디스크에서 AnyConnect 패키지)를 선택한 후 Submit(제출)을 클릭합니다.
4단계. AnyConnect Posture 프로파일을 생성합니다. Policy(정책) > Policy Elements(정책 요소) > Results(결과) > Client Provisioning(클라이언트 프로비저닝) > Resources(리소스)로 이동합니다.
Add(추가)를 클릭하고 AnyConnect Posture Profile(AnyConnect 포스처 프로파일)을 선택합니다. 이름과 Posture Protocol을 입력합니다.
*Server name 규칙 아래에는 *를 입력하고 Discovery host 아래에 임의의 더미 IP 주소를 입력합니다.
5단계. Policy(정책) > Policy Elements(정책 요소) > Results(결과) > Client Provisioning(클라이언트 프로비저닝) > Resources(리소스)로 이동하여 AnyConnect 컨피그레이션을 생성합니다. Add(추가)를 클릭하고 AnyConnect Configuration(AnyConnect 컨피그레이션)을 선택합니다. AnyConnect Package(AnyConnect 패키지)를 선택하고 Configuration Name(컨피그레이션 이름)을 제공하며 Compliance Module(컴플라이언스 모듈)을 선택하고 Diagnostic and Reporting Tool(진단 및 보고 툴)을 선택한 다음 Posture Profile(포스처 프로파일)을 선택하고 Save(저장)를 클릭합니다.
6단계. Policy(정책) > Client Provisioning(클라이언트 프로비저닝)으로 이동하고 Client Provisioning Policy(클라이언트 프로비저닝 정책)를 생성합니다. Edit(편집)를 클릭한 다음 Insert Rule Above(위에 규칙 삽입)를 선택하고, 이름을 입력하고, OS를 선택한 다음 이전 단계에서 생성한 AnyConnect Configuration(AnyConnect 컨피그레이션)을 선택합니다.
7단계. Policy(정책) > Policy Elements(정책 요소) > Conditions(조건) > Posture(포스처) > Anti-Malware Condition(안티멀웨어 조건)에서 포스처 조건을 생성합니다. 이 예에서는 사전 정의된 "ANY_am_win_inst"가 사용됩니다.
.
8단계. Policy(정책) > Policy Elements(정책 요소) > Results(결과) > Posture(포스처) > Remediation Actions(교정 작업)로 이동하고 Posture Remediation(포스처 교정)을 생성합니다. 이 예에서는 건너뜁니다. 교정 작업은 텍스트 메시지일 수 있습니다.
9단계. Policy(정책) > Policy Elements(정책 요소) > Results(결과) > Posture(포스처) > Requirements(요건)로 이동하고 Posture Requirements(포스처 요건)를 생성합니다. 사전 정의된 요구 사항 Any_AM_Installation_Win이 사용됩니다.
10단계. Policies(정책) > Posture(포스처)에서 Posture Policies(포스처 정책)를 생성합니다. Windows OS에 대한 안티멀웨어 검사에 대한 기본 포스처 정책이 사용됩니다.
11단계. Policy(정책) > Policy Elements(정책 요소) > Results(결과) > Authorization(권한 부여) > Downloadable ACLS(다운로드 가능한 ACL)로 이동하고 여러 포스처 상태에 대한 DACL을 생성합니다.
이 예에서는 다음을 수행합니다.
- Posture Unknown DACL - DNS, PSN 및 HTTP/HTTPS 트래픽에 대한 트래픽을 허용합니다.
- Posture NonCompliant DACL - 프라이빗 서브넷에 대한 액세스를 거부하고 인터넷 트래픽만 허용합니다.
- Permit All DACL(모든 DACL 허용) - 포스처 호환 상태에 대한 모든 트래픽을 허용합니다.
12단계. Posture Unknown, Posture NonCompliant 및 Posture Compliant 상태에 대한 3가지 권한 부여 프로파일을 생성합니다. 이렇게 하려면 정책 > 정책 구성 요소 > 결과 > 인증 > 인증 프로파일로 이동 합니다. Posture Unknown 프로필에서 Posture Unknown DACL을 선택하고 Web Redirection을 선택한 다음 Client Provisioning을 선택하고, Redirect ACL name(FTD에서 구성됨)을 제공하고 포털을 선택합니다.
Posture NonCompliant 프로파일에서 DACL을 선택하여 네트워크에 대한 액세스를 제한합니다.
Posture Compliant Profile에서 DACL을 선택하여 네트워크에 대한 전체 액세스를 허용합니다.
13단계. Policy(정책) > Policy Sets(정책 집합) > Default(기본값) > Authorization Policy(권한 부여 정책)에서 권한 부여 정책을 생성합니다. As 조건 Posture Status 및 VNP TunnelGroup Name이 사용됩니다.
다음을 확인합니다.
구성이 올바르게 작동하는지 확인하려면 이 섹션을 활용하십시오.
ISE에서 첫 번째 확인 단계는 RADIUS Live Log입니다. Operations(작업) > RADIUS Live Log(RADIUS 라이브 로그)로 이동합니다. 여기서 사용자 Alice가 연결되고 예상 권한 부여 정책이 선택됩니다.
권한 부여 정책 FTD-VPN-Posture-Unknown이 일치하고 그 결과 FTD-VPN-Profile이 FTD로 전송됩니다.
상태 보류 중.
Result(결과) 섹션에는 FTD로 전송되는 속성이 표시됩니다.
FTD에서 VPN 연결을 확인하려면 SSH를 상자에 입력하고 시스템 지원 diagnostic-cli를 실행한 다음 vpn-sessiondb detail anyconnect를 표시합니다. 이 출력에서 ISE에서 전송된 특성이 이 VPN 세션에 적용되는지 확인합니다.
fyusifov-ftd-64# show vpn-sessiondb detail anyconnect
Session Type: AnyConnect Detailed
Username : alice@training.example.com
Index : 12
Assigned IP : 172.16.1.10 Public IP : 10.229.16.169
Protocol : AnyConnect-Parent SSL-Tunnel DTLS-Tunnel
License : AnyConnect Premium
Encryption : AnyConnect-Parent: (1)none SSL-Tunnel: (1)AES-GCM-256 DTLS-Tunnel: (1)AES256
Hashing : AnyConnect-Parent: (1)none SSL-Tunnel: (1)SHA384 DTLS-Tunnel: (1)SHA1
Bytes Tx : 15326 Bytes Rx : 13362
Pkts Tx : 10 Pkts Rx : 49
Pkts Tx Drop : 0 Pkts Rx Drop : 0
Group Policy : DfltGrpPolicy Tunnel Group : EmployeeVPN
Login Time : 07:13:30 UTC Mon Feb 3 2020
Duration : 0h:06m:43s
Inactivity : 0h:00m:00s
VLAN Mapping : N/A VLAN : none
Audt Sess ID : 000000000000c0005e37c81a
Security Grp : none Tunnel Zone : 0
AnyConnect-Parent Tunnels: 1
SSL-Tunnel Tunnels: 1
DTLS-Tunnel Tunnels: 1
AnyConnect-Parent:
Tunnel ID : 12.1
Public IP : 10.229.16.169
Encryption : none Hashing : none
TCP Src Port : 56491 TCP Dst Port : 443
Auth Mode : userPassword
Idle Time Out: 30 Minutes Idle TO Left : 23 Minutes
Client OS : win
Client OS Ver: 10.0.18363
Client Type : AnyConnect
Client Ver : Cisco AnyConnect VPN Agent for Windows 4.7.01076
Bytes Tx : 7663 Bytes Rx : 0
Pkts Tx : 5 Pkts Rx : 0
Pkts Tx Drop : 0 Pkts Rx Drop : 0
SSL-Tunnel:
Tunnel ID : 12.2
Assigned IP : 172.16.1.10 Public IP : 10.229.16.169
Encryption : AES-GCM-256 Hashing : SHA384
Ciphersuite : ECDHE-RSA-AES256-GCM-SHA384
Encapsulation: TLSv1.2 TCP Src Port : 56495
TCP Dst Port : 443 Auth Mode : userPassword
Idle Time Out: 30 Minutes Idle TO Left : 23 Minutes
Client OS : Windows
Client Type : SSL VPN Client
Client Ver : Cisco AnyConnect VPN Agent for Windows 4.7.01076
Bytes Tx : 7663 Bytes Rx : 592
Pkts Tx : 5 Pkts Rx : 7
Pkts Tx Drop : 0 Pkts Rx Drop : 0
Filter Name : #ACSACL#-IP-PostureUnknown-5e37414d
DTLS-Tunnel:
Tunnel ID : 12.3
Assigned IP : 172.16.1.10 Public IP : 10.229.16.169
Encryption : AES256 Hashing : SHA1
Ciphersuite : DHE-RSA-AES256-SHA
Encapsulation: DTLSv1.0 UDP Src Port : 59396
UDP Dst Port : 443 Auth Mode : userPassword
Idle Time Out: 30 Minutes Idle TO Left : 29 Minutes
Client OS : Windows
Client Type : DTLS VPN Client
Client Ver : Cisco AnyConnect VPN Agent for Windows 4.7.01076
Bytes Tx : 0 Bytes Rx : 12770
Pkts Tx : 0 Pkts Rx : 42
Pkts Tx Drop : 0 Pkts Rx Drop : 0
Filter Name : #ACSACL#-IP-PostureUnknown-5e37414d
ISE Posture:
Redirect URL : https://fyusifov-26-3.example.com:8443/portal/gateway?sessionId=000000000000c0005e37c81a&portal=27b1bc...
Redirect ACL : fyusifovredirect
fyusifov-ftd-64#
클라이언트 프로비저닝 정책을 확인할 수 있습니다. Operations(운영) > Reports(보고서) > Endpoints and Users(엔드포인트 및 사용자) > Client Provisioning(클라이언트 프로비저닝)으로 이동합니다.
AnyConnect에서 전송된 상태 보고서를 확인할 수 있습니다. Operations(운영) > Reports(보고서) > Endpoints and Users(엔드포인트 및 사용자) > Posture Assessment by Endpoint(엔드포인트별 상태 평가)로 이동합니다.
상태 보고서에 대한 자세한 내용을 보려면 Details를 클릭합니다.
ISE에서 보고서를 받으면 포스처 상태가 업데이트됩니다. 이 예에서 포스처 상태는 규정준수 상태이며 CoA Push는 새 특성 집합으로 트리거됩니다.
FTD에서 새 리디렉션 ACL 및 리디렉션 URL이 VPN 세션에 대해 제거되고 PermitAll DACL이 적용되는지 확인합니다.
fyusifov-ftd-64# show vpn-sessiondb detail anyconnect
Session Type: AnyConnect Detailed
Username : alice@training.example.com
Index : 14
Assigned IP : 172.16.1.10 Public IP : 10.55.218.19
Protocol : AnyConnect-Parent SSL-Tunnel DTLS-Tunnel
License : AnyConnect Premium
Encryption : AnyConnect-Parent: (1)none SSL-Tunnel: (1)AES-GCM-256 DTLS-Tunnel: (1)AES256
Hashing : AnyConnect-Parent: (1)none SSL-Tunnel: (1)SHA384 DTLS-Tunnel: (1)SHA1
Bytes Tx : 53990 Bytes Rx : 23808
Pkts Tx : 73 Pkts Rx : 120
Pkts Tx Drop : 0 Pkts Rx Drop : 0
Group Policy : DfltGrpPolicy Tunnel Group : EmployeeVPN
Login Time : 16:58:26 UTC Mon Feb 3 2020
Duration : 0h:02m:24s
Inactivity : 0h:00m:00s
VLAN Mapping : N/A VLAN : none
Audt Sess ID : 000000000000e0005e385132
Security Grp : none Tunnel Zone : 0
AnyConnect-Parent Tunnels: 1
SSL-Tunnel Tunnels: 1
DTLS-Tunnel Tunnels: 1
AnyConnect-Parent:
Tunnel ID : 14.1
Public IP : 10.55.218.19
Encryption : none Hashing : none
TCP Src Port : 51965 TCP Dst Port : 443
Auth Mode : userPassword
Idle Time Out: 30 Minutes Idle TO Left : 27 Minutes
Client OS : win
Client OS Ver: 10.0.18363
Client Type : AnyConnect
Client Ver : Cisco AnyConnect VPN Agent for Windows 4.7.01076
Bytes Tx : 7663 Bytes Rx : 0
Pkts Tx : 5 Pkts Rx : 0
Pkts Tx Drop : 0 Pkts Rx Drop : 0
SSL-Tunnel:
Tunnel ID : 14.2
Assigned IP : 172.16.1.10 Public IP : 10.55.218.19
Encryption : AES-GCM-256 Hashing : SHA384
Ciphersuite : ECDHE-RSA-AES256-GCM-SHA384
Encapsulation: TLSv1.2 TCP Src Port : 51970
TCP Dst Port : 443 Auth Mode : userPassword
Idle Time Out: 30 Minutes Idle TO Left : 27 Minutes
Client OS : Windows
Client Type : SSL VPN Client
Client Ver : Cisco AnyConnect VPN Agent for Windows 4.7.01076
Bytes Tx : 7715 Bytes Rx : 10157
Pkts Tx : 6 Pkts Rx : 33
Pkts Tx Drop : 0 Pkts Rx Drop : 0
Filter Name : #ACSACL#-IP-PermitAll-5e384dc0
DTLS-Tunnel:
Tunnel ID : 14.3
Assigned IP : 172.16.1.10 Public IP : 10.55.218.19
Encryption : AES256 Hashing : SHA1
Ciphersuite : DHE-RSA-AES256-SHA
Encapsulation: DTLSv1.0 UDP Src Port : 51536
UDP Dst Port : 443 Auth Mode : userPassword
Idle Time Out: 30 Minutes Idle TO Left : 28 Minutes
Client OS : Windows
Client Type : DTLS VPN Client
Client Ver : Cisco AnyConnect VPN Agent for Windows 4.7.01076
Bytes Tx : 38612 Bytes Rx : 13651
Pkts Tx : 62 Pkts Rx : 87
Pkts Tx Drop : 0 Pkts Rx Drop : 0
Filter Name : #ACSACL#-IP-PermitAll-5e384dc0
fyusifov-ftd-64#
문제 해결
이 섹션에서는 컨피그레이션 문제를 해결하는 데 사용할 수 있는 정보를 제공합니다.
자세한 상태 흐름 및 AnyConnect 및 ISE 문제를 해결하려면 다음 링크를 확인하십시오. ISE Posture Style Comparison for Pre and Post 2.2
일반적인 문제 중 하나는 spit 터널이 구성된 경우입니다. 이 예에서는 모든 트래픽을 터널링하는 기본 그룹 정책이 사용됩니다. 특정 트래픽만 터널링되는 경우 AnyConnect 프로브(enroll.cisco.com 및 검색 호스트)는 ISE 및 기타 내부 리소스에 대한 트래픽 외에도 터널을 통과해야 합니다.
FMC에서 터널 정책을 확인하려면 먼저 VPN 연결에 어떤 그룹 정책이 사용되는지 확인하십시오. Devices(디바이스) > VPN Remote Access(VPN 원격 액세스)로 이동합니다.
그런 다음 Objects(개체) > Object Management(개체 관리) > VPN > Group Policy(그룹 정책)로 이동하고 VPN에 대해 구성된 Group Policy(그룹 정책)를 클릭합니다.
또 다른 일반적인 문제는 VPN 사용자의 반환 트래픽이 잘못된 NAT 항목을 사용하여 변환되는 경우입니다. 이 문제를 해결하려면 ID NAT를 적절한 순서로 생성해야 합니다.
먼저 이 디바이스에 대한 NAT 규칙을 확인합니다. Devices(디바이스) > NAT로 이동한 다음 Add Rule(규칙 추가)을 클릭하여 새 규칙을 생성합니다.
열려 있는 창의 Interface Objects 탭 아래에서 Security Zones를 선택합니다. 이 예에서는 NAT 항목이 ZONE-INSIDE에서 ZONE-OUTSIDE로 생성됩니다.
Translation(변환) 탭에서 original(원본) 및 translated(변환된) 패킷 세부 정보를 선택합니다. ID NAT이므로 소스와 대상은 변경되지 않습니다.
Advanced(고급) 탭에서 이 이미지에 표시된 대로 확인란을 선택합니다.