이 문서에서는 WebVPN 사용자 인증을 위해 원격 인증 전화 접속 사용자 서비스(RADIUS) 서버를 사용하도록 Cisco ASA(Adaptive Security Appliance)를 구성하는 방법을 보여 줍니다.이 예에서 RADIUS 서버는 Cisco ACS(Access Control Server) 버전 4.1입니다. 이 구성은 소프트웨어 버전 8.0(2)을 실행하는 ASA에서 ASDM(Adaptive Security Device Manager) 6.0(2)을 사용하여 수행됩니다.
참고: 이 예에서 RADIUS 인증은 WebVPN 사용자에 대해 구성되지만 이 컨피그레이션은 다른 유형의 원격 액세스 VPN에도 사용할 수 있습니다.표시된 대로 원하는 연결 프로파일(터널 그룹)에 AAA 서버 그룹을 할당하기만 하면 됩니다.
기본 WebVPN 컨피그레이션이 필요합니다.
Cisco ACS에는 사용자 인증을 위해 구성된 사용자가 있어야 합니다.자세한 내용은 사용자 관리의 기본 사용자 계정 추가 섹션을 참조하십시오.
이 섹션에서는 ACS 및 ASA에서 RADIUS 인증을 구성하는 정보를 제공합니다.
ACS 서버가 ASA와 통신하도록 구성하려면 다음 단계를 완료합니다.
ACS 화면 왼쪽 메뉴에서 Network Configuration(네트워크 컨피그레이션)을 선택합니다.
AAA Clients(AAA 클라이언트) 아래에서 Add Entry(항목 추가)를 선택합니다.
클라이언트 정보를 제공합니다.
AAA Client Hostname(AAA 클라이언트 호스트 이름) - 선택한 이름
AAA Client IP Address(AAA 클라이언트 IP 주소) - 보안 어플라이언스가 ACS에 연결하는 주소
Shared Secret(공유 암호) - ACS 및 보안 어플라이언스에 구성된 비밀 키
Authenticate Using(인증 사용) 드롭다운에서 RADIUS(Cisco VPN 3000/ASA/PIX 7.x+)를 선택합니다.
Submit +Apply를 클릭합니다.
ASA가 ACS 서버와 통신하고 WebVPN 클라이언트를 인증하도록 구성하려면 ASDM에서 다음 단계를 완료합니다.
Configuration(컨피그레이션) > Remote Access VPN(원격 액세스 VPN) > AAA Setup(AAA 설정) > AAA Server Groups(AAA 서버 그룹)를 선택합니다.
AAA Server Groups 옆에 있는 Add를 클릭합니다.
표시되는 창에서 새 AAA 서버 그룹의 이름을 지정하고 RADIUS를 프로토콜로 선택합니다.완료되면 OK(확인)를 클릭합니다.
맨 위 창에서 새 그룹이 선택되었는지 확인하고 아래쪽 창 오른쪽에 추가를 클릭합니다.
서버 정보 제공:
Interface Name(인터페이스 이름) - ASA가 ACS 서버에 연결하기 위해 사용해야 하는 인터페이스
Server Name or IP address(서버 이름 또는 IP 주소) - ASA가 ACS 서버에 연결하기 위해 사용해야 하는 주소입니다.
Server Secret Key(서버 비밀 키) - ACS 서버의 ASA에 대해 구성된 공유 비밀 키
AAA 서버 그룹 및 서버를 구성했으면 Configuration(구성) > Remote Access VPN(원격 액세스 VPN) > Clientless SSL VPN Access(클라이언트리스 SSL VPN 액세스) > Connection Profiles(연결 프로파일)로 이동하여 WebVPN에서 새 AAA 컨피그레이션을 사용하도록 구성합니다.
참고: 이 예에서는 WebVPN을 사용하지만 이 AAA 설정을 사용하도록 모든 원격 액세스 연결 프로파일(터널 그룹)을 설정할 수 있습니다.
AAA를 구성할 프로필을 선택하고 Edit(수정)를 클릭합니다.
Authentication(인증)에서 이전에 생성한 RADIUS 서버 그룹을 선택합니다.완료되면 OK(확인)를 클릭합니다.
ASA가 ACS 서버와 통신하고 WebVPN 클라이언트를 인증하도록 구성하려면 CLI(Command Line Interface)에서 다음 단계를 완료합니다.
ciscoasa#configure terminal !--- Configure the AAA Server group. ciscoasa(config)# aaa-server RAD_SRV_GRP protocol RADIUS ciscoasa(config-aaa-server-group)# exit !--- Configure the AAA Server. ciscoasa(config)# aaa-server RAD_SRV_GRP (inside) host 192.168.1.2 ciscoasa(config-aaa-server-host)# key secretkey ciscoasa(config-aaa-server-host)# exit !--- Configure the tunnel group to use the new AAA setup. ciscoasa(config)# tunnel-group ExampleGroup1 general-attributes ciscoasa(config-tunnel-general)# authentication-server-group RAD_SRV_GRP
이 섹션을 사용하여 컨피그레이션이 제대로 작동하는지 확인합니다.
AAA Server Groups 컨피그레이션 화면의 Test 버튼을 사용하여 RADIUS 컨피그레이션을 확인합니다.사용자 이름과 비밀번호를 입력하면 이 버튼을 사용하여 ACS 서버에 테스트 인증 요청을 보낼 수 있습니다.
Configuration(컨피그레이션) > Remote Access VPN(원격 액세스 VPN) > AAA Setup(AAA 설정) > AAA Server Groups(AAA 서버 그룹)를 선택합니다.
상단 창에서 원하는 AAA 서버 그룹을 선택합니다.
하단 창에서 테스트할 AAA 서버를 선택합니다.
아래쪽 창 오른쪽의 Test 버튼을 클릭합니다.
표시되는 창에서 Authentication 라디오 버튼을 클릭하고 테스트할 자격 증명을 입력합니다.완료되면 OK(확인)를 클릭합니다.
ASA가 AAA 서버에 접속하면 성공 또는 실패 메시지가 나타납니다.
명령행에서 test 명령을 사용하여 AAA 설정을 테스트할 수 있습니다.테스트 요청이 AAA 서버로 전송되고 그 결과가 명령줄에 나타납니다.
ciscoasa#test aaa-server authentication RAD_SVR_GRP host 192.168.1.2 username kate password cisco123 INFO: Attempting Authentication test to IP address <192.168.1.2> (timeout: 12 seconds) INFO: Authentication Successful
debug radius 명령을 사용하면 이 시나리오의 인증 문제를 해결할 수 있습니다.이 명령은 RADIUS 세션 디버깅 및 RADIUS 패킷 디코딩을 활성화합니다.표시된 각 디버그 출력에서 디코딩된 첫 번째 패킷은 ASA에서 ACS 서버로 전송된 패킷입니다.두 번째 패킷은 ACS 서버의 응답입니다.
참고: debug 명령을 사용하기 전에 디버그 명령에 대한 중요 정보를 참조하십시오.
인증에 성공하면 RADIUS 서버는 access-accept 메시지를 전송합니다.
ciscoasa#debug radius !--- First Packet. Authentication Request. ciscoassa#radius mkreq: 0x88 alloc_rip 0xd5627ae4 new request 0x88 --> 52 (0xd5627ae4) got user '' got password add_req 0xd5627ae4 session 0x88 id 52 RADIUS_REQUEST radius.c: rad_mkpkt RADIUS packet decode (authentication request) -------------------------------------- Raw packet data (length = 62)..... 01 34 00 3e 18 71 56 d7 c4 ad e2 73 30 a9 2e cf | .4.>.qV....s0... 5c 65 3a eb 01 06 6b 61 74 65 02 12 0e c1 28 b7 | \e:...kate....(. 87 26 ed be 7b 2c 7a 06 7c a3 73 19 04 06 c0 a8 | .&..{,z.|.s..... 01 01 05 06 00 00 00 34 3d 06 00 00 00 05 | .......4=..... Parsed packet data..... Radius: Code = 1 (0x01) Radius: Identifier = 52 (0x34) Radius: Length = 62 (0x003E) Radius: Vector: 187156D7C4ADE27330A92ECF5C653AEB Radius: Type = 1 (0x01) User-Name Radius: Length = 6 (0x06) Radius: Value (String) = 6b 61 74 65 | kate Radius: Type = 2 (0x02) User-Password Radius: Length = 18 (0x12) Radius: Value (String) = 0e c1 28 b7 87 26 ed be 7b 2c 7a 06 7c a3 73 19 | ..(..&..{,z.|.s. Radius: Type = 4 (0x04) NAS-IP-Address Radius: Length = 6 (0x06) Radius: Value (IP Address) = 192.168.1.1 (0xC0A80101) Radius: Type = 5 (0x05) NAS-Port Radius: Length = 6 (0x06) Radius: Value (Hex) = 0x34 Radius: Type = 61 (0x3D) NAS-Port-Type Radius: Length = 6 (0x06) Radius: Value (Hex) = 0x5 send pkt 192.168.1.2/1645 rip 0xd5627ae4 state 7 id 52 rad_vrfy() : response message verified rip 0xd544d2e8 : chall_state '' : state 0x7 : timer 0x0 : reqauth: 18 71 56 d7 c4 ad e2 73 30 a9 2e cf 5c 65 3a eb : info 0x88 session_id 0x88 request_id 0x34 user 'kate' response '***' app 0 reason 0 skey 'secretkey' sip 192.168.1.2 type 1 !--- Second Packet. Authentication Response. RADIUS packet decode (response) -------------------------------------- Raw packet data (length = 50)..... 02 34 00 32 35 a1 88 2f 8a bf 2a 14 c5 31 78 59 | .4.25../..*..1xY 60 31 35 89 08 06 ff ff ff ff 19 18 43 41 43 53 | `15.........CACS 3a 30 2f 32 61 36 2f 63 30 61 38 30 31 30 31 2f | :0/2a6/c0a80101/ 35 32 | 52 Parsed packet data..... Radius: Code = 2 (0x02) Radius: Identifier = 52 (0x34) Radius: Length = 50 (0x0032) Radius: Vector: 35A1882F8ABF2A14C531785960313589 Radius: Type = 8 (0x08) Framed-IP-Address Radius: Length = 6 (0x06) Radius: Value (IP Address) = 255.255.255.255 (0xFFFFFFFF) Radius: Type = 25 (0x19) Class Radius: Length = 24 (0x18) Radius: Value (String) = 43 41 43 53 3a 30 2f 32 61 36 2f 63 30 61 38 30 | CACS:0/2a6/c0a80 31 30 31 2f 35 32 | 101/52 rad_procpkt: ACCEPT RADIUS_ACCESS_ACCEPT: normal termination RADIUS_DELETE remove_req 0xd5627ae4 session 0x88 id 52 free_rip 0xd5627ae4 radius: send queue empty
인증이 실패하면 ACS 서버가 액세스 거부 메시지를 전송합니다.
ciscoasa#debug radius !--- First Packet. Authentication Request. ciscoasa# radius mkreq: 0x85 alloc_rip 0xd5627ae4 new request 0x85 --> 49 (0xd5627ae4) got user '' got password add_req 0xd5627ae4 session 0x85 id 49 RADIUS_REQUEST radius.c: rad_mkpkt RADIUS packet decode (authentication request) -------------------------------------- Raw packet data (length = 62)..... 01 31 00 3e 88 21 46 07 34 5d d2 a3 a0 59 1e ff | .1.>.!F.4]...Y.. cc 15 2a 1b 01 06 6b 61 74 65 02 12 60 eb 05 32 | ..*...kate..`..2 87 69 78 a3 ce d3 80 d8 4b 0d c3 37 04 06 c0 a8 | .ix.....K..7.... 01 01 05 06 00 00 00 31 3d 06 00 00 00 05 | .......1=..... Parsed packet data..... Radius: Code = 1 (0x01) Radius: Identifier = 49 (0x31) Radius: Length = 62 (0x003E) Radius: Vector: 88214607345DD2A3A0591EFFCC152A1B Radius: Type = 1 (0x01) User-Name Radius: Length = 6 (0x06) Radius: Value (String) = 6b 61 74 65 | kate Radius: Type = 2 (0x02) User-Password Radius: Length = 18 (0x12) Radius: Value (String) = 60 eb 05 32 87 69 78 a3 ce d3 80 d8 4b 0d c3 37 | `..2.ix.....K..7 Radius: Type = 4 (0x04) NAS-IP-Address Radius: Length = 6 (0x06) Radius: Value (IP Address) = 192.168.1.1 (0xC0A80101) Radius: Type = 5 (0x05) NAS-Port Radius: Length = 6 (0x06) Radius: Value (Hex) = 0x31 Radius: Type = 61 (0x3D) NAS-Port-Type Radius: Length = 6 (0x06) Radius: Value (Hex) = 0x5 send pkt 192.168.1.2/1645 rip 0xd5627ae4 state 7 id 49 rad_vrfy() : response message verified rip 0xd544d2e8 : chall_state '' : state 0x7 : timer 0x0 : reqauth: 88 21 46 07 34 5d d2 a3 a0 59 1e ff cc 15 2a 1b : info 0x85 session_id 0x85 request_id 0x31 user 'kate' response '***' app 0 reason 0 skey 'secretkey' sip 192.168.1.2 type 1 !--- Second packet. Authentication Response. RADIUS packet decode (response) -------------------------------------- Raw packet data (length = 32)..... 03 31 00 20 70 98 50 af 39 cc b9 ba df a7 bd ff | .1. p.P.9....... 06 af fb 02 12 0c 52 65 6a 65 63 74 65 64 0a 0d | ......Rejected.. Parsed packet data..... Radius: Code = 3 (0x03) Radius: Identifier = 49 (0x31) Radius: Length = 32 (0x0020) Radius: Vector: 709850AF39CCB9BADFA7BDFF06AFFB02 Radius: Type = 18 (0x12) Reply-Message Radius: Length = 12 (0x0C) Radius: Value (String) = 52 65 6a 65 63 74 65 64 0a 0d | Rejected.. rad_procpkt: REJECT RADIUS_DELETE remove_req 0xd5627ae4 session 0x85 id 49 free_rip 0xd5627ae4 radius: send queue empty