Зазвичай застосовується межа 10-DNS-пошуку у специфікації SPF?


24

Я розумію, що специфікація SPF визначає, що одержувач електронної пошти не повинен робити більше 10 пошукових записів DNS, щоб зібрати всі дозволені IP-адреси для відправника. Отже, якщо запис SPF має, include:foo.com include:bar.com include:baz.comі в цих трьох доменах є записи SPF, які також мають 3 includeзаписи, тепер ми маємо до 3 + 3 + 3 + 3 = 12 DNS-пошуку.

  1. моє розуміння вище правильне?

  2. Я використовую лише 2 або 3 послуги для свого домену, і я вже подолав цю межу. Це обмеження зазвичай (або коли-небудь) застосовується основними / незначними постачальниками електронної пошти?


3
RFC4408 s10.1 говорить, що " реалізація SPF ОБОВ'ЯЗКОВО обмежує кількість механізмів і модифікаторів, які здійснюють пошук DNS не більше ніж 10 на перевірку SPF ", але це обмеження на кількість механізмів і модифікаторів, які роблять ... пошук , не кількість перевірок, які вони роблять. Чи можете ви дати нам більш чітке уявлення про те, як ви вважаєте, що ваш запис SPF падає від цієї межі?
MadHatter підтримує Моніку

@MadHatter дякую за цю інформацію! я уточнив своє запитання.
Джон Бачір

Можливо, це може бути навіть більше 12, якщо включення стосуються записів CNAME або MX, а не лише IP-адреси. Якщо я неправильно розумію, на що посилається @ MadHatter.
Саймон Іст

Відповіді:


29

І libspf2(C), і Mail::SPF::Query(perl, використовувані в sendmail-spf-milter ) реалізують ліміт 10 механізмів , що викликають DNS , але останній не застосовує (AFAICT) межі MX або PTR. libspf2також обмежує кожен з mx та ptr до 10.

Mail::SPF(perl) має обмеження 10 механізмів, що викликають DNS, і обмеження 10 підходів на механізм, на MX та на PTR. (Два пакети perl зазвичай використовуються в MIMEDefang , хоча вони не за замовчуванням .)

pyspfмає обмеження 10 на всіх: "пошуку", MX, PTR, CNAME; але він явно множує MAX_LOOKUPS на 4 під час роботи. Якщо в режимі "суворий" режим, він також множить MAX_MX та MAX_PTR на 4.

Я не можу коментувати комерційні / власні реалізації, але вище (за винятком pyspf) чітко реалізується верхня межа 10 механізмів, що викликають DNS (детальніше про це нижче), давати або приймати, хоча в більшості випадків це можна змінити під час запуску- час.

У вашому конкретному випадку ви правильні, це 12 включає, і це перевищує ліміт 10. Я очікував би, що більшість програмного забезпечення SPF поверне "PermError", однак , помилки вплинуть лише на остаточного постачальника (включених), оскільки кількість буде обчислюватися як поточний загальний результат: механізми SPF оцінюються зліва направо, і перевірки будуть "достроково" на пропуску, тому це залежить від того, де в послідовності відображається сервер, що відправляє.

Шляхом цього є використання механізмів, які не викликають пошук DNS, наприклад, ip4і ip6, а потім використовувати, mxякщо це можливо, ви отримуєте до 10 подальших імен, кожне з яких може мати більше одного IP-адреси.

Оскільки SPF призводить до довільних запитів DNS з потенційно експоненціальним масштабуванням, його можна легко використовувати для атак DOS / посилення. У нього свідомо низькі межі, щоб запобігти цьому: він не масштабує так, як вам хочеться.


10 механізмів (строго механізми + модифікатор переспрямування), що викликають пошук DNS, не зовсім те саме, що 10 пошукових запитів DNS. Навіть "пошук DNS" відкритий для інтерпретації, ви не знаєте заздалегідь, скільки дискретних пошукових запитів потрібно, і ви не знаєте, скільки дискретних пошуків може знадобитися виконувати рекурсивний роздільник (див. Нижче).

RFC 4408 §10.1 :

Реалізації SPF ОБОВ'ЯЗКОВО обмежують кількість механізмів і модифікаторів, які здійснюють пошук DNS не більше ніж 10 за кожну перевірку SPF, включаючи будь-які пошуки, спричинені використанням механізму "включати" або модифікатора "перенаправлення". Якщо це число перевищено під час перевірки, ПЕРЕМОГА ПОВИННА повернутись. Механізми "включати", "a", "mx", "ptr" і "існує", а також модифікатор "перенаправлення" зараховуються до цієї межі. Механізми "всі", "ip4" та "ip6" не вимагають пошуку DNS і тому не враховуються до цієї межі.

[...]

