소개
이 문서에서는 Cisco ASA(Adaptive Security Appliance)를 Next Generation Firewall이라고도 하는 CX(Context Aware) 모듈과 Cisco CWS(Cloud Web Security) 커넥터를 사용하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
Cisco는 다음과 같은 기능을 권장합니다.
- ASA의 3DES/AES 라이센스(무료 라이센스)
- 필요한 사용자 수에 대해 CWS를 사용하는 유효한 CWS 서비스/라이센스
- ScanCenter 포털에 액세스하여 인증 키 생성
사용되는 구성 요소
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
범위
이 문서에서는 다음과 같은 기술 및 제품 영역을 보여 줍니다.
- Cisco ASA 5500-X Series Adaptive Security Appliance는 인터넷 에지 방화벽 보안 및 침입 방지를 제공합니다.
- Cisco Cloud Web Security는 액세스하는 모든 웹 콘텐츠를 세부적으로 제어합니다.
활용 사례
ASA CX/FirePower 모듈은 ASA CX/FirePower에서 활성화된 라이센스 기능에 따라 콘텐츠 보안 및 침입 방지 요구 사항을 모두 지원할 수 있습니다. Cloud Web Security는 ASA CX/FirePower 모듈에서 지원되지 않습니다. 동일한 트래픽 흐름에 대해 ASA CX/FirePower 작업과 Cloud Web Security 검사를 모두 구성한 경우 ASA는 ASA CX/FirePower 작업만 수행합니다. 웹 보안을 위한 CWS 기능을 활용하려면 ASA CX/FirePower에 대한 match 문에서 트래픽이 우회되는지 확인해야 합니다. 일반적으로 이러한 시나리오에서 고객은 다른 모든 포트에 대해 CWS for Web Security and AVC(포트 80 및 443) 및 CX/FirePower 모듈을 사용합니다.
주요 내용
- match default-inspection-traffic 명령은 Cloud Web Security 검사의 기본 포트를 포함하지 않습니다(80 및 443).
- 작업은 기능에 따라 양방향 또는 단방향으로 트래픽에 적용됩니다. 양방향으로 적용되는 기능의 경우 정책 맵을 적용하는 인터페이스로 들어오거나 나가는 모든 트래픽은 트래픽이 양방향으로 클래스 맵과 일치하면 영향을 받습니다. 전역 정책을 사용할 경우 모든 기능은 단방향입니다. 단일 인터페이스에 적용할 때 일반적으로 양방향인 기능은 전역적으로 적용되는 경우 각 인터페이스의 인그레스(ingress)에만 적용됩니다. 정책은 모든 인터페이스에 적용되므로 두 방향에서 모두 적용되므로 이 경우 양방향성이 이중화됩니다.
- TCP 및 UDP 트래픽(및 ICMP(Internet Control Message Protocol)에서 상태 기반 ICMP 검사를 활성화하면 서비스 정책은 개별 패킷만이 아니라 트래픽 플로우에서 작동합니다. 트래픽이 한 인터페이스의 정책에 있는 기능과 일치하는 기존 연결의 일부인 경우, 해당 트래픽 흐름은 다른 인터페이스의 정책에서 동일한 기능과 매칭할 수 없습니다. 첫 번째 정책만 사용됩니다.
- 인터페이스 서비스 정책은 지정된 기능에 대한 글로벌 서비스 정책보다 우선합니다.
- 최대 정책 맵 수는 64이지만 인터페이스당 정책 맵을 하나만 적용할 수 있습니다.
구성
네트워크 다이어그램
ASA 및 CWS의 트래픽 흐름
- 사용자는 웹 브라우저를 통해 URL을 요청합니다.
- 트래픽이 인터넷을 통해 ASA로 전송됩니다. ASA는 필수 NAT를 수행하고 프로토콜 HTTP/HTTPS를 기반으로 내부 인터페이스 정책과 일치하며 Cisco CWS로 리디렉션됩니다.
- CWS는 ScanCenter 포털에서 수행한 컨피그레이션을 기반으로 요청을 분석하고 정책이 허용되는 경우 요청을 승인된 사이트로 전달합니다.
- CWS는 반환된 트래픽을 검사하고 이를 ASA로 리디렉션합니다.
- 유지 관리되는 세션 흐름에 따라 ASA는 트래픽을 다시 사용자에게 전송합니다.
ASA 및 CX/FirePower의 트래픽 흐름
- HTTP 및 HTTPS를 제외한 모든 트래픽은 검사를 위해 ASA CX/FirePower와 일치하도록 구성되며 ASA 백플레인을 통해 CX/FirePower로 리디렉션됩니다.
- ASA CX/FirePower는 구성된 정책에 따라 트래픽을 검사하고 필요한 허용/차단/경고 작업을 수행합니다.
구성
모든 인터넷 바인딩 웹(TCP/80) 트래픽과 매칭하고 모든 내부 트래픽을 제외하기 위한 액세스 목록
!ASA CWS HTTP Match
access-list cws-www extended deny ip any4 10.0.0.0 255.0.0.0
access-list cws-www extended deny ip any4 172.16.0.0 255.240.0.0
access-list cws-www extended deny ip any4 192.168.0.0 255.255.0.0
access-list cws-www extended permit tcp any4 any4 eq www
모든 인터넷 바인딩 HTTPS(TCP/443) 트래픽과 일치시키고 모든 내부 트래픽을 제외하기 위한 액세스 목록
!ASA CWS HTTPS Match
access-list cws-https extended deny ip any4 10.0.0.0 255.0.0.0
access-list cws-https extended deny ip any4 172.16.0.0 255.240.0.0
access-list cws-https extended deny ip any4 192.168.0.0 255.255.0.0
access-list cws-https extended permit tcp any4 any4 eq https
모든 내부 트래픽을 매칭하기 위한 액세스 목록, 모든 인터넷 바인딩 웹 및 HTTPS 트래픽 및 기타 모든 포트 제외
!ASA CX/FirePower Match
access-list asa-ngfw extended permit tcp any4 10.0.0.0 255.0.0.0 eq 80
access-list asa-ngfw extended permit tcp any4 172.16.0.0 255.240.0.0 eq 80
access-list asa-ngfw extended permit tcp any4 192.168.0.0 255.255.0.0 eq 80
access-list asa-ngfw extended deny tcp any4 any4 eq www
access-list asa-ngfw extended permit tcp any4 10.0.0.0 255.0.0.0 eq 443
access-list asa-ngfw extended permit tcp any4 172.16.0.0 255.240.0.0 eq 443
access-list asa-ngfw extended permit tcp any4 192.168.0.0 255.255.0.0 eq 443
access-list asa-ngfw extended deny tcp any4 any4 eq https
access-list asa-ngfw extended permit ip any4 any4
CWS 및 CX/FirePower의 트래픽과 일치시키기 위한 클래스 맵 컨피그레이션
! Match HTTPS traffic for CWS
class-map cmap-https
match access-list cws-https
! Match HTTP traffic for CWS
class-map cmap-http
match access-list cws-www
! Match traffic for ASA CX/FirePower
class-map cmap-ngfw
match access-list asa-ngfw
작업을 클래스 맵과 연결하는 정책 맵 컨피그레이션
!Inspection policy map to configure essential parameters for the rules and
optionally !identify the allowed list for HTTP traffic
policy-map type inspect scansafe http-pmap
parameters
default group cws_default
http
!Inspection policy map to configure essential parameters for the rules and
optionally !identify the allowed list for HTTPS traffic
policy-map type inspect scansafe https-pmap
parameters
default group cws_default
https
! Interface policy local to Inside Interface
policy-map cws_policy
class cmap-http
inspect scansafe http-pmap fail-open
class cmap-https
inspect scansafe https-pmap fail-open
! Global Policy with Inspection enabled using ASA CX
policy-map global_policy
class inspection_default
<SNIP>
class cmap-ngfw
cxsc fail-open
class class-default
user-statistics accounting
인터페이스에서 CX/FirePower 및 CWS에 대해 전역으로 정책 활성화
service-policy global_policy global
service-policy cws_policy inside
참고: 이 예에서는 웹 트래픽이 보안 영역 내에서만 발생하는 것으로 가정합니다. 웹 트래픽을 예상하거나 전역 정책 내에서 동일한 클래스를 사용하는 모든 인터페이스에서 인터페이스 정책을 사용할 수 있습니다. 이는 CWS의 기능을 시연하고 MPF를 사용하여 요구 사항을 지원하기 위한 것입니다.
ASA에서 CWS 활성화(차이 없음)
scansafe general-options
server primary ip 203.0.113.1 port 8080
server backup ip 203.0.113.2 port 8080
retry-count 5
license xxxxxxxxxxxxxxxxxxxxxxxxxxx
!
모든 연결에서 새 정책을 사용하도록 하려면 현재 연결을 끊어야 새 정책과 다시 연결할 수 있습니다. clear conn 또는 clear local-host 명령을 참조하십시오.
다음을 확인합니다.
이 섹션을 사용하여 컨피그레이션이 제대로 작동하는지 확인합니다.
서비스를 활성화하고 ASA가 트래픽을 리디렉션하는지 확인하려면 show scansafe statistics 명령을 입력합니다. 이후 시도에서는 세션 수, 현재 세션 및 전송된 바이트의 증가분을 표시합니다.
csaxena-cws-asa# show scansafe statistics
Current HTTP sessions : 0
Current HTTPS sessions : 0
Total HTTP Sessions : 1091
Total HTTPS Sessions : 5893
Total Fail HTTP sessions : 0
Total Fail HTTPS sessions : 0
Total Bytes In : 473598 Bytes
Total Bytes Out : 1995470 Bytes
HTTP session Connect Latency in ms(min/max/avg) : 10/23/11
HTTPS session Connect Latency in ms(min/max/avg) : 10/190/11
검사된 패킷의 증분을 보려면 show service-policy 명령을 입력합니다.
asa# show service-policy
Global policy:
Service-policy: global_policy
Class-map: inspection_default
<SNIP>
<SNIP>
Class-map: cmap-ngfw
CXSC: card status Up, mode fail-open, auth-proxy disabled
packet input 275786624, packet output 272207060, drop 0,reset-drop 36,proxied 0
Class-map: class-default
Default Queueing Packet recieved 150146, sent 156937, attack 2031
Interface inside:
Service-policy: cws_policy
Class-map: cmap-http
Inspect: scansafe http-pmap fail-open, packet 176, lock fail 0, drop 0,
reset-drop 0, v6-fail-close 0
Class-map: cmap-https
Inspect: scansafe https-pmap fail-open, packet 78, lock fail 0, drop 13,
reset-drop 0, v6-fail-close 0
문제 해결
이 섹션에서는 컨피그레이션 문제를 해결하는 데 사용할 수 있는 정보를 제공합니다.
위의 컨피그레이션과 관련된 문제를 해결하고 패킷 흐름을 이해하려면 다음 명령을 입력합니다.
asa(config)# packet-tracer input inside tcp 10.0.0.1 80 192.0.2.105 80 det
Phase: 1
Type: CAPTURE
Subtype:
Result: ALLOW
Config:
Additional Information:
<SNIP>
<This phase will show up if you are capturing same traffic as well>
Phase: 2
Type: ACCESS-LIST
Subtype:
Result: ALLOW
Config:
Implicit Rule
Additional Information:
Forward Flow based lookup yields rule:
in <SNIP>
Phase: 3
Type: ROUTE-LOOKUP
Subtype: Resolve Egress Interface
Result: ALLOW
Config:
Additional Information:
in 0.0.0.0 0.0.0.0 via 198.51.100.1, outside
<Confirms egress interface selected. We need to ensure we have CWS
connectivity via the same interface>
Phase: 4
Type: ROUTE-LOOKUP
Subtype: Resolve Egress Interface
Result: ALLOW
Config:
Additional Information:
in 10.0.0.0 255.255.254.0 via 10.0.0.0.1, inside
Phase: 5
Type: ACCESS-LIST
Subtype: log
Result: ALLOW
Config:
access-group inside_in in interface inside
access-list inside_in extended permit ip any any
Additional Information:
<SNIP>
Phase: 6
Type: NAT
Subtype:
Result: ALLOW
Config:
object network obj-inside_to_outside
nat (inside,outside) dynamic interface
Additional Information:
Dynamic translate 10.0.0.1/80 to 198.51.100.1/80
Forward Flow based lookup yields rule:
in <SNIP>
Phase: 7
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Forward Flow based lookup yields rule:
in <SNIP>
Phase: 8
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Forward Flow based lookup yields rule:
in <SNIP>
Phase: 9
Type: INSPECT
Subtype: np-inspect
Result: ALLOW
Config:
class-map cmap-http
match access-list cws-www
policy-map inside_policy
class cmap-http
inspect scansafe http-pmap fail-open
service-policy inside_policy interface inside
Additional Information:
Forward Flow based lookup yields rule:
in id=0x7fff2cd3fce0, priority=72, domain=inspect-scansafe, deny=false
hits=8, user_data=0x7fff2bb86ab0, cs_id=0x0, use_real_addr,flags=0x0,protocol=6
src ip/id=10.0.0.11, mask=255.255.255.255, port=0, tag=0
dst ip/id=0.0.0.0, mask=0.0.0.0, port=80, tag=0, dscp=0x0
input_ifc=inside, output_ifc=any
<Verify the configuration, port, domain, deny fields>
Phase: 10
Type: CXSC
Subtype:
Result: ALLOW
Config:
class-map ngfw-cx
match access-list asa-cx
policy-map global_policy
class ngfw
cxsc fail-open
service-policy global_policy global
Additional Information:
Forward Flow based lookup yields rule:
in id=0x7fff2c530970, priority=71, domain=cxsc, deny=true
hits=5868,user_data=0x7fff2c931380,cs_id=0x0,use_real_addr,flags=0x0,protocol=6
src ip/id=0.0.0.0, mask=0.0.0.0, port=0, tag=0
dst ip/id=0.0.0.0, mask=0.0.0.0, port=80, tag=0, dscp=0x0
input_ifc=inside, output_ifc=any
Phase: 11
Type:
Subtype:
Result: ALLOW
Config:
Additional Information:
Forward Flow based lookup yields rule:
out <SNIP>
Phase: 12
Type:
Subtype:
Result: ALLOW
Config:
Additional Information:
Forward Flow based lookup yields rule:
out <SNIP>
Phase: 13
Type: USER-STATISTICS
Subtype: user-statistics
Result: ALLOW
Config:
Additional Information:
Forward Flow based lookup yields rule:
out <SNIP>
<In this example, IDFW is not configured>
Phase: 14
Type: NAT
Subtype: per-session
Result: ALLOW
Config:
Additional Information:
Reverse Flow based lookup yields rule:
in <SNIP>
Phase: 15
Type: IP-OPTIONS
Subtype:
Result: ALLOW
Config:
Additional Information:
Reverse Flow based lookup yields rule:
in <SNIP>
Phase: 16
Type: USER-STATISTICS
Subtype: user-statistics
Result: ALLOW
Config:
Additional Information:
Reverse Flow based lookup yields rule:
out <SNIP>
Phase: 17
Type: FLOW-CREATION
Subtype:
Result: ALLOW
Config:
Additional Information:
New flow created with id 3855350, packet dispatched to next module
Module information for forward flow ...
snp_fp_tracer_drop
snp_fp_inspect_ip_options
snp_fp_tcp_normalizer
snp_fp_inline_tcp_mod
snp_fp_translate
snp_fp_tcp_normalizer
snp_fp_adjacency
snp_fp_fragment
snp_ifc_stat
Module information for reverse flow ...
snp_fp_tracer_drop
snp_fp_inspect_ip_options
snp_fp_tcp_normalizer
snp_fp_translate
snp_fp_inline_tcp_mod
snp_fp_tcp_normalizer
snp_fp_adjacency
snp_fp_fragment
snp_ifc_stat
Result:
input-interface: inside
input-status: up
input-line-status: up
output-interface: outside
output-status: up
output-line-status: up
Action: allow
관련 정보