SPF 사양에서 10-DNS 조회 제한이 일반적으로 적용됩니까?


24

SPF 사양은 전자 메일 수신자가 발신자에게 허용 된 모든 IP를 수집하기 위해 10 개 이상의 DNS 조회를 수행하지 않아야한다고 지정합니다. 따라서 SPF 레코드가 있고이 include:foo.com include:bar.com include:baz.com3 개의 도메인에 각각 3 개의 include항목 이있는 SPF 레코드가있는 경우 이제 최대 3 + 3 + 3 + 3 = 12 DNS 조회입니다.

  1. 내 이해가 정확합니까?

  2. 도메인에 2 개 또는 3 개의 서비스 만 사용하고 있으며 이미이 한도를 넘었습니다. 이 제한이 일반적으로 주요 전자 메일 공급자 나 소규모 전자 메일 공급자에 의해 시행됩니까?


3
RFC4408 S10.1는 "고 말했다 SPF 구현은 SPF 검사 당 최대 10 DNS 조회를 수행 메커니즘과 수정의 수를 제한해야 "하지만이 수에 대한 제한 사항입니다 메커니즘과 어떻게 수정 ... 조회 하지 그들이하는 수의 수. SPF 기록이 그 한계에 어긋나고 있다고 어떻게 생각하는지 더 명확하게 알려 주시겠습니까?
MadHatter는 Monica

@MadHatter 그 정보에 감사드립니다! 내 질문을 명확하게했습니다.
John Bachir

포함이 IP 주소가 아닌 CNAME 또는 MX 레코드를 참조하는 경우 잠재적으로 12 이상일 수 있습니다. @MadHatter가 말하는 것을 오해하지 않는 한.
Simon East

답변:


29

모두 libspf2(C)와 Mail::SPF::Query(에 사용되는 펄, 센드 메일-SPF-산란기의 물고기 수컷은 ) 10의 제한 구현 DNS 유발하는 메커니즘을 하지만, 후자는하지 않습니다 (AFAICT)의 MX 또는 PTR 제한을 적용합니다. mxptr도libspf2 각각 10으로 제한합니다 .

Mail::SPF(perl)은 DNS를 유발하는 메커니즘 10 개, 메커니즘 당, MX 당 및 PTR 당 10 개로 제한됩니다. (2 개의 perl 패키지는 일반적으로 MIMEDefang 에서 기본적으로 사용되지는 않지만 일반적으로 사용됩니다 .)

pyspf"검색", MX, PTR, CNAME 모두에 대해 10 개의 제한이 있습니다. 그러나 작동 중에 MAX_LOOKUPS에 4를 명시 적으로 곱합니다. "엄격한"모드가 아닌 한 MAX_MX와 MAX_PTR을 4로 곱합니다.

상업 / 독점 구현에 대해서는 언급 할 수 없지만 위의 (제외 pyspf)는 10 개의 DNS 트리거 메커니즘 (아래에서 더 자세히 설명)의 상한을 명확하게 구현하거나 제공하거나 취해야하지만 대부분의 경우 실행시 재정의 될 수 있습니다. 시각.

귀하의 특정 경우에 귀하는 12 포함이며 한계는 10을 초과합니다. 대부분의 SPF 소프트웨어가 "PermError"를 반환 할 것으로 예상 하지만 , 실패는 최종 "포함 된"제공자에게만 영향을 미칩니다. SPF 메커니즘은 왼쪽에서 오른쪽으로 평가 되며 통과시 "초기"검사되므로 전송 서버가 나타나는 순서에 따라 달라집니다.

이 문제를 해결하는 방법은 DNS 조회를 트리거하지 않는 메커니즘 (예 : ip4ip6)을 사용 mx하고 가능한 경우 최대 10 개의 추가 이름을 얻을 수있는 방식을 사용하는 것입니다. 각 이름에는 둘 이상의 IP가있을 수 있습니다.

SPF는 잠재적으로 지수 확장이 가능한 임의의 DNS 요청을 생성하므로 DOS / 증폭 공격에 쉽게 악용 될 수 있습니다. 이를 방지하기 위해 의도적으로 낮은 제한이 있습니다. 원하는 방식으로 확장되지 않습니다.


