Este artículo aborda un problema que ocurre en algunos modelos de FortiGate, donde el dispositivo elimina tráfico con el error ‘Anti-Replay Check Fails, Drop’ al modificar una política de firewall. Este problema puede afectar la conectividad y el rendimiento de las redes, por lo que es crucial entender su diagnóstico y solución. A continuación, se presentan detalles sobre el problema, su ámbito, y cómo resolverlo de manera efectiva.
Índice
Descripción del problema
Este artículo describe un problema donde el FortiGate elimina tráfico con el error ‘Anti-Replay Check Fails, Drop’ cuando se modifica una política de firewall. Este problema (con ID de problema 1015616) afecta específicamente a modelos de FortiGate basados en NP7/NP7lite, como el FortiGate-3501F y el FortiGate-90G.
Alcance
La situación afecta las versiones de FortiGate v7.0.15, v7.2.9, v7.2.10, v7.4.3 y v7.4.4.
Diagnóstico paso a paso
Cuando se modifica una política de firewall, todas las sesiones existentes son eliminadas por el FortiGate con el error mencionado anteriormente en la salida de depuración, y tales sesiones son marcadas como ‘sucias’. A continuación, se detallan los registros de la depuración en escenarios que funcionan y no funcionan.
Depuraciones de escenario que funcionan:
id=65308 trace_id=1629 func=print_pkt_detail line=5862 msg="vd-root:0 received a packet(proto=6, 172.16.192.130:1521->172.16.192.69:51286) tun_id=0.0.0.0 from 630_database. flag [.], seq 383407350, ack 579585442, win 505"
id=65308 trace_id=1629 func=resolve_ip_tuple_fast line=5950 msg="Find an existing session, id-23735c01, reply direction"
id=65308 trace_id=1629 func=npu_handle_session44 line=1333 msg="Trying to offloading session from 630_database to 601-psoft-app, skb.npu_flag=00000400 ses.state=00010204 ses.npu_state=0x00000400"
id=65308 trace_id=1629 func=ip_session_install_npu_session line=381 msg="npu session installation succeeded"
id=65308 trace_id=1629 func=fw_forward_dirty_handler line=439 msg="state=00010204, state2=00000001, npu_state=00000c00"Lista de sesiones de escenario que funcionan:
session info: proto=6 proto_state=01 duration=17 expire=3596 timeout=3600 flags=00000000 socktype=0 sockport=0 av_idx=0 use=3
origin-shaper=
reply-shaper=
per_ip_shaper=
class_id=0 ha_id=0 policy_dir=0 tunnel=/ vlan_cos=0/255
state=log may_dirty npu f00 log-start
statistic(bytes/packets/allow_err): org=28111/81/1 reply=58770/94/1 tuples=2
tx speed(Bps/kbps): 0/0 rx speed(Bps/kbps): 0/0
orgin->sink: org pre->post, reply pre->post dev=74->75/75->74 gwy=0.0.0.0/0.0.0.0
hook=pre dir=org act=noop 172.16.192.69:51286->172.16.192.130:1521(0.0.0.0:0)
hook=post dir=reply act=noop 172.16.192.130:1521->172.16.192.69:51286(0.0.0.0:0)
dst_mac=56:6c:42:5a:00:03
npu_state=0x000c00
npu info: flag=0x81/0x81, offload=9/9, ips_offload=0/0, epid=179/179, ipid=179/179, vlan=0x0259/0x0276Depuraciones de escenario que no funcionan:
id=65308 trace_id=1895 func=print_pkt_detail line=5862 msg="vd-root:0 received a packet(proto=6, 172.16.192.69:51286->172.16.192.130:1521) tun_id=0.0.0.0 from 601-psoft-app. flag [.], seq 580634445, ack 385974823, win 6146"
id=65308 trace_id=1895 func=resolve_ip_tuple_fast line=5950 msg="Find an existing session, id-23735c01, original direction"
id=65308 trace_id=1895 func=tcp_anti_reply line=1042 msg="replay packet(seq_check), suspicious"
id=65308 trace_id=1895 func=ip_session_core_in line=6601 msg="anti-replay check fails, drop"Lista de sesiones de escenario que no funcionan:
session info: proto=6 proto_state=01 duration=124 expire=3589 timeout=3600 flags=00000000 socktype=0 sockport=0 av_idx=0 use=3
state=log dirty may_dirty npu f00 log-start
statistic(bytes/packets/allow_err): org=1325445/5302/1 reply=2877945/5967/1 tuples=2
tx speed(Bps/kbps): 12773/102 rx speed(Bps/kbps): 29198/233
no_ofld_reason:Solución recomendada
El problema #1015616 ha sido resuelto en las siguientes versiones de FortiOS:
- v7.2.11 (Notas de la versión 7.2.11 – Problemas resueltos).
- v7.4.5 (Notas de la versión 7.4.5 – Problemas resueltos).
- v7.6.0 (Notas de la versión 7.6.0 – Problemas resueltos).
Solución alternativa:
- Deshabilitar la función anti-replay a nivel global o en la política de firewall.
Deshabilitar la opción anti-replay a nivel global:
config system global
set anti-replay disable
endDeshabilitar la opción anti-replay en la política de firewall:
config firewall policy
edit <id>
set anti-replay disable
next
endNotas adicionales
Cuando la opción global anti-replay está deshabilitada, el FortiGate no verifica las banderas TCP en los paquetes.
Registros requeridos por TAC de FortiGate para una mayor investigación:
- Depuraciones:
diagnose sys session list
diagnose debug flow filter addr <IP>
diagnose debug console timestamp enable
diagnose debug flow show function-name enable
diagnose debug flow show iprope enable
diagnose debug flow trace start 1000000000
diagnose debug enable
<reproduce el problema modificando la política de firewall>
diagnose debug reset
diagnose sys session list- Informe TAC:
execute tac report- Archivo de configuración del FortiGate.
¿Te ha resultado útil??
0 / 0

Hola, somos Mila Jiménez y César Sánchez. Dos apasionados de la ciberseguridad con muchos años de experiencia. Hemos trabajado en muchas empresas del mundo TI y ahora nos apetece compartir nuestro conocimiento con cualquiera que lo necesite.
¡Si te gusta nuestro contenido puedes invitarnos a un café AQUÍ!