본 제품에 대한 문서 세트는 편견 없는 언어를 사용하기 위해 노력합니다. 본 설명서 세트의 목적상, 편견 없는 언어는 나이, 장애, 성별, 인종 정체성, 민족 정체성, 성적 지향성, 사회 경제적 지위 및 교차성에 기초한 차별을 의미하지 않는 언어로 정의됩니다. 제품 소프트웨어의 사용자 인터페이스에서 하드코딩된 언어, RFP 설명서에 기초한 언어 또는 참조된 서드파티 제품에서 사용하는 언어로 인해 설명서에 예외가 있을 수 있습니다. 시스코에서 어떤 방식으로 포용적인 언어를 사용하고 있는지 자세히 알아보세요.
Cisco는 전 세계 사용자에게 다양한 언어로 지원 콘텐츠를 제공하기 위해 기계 번역 기술과 수작업 번역을 병행하여 이 문서를 번역했습니다. 아무리 품질이 높은 기계 번역이라도 전문 번역가의 번역 결과물만큼 정확하지는 않습니다. Cisco Systems, Inc.는 이 같은 번역에 대해 어떠한 책임도 지지 않으며 항상 원본 영문 문서(링크 제공됨)를 참조할 것을 권장합니다.
이 문서에서는 IPsec(Internet Protocol Security) 재전송 방지 확인 실패와 관련된 문제 및 가능한 솔루션으로 문제를 해결하는 방법에 대해 설명합니다.
재생 공격은 유효한 데이터 전송이 악의적이거나 부정하게 기록되고 나중에 반복되는 네트워크 공격의 형태입니다. 올바른 통신을 기록하고 유효한 사용자를 가장하고 합법적인 연결에 부정적인 영향을 주거나 주기 위해 이를 반복하는 사람에 의해 보안을 뒤집으려는 시도입니다.
IPsec이 암호화한 각 패킷에 단조롭게 증가하는 시퀀스 번호가 할당되어 공격자에 대한 재전송 방지 보호를 제공합니다. 수신 IPsec 엔드포인트는 이러한 번호와 허용 가능한 시퀀스 번호의 슬라이딩 창을 사용할 때 이미 처리된 패킷을 추적합니다. Cisco IOS® 구현의 기본 재생 방지 창 크기는 다음 이미지에 표시된 대로 64패킷입니다.
IPsec 터널 엔드포인트에서 재전송 방지 보호가 활성화된 경우 수신 IPsec 트래픽은 다음과 같이 처리됩니다.
재생 확인 오류가 발생하고 패킷이 삭제된 경우 라우터는 다음과 유사한 Syslog 메시지를 생성합니다.
%IPSEC-3-REPLAY_ERROR: IPSec SA receives anti-replay error, DP Handle n, src_addr x.x.x.x, dest_addr y.y.y.y, SPI 0xzzzzzzzz
참고: 재생 탐지는 두 피어 간에 IPsec SA(Security Association)가 존재한다고 가정하는 바에 따라 결정됩니다. GETVPN(Group Encrypted Transport VPN)은 여러 피어 간에 단일 IPsec SA를 사용합니다. 따라서 GETVPN은 Time Based Anti-Replay Failure라는 완전히 다른 재전송 방지 확인 메커니즘을 사용합니다. 이 문서에서는 포인트-투-포인트 IPsec 터널의 카운터 기반 재전송 방지만 다룹니다.
참고: IPsec 프로토콜에서 제공하는 중요한 보안 서비스인 Anti-replay 보호. IPsec Anti-replay 비활성화는 보안에 영향을 미치며 재량에 따라 수행해야 합니다.
앞서 설명한 대로 재전송 확인의 목적은 패킷의 악의적인 재전송으로부터 보호하는 것입니다. 그러나 일부 시나리오에서는 재생 검사 실패 시 악의적인 이유 때문에 발생하지 않을 수 있습니다.
IPsec 재생 삭제 문제를 해결하는 키는 재생으로 인해 삭제된 패킷을 식별하고 패킷 캡처를 사용하여 이러한 패킷이 실제로 재생 창 외부의 수신 라우터에 도착한 패킷 또는 패킷인지 확인합니다. 삭제된 패킷을 스니퍼 추적에서 캡처된 것과 정확하게 일치시키기 위해 첫 번째 단계는 삭제된 패킷이 속하는 피어 및 IPsec 흐름과 패킷의 ESP 시퀀스 번호를 식별하는 것입니다.
Cisco IOS® XE를 실행하는 라우터 플랫폼에서는 삭제 발생 시 피어에 대한 정보와 IPsec SPI(Security Parameter Index)에 대한 정보가 Syslog 메시지에 인쇄되어 재생 방지 문제를 해결할 수 있습니다. 그러나 여전히 간과하고 있는 한 가지 핵심 정보는 ESP 시퀀스 번호입니다. ESP 시퀀스 번호는 지정된 IPsec 흐름 내에서 IPsec 패킷을 고유하게 식별하는 데 사용됩니다. 시퀀스 번호가 없으면 패킷 캡처에서 삭제되는 패킷을 정확하게 식별하기가 어려워집니다.
Cisco IOS XE 데이터 경로 패킷 추적 기능은 재생 삭제가 관찰될 때 다음 Syslog 메시지와 함께 사용할 수 있습니다.
%IOSXE-3-PLATFORM: F0: cpp_cp: QFP:0.0 Thread:060 TS:00000001132883828011
%IPSEC-3-REPLAY_ERROR: IPSec SA receives anti-replay error, DP Handle 3, src_addr 10.2.0.200, dest_addr 10.1.0.100, SPI 0x4c1d1e90
삭제된 패킷의 ESP 시퀀스 번호를 식별하려면 패킷 추적 기능을 사용하여 다음 단계를 완료하십시오.
debug platform condition ipv4 10.2.0.200/32 ingress
debug platform condition start
debug platform packet enable
debug platform packet-trace packet 64
debug platform packet-trace copy packet input l3 size 100
Router#show platform packet-trace summary
Pkt Input Output State Reason
0 Gi4/0/0 Tu1 CONS Packet Consumed
1 Gi4/0/0 Tu1 CONS Packet Consumed
2 Gi4/0/0 Tu1 CONS Packet Consumed
3 Gi4/0/0 Tu1 CONS Packet Consumed
4 Gi4/0/0 Tu1 CONS Packet Consumed
5 Gi4/0/0 Tu1 CONS Packet Consumed
6 Gi4/0/0 Tu1 DROP 053 (IpsecInput)
7 Gi4/0/0 Tu1 DROP 053 (IpsecInput)
8 Gi4/0/0 Tu1 CONS Packet Consumed
9 Gi4/0/0 Tu1 CONS Packet Consumed
10 Gi4/0/0 Tu1 CONS Packet Consumed
11 Gi4/0/0 Tu1 CONS Packet Consumed
12 Gi4/0/0 Tu1 CONS Packet Consumed
13 Gi4/0/0 Tu1 CONS Packet Consumed
Router#show platform packet-trace packet 6
Packet: 6 CBUG ID: 6
Summary
Input : GigabitEthernet4/0/0
Output : Tunnel1
State : DROP 053 (IpsecInput)
Timestamp : 3233497953773
Path Trace
Feature: IPV4
Source : 10.2.0.200
Destination : 10.1.0.100
Protocol : 50 (ESP)
Feature: IPSec
Action : DECRYPT
SA Handle : 3
SPI : 0x4c1d1e90
Peer Addr : 10.2.0.200
Local Addr: 10.1.0.100
Feature: IPSec
Action : DROP
Sub-code : 019 - CD_IN_ANTI_REPLAY_FAIL
Packet Copy In
45000428 00110000 fc329575 0a0200c8 0a010064 4c1d1e90 00000006 790aa252
e9951cd9 57024433 d97c7cb8 58e0c869 2101f1ef 148c2a12 f309171d 1b7a4771
d8868af7 7bae9967 7d880197 46c6a079 d0143e43 c9024c61 0045280a d57b2f5e
23f06bc3 ab6b6b81 c1b17936 98939509 7aec966e 4dd848d2 60517162 9308ba5d
재생 검사 실패로 인해 삭제된 패킷의 패킷 정보를 식별하는 것 외에도 문제가 있는 IPsec 흐름에 대한 패킷 캡처를 동시에 수집해야 합니다. 이렇게 하면 동일한 IPsec 흐름 내에서 ESP 시퀀스 번호 패턴을 검사하여 재생 삭제 사유를 확인하는 데 도움이 됩니다. Cisco IOS XE 라우터에서 EPC(Embedded Packet Capture)를 사용하는 방법에 대한 자세한 내용은 Cisco IOS용 Embedded Packet Capture 및 Cisco IOS XE Configuration Example을 참조하십시오.
WAN 인터페이스에서 암호화된(ESP) 패킷에 대한 패킷 캡처가 수집되면 Wireshark를 사용하여 시퀀스 번호 이상 징후 분석에 대해 ESP 시퀀스 번호 분석을 수행할 수 있습니다. 먼저, 이미지에 표시된 대로 Preferences(환경 설정) > Protocols(프로토콜) > ESP(ESP)에서 Sequence Number Check(시퀀스 번호 확인)가 활성화되었는지 확인합니다.
다음으로 Analyze(분석) > Expert 정보에서 ESP 시퀀스 번호 문제를 확인합니다.
다음과 같이 추가 세부 정보를 보려면 잘못된 시퀀스 번호가 있는 패킷을 클릭합니다.
피어가 식별되고 재생 삭제에 대한 패킷 캡처가 수집되면 다음 세 가지 시나리오에서 재생 실패를 설명할 수 있습니다.
팁: VTI(Virtual Tunnel Interface)에서 사용되는 IPSec 프로파일에서 재생 창이 비활성화되거나 변경되면 보호 프로파일이 제거되고 다시 적용되거나 터널 인터페이스가 재설정될 때까지 변경 사항이 적용되지 않습니다. IPsec 프로필은 터널 인터페이스가 시작될 때 터널 프로필 맵을 만드는 데 사용되는 템플릿이므로 이 동작은 예상된 동작입니다. 인터페이스가 이미 가동 중이면 인터페이스가 재설정될 때까지 프로파일에 대한 변경 사항은 터널에 영향을 주지 않습니다.
참고: 초기 ASR(Aggregation Services Router) 1000 모델(예: ESP5, ESP10, ESP20, ESP40이 포함된 ASR1000 및 ESP40과 ASR10001)은 CLI에서 해당 컨피그레이션을 허용했지만 윈도우 크기를 지원하지 않았습니다. 따라서 show crypto ipsec sa 명령 출력에 보고된 창 크기가 올바르지 않을 수 있습니다. 하드웨어 재전송 방지 창 크기를 확인하려면 show crypto ipsec sa peer ip-address platform 명령을 사용합니다. 기본 창 크기는 모든 플랫폼에서 64개의 패킷입니다. 자세한 내용은 Cisco 버그 ID CSCso45946을 참조하십시오. 최신 Cisco IOS XE 라우팅 플랫폼(예: ESP100 및 ESP200이 포함된 ASR1K, ASR1001-X 및 ASR1002-X, 통합 서비스 라우터(ISR) 4000 series 라우터 및 Catalyst8000 시리즈 라우터)는 버전 15.2(2)S 이상에서 1024 패킷의 윈도우 크기를 지원합니다.
참고: IPsec 변형 집합에서 인증 알고리즘이 활성화된 경우에만 재생 확인 실패가 표시됩니다. 이 오류 메시지를 억제할 수 있는 또 다른 방법은 인증을 비활성화하고 암호화만 수행하는 것입니다. 그러나 비활성화된 인증의 보안과 관련된 문제로 인해 이러한 기능은 강력히 권장되지 않습니다.
Cisco IOS를 사용하는 레거시 ISR G2 시리즈 라우터의 IPsec 재생 삭제는 다음과 같이 Cisco IOS XE를 사용하는 라우터와 다릅니다.
%CRYPTO-4-PKT_REPLAY_ERR: decrypt: replay check failed connection id=529, sequence number=13
메시지 출력은 피어 IP 주소 또는 SPI 정보를 제공하지 않습니다. 이 플랫폼에서 문제를 해결하려면 오류 메시지에서 "conn-id"를 사용하십시오. 오류 메시지에서 "conn-id"를 식별하고 show crypto ipsec sa 출력에서 찾습니다. 재생은 SA별 검사(per-peer와 반대)이기 때문입니다. 또한 Syslog 메시지는 패킷 캡처에서 삭제된 패킷을 고유하게 식별하는 데 도움이 되는 ESP 시퀀스 번호를 제공합니다.
참고: 코드 버전이 다른 경우 "conn-id"는 인바운드 SA의 conn id 또는 flow_id입니다.
이 내용은 다음과 같습니다.
%CRYPTO-4-PKT_REPLAY_ERR: decrypt: replay check failed connection id=529, sequence number=13
Router#show crypto ipsec sa | in peer|conn id
current_peer 10.2.0.200 port 500
conn id: 529, flow_id: SW:529, sibling_flags 80000046, crypto map: Tunnel0-head-0
conn id: 530, flow_id: SW:530, sibling_flags 80000046, crypto map: Tunnel0-head-0
Router#
Router#show crypto ipsec sa peer 10.2.0.200 detail
interface: Tunnel0
Crypto map tag: Tunnel0-head-0, local addr 10.1.0.100
protected vrf: (none)
local ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
remote ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
current_peer 10.2.0.200 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 27, #pkts encrypt: 27, #pkts digest: 27
#pkts decaps: 27, #pkts decrypt: 27, #pkts verify: 27
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#pkts no sa (send) 0, #pkts invalid sa (rcv) 0
#pkts encaps failed (send) 0, #pkts decaps failed (rcv) 0
#pkts invalid prot (recv) 0, #pkts verify failed: 0
#pkts invalid identity (recv) 0, #pkts invalid len (rcv) 0
#pkts replay rollover (send): 0, #pkts replay rollover (rcv) 0
##pkts replay failed (rcv): 21
#pkts internal err (send): 0, #pkts internal err (recv) 0
local crypto endpt.: 10.1.0.100, remote crypto endpt.: 10.2.0.200
path mtu 2000, ip mtu 2000, ip mtu idb Serial2/0
current outbound spi: 0x8B087377(2332586871)
PFS (Y/N): N, DH group: none
inbound esp sas:
spi: 0xE7EDE943(3891128643)
transform: esp-gcm ,
in use settings ={Tunnel, }
conn id: 529, flow_id: SW:529, sibling_flags 80000046, crypto map:
Tunnel0-head-0
sa timing: remaining key lifetime (k/sec): (4509600/3223)
IV size: 8 bytes
replay detection support: Y
Status: ACTIVE
<SNIP>
이 출력에서 볼 수 있듯이, 재생 삭제는 인바운드 ESP SA SPI가 0xE7EDE943인 10.2.0.200 피어 주소에서 가져온 것입니다. 삭제된 패킷의 ESP 시퀀스 번호가 13이라는 로그 메시지 자체에서도 확인할 수 있습니다. 피어 주소, SPI 번호 및 ESP 시퀀스 번호의 조합을 사용하여 캡처에서 삭제된 패킷을 고유하게 식별할 수 있습니다.
참고: Cisco IOS Syslog 메시지는 분당 1로 떨어지는 데이터 플레인 패킷에 대해 속도가 제한됩니다. 삭제된 정확한 패킷 수를 확인하려면 앞서와 같이 show crypto ipsec sa detail 명령을 사용합니다.
이전 Cisco IOS XE 릴리스를 실행하는 라우터에서 Syslog에 보고된 "REPLAY_ERROR"는 다음과 같이 재생된 패킷이 삭제되는 피어 정보와 함께 실제 IPsec 플로우를 인쇄하지 않을 수 있습니다.
%IOSXE-3-PLATFORM: F0: cpp_cp: QFP:00 Thread: 095 TS:00000000240306197890
%IPSEC-3-REPLAY_ERROR: IPSec SA receives anti-replay error, DP Handle 3
올바른 IPsec 피어 및 흐름 정보를 식별하려면 Syslog 메시지에 인쇄된 DP(Data Plane) 핸들을 이 명령의 입력 매개 변수 SA 핸들로 사용하여 QFP(Quantum Flow Processor)에서 IPsec 플로우 정보를 검색합니다.
Router#show platform hardware qfp active feature ipsec sa 3
QFP ipsec sa Information
QFP sa id: 3
pal sa id: 2
QFP spd id: 1
QFP sp id: 2
QFP spi: 0x4c1d1e90(1276976784)
crypto ctx: 0x000000002e03bfff
flags: 0xc000800
: src:IKE valid:Yes soft-life-expired:No hard-life-expired:No
: replay-check:Yes proto:0 mode:0 direction:0
: qos_preclassify:No qos_group:No
: frag_type:BEFORE_ENCRYPT df_bit_type:COPY
: sar_enable:No getvpn_mode:SNDRCV_SA
: doing_translation:No assigned_outside_rport:No
: inline_tagging_enabled:No
qos_group: 0x0
mtu: 0x0=0
sar_delta: 0
sar_window: 0x0
sibling_sa: 0x0
sp_ptr: 0x8c392000
sbs_ptr: 0x8bfbf810
local endpoint: 10.1.0.100
remote endpoint: 10.2.0.200
cgid.cid.fid.rid: 0.0.0.0
ivrf: 0
fvrf: 0
trans udp sport: 0
trans udp dport: 0
first intf name: Tunnel1
<SNIP>
EEM(Embedded Event Manager) 스크립트를 사용하여 데이터 수집을 자동화할 수도 있습니다.
event manager applet Replay-Error
event syslog pattern "%IPSEC-3-REPLAY_ERROR: IPSec SA receives anti-replay error"
action 1.0 regexp "([0-9]+)$" "$_syslog_msg" dph
action 2.0 cli command "enable"
action 3.0 cli command "show platform hardware qfp active feature ipsec sa $dph |
append bootflash:replay-error.txt"
이 예에서는 수집된 출력이 bootflash로 리디렉션됩니다. 이 출력을 보려면 more bootflash:replay-error.txt 명령을 사용합니다.
개정 | 게시 날짜 | 의견 |
---|---|---|
2.0 |
13-Feb-2022 |
추가 정보 |
1.0 |
15-Dec-2013 |
최초 릴리스 |