DNS 조회를 일으키는 10 가지 메커니즘 (엄격한 메커니즘 + "리디렉션"수정 자) 은 10 개의 DNS 조회와 정확히 동일하지 않습니다. "DNS 조회"도 해석에 개방적이며, 얼마나 많은 이산 조회가 필요한지 미리 알지 못하며, 재귀 적 리졸버가 수행해야하는 이산 조회가 몇 개인 지 알 수 없습니다 (아래 참조).

RFC 4408 §10.1 :

SPF 구현은 "include"메커니즘 또는 "redirect"수정 자의 사용으로 인한 조회를 포함하여 DNS 조회를 수행하는 메커니즘 및 수정 자의 수를 SPF 확인 당 최대 10 개로 제한해야합니다. 점검 중에이 숫자를 초과하면 PermError가 리턴되어야합니다. "리디렉션"수정 자뿐만 아니라 "include", "a", "mx", "ptr"및 "exists"메커니즘도이 제한에 포함됩니다. "all", "ip4"및 "ip6"메커니즘에는 DNS 조회가 필요하지 않으므로이 제한에 포함되지 않습니다.

[...]

"mx"및 "ptr"메커니즘 또는 % {p} 매크로를 평가할 때는 최대 10 개의 MX 또는 PTR RR을 조회하고 확인해야합니다.

따라서 DNS 조회를 트리거하는 최대 10 개의 메커니즘 / 수정자를 사용할 수 있습니다. (여기서 표현이 잘못되었습니다. 한도의 상한 만 나타내는 것 같습니다. 확인 구현은 한도를 2로 할 수 있습니다.)

§5.4위한 MX의 기구 및 §5.5 PTR의 기구는 각각의 이름이 10 가지의 조회 한계가 있고, 이는 그 메커니즘 만, 예를 들면 처리에 적용

DoS (서비스 거부) 공격을 방지하려면 "mx"메커니즘을 평가하는 동안 10 개가 넘는 MX 이름을 조회해서는 안됩니다 (섹션 10 참조).

즉, 최대 10 개의 MX 이름을 가진 10 개의 mx 메커니즘을 가질 수 있으므로 각각의 총 200 개의 DNS 작업이 20 개의 DNS 작업 (각각 10 MX + 10 개의 DNS 조회)을 유발할 수 있습니다. ptr 또는 % {p} 와 유사 합니다. 10 개의 ptr 메커니즘, 따라서 10x10 PTR을 조회 할 수 있으며 , 각 PTR에는 A 조회, 다시 총 200이 필요합니다.

이것이 바로 2009.10 테스트 스위트가 확인하는 내용입니다. " 프로세스 제한 "테스트를 참조하십시오 .

SPF 검사 당 클라이언트 DNS 조회 작업 수 에 대한 명확한 상한은 없으며 암시 적으로 210,주고 받음으로 계산합니다. SPF 검사 당 DNS 데이터의 양을 제한하는 제안도 있지만 실제 제한은 제안되지 않습니다. SPF 레코드가 450 바이트 (다른 ​​모든 TXT 레코드와 슬프게 공유 됨)로 제한되어 있기 때문에 대략적인 추정치를 얻을 수 있지만 관대하다면 총 100kiB를 초과 할 수 있습니다. 이 두 값은 모두 증폭 공격으로서 잠재적 남용에 대해 분명하게 개방되어 있습니다. 이는 정확히 §10.1에서 피해야한다고 말합니다.

경험적 증거에 따르면 10 개의 조회 메커니즘이 일반적으로 레코드에 구현되어 있음을 나타냅니다 (정확히 10으로 유지하기 위해 일정 시간이 지난 것으로 보이는 microsoft.com의 SPF 참조). 위임 된 오류 코드는 단순히 "PermError"이므로 모든 방식의 문제를 처리하기 때문에 너무 많은 조회 실패의 증거를 수집하기가 어렵습니다 ( DMARC 보고가 도움이 될 수 있음).

