소개
이 문서에서는 IPSec(Internet Protocol Security) 재전송 방지 검사 실패와 관련된 문제를 설명하고 문제 해결 절차 및 문제 해결 방법을 제공합니다.
참고:IPSec 프로토콜에서 제공하는 중요한 보안 서비스인 Anti-replay 보호.IPSec 재전송 방지 비활성화는 보안에 영향을 미치므로 주의하여 사용해야 합니다.
배경 정보
재생 공격 설명
재생 공격은 유효한 데이터 전송이 악의적이거나 부정하게 반복되거나 지연되는 네트워크 공격의 형태입니다.올바른 통신을 기록하고 유효한 사용자를 가장하기 위해 이를 반복하여 보안을 뒤집고 합법적인 연결에 부정적인 영향을 미치거나 유발하려는 시도입니다.
재생 확인 실패 설명
IPSec은 암호화된 패킷을 복제한 공격자에 대한 재전송 방지 보호 기능을 제공하며, 암호화된 각 패킷에 대한 시퀀스 번호를 동일하게 증가시킵니다.수신 IPSec 엔드포인트는 모든 허용 가능한 시퀀스 번호의 슬라이딩 윈도우를 사용하여 이 번호를 기준으로 이미 처리된 패킷을 추적합니다.현재 Cisco IOS® 구현의 기본 재생 방지 창 크기는 64패킷입니다.
참고:개선 사항 요청 CSCva65805 및 CSCva65836이 접수되어 기본 재생 창 크기를 512로 늘렸습니다. 64는 최신 네트워크에서 거의 사용되지 않는 것으로 간주됩니다.
이 그림은 다음 그림에 나와 있습니다.

