Desbloquear Redsys en Cloudflare

Desbloquear Redsys en Cloudflare

Cloudflare cada vez nos está ofreciendo más funcionalidades dirigidas especialmente a WordPress, ya sea APO (Automatic Platform Optimization for WordPress), los DNS más rápidos o el interesantísimo vídeo bajo demanda (Cloudflare Stream) a un estupendo precio (en breve lo probaré para un proyecto, en lugar de Vimeo).

Cloudflare DNS Performance

Pero si tenemos activado Cloudflare como proxy CDN para aprovechar más bondades que las de sus rapidísimos DNS; entre otras funcionalidades, tenemos la de Firewall, dónde por ejemplo podemos crear una interesante regla para bloquear los intentos de acceso a xmlrpc.php antes de que lleguen a nuestro servidor, que como podemos ver, son muchos cada día.

Bloquear peticiones XML-RPC
Regla Cloudflare bloquear peticiones XML-RPC

Además de muchas otras funcionalidades de reglas de página, bloqueos por países, cuando estamos bajo ataque, etc., pero el motivo de este artículo es otro, ya que detallar las funcionalidades de Cloudflare daría para un curso completo.

El caso es que cuando habilitamos Cloudflare en nuestra web con WooCommerce, en la que además utilizamos el método de Pago de Redsys (utilizad el excelente plugin de Conti), no recibimos las notificaciones de pedido pagado.

Aquí también podríamos entrar en multitud de configuraciones, como tener el SSL en Cloudflare en «Completo (estricto)», pero vamos a ver el principal bloqueo que se produce desde el Firewall de Cloudflare y la manera más fácil y rápida de corregirla.

Si vamos a Firewall -> Información general, veremos la ventana Eventos de firewall donde podremos ver el bloqueo de la petición de Redsys. Pero si hay cientos de registros será difícil de localizar, por lo que le daremos al botón de Agregar filtro, en el que seleccionaremos ASN -> es igual a -> 31627 (aquí está el quiz de la cuestión):

Filtrar peticiones Redsys en Firewall Cloudflare

Y en los resultados filtrados, deberíamos ver la petición bloqueada de Redsys, que al desplegar su contenido nos dará la pista para evitar futuros bloqueos:

Petición Redsys bloqueda por el firewall de Cloudflare

Como podemos ver en la acción realizada, se ha bloqueado dicha petición, por lo que no ha llegado a nuestro servidor y WooCommerce no se ha podido enterar que el pago se ha realizado correctamente.

Vemos que el agente de usuario es Java/1.7.0, cuidado con bloquear este agente de usuario en .htaccess, algo que he visto en varios hostings para evitar visitas de algunos robots, pero también estaremos bloqueando la petición de Redsys.

Este agente de usuario a priori es sospechoso para el Firewall de Cloudflare y como vemos en el siguiente recuadro marcado, en Servicio, no pasa la «Comprobación de integridad del navegador» por lo que se ha bloqueado la petición.

Pero aún tenemos un datos más y es el Autonomous System Number o ASN «AS31627 SERMEPA-ES-AS», que si realizamos una consulta https://dnschecker.org/asn-whois-lookup.php?query=31627 veremos que perteneces a Redsys, o más concretamente a la organización «Servicios Para Medios De Pago S.A.» (extinguida, antes www.sermepa.es y ahora Redsys).

Bien, pues ya finalizamos, ¿no?, bueno, aunque a estas alturas ya es muy evidente, vamos a ver la regla.

Hacemos clic en Firewall -> Reglas de firewall -> botón «Crear una regla de firewall».

Crear regla de firewall en Cloudflare

Y en la nueva regla le damos el nombre identificativo que queramos (yo aquí he utilizado «AS31627 Redsys»).

En el apartado «Cuando las solicitudes entrantes coinciden…» en «Campo» seleccionamos «AS Num», en «Operador» seleccionamos «es igual a» y por último en «Valor» escribimos el número de ASN que es «31627».

Después, en «Seleccione una acción» escogemos «Omitir» y en «Elija una función» «Comprobación de integridad del navegador».

Crear regla para ignorar comprobación Redsys en Cloudflare

Con la creación de esta regla, lo que hacemos es comprobar que si el ASN de la petición es el 31627, entonces omitimos la comprobación de integridad del navegador.

Ahora deberemos volver a realizar otro pago de prueba y ver que efectivamente, deberíamos recibir la confirmación del pago y que no se ha bloqueado dicha petición desde Cloudflare.

Evidentemente si el ASN de Redsys cambiase, deberíamos actualizar la regla, pero no es algo que suela cambiar con frecuencia (este ASN se ha creado en el año 2004). También podríamos identificar la petición por IP (pero es más fácil que varíe), por alguna cadena de la ruta (como la de notificacion-redsys en el ejemplo), pero identificar la petición por el ASN es rápido y fiable.

Otra opción sería ir a Firewall -> Configuración y desactivar «Comprobación de integridad del navegador», pero lo estaríamos desactivando para todas las peticiones y es mucho más adecuado realizar esta desactivación selectiva sólo en el caso que nos ocupa de Redsys.

Comprobación de integridad del navegador en Cloudflare

8 comentarios en «Desbloquear Redsys en Cloudflare»

  1. Muchas gracias por el artículo Carlos.
    He llegado aquí, buscando información para solucionar los problemas que estábamos teniendo con pagos a través de Bizum y no se me había ocurrido de cloudflare estuviese bloqueando a redsys. ( soy muy novato).
    Gracias de nuevo y ya tienes otro parroquiano más en la taberna.

    David

    Responder

Deja un comentario