OpenSPF FAQ 는보다 정확한 "10 DNS로 인한 메커니즘 또는 리디렉션"보다는 총 "10 DNS 조회" 의 제한유지합니다 . 이 FAQ는 실제로 다음과 같이 명시되어 있기 때문에 잘못되었습니다.

SPF 레코드 당 10 개의 DNS 조회가 제한되어 있으므로 IP 주소를 지정하면 [...]

"SPF 확인"작업에 제한을 부과하는 RFC와 의견이 일치하지 않으며, 이러한 방식으로 DNS 조회 작업을 제한하지 않으며 SPF 레코드 가 단일 DNS 텍스트 RR임을 명확하게 명시합니다 . FAQ는 새 SPF 레코드 인 "포함"을 처리 할 때 카운트를 다시 시작 함을 의미합니다. 엉망이야


DNS 조회

어쨌든 "DNS 조회"란 무엇입니까? 사용자 로서 . " ping www.microsoft.com"은 단일 DNS "조회"를 포함하는 것으로 간주 합니다. 하나의 IP로 전환 할 것으로 예상되는 이름이 하나 있습니다. 단순한? 안타깝게도

관리자 로서 나는 www.microsoft.com이 단일 IP를 가진 단순한 A 레코드가 아닐 수도 있다는 것을 알고 있습니다. CNAME 일 수도 있습니다. A 레코드를 얻으려면 다른 개별 조회가 필요합니다. 내 바탕 화면의 리졸버보다는. 현재 www.microsoft.com은 3 개의 CNAME 체인으로, akamaiedge.net에서 A 레코드로 끝납니다. 이는 적어도 누군가를위한 4 개의 DNS 쿼리 작업입니다. SPF는 "ptr"메커니즘을 사용하는 CNAME을 볼 수 있지만 MX 레코드는 CNAME이 아니어야합니다.

마지막으로, DNS 관리자 로서 거의 모든 질문에 답하기 위해서는 많은 개별 DNS 작업, 개별 질문 및 답변 트랜잭션 (UDP 데이터 그램)이 포함됩니다. 빈 캐시를 가정 할 때 재귀 해결 프로그램은 DNS 루트에서 시작하여 그 방식대로 작업해야합니다. 아래로 : .commicrosoft.comwww.microsoft.com특정 유형의 레코드 (NS, A 등)를 요구하고 CNAME을 처리합니다. dig +trace www.microsoft.com지리적 위치 정보 (예 : here ) 로 인해 정확히 동일한 답변을 얻지 못할 수도 있지만 이 기능을 사용하여 볼 수 있습니다 . TXT 레코드에 대한 SPF 피기 백과 DNS 응답에 사용되지 않는 512 바이트 제한이 TCP를 통해 쿼리를 다시 시도한다는 의미이므로이 복잡성에는 약간의 차이가 있습니다.

SPF는 조회로 무엇을 고려합니까? 실제로 관리자의 관점에 가장 가까우 므로 각 유형의 DNS 쿼리에 대한 세부 사항을 알고 있어야합니다 (단, 개별 DNS 데이터 그램 또는 연결을 실제로 계산해야하는 시점은 아님).


이 도구를 사용하면 10 개 이상의 조회가 있는지 알 수 있습니다. tools.bevhost.com/spf
Gaia

게시물의 ELI5 버전을 알려주시겠습니까? emailstuff.org/spf 에서 10 개 미만의 항목을 어디에 두어야 합니까? DNS 탭에서? '결과'탭에는 5 개의 항목 만 표시됩니다 (각 IP가 많음)
Gaia

2
다음은 유용한 두 가지 SPF 도구입니다. dmarcian.com/spf-survey-SPF 가 10 개 조회를 초과하면 밝은 빨간색 오류 메시지가 표시됩니다. emailstuff.org/spf-보고서를 받으면 DNS 탭을 클릭하십시오 (그러나 직접 계산해야합니다).
medmunds

여전히 혼란 스러워요. "조회"가 "메커니즘"과 어떻게 다른지에 대한 예를 제공 할 수 있습니까? 아니면 실제로 중요하지 않다는 결론입니다. 여전히 10 번의 조회를 유지해야합니까?
Simon East