Оцінюючи механізми "mx" і "ptr", або макрос% {p}, ОБОВ'ЯЗКОВО слід встановити обмеження не більше 10 MX або PTR RR, яке було перевірено та перевірено.

Таким чином, ви можете використовувати до 10 механізмів / модифікаторів, які викликають пошук DNS. (Формулювання тут бідне: воно, мабуть, зазначає лише верхню межу межі; підтверджуюча реалізація може мати межу 2).

§5.4 для механізму mx та §5.5 для механізму ptr мають обмеження в 10 пошукових запитів такої назви, і це стосується лише обробки цього механізму, наприклад:

Для запобігання атак на відмову в сервісі (DoS) під час оцінки механізму "mx" НЕ ПОВИННІ шукати більше 10 імен MX (див. Розділ 10).

тобто у вас може бути 10 mx механізмів, до 10 імен MX, тому кожен з них може спричинити 20 DNS-операцій (10 MX + 10 A DNS-пошуку в кожному) на загальну 200. Це схоже на ptr або % {p} , ви можна шукати 10 ptr механізмів, отже, 10x10 PTR, кожен PTR також потребує пошуку A, знову ж, 200.

Саме це перевіряє тестовий набір 2009.10 , див . Тести " Обмеження обробки ".

Немає чітко зазначеної верхньої межі щодо загальної кількості операцій пошуку DNS клієнта за перевірку SPF, я обчислюю це як неявно 210, даю чи беру. Також є пропозиція обмежити об'єм даних DNS за перевірку SPF, проте фактична межа не пропонується. Ви можете отримати приблизну оцінку, оскільки записи SPF обмежені 450 байтами (що, на жаль, ділиться з усіма іншими записами TXT), але загальна сума може перевищити 100 КБ, якщо ви щедрі. Обидві ці цінності явно відкриті для потенційного зловживання як нападу посилення, саме тому §10.1 говорить, що потрібно уникати.

Емпіричні дані свідчать про те, що загалом у документах реалізується 10 механізмів пошуку (перегляньте SPF для microsoft.com, який, схоже, досяг певного рівня, щоб утримати його точно до 10). Важко зібрати докази відмови занадто багато-пошукових запитів, оскільки доручений код помилки просто "PermError", який охоплює всілякі проблеми ( DMARC звітність може допомогти у цьому).

Поширені питання OpenSPF продовжує обмеження загальної кількості "10 пошукових запитів DNS", а не більш точних "10 DNS, що викликають механізми або переадресації". Цей FAQ може бути помилковим, оскільки він фактично говорить:

Оскільки існує обмеження 10 пошукових запитів DNS на запис SPF із зазначенням IP-адреси [...]

яка не згідна з RFC, яка накладає обмеження на операцію "перевірка SPF", не обмежує таким чином операції пошуку DNS, і чітко заявляє, що запис SPF є єдиним текстом RR DNS. Поширені питання означають, що ви перезавантажуєте кількість під час обробки "включати", оскільки це новий запис SPF. Який безлад.


Пошук DNS

Що таке "пошук DNS" у будь-якому випадку? Як користувач . Я вважаю, що " ping www.microsoft.com" буде задіяно один "пошук" DNS: є одне ім'я, яке я очікую перетворити в один IP. Простий? На жаль, ні.

Як адміністратор, я знаю, що www.microsoft.com може бути не простою записом з єдиним IP-адресою; це може бути CNAME, який, у свою чергу, потребує іншого дискретного пошуку, щоб отримати запис A, хоч і такий, який, ймовірно, виконає мій розв'язник за течією а не роздільник на моєму робочому столі. Сьогодні для мене www.microsoft.com - це ланцюжок із 3-х CNAME, які нарешті є записом на akamaiedge.net, це (принаймні) 4 операції запиту DNS для когось. SPF може бачити CNAME з механізмом "ptr", запис MX не повинен бути CNAME.

Нарешті, як адміністратор DNS я знаю, що відповідь (майже) на будь-яке запитання включає багато дискретних операцій DNS, окремих питань та транзакцій відповідей (дейтаграми UDP) - припускаючи порожній кеш, рекурсивний вирішальник повинен запускатися в корені DNS і працювати на своєму шляху вниз: .commicrosoft.comwww.microsoft.comзапит на конкретні типи записів (NS, A тощо), як це потрібно, та спілкування з CNAME. Ви можете бачити це в дії dig +trace www.microsoft.com, хоча ви, мабуть, не отримаєте точно таку ж відповідь через хитрість геолокації (приклад тут ). (Існує навіть трохи більше цієї складності, оскільки копіювання файлів SPF в TXT-записах, а застарілі межі 512 байт на відповіді DNS можуть означати повторний пошук запитів через TCP.)