수신 터널 엔드포인트에서 수신 IPSec 트래픽을 처리하기 위한 단계는 다음과 같습니다.
- 패킷이 수신될 때 시퀀스 번호가 윈도우 내에 있고 이전에 수신되지 않은 경우 패킷이 수락되고 무결성 확인을 위해 전송되기 전에 수신된 것으로 표시됩니다.
- 시퀀스 번호가 창 내에 있고 이전에 수신되면 패킷이 삭제되고 재생 카운터가 증가합니다.
- 시퀀스 번호가 창에서 가장 높은 시퀀스 번호보다 큰 경우 패킷이 수락되고 수신됨으로 표시됩니다.슬라이딩 윈도우가 오른쪽으로 이동합니다.
참고:이는 패킷이 유효하고 무결성 검사를 통과한 경우에만 발생합니다.
- 시퀀스 번호가 창에서 가장 낮은 시퀀스보다 작으면 패킷이 삭제되고 재생 카운터가 증가합니다.
두 번째 및 네 번째 시나리오에서 재생 확인 실패가 발생하고 라우터에 다음과 유사한 오류 메시지가 표시됩니다.
%CRYPTO-4-PKT_REPLAY_ERR: decrypt: replay check failed connection id=#, sequence
number=#
참고:GETVPN(Group Encrypted Transport VPN)에는 Time Based Anti-Replay Failure라는 완전히 다른 재전송 방지 검사가 있습니다.이 문서에서는 카운터 기반 재전송 방지만 다룹니다.
문제
앞서 설명한 대로 재전송 확인의 목적은 패킷의 악의적인 재전송으로부터 보호하는 것입니다.그러나 일부 시나리오에서는 재생 확인 실패 시 악의적인 이유 때문에 실패하지 않을 수 있습니다.
- 이 오류는 전송 미디어에서 패킷 재정렬 결과로 발생할 수 있습니다.평행 경로가 있는 경우 특히 그렇습니다.
- 이 오류는 Cisco IOS 내에서 서로 다른 패킷 처리 경로로 인해 발생할 수 있습니다.예를 들어, 해독하기 전에 IP 리어셈블리를 필요로 하는 큰 IPSec 패킷은 처리 시간까지 재생 창 밖으로 나가기 위해 로드되는 시스템에서 충분히 지연될 수 있습니다.
- 이 오류는 전송 IPSec 엔드포인트에서 QoS(Quality of Service)를 활성화하여 발생할 수 있습니다.Cisco IOS 구현을 통해 IPSec 암호화는 QoS가 이그레스 방향으로 전환되기 전에 발생합니다.LLQ(Low Latency Queueing)와 같은 특정 QoS 기능은 IPSec 패킷 전달이 순서가 잘못되어 재생 확인 실패로 인해 수신 엔드포인트에서 삭제될 수 있습니다.
IPSec 재생 삭제 문제 해결
IPSec 재생 삭제 문제를 해결하는 키는 재생으로 인해 패킷 삭제를 식별하고 패킷 캡처를 사용하여 이러한 패킷이 실제로 재생 창 외부의 수신 라우터에 도착한 패킷 또는 패킷인지 확인하는 것입니다.삭제된 패킷을 스니퍼 추적에서 캡처된 것과 정확하게 일치시키기 위해 첫 번째 단계는 삭제된 패킷이 속한 피어 및 IPSec 흐름을 식별하는 것입니다.라우터 플랫폼에 따라 다르게 수행됩니다.
Cisco IOS Classic을 실행하는 Cisco ISR(Integrated Services Router)/ISR G2 Platform
이 플랫폼에서 문제를 해결하려면 오류 메시지에서 conn-id를 사용합니다.오류 메시지에서 conn-id를 식별하고 show crypto ipsec sa 출력에서 찾습니다. 재생은 SA(Security Association)(per-peer와 반대) 검사이므로. 또한 syslog 메시지는 패킷 캡처에서 삭제된 패킷을 고유하게 식별하는 데 도움이 되는 ESP(Encapsulating Security Payload) 시퀀스 번호를 제공합니다.
참고:코드 버전이 다른 경우 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>
이 출력에서 볼 수 있듯이 재생 삭제는 0xE7EDE943의 인바운드 ESP SA SPI(Security Parameter Index)가 있는 10.2.0.200 피어 주소에서 가져온 것입니다. 또한 로그 메시지에서 삭제된 패킷의 ESP 시퀀스 번호가 13이라는점을 기록할 수 있습니다. 따라서 피어 주소, SPI 주소, 피어 번호, SPI 및 SPI 번호, 패킷 캡처에서 삭제된 패킷을 고유하게 식별하기 위해 ESP 시퀀스 번호를 사용할 수 있습니다.
참고:Cisco IOS syslog 메시지는 데이터 플레인 패킷 삭제에 대해 속도가 제한됩니다.삭제된 정확한 패킷 수를 확인하려면 앞서와 같이 show crypto ipsec sa detail 명령을 사용합니다.또한 Cisco IOS Version 12.4(4)T 이전 코드에서 카운터가 잘못 업데이트될 수 있습니다.이는 Cisco 버그 ID CSCsa90034에서 수정되었습니다.
Cisco IOS-XE를 실행하는 Cisco ASR(Aggregation Services Router)
ASR 플랫폼에서 이전 Cisco IOS-XE 릴리스 중 일부에 보고된 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 Handle로 사용하여 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 (Details below)
: 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>
ASR의 Cisco IOS 버전이 XE 버전 3.7 이전인 경우 오류 메시지는 DP Handle과 함께 메시지를 로깅하며, 범법자 패킷이 속한 피어/SPI에 대한 정보도 없습니다.여기서 Cisco 버그 ID CSCtw69096이 관련 됩니다.
CSCtw69096 ASR prints DP Handle in IPsec syslogs - Fixed in XE3.7 / 15.2(4)S
.. With this defect-fix, we now print the peer ip address and the SPI as follows:
%IPSEC-3-REPLAY_ERROR: IPSec SA receives anti-replay error, DP Handle 6
Now shows up as:
%IPSEC-3-REPLAY_ERROR: IPSec SA receives anti-replay error, DP Handle 6,
src_addr 10.0.0.2, dest_addr 10.0.0.1, SPI 0x1a2b3c4d
이러한 경우 이 EEM(Embedded Event Manager) 스크립트를 사용하여 재생 방지 메시지를 트리거하는 피어 및 SPI를 확인할 수 있습니다.
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"
ASR 자체의 출력을 보려면 more bootflash:replay-error.txt 명령을 주기적으로 입력합니다.
ASR 데이터 경로 패킷 추적 기능 사용
ASR1000용 최신 Cisco IOS-XE 소프트웨어를 사용하면 재생 방지 문제를 해결하기 위해 피어에 대한 정보와 IPSec SPI도 인쇄됩니다.그러나 Cisco IOS Classic을 실행하는 ISR G2 플랫폼에 인쇄되는 것과 비교해도 여전히 누락된 한 가지 핵심 정보는 ESP 시퀀스 번호입니다.ESP 시퀀스 번호는 지정된 IPSec 흐름 내에서 IPSec 패킷을 고유하게 식별하는 데 사용됩니다.시퀀스 번호가 없으면 패킷 캡처에서 삭제되는 패킷을 정확하게 식별하기가 어려워집니다.
Cisco IOS-XE Version 3.10(15.3(3)S)에서 데이터 플레인 패킷 포워딩 문제를 해결하기 위해 새로운 패킷 추적 인프라가 도입되었으며, 이 재생 드롭이 ASR에서 관찰되는 이 특정 문제 해결 상황에서 사용할 수 있습니다.
%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
O
삭제된 패킷의 ESP 시퀀스 번호를 식별하려면 패킷 추적 기능을 사용하여 다음 단계를 완료하십시오.
- 피어 디바이스의 트래픽을 매칭하기 위해 플랫폼 조건부 디버깅 필터를 설정합니다.
debug platform condition ipv4 10.2.0.200/32 ingress
debug platform condition start
- 패킷 헤더 정보를 복사하려면 copy 옵션을 사용하여 패킷 추적을 활성화합니다.
debug platform packet enable
debug platform packet-trace packet 64
debug platform packet-trace copy packet input l3 size 100
- 재생 오류가 탐지되면 패킷 추적 버퍼를 사용하여 재생으로 인해 삭제된 패킷을 식별하고 ESP 시퀀스 번호는 복사된 패킷에서 찾을 수 있습니다.
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
이전 출력에서는 패킷 번호 6과 7이 삭제되어 지금 자세히 검사할 수 있음을 보여줍니다.
Router#show platform packet-trace pac 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
ESP 시퀀스 번호에는 이전 출력에서 굵게 기울임꼴로 강조된 IP 헤더에서 시작하는 24의 오프셋이 있습니다.이 특정 예에서 삭제된 패킷의 ESP 시퀀스 번호는 0x6입니다.
솔루션
피어가 식별되면 다음과 같은 세 가지 시나리오가 가능합니다.
- 유효한 패킷입니다. 패킷 캡처는 패킷이 실제로 유효한지, 네트워크 레이턴시 또는 전송 경로 문제로 인해 문제가 중요하지 않은지 또는 보다 심층적인 문제 해결이 필요한지 확인하는 데 도움이 됩니다.예를 들어 캡처는 순차 번호가 X이고 순서가 잘못된 패킷이 표시되고 창 크기가 64로 설정됩니다.X+ 64 패킷이 패킷 X보다 먼저 도착하면 재생 오류(실제 공격 아님)로 인해 삭제됩니다.
이러한 시나리오에서는 이러한 지연이 고려되고 합법적인 패킷이 삭제되는 것을 방지하기 위해 재생 창의 크기를 늘립니다.기본적으로 창 크기는 상당히 작습니다(창 크기 64). 크기를 늘릴 경우 공격 위험을 크게 증가시키지 않습니다.IPsec Anti-Replay 창을 구성하는 방법에 대한 자세한 내용은 How to Configure IPsec Anti-Replay Window:(IPsec Anti-Replay 구성 방법 창:문서 확장 및 사용 안 함
팁:IPSec 프로파일에서 재생 창이 비활성화되거나 변경되고 IPSec 프로파일이 VTI(Virtual Tunnel Interface)에서 터널 보호와 함께 사용되는 경우 보호 프로파일이 제거 및 재적용되거나 터널 인터페이스가 재설정될 때까지 변경 사항이 적용되지 않습니다.IPSec 프로파일은 터널 인터페이스가 활성화될 때(종료되지 않음) 터널 프로파일 맵을 생성하기 위한 템플릿일 뿐이므로 이 동작은 예상됩니다. 인터페이스가 이미 가동되면 프로파일을 변경해도 다시 적용되거나 인터페이스가 재설정될 때까지 터널에 영향을 주지 않습니다.
참고:ASR에서 일반적으로 발생하는 재생 방지 창 크기와 관련하여 문제가 되는 문제는 기존 ASR1K 모델(예: ESP5, ESP10, ESP20, ESP40과 함께 ASR1001)이 실제로 윈도우 크기 1024를 지원하지 않는다는 것입니다.명령을 사용하여 이 제한을 1024로 설정할 수 있지만, 하드웨어에서 창 크기를 512로 재설정합니다.이로 인해 show crypto ipsec sa 명령 출력에 보고된 창 크기가 올바르지 않을 수 있습니다.하드웨어 재전송 방지 창 크기를 확인하려면 show crypto ipsec sa peer ip-address platform 명령을 입력합니다.기본 창 크기는 모든 플랫폼에서 64개의 패킷입니다.자세한 내용은 Cisco 버그 ID CSCso45946. 최신 ASR1K 모델(예: ESP100 및 ESP200이 포함된 ASR1K, ASR1001-X 및 ASR1002-X 및 ISR-4040)을 참조하십시오. 에서는 버전 15.2(2)S 이상에서 1024 패킷의 윈도우 크기를 지원합니다.
- 수신기의 재생 방지 창 외부에 있는 패킷입니다.수신 IPSec 엔드포인트에서 재생된 패킷을 삭제하는 경우(예상대로) 발신자와 수신자의 WAN 측면에 있는 동시 스니퍼 캡처를 통해 발신자의 오작동으로 인한 것인지 또는 전송 네트워크에서 재생된 패킷으로 인한 것인지 추적할 수 있습니다.
- 발신자의 끝에 QoS 컨피그레이션이 있기 때문입니다.이 상황을 해결하려면 신중한 검사와 일부 QoS 튜닝이 필요합니다.이 주제 및 잠재적 솔루션에 대한 자세한 내용은 V3PN(Voice and Video Enabled IPSec VPN) 기사의 Anti-Replay Considerations(재생 방지 고려 사항)를 참조하십시오.
참고:IPSec 변형 집합에서 인증 알고리즘이 활성화된 경우에만 재생 확인 실패가 표시됩니다.이 오류 메시지를 억제할 수 있는 또 다른 방법은 인증을 비활성화하고 암호화만 수행하는 것입니다.그러나 비활성화된 인증의 보안과 관련된 문제로 인해 이러한 기능은 강력히 권장되지 않습니다.
관련 정보