1
@SimonEast는 SPF가 모든 Bean을 실제로 계산하지 않고도 DNS "비용"에 대한 대략적인 추정치를 얻을 수 있도록 각 DNS 레코드 유형의 의미를 이해해야한다고 설명했다.
mr.spuratic

11

RFC4408 s10.1 은 언급 한 바와 같이 DNS 활동에 제한을 두었습니다. 구체적으로 :

SPF 구현은 "include"메커니즘 또는 "redirect"수정 자의 사용으로 인한 조회를 포함하여 DNS 조회를 수행하는 메커니즘 및 수정 자의 수를 SPF 확인 당 최대 10 개로 제한해야합니다. 점검 중에이 숫자를 초과하면 PermError가 리턴되어야합니다. "리디렉션"수정 자뿐만 아니라 "include", "a", "mx", "ptr"및 "exists"메커니즘도이 제한에 포함됩니다. "all", "ip4"및 "ip6"메커니즘에는 DNS 조회가 필요하지 않으므로이 제한에 포함되지 않습니다. SPF 레코드를 평가 한 후 설명 문자열을 가져 오기위한 DNS 조회가 발생하므로 "exp"수정자는이 제한에 포함되지 않습니다.

또한

"mx"및 "ptr"메커니즘 또는 % {p} 매크로를 평가할 때는 최대 10 개의 MX 또는 PTR RR을 조회하고 확인해야합니다.

전자는 수행 된 조회 수가 아니라 메커니즘 의 수에 대한 제한입니다 . 그러나 여전히 한계입니다.

내가 알 수있는 한,이 한계는 상당히 엄격합니다. 이들은 임의의 복잡한 SPF 레코드를 구성하는 사람들을 막고 대규모 DNS 조회 체인에서 정지하여 레코드를 확인하는 DoS 서버에 사용하는 사람들을 막도록 설계되었으므로 SPF 검사기를 구현하는 모든 사람에게 가장 큰 이익이됩니다. 그들을 존중하십시오.

중첩 된 포함이 이러한 제한에 가장 큰 문제를 일으킬 가능성이 있으며 각 도메인 자체를 많이 사용하는 여러 도메인을 포함하기로 결정한 경우 상당히 빨리 처리 할 수 ​​있습니다. 이것이 구체적인 문제를 일으킨 사람들의 예 를 찾는 것은 그리 어렵지 않습니다 .

결론적으로 사람들이 사용하기로 결정하는 경우 문제는 일반적으로 발생하는 것 같다 모두 SPF 자신의 보내는 전자 메일을 처리하기 위해 몇 가지 독특하고 서로 다른 회사를. 나는 당신이 그 범주에 맞는 당신의 질문에서 추론합니다. SPF는이 작업을 수행하는 사람들에게 서비스를 제공하도록 설계되지 않은 것 같습니다 . 이 작업을 수행하려면 DNS 서버에 포함하려는 모든 SPF 레코드를 지속적으로 평가하고 일련의 메커니즘 ip4:ip6:메커니즘 으로 표현하는 일종의 크론 작업이 있어야합니다. 제한이 없으며 SPF 레코드로 결과를 다시 게시합니다.

로 끝내는 것을 잊지 마십시오. 그렇지 않으면 -all전체 운동이 의미가 없습니다.


귀하의 도구가 다운 된 것으로 보입니다 : @ JanSáreník
Simon East

@SimonEast 중재자가 게시물을 삭제할 때 수행 할 수있는 작업이 없습니다. spf-tools는 github에 spf-tools github있습니다. 자기 홍보라고합니다. 토론 할 공간이 없습니다.

@ JánSáreník 오, 이상해, 이제 MadHatter와 내 의견은 맥락에서 이해가되지 않습니다. 흠. 아 잘
Simon East

@SimonEast, 그 의견을 삭제 한 실례합니다. 나는 그것을했고 다른 의견이 맥락에서 보이지 않게 될 것이라는 것을 깨닫지 못했습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.