[GTER] uma ideia para discussão: SPF reverso.

Henrique de Moraes Holschuh henrique.holschuh at ima.sp.gov.br
Mon Aug 6 18:50:39 -03 2012


On 06-08-2012 15:05, Danton Nunes wrote:
> On Mon, 6 Aug 2012, Henrique de Moraes Holschuh wrote:
>> O reverso indica qual zona auxiliar utilizar. Zona auxiliar retorna
>> a informação de RSPF para todos os domínios que você quiser, por
>> exemplo, estilo RHSBL. *Aí* fica bem fácil fazer a coisa sem
>> tropeçar em nada exceto quem não tem SOA nem BCP-20 (que até eu
>> considero ser um caso pouco interessante). Aliás, dá inclusive para
>> reusar os softwares que implementam servidor de RHSBL (RBL de
>> domínio).
>
> vejamos. sou um cara mal intencionado e compro serviços IP de um
> fornecedor que me dá um /27. crio um par de chaves e mando para ele a
>  chave pública para publicar como validador de RSPF no seu reverso.
> Agora assino um PASS para gmail.com e saio enviando email como se
> fosse de fulano at gmail.com? é óbvio que não pode!
>
> outra coisa que preocupa é o fato da mesma chave poder ser dada para
>  mais de um ISP.
>
>>> propósito deste protocolo é ser simples e rápido, de preferência
>>
>> Esse protocolo é inútil se não houver adoção em massa. Vai com
>> calma, sugiro ter como objetivo uma versão já bem redonda para
>> pedir comentários na GTER do fim do ano...
>
> não sei o quanto essa dificuldade com os blocos />24 prejudicaria a
> adoção em massa. proponho o seguinte: implementamos uma versão sem o
>  esquema de delegação via chave pública (ou outro mecanismo de
> confiança a ser definido) mas com um gancho que permita que ele seja
> acrescentado depois. o esquema proposto é muito engenhoso, mas não
> está claro quais podem ser seus efeitos colaterais, especialmente a
> possibilidade do fornecedor de serviços IP acabar assinando uma
> procuração muito ampla ao publicar uma chave pública de um cliente.

Não use chave pública.  Se usar uma zona auxiliar, NÃO PRECISA DE NADA
DISSO.  Deixa a criptografia pro NSEC3 ;-)

A zona auxiliar é uma forma (que pode inclusive ser opcional, assim quem
não precisa, não cria carga extra de DNS) de mapear para fora do reverso
o espaço DNS que não dá para utilizar via BCP-20 sem a operadora mandar
você pastar.  Só isso.

Ou seja, poderia ser o esquema RHSBL que vocês bolaram, e que escala bem:

Sejam  x.invalid, y.invalid e z.invalid  três domínios que
enviam/recebem email.  "invalid" é uma TLD fictícia válida ;-)

Sejam  A, B, C os IPs (tanto faz se é IPv4 ou IPv6) de MTAs/MXs.

Sejam RDNS(A), RDNS(B) e RDNS(C) a base do DNS reverso de cada um desses
IPs (ou seja, a4.a3.a2.a1.in-addr.arpa. se A for um IPv4, por exemplo).

Sejam PTR(RDNS(A)) o RRset do tipo PTR retornado ao se consultar o nó
RDNS(A) no DNS.

Seja BCP20(RDNS(B)) a base do DNS reverso usada por B, e que é alcançada
via RR CNAME em RDNS(B).  RDNS(B) está sob controle da operadora.

A tem SOA do reverso, ou seja, pode colocar o que quiser em RDNS(A),
inclusive subzonas, como por exemplo qualquercoisa.rspf.RDNS(A).

B não tem SOA do reverso, mas recebe delegações via BCP-20.

C é um coitado que hospeda servidor de email em banda larga "comercial",
e abre chamado em 0800 ou usa formulário web para alterar PTR(RDNS(C)).

C dançou, e não pode usar RSPF nessa versão.  Quem sabe na versão 2.0 ;-)

B precisará utilizar uma zona auxiliar.

A utilizará a zona auxiliar somente se quiser.


RSPF (da ideia de vocês):

Suponha que o MTA A atende x.invalid e z.invalid.  Ele publicará:

x.invalid.rspf1.RDNS(A) IN TXT (politica para x)
z.invalid.rspf1.RDNS(A) IN TXT (politica para z)
                 RDNS(A) IN PTR nome1.canonico.de.A. (múltiplos PTR ok!)
                         IN TXT rspf1,direct,(politica geral)

Suponha que o MTA B atende y.invalid.  Ele publicará:
   BCP20(RDNS(B)) IN PTR nome1.canonico.de.B. (múltiplos PTR ok!)
                  IN TXT rspf1,auxz=baserspf.canonico.de.B.,(politica geral)

   y.invalid.rspf1.baserspf.canonico.de.B. IN TXT (politica para y)

   nesse caso, inclusive pode se obrigar que a zona auxiliar seja de
mesmo nível que um dos PTRs.  Não considero isso necessário.


Pronto.  E só usem TXT em último caso, retornar registros A para indicar
políticas específicas economiza bit no cabo e na RAM.  Inclusive porque
RSPF é para ser SIM/NAO para acabar com as besteiras estilo +all do
SPF...  Um exemplo seria seguir a linha das RBLs, e retornar
127.0.0.FLAGS, onde bit0(FLAGS) = MX(de entrada) OK, bit1(FLAGS) =
MTA(de saida) OK.  E NXDOMAIN significa "nem a pau juvenal").

>>> além disso eu gostaria de partir logo para experimentações,
>>> publicar registros, escrever um milter ou adaptar o spfmilter
>>> para tratar disto, afinal, vale o moto do IETF 'we believe in
>>> running code'.
>>
>> Ué, o que está impedindo isso? :-) Só não é boa ideia publicar o
>> troço em larga escala enquanto ainda não estiver redondo, ou vai
>> queimar o cartucho.
>
> já estou hackeando o spfmilter.

Manda ver.  O que descrevi acima reaproveita o código de RHSBL do MTA
inteirinho, você poderia começar com o caso A mas já prevendo no 
protocolo o caso B.

Note que quem for servir muitos domínios deve considerar a utilização de
um servidor de RHSBL como autoritativo para as zonas rspf1.<base>.

Proteção fica à cargo do DNSSEC e NSEC3, como deveria ser (conseguir que
operadora assine a zona do reverso no caso BCP-20 são outros quinhentos...)

-- 
Henrique de Moraes Holschuh <hmh at ima.sp.gov.br>
IM@ - Informática de Municípios Associados
Engenharia de Telecomunicações
TEL +55-19-3755-6555/CEL +55-19-9293-9464

Antes de imprimir, lembre-se de seu compromisso com o Meio Ambiente
e do custo que você pode evitar.



More information about the gter mailing list