Pregunta ¿El límite de búsqueda de 10 DNS en la especificación de SPF generalmente se aplica?


Según tengo entendido, la especificación de SPF especifica que un receptor de correo electrónico no debería tener que hacer más de 10 búsquedas de DNS para reunir todas las direcciones IP permitidas para un remitente. Así que si un registro SPF tiene include:foo.com include:bar.com include:baz.com y esos tres dominios tienen registros SPF que también tienen 3 include entradas, ahora estamos hasta 3 + 3 + 3 + 3 = 12 búsquedas de DNS.

  1. ¿Es correcto mi entendimiento arriba?

  2. Solo uso 2 o 3 servicios para mi dominio y ya he superado este límite. ¿Es este límite generalmente (o alguna vez) aplicado por los proveedores de correo electrónico principales / secundarios?


24
2018-03-26 17:12


origen


RFC4408 s10.1 dice que "Las implementaciones de SPF DEBEN limitar el número de mecanismos y modificadores que realizan búsquedas de DNS a un máximo de 10 por verificación de SPF", pero esto es una limitación en el número de Mecanismos y modificadores que hacen ... búsquedas., no la cantidad de cheques que hacen. ¿Podrías darnos una idea más clara de cómo crees que tu registro de SPF no cumple con ese límite? - MadHatter
@MadHatter gracias por esa información! He aclarado mi pregunta. - John Bachir
Potencialmente, podría ser incluso más de 12 si los incluidos se refieren a registros CNAME o MX en lugar de solo a direcciones IP. A menos que entienda mal a lo que se refiere @ MadHatter. - Simon East


Respuestas:


Ambos libspf2 (C) y Mail::SPF::Query (perl, usado en sendmail-spf-milter) implementar un límite de 10 Mecanismos que causan DNS, pero este último no (AFAICT) aplica los límites MX o PTR. libspf2 limita cada uno de mx y ptr a 10 también.

Mail::SPF (perl) tiene un límite de 10 mecanismos causantes de DNS y un límite de 10 búsquedas por mecanismo, por MX y por PTR. (Los dos paquetes de Perl se usan comúnmente, aunque no de forma predeterminada, en MIMEDefang.)

pyspf tiene límites de 10 en todas las "búsquedas", MX, PTR, CNAME; pero multiplica explícitamente MAX_LOOKUPS por 4 durante la operación. A menos que en el modo "estricto", también multiplica MAX_MX y MAX_PTR por 4.

No puedo comentar sobre implementaciones comerciales / propietarias, pero lo anterior (excepto pyspf) implementa claramente un límite superior de 10 mecanismos de activación de DNS (más sobre eso más adelante), más o menos, aunque en la mayoría de los casos se puede anular en tiempo de ejecución.

En su caso específico, tiene razón, es 12 incluye y supera el límite de 10. Espero que la mayoría del software SPF devuelva "PermError", sin embargo, las fallas solo afectarán al (los) proveedor (es) final (es) incluido (s) porque el conteo se calculará como un total acumulado: SPF Los mecanismos se evalúan de izquierda a derecha. y las comprobaciones se "anticipan" en una pasada, por lo que depende de dónde se encuentre el servidor de envío en la secuencia.

La forma de evitar esto es usar mecanismos que no activen búsquedas de DNS, por ejemplo, ip4 y ip6, y luego usar mx si es posible, ya que eso le permite obtener hasta 10 nombres más, cada uno de los cuales puede tener más de una IP.

Dado que SPF produce solicitudes DNS arbitrarias con un escalamiento potencialmente exponencial, podría ser fácilmente explotado para ataques de amplificación / DOS. Tiene límites deliberadamente bajos para evitarlo: no se ajusta a la escala deseada.


10 mecanismos (mecanismos estrictamente + el modificador "redirect") causando Sin embargo, las búsquedas de DNS no son exactamente lo mismo que las búsquedas de 10 DNS. Incluso las "búsquedas de DNS" están abiertas a la interpretación, no sabe de antemano cuántas búsquedas discretas se requieren, y no sabe cuántas búsquedas discretas debe realizar su resolutor recursivo (vea a continuación).

RFC 4408 §10.1:

Las implementaciones de SPF DEBEN limitar el número de mecanismos y modificadores      que hacen búsquedas de DNS a un máximo de 10 por cheque SPF, incluyendo cualquier      búsquedas causadas por el uso del mecanismo "incluir" o el      "redirigir" el modificador. Si se excede este número durante un cheque, un      PermError DEBE ser devuelto. El "include", "a", "mx", "ptr", y      Los mecanismos "existentes" y el modificador "redireccionar" sí cuentan.      contra este límite. Los mecanismos "todos", "ip4" e "ip6" no funcionan      requieren búsquedas de DNS y, por lo tanto, no cuentan para este límite.

[...]

