소개
이 문서에서는 VPN 필터에 대해 자세히 설명하고 L2L(LAN-to-LAN), Cisco VPN 클라이언트 및 Cisco AnyConnect Secure Mobility Client에 적용됩니다.
필터는 소스 주소, 목적지 주소, 프로토콜 등의 기준에 따라 보안 어플라이언스를 통과하는 터널링된 데이터 패킷의 허용 또는 거부 여부를 결정하는 규칙으로 구성됩니다. 다양한 유형의 트래픽을 허용하거나 거부하도록 ACL(Access Control List)을 구성합니다. 그룹 정책, 사용자 이름 특성 또는 DAP(Dynamic Access Policy)에서 필터를 구성할 수 있습니다.
DAP는 사용자 이름 특성 및 그룹 정책에 구성된 값을 대체합니다. DAP에서 필터를 할당하지 않는 경우 사용자 이름 특성 값은 그룹 정책 값을 대체합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
- L2L VPN 터널 컨피그레이션
- VPN 클라이언트 RA(원격 액세스) 구성
- AnyConnect RA 컨피그레이션
사용되는 구성 요소
이 문서의 정보는 Cisco 5500-X Series ASA(Adaptive Security Appliance) 버전 9.1(2)을 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
sysopt connection permit-vpn 명령은 VPN 터널을 통해 보안 어플라이언스로 들어오는 모든 트래픽이 인터페이스 액세스 목록을 우회하도록 허용합니다. 그룹 정책 및 사용자별 권한 부여 액세스 목록은 여전히 트래픽에 적용됩니다.
vpn-filter는 터널에서 나간 후 사후 암호 해독된 트래픽과 터널로 들어가기 전에 사전 암호화된 트래픽에 적용됩니다. vpn-filter에 사용되는 ACL은 인터페이스 액세스 그룹에도 사용할 수 없습니다.
Vpn-filter가 원격 액세스 VPN 클라이언트 연결을 제어하는 그룹 정책에 적용될 경우 ACL의 src_ip 위치에 있는 클라이언트 할당 IP 주소와 ACL의 dest_ip 위치에 있는 로컬 네트워크로 ACL을 구성해야 합니다. L2L VPN 연결을 제어하는 그룹 정책에 vpn-filter를 적용할 경우 ACL은 ACL의 src_ip 위치에 있는 원격 네트워크와 ACL의 dest_ip 위치에 있는 로컬 네트워크로 구성되어야 합니다.
구성
규칙이 여전히 양방향으로 적용되지만 VPN 필터는 인바운드 방향으로 구성해야 합니다. 개선 사항 CSCsf99428이 단방향 규칙을 지원하도록 열렸지만 아직 구현을 위해 예약/커밋되지 않았습니다.
예 1. AnyConnect 또는 VPN 클라이언트를 사용하는 vpn-filter
클라이언트가 할당한 IP 주소가 10.10.10.1/24이고 로컬 네트워크가 192.168.1.0/24이라고 가정합니다.
이 ACE(Access Control Entry)를 사용하면 AnyConnect 클라이언트가 로컬 네트워크에 텔넷으로 연결할 수 있습니다.
access-list vpnfilt-ra permit tcp
10.10.10.1 255.255.255.255 192.168.1.0 255.255.255.0 eq 23
참고: ACE access-list vpnfilt-ra permit tcp 10.10.10.1 255.255.255.255 192.168.1.0 255.255.255.0 eq 23은 또한 로컬 네트워크에서 소스 포트 23을 사용하는 경우 TCP 포트에서 RA 클라이언트에 대한 연결을 시작할 수 있도록 합니다.
이 ACE를 사용하면 로컬 네트워크에서 AnyConnect 클라이언트에 텔넷할 수 있습니다.
access-list vpnfilt-ra permit tcp 10.10.10.1 255.255.255.255
eq 23 192.168.1.0 255.255.255.0
참고: ACE access-list vpnfilt-ra permit tcp 10.10.1 255.255.255.255.255 eq 23 192.168.1.0 255.255.255.0에서는 RA 클라이언트가 소스 포트 23을 사용하는 경우 TCP 포트에서 로컬 네트워크에 대한 연결을 시작할 수도 있습니다.
주의: vpn-filter 기능을 사용하면 인바운드 방향으로만 트래픽을 필터링할 수 있으며 아웃바운드 규칙이 자동으로 컴파일됩니다. 따라서 ICMP(Internet Control Message Protocol) 액세스 목록을 만들 때 방향 필터를 사용하려면 액세스 목록 형식으로 ICMP 유형을 지정하지 마십시오.
예 2. L2L VPN 연결을 사용하는 vpn-filter
원격 네트워크가 10.0.0.0/24이고 로컬 네트워크가 192.168.1.0/24이라고 가정합니다.
이 ACE는 원격 네트워크에서 로컬 네트워크에 텔넷 연결하도록 허용합니다.
access-list vpnfilt-l2l permit tcp 10.0.0.0 255.255.255.0 192.168.1.0
255.255.255.0 eq 23
참고: ACE access-list vpnfilt-l2l permit tcp 10.0.0.0 255.255.255.0 192.168.1.0 255.255.255.0 eq 23은 또한 로컬 네트워크가 소스 포트 23을 사용하는 경우 TCP 포트에서 원격 네트워크에 대한 연결을 시작할 수 있도록 허용합니다.
이 ACE는 로컬 네트워크에서 원격 네트워크에 텔넷할 수 있도록 합니다.
access-list vpnfilt-l2l permit tcp 10.0.0.0 255.255.255.0 eq 23
192.168.1.0 255.255.255.0
참고: ACE access-list vpnfilt-l2l permit tcp 10.0.0.0 255.255.255.0 eq 23 192.168.1.0 255.255.255.0에서는 원격 네트워크가 소스 포트 23을 사용하는 경우 TCP 포트에서 로컬 네트워크에 대한 연결을 시작할 수도 있습니다.
주의: vpn-filter 기능을 사용하면 인바운드 방향으로만 트래픽을 필터링할 수 있으며 아웃바운드 규칙이 자동으로 컴파일됩니다. 따라서 ICMP 액세스 목록을 만들 때 방향 필터를 사용하려면 액세스 목록 형식으로 ICMP 유형을 지정하지 마십시오.
VPN 필터 및 사용자별 재정의 액세스 그룹
VPN 트래픽은 인터페이스 ACL에 의해 필터링되지 않습니다. no sysopt connection permit-vpn 명령을 사용하여 기본 동작을 변경할 수 있습니다. 이 경우 두 개의 ACL을 사용자 트래픽에 적용할 수 있습니다. 인터페이스 ACL을 먼저 선택한 다음 vpn-filter를 선택합니다.
per-user-override 키워드(인바운드 ACL에만 해당)는 인터페이스에 할당된 ACL을 재정의하기 위해 사용자 권한 부여를 위해 다운로드되는 동적 사용자 ACL을 허용합니다. 예를 들어, 인터페이스 ACL이 10.0.0.0의 모든 트래픽을 거부하지만 동적 ACL이 10.0.0.0의 모든 트래픽을 허용하는 경우, 동적 ACL은 해당 사용자에 대한 인터페이스 ACL을 재정의하며 트래픽이 허용됩니다.
예(sysopt connection permit-vpn이 구성되지 않은 경우):
- per-user-override, no vpn-filter - 인터페이스 ACL에 대해 트래픽이 확인됨
- no per-user-override, vpn-filter - 처음에는 인터페이스 ACL을 기준으로 트래픽을 확인한 후 vpn-filter를 기준으로 확인합니다.
- per-user-override, vpn-filter - vpn-filter에 대해서만 트래픽이 확인됨
다음을 확인합니다.
구성이 올바르게 작동하는지 확인하려면 이 섹션을 활용하십시오.
Cisco CLI Analyzer(등록 고객만 해당)는 특정 show 명령을 지원합니다. Cisco CLI Analyzer를 사용하여 show 명령 출력의 분석을 봅니다.
- show asp table filter [access-list <acl-name>] [hits]
가속화된 보안 경로 필터 테이블을 디버깅하려면 특권 EXEC 모드에서 show asp table filter 명령을 사용합니다. 필터가 VPN 터널에 적용된 경우 필터 규칙은 필터 테이블에 설치됩니다. 터널에 지정된 필터가 있는 경우 내부 패킷의 허용 또는 거부 여부를 확인하기 위해 암호화 전 및 암호 해독 후 필터 테이블을 확인합니다.
USAGE
show asp table filter [access-list
] [hits]
SYNTAX <acl-name> Show installed filter for access-list <acl-name>
hits Show filter rules which have non-zero hits values
- clear asp table filter [access-list <acl-name>]
이 명령은 ASP 필터 테이블 항목에 대한 적중 카운터를 지웁니다.
USAGE
clear asp table filter [access-list
]
SYNTAX
<acl-name> Clear hit counters only for specified access-list <acl-name>
문제 해결
이 섹션에서는 컨피그레이션 문제를 해결하는 데 사용할 수 있는 정보를 제공합니다.
Cisco CLI Analyzer(등록 고객만 해당)는 특정 show 명령을 지원합니다. Cisco CLI Analyzer를 사용하여 show 명령 출력의 분석을 봅니다.
참고: debug 명령을 사용하기 전에 debug 명령에 대한 중요한 정보를 참조하십시오.
- 디버그 acl 필터
이 명령은 VPN 필터 디버깅을 활성화합니다. ASP 필터 테이블에 대한 VPN 필터의 설치/제거 문제를 해결하는 데 사용할 수 있습니다. 예 1. AnyConnect 또는 VPN 클라이언트를 사용한 vpn-filter.
사용자1이 연결할 때 디버그 출력:
ACL FILTER INFO: first reference to inbound filter vpnfilt-ra(2): Installing
rule into NP.
ACL FILTER INFO: first reference to outbound filter vpnfilt-ra(2): Installing
rule into NP.
user2가 연결될 때 디버그 출력(user1 및 동일한 필터 이후):
ACL FILTER INFO: adding another reference to outbound filter vpnfilt-ra(2): refCnt=2
ACL FILTER INFO: adding another reference to inbound filter vpnfilt-ra(2): refCnt=2
사용자2의 연결이 끊어질 때 디버그 출력:
ACL FILTER INFO: removing a reference from inbound filter vpnfilt-ra(2): remaining
refCnt=1
ACL FILTER INFO: removing a reference from outbound filter vpnfilt-ra(2): remaining
refCnt=1
사용자1의 연결이 끊어질 때 디버그 출력:
ACL FILTER INFO: releasing last reference from inbound filter vpnfilt-ra(2): Removing
rule into NP.
ACL FILTER INFO: releasing last reference from outbound filter vpnfilt-ra(2): Removing
rule into NP.
- asp 테이블 표시
다음은 user1 연결 이전의 show asp table filter의 출력입니다. IPv4 및 IPv6에 대해 내부 및 외부 방향의 암시적 거부 규칙만 설치됩니다.
Global Filter Table:
in id=0xd616ef20, priority=11, domain=vpn-user, deny=true
hits=0, user_data=0xd613ea60, filter_id=0x0(-implicit deny-), protocol=0
src ip=0.0.0.0, mask=0.0.0.0, port=0
dst ip=0.0.0.0, mask=0.0.0.0, port=0
in id=0xd616f420, priority=11, domain=vpn-user, deny=true
hits=0, user_data=0xd615ef70, filter_id=0x0(-implicit deny-), protocol=0
src ip=::/0, port=0
dst ip=::/0, port=0
out id=0xd616f1a0, priority=11, domain=vpn-user, deny=true
hits=0, user_data=0xd614d900, filter_id=0x0(-implicit deny-), protocol=0
src ip=0.0.0.0, mask=0.0.0.0, port=0
dst ip=0.0.0.0, mask=0.0.0.0, port=0
out id=0xd616f6d0, priority=11, domain=vpn-user, deny=true
hits=0, user_data=0xd6161638, filter_id=0x0(-implicit deny-), protocol=0
src ip=::/0, port=0
dst ip=::/0, port=0