Отже, що SPF розглядає як пошук? Це дійсно найближче до точки зору адміністратора , воно повинно знати про особливості кожного типу запитів DNS (але не до того, коли йому насправді потрібно рахувати окремі дейтаграми або з'єднання DNS).


Цей інструмент дозволяє дізнатися, чи є у вас більше 10 пошукових запитів
Gaia

Ви б, будь ласка, дали мені версію свого повідомлення ELI5? Де я повинен мати менше 10 записів на emailstuff.org/spf ? На вкладці DNS? На вкладці "результат" я бачу лише 5 записів (у кожному з великою кількістю IP-адрес.
Gaia,

2
Ось ще два інструменти SPF, які здалися корисними: dmarcian.com/spf-survey - показує яскраво-червоне повідомлення про помилку, якщо показник SPF перевищує 10 пошукових запитів. emailstuff.org/spf - натисніть на вкладку DNS, як тільки ви отримаєте звіт (але вам доведеться рахувати їх самостійно).
medmunds

Я все ще розгублений. Чи можете ви навести приклад того, як "пошук" відрізняється від "механізму"? Або робиться висновок, що це насправді не має значення - що ви все одно повинні тримати в межах 10 пошукових запитів?
Simon Simon East

1
@SimonEast додав пояснення, SPF повинен розуміти наслідки кожного типу записів DNS, щоб він міг отримати грубу оцінку на "вартість" DNS, не рахуючи насправді всіх бобів.
mr.spuratic

11

RFC4408 s10.1 , як ви вже зазначали, ставить деякі обмеження щодо активності DNS. Конкретно:

Реалізації SPF ОБОВ'ЯЗКОВО обмежують кількість механізмів і модифікаторів, які здійснюють пошук DNS не більше ніж 10 за кожну перевірку SPF, включаючи будь-які пошуки, спричинені використанням механізму "включати" або модифікатора "перенаправлення". Якщо це число перевищено під час перевірки, ПЕРЕМОГА ПОВИННА повернутись. Механізми "включати", "a", "mx", "ptr" і "існує", а також модифікатор "перенаправлення" зараховуються до цієї межі. Механізми "всі", "ip4" та "ip6" не вимагають пошуку DNS і тому не враховуються до цієї межі. Модифікатор "exp" не рахується з цією межею, оскільки пошук DNS для отримання рядка пояснення відбувається після оцінки запису SPF.

і більше того

Оцінюючи механізми "mx" і "ptr", або макрос% {p}, ОБОВ'ЯЗКОВО слід встановити обмеження не більше 10 MX або PTR RR, яке було перевірено та перевірено.

Зауважте, що перший - це обмеження кількості механізмів , а не кількість виконуваних пошукових запитів; але це все-таки межа.

Наскільки я можу сказати, так, ці межі виконуються досить важко. Вони розроблені для того, щоб люди не могли створювати довільно складні SPF-записи та використовувати їх на серверах DoS, які перевіряють їхній запис, зупиняючи їх на величезній ланцюжку пошуку DNS, тому це в інтересах усіх, хто впроваджує перевірку SPF. шанувати їх.

Ви маєте рацію зауважити, що вкладені включення, можливо, спричинить найбільшу проблему з цими обмеженнями, і якщо ви вирішите включити кілька доменів, кожен з яких використовує великі можливості включає себе, ви можете досить швидко їх перейти. Не надто важко знайти приклади людей, для яких це створило конкретні проблеми .

Підсумок, здається, полягає в тому, що проблеми, як правило, виникають, коли люди вирішують використовувати як SPF, так і декілька відокремлених та розрізнених компаній для обробки своєї вихідної пошти. З вашого запитання я випливаю, що ви вписуєтесь у цю категорію. Здається, SPF не призначений для того, щоб обслуговувати людей, які вирішили це зробити . Якщо ви наполягаєте на цьому, вам, ймовірно, доведеться мати якесь завдання cron на своєму сервері DNS, яке постійно оцінює всі записи SPF, які ви хотіли б включити, виражає їх як ряд ip4:та ip6:механізми (за кількістю яких немає обмеження) і публікує результат як ваш запис SPF.

Не забудьте закінчити з -all, або ціла вправа була безглуздою.


Ваш інструмент тепер, здається, не працює, @ JánSáreník
Simon East

@SimonEast Я нічого не можу зробити, коли модератор видаляє повідомлення. spf-інструменти працюють на github (спробуйте знайти spf-tools github), я один з авторів, це безкоштовне програмне забезпечення, яке покликане повернути спільноту, від якої я так багато взяла, і буду рада, якщо вона допоможе комусь іншому. Саморекламу вони це називають. І немає місця для дискусій.

@ JánSáreník О, як це дивно, зараз MadHatter та мої коментарі не мають сенсу поза контекстом. Хм. Ну добре.
Simon Simon East

@SimonEast, вибачте мене за видалення цих коментарів. Я це зробив і не усвідомлював, що змусить інші коментарі виглядати поза контекстом.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.