Al evaluar los mecanismos "mx" y "ptr", o la macro% {p},      DEBE haber un límite de no más de 10 MX o PTR RR buscados y      comprobado.

Por lo tanto, puede usar hasta 10 mecanismos / modificadores que activan las búsquedas de DNS. (La redacción aquí es deficiente: parece indicar solo el límite superior del límite, una implementación de confirmación podría tener un límite de 2.)

§5.4 para el mx mecanismo, y el §5.5 para el ptr cada mecanismo tiene un límite de 10 búsquedas de ese tipo de nombre, y eso se aplica solo al procesamiento de ese mecanismo, por ejemplo:

Para evitar ataques de Denegación de Servicio (DoS), NO DEBEN buscarse más de 10 nombres de MX durante la      evaluación de un mecanismo "mx" (ver Sección 10).

es decir, puede tener mecanismos de 10 mx, con hasta 10 nombres MX, por lo que cada uno de ellos puede causar 20 operaciones de DNS (10 búsquedas de DNS de MX + 10 A) para un total de 200. Es similar para ptr o %{pag}, puedes buscar hasta 10 ptr Mecanismos, por lo tanto 10x10 PTR, cada PTR también requiere una búsqueda A, de nuevo un total de 200.

Esto es exactamente lo que el Suite de prueba 2009.10 cheques, ver elLímites de Procesamiento"pruebas.

No hay un límite superior claramente establecido en el total Número de operaciones de búsqueda de DNS del cliente por SPF-check, lo calculo como implícitamente 210, más o menos. También hay una sugerencia para limitar el volumen de datos de DNS por comprobación de SPF, aunque no se sugiere ningún límite real. Puede obtener una estimación aproximada ya que los registros de SPF están limitados a 450 bytes (lo que lamentablemente se comparte con todos los demás registros de TXT), pero el total podría exceder los 100 kB si es generoso. Ambos valores están claramente abiertos al abuso potencial como un ataque de amplificación, que es exactamente lo que el §10.1 dice que debe evitar.

La evidencia empírica sugiere una total Los 10 mecanismos de búsqueda se implementan comúnmente en los registros (verifique el SPF para microsoft.com que parece haber hecho todo lo posible para mantenerlo exactamente en 10). Es difícil recopilar pruebas de fallos en demasiadas búsquedas porque el código de error obligatorio es simplemente "PermError", que cubre todo tipo de problemas (DMARC reportando puede ayudar con eso sin embargo).

Las Preguntas Frecuentes de OpenSPF perpetúa el límite de un total de "10 búsquedas de DNS", en lugar de los más precisos "10 mecanismos que causan DNS o redirecciones". Esta FAQ es posiblemente errónea, ya que en realidad dice:

Dado que hay un límite de 10 búsquedas de DNS por registro de SPF, especificando una dirección IP [...]

que está en desacuerdo con el RFC que impone los límites a una operación de "verificación de SPF", no limita las operaciones de búsqueda de DNS de esta manera, e indica claramente un Registro SPF es un único texto de DNS RR. Las preguntas frecuentes implicarían que reinicia el conteo cuando procesa una "inclusión", ya que es un nuevo registro SPF. Que desastre.


Búsquedas de DNS

¿Qué es una "búsqueda de DNS" de todos modos? Como un usuario. Yo consideraría "ping www.microsoft.com"para incluir un solo DNS" búsqueda ": hay un nombre que espero convertir en una IP. ¿Simple? Lamentablemente no.

Como un administrador Sé que www.microsoft.com podría no ser un registro A simple con una única IP, podría ser un CNAME que, a su vez, necesita otra búsqueda discreta para obtener un registro A, aunque es probable que mi resolución ascendente realice en lugar de la resolver en mi escritorio Hoy, para mí, www.microsoft.com es una cadena de 3 CNAME que finalmente terminan como un registro A en akamaiedge.net, que son (al menos) 4 operaciones de consulta de DNS para alguien. SPF puede ver CNAME con el mecanismo "ptr", aunque un registro MX no debería ser un CNAME.

Finalmente, como un Administrador de DNS Sé que responder (casi) cualquier pregunta involucra muchas operaciones de DNS discretas, preguntas individuales y transacciones de respuesta (datagramas UDP). Suponiendo que hay un caché vacío, un resolutor recursivo debe comenzar en la raíz del DNS y abrirse camino hacia abajo: .  → com → microsoft.com → www.microsoft.com solicitar tipos específicos de registros (NS, A, etc.) según sea necesario y tratar con los CNAME. Puedes ver esto en acción con dig +trace www.microsoft.com, aunque probablemente no obtendrá la misma respuesta exacta debido a los trucos de geolocalización (ejemplo aquí). (Hay incluso un poco más en esta complejidad, ya que los SPF se combinan con los registros de TXT y los límites obsoletos de 512 bytes en las respuestas de DNS pueden significar volver a intentar las consultas sobre TCP).

Entonces, ¿qué considera SPF como una búsqueda? Es realmente el más cercano al administrador Desde el punto de vista, debe conocer las características específicas de cada tipo de consulta de DNS (pero no el punto en el que realmente necesita contar los datagramas o conexiones de DNS individuales).


25
2018-03-27 12:07



Esta herramienta le permite saber si tiene más de 10 búsquedas: herramientas.bevhost.com/spf - Gaia
¿Me podría dar la versión ELI5 de su publicación? ¿Dónde debería tener menos de 10 entradas en emailstuff.org/spf ? ¿En la pestaña DNS? En la pestaña 'resultado' solo veo 5 entradas (cada una con una gran cantidad de direcciones IP). - Gaia
Aquí hay dos herramientas SPF más que parecían útiles: dmarcian.com/spf-survey - muestra un mensaje de error rojo brillante si su SPF supera las 10 búsquedas. emailstuff.org/spf - haga clic en la pestaña DNS una vez que obtenga el informe (pero debe contarlos usted mismo). - medmunds
Todavía estoy confundido. ¿Podría dar un ejemplo de cómo una "búsqueda" es diferente a un "mecanismo"? ¿O es la conclusión de que en realidad no importa, que todavía debes mantenerte en 10 búsquedas? - Simon East
@SimonEast agregó una explicación, SPF necesita comprender las implicaciones de cada tipo de registro DNS para que pueda obtener una estimación aproximada del "costo" de DNS, sin contar realmente todos los beans. - mr.spuratic


RFC4408 s10.1 Como ha notado, pone algunos límites a la actividad de DNS. Específicamente:

Las implementaciones de SPF DEBEN limitar el número de mecanismos y modificadores   que hacen búsquedas de DNS a un máximo de 10 por comprobación de SPF, incluidas las búsquedas   causado por el uso del mecanismo "incluir" o el "redireccionamiento"   modificador Si se excede este número durante una verificación, un PermError DEBE   ser devueltos. Los mecanismos de "incluir", "a", "mx", "ptr" y "existe"   así como el modificador de "redireccionamiento" cuenta contra este límite. los   Los mecanismos "todos", "ip4" e "ip6" no requieren búsquedas de DNS y   por lo tanto no cuente contra este límite. El modificador "exp" no lo hace   contar contra este límite porque la búsqueda de DNS para recuperar el   la cadena de explicación se produce después de que se haya evaluado el registro SPF.

y además

Al evaluar los mecanismos "mx" y "ptr", o la macro% {p},   DEBE haber un límite de no más de 10 MX o PTR RR buscados y   comprobado.

Tenga en cuenta que el primero es un límite en el número de mecanismos, no el número de búsquedas realizadas; pero sigue siendo un límite.

Por lo que puedo decir, sí, estos límites se aplican con bastante fuerza. Están diseñados para impedir que las personas construyan registros SPF arbitrariamente complejos y los utilicen para servidores DoS que verifican su registro deteniéndolos en una gran cadena de búsquedas de DNS, por lo que es lo mejor para cualquier persona que implemente un verificador SPF para honrarlos

Tiene razón al notar que es probable que las inclusiones anidadas causen el mayor problema con estos límites, y si decide incluir varios dominios, cada uno de los cuales hace un uso intensivo de las mismas, entonces puede revisarlos rápidamente. No es muy dificil de encontrar Ejemplos de personas para quienes esto ha creado problemas concretos..

El resultado parece ser que los problemas generalmente surgen cuando las personas deciden usar ambos SPF y Varias compañías distintas y dispares para manejar su correo electrónico saliente. De tu pregunta deduzco que encajas en esa categoría. SPF no parece estar diseñado para servir a las personas que eligen hacer esto. Si insiste en hacer esto, es probable que tenga que tener algún tipo de trabajo cron en su servidor DNS que evalúe constantemente todos los registros SPF que hubiera deseado incluir, los expresa como una serie de ip4: y ip6: mecanismos (en el número de los cuales no hay límite), y vuelve a publicar el resultado como su registro SPF.

No olvides terminar con un -all, o todo el ejercicio fue inútil.


11
2018-03-27 07:18



Su herramienta ahora parece estar abajo, @ JánSáreník - Simon East
@SimonEast No hay nada que pueda hacer cuando un moderador elimina una publicación. spf-tools están arriba en github (intenta buscar spf-tools github), Soy uno de los autores, es un software libre destinado a devolverle a la comunidad de la que tomé tanto y me alegraría si ayudara a alguien más. La autopromoción lo llaman. Y no hay espacio para la discusión.
@ JánSáreník Oh, qué raro, ahora MadHatter y mis comentarios no tienen sentido fuera de contexto. Hmm Ah bueno. - Simon East
@SimonEast, perdóneme por borrar esos comentarios. Lo hice y no me di cuenta de que hará que los otros comentarios se vean fuera de contexto.