Como atualizar uma região com o auto-dnssec: maintain

4

Estou executando um BIND 9.9.5-9 + deb8u8-Debian autoritativo no Debian Jessie. Eu tenho uma zona de trabalho para robin.info que funciona corretamente (vários testes relatam sucesso, como o da ferramenta de verificação DNS do pingdom.com)

Estou tentando protegê-lo com o dnssec. Estou seguindo as instruções fornecidas no Guia BIND DNSSEC , capítulo 4, com fácil acesso . Gerei um ZSK e KSK com sucesso e atualizei minha zona adicionando as linhas em negrito:

zone "robin.info" {
        type master;
        file "/etc/bind/zones/robin.info";
        include "/etc/bind/include-zones/acls";
        key-directory "/etc/bind/dnssec/robin.info/2016";
        inline-signing yes;
        auto-dnssec maintain;
};

Assegurei-me de que nenhum arquivo .jnl , .jbk , .signed e .signed.jnl estivesse presente no arquivo de zona, reiniciei a ligação com rndc reload e confirmei que a região foi carregada e tinha entradas DNSKEY, embora eu tenha tido alguns erros no log:

11-Dec-2016 13:54:20.742 zone robin.info/IN/internal (signed): loaded serial 2016121111
11-Dec-2016 13:54:20.742 zone robin.info/IN/external (signed): loaded serial 2016121111
11-Dec-2016 13:54:20.750 zone robin.info/IN/external (signed): receive_secure_serial: unchanged
11-Dec-2016 13:54:20.750 zone robin.info/IN/external (signed): reconfiguring zone keys
11-Dec-2016 13:54:20.766 zone robin.info/IN/external (signed): next key event: 11-Dec-2016 14:54:20.750
11-Dec-2016 13:54:20.796 zone robin.info/IN/internal (signed): receive_secure_serial: unchanged
11-Dec-2016 13:54:20.796 zone robin.info/IN/internal (signed): reconfiguring zone keys
11-Dec-2016 13:54:20.805 malformed transaction: /etc/bind/zones/robin.info.signed.jnl last serial 2016121113 != transaction first serial 2016121111
11-Dec-2016 13:54:20.805 zone robin.info/IN/internal (signed): zone_rekey:dns_journal_write_transaction -> unexpected error

Estes erros de série parecem causar problemas na linha quando eu quero atualizar minha zona. Faço alterações na zona não assinada /etc/bind/zones/robin.info e aumento minha série para 2016121121

11-Dec-2016 13:57:58.658 zone robin.info/IN/internal (signed): serial 2016121121 (unsigned 2016121121)
11-Dec-2016 13:57:58.658 zone robin.info/IN/internal (signed): could not get zone keys for secure dynamic update
11-Dec-2016 13:57:58.658 zone robin.info/IN/internal (signed): receive_secure_serial: not found
11-Dec-2016 13:57:58.659 malformed transaction: /etc/bind/zones/robin.info.jnl last serial 2016121121 != transaction first serial 2016121111
11-Dec-2016 13:57:58.659 zone robin.info/IN/external (unsigned): not loaded due to errors.
11-Dec-2016 13:57:58.659 all zones loaded
11-Dec-2016 13:57:58.659 running
11-Dec-2016 13:57:58.661 zone robin.info/IN/internal (signed): reconfiguring zone keys
11-Dec-2016 13:57:58.670 malformed transaction: /etc/bind/zones/robin.info.signed.jnl last serial 2016121115 != transaction first serial 2016121111
11-Dec-2016 13:57:58.670 zone robin.info/IN/internal (signed): zone_rekey:dns_journal_write_transaction -> unexpected error
11-Dec-2016 13:57:58.670 zone robin.info/IN/external (signed): reconfiguring zone keys
11-Dec-2016 13:57:58.671 zone robin.info/IN/external (signed): next key event: 11-Dec-2016 14:57:58.670

Posso confirmar com dig que minha zona antiga ainda está carregada (da SOA e das alterações que não estão visíveis).

Existem várias mensagens de erro aqui:

1) Sugerindo que estou tendo problemas com as chaves ("não foi possível obter chaves de zona para atualização dinâmica segura"). No entanto, o bind não teve problemas com isso no primeiro carregamento, e meus arquivos de chave podem ser lidos pela ligação (o nome é executado como usuário bind , que é membro do grupo bind ):

xavier@dent:/etc/bind/zones$ ls -l /etc/bind/dnssec/robin.info/2016
total 17k
-rw-r--r-- 1 root bind  603 Dec 10 17:23 Krobin.info.+008+43324.key
-rw-r----- 1 root bind 1.8k Dec 10 17:23 Krobin.info.+008+43324.private
-rw-r--r-- 1 root bind  604 Dec 10 17:22 Krobin.info.+008+44679.key
-rw-r----- 1 root bind 1.8k Dec 10 17:22 Krobin.info.+008+44679.private

2) Sugerindo um erro com as séries (o erro inicial foi last serial 2016121113 != transaction first serial 2016121111 ). No entanto, achei que não precisava me preocupar muito com os seriados, já que no KB do ISC eu posso ler isso:

Note that the serial number in this response is not the same as the one in the file example.com.db. Named keeps track of the serial number of the signed version of the zone independently of the unsigned version. If the unsigned zone is updated with a new serial number that's higher than the one in the signed copy, then the signed copy will be increased to match it, but otherwise the two are kept separate.[1]

Até agora, a única maneira encontrada para atualizar a zona é parar a ligação, excluir os arquivos .jnl , .jbk , .signed e .signed.jnl e iniciar a ligação novamente. Isso parece errado, e eu preciso ter certeza de aumentar a serial o suficiente para ativar a nova zona. O que estou fazendo de errado e como posso consertar meu dnssec?

    
por Calimo 11.12.2016 / 14:40

2 respostas

0

Acho que finalmente encontrei a causa raiz do meu problema. Eu tenho dois modos de exibição, que foram configurados para incluir o mesmo arquivo de zona mestre duas vezes.

Você não pode usar o mesmo arquivo para duas zonas. Isso é inválido e causou o meu problema:

view "internal" {
    match-clients ...;
    zone "example.com" {
        type master;
        file "/etc/bind/zones/example.net";
    };
};
view "external" {
    match-clients ...;
    zone "example.com" {
        type master;
        file "/etc/bind/zones/example.net";
    };
};

A maneira correta de compartilhar uma zona é descrito no capítulo 4 do " Noções básicas sobre modos de exibição no BIND 9, por exemplo "guia. Basicamente, somente uma da zona deve ser a zona mestre, e a outra deve ser um escravo. Depois de adicionar alguns acls, chaves e também notificar para localhost nos lugares certos, me livrei desses erros.

No final, esta é minha configuração final:

key "internal" {
    // TSIG Key generated with dnssec-keygen -a HMAC-MD5 -b 512 -n USER internal
    algorithm hmac-md5;
    secret "XXXX";
};

view "internal" {
    match-clients { key internal; ...IPs...; }; // our network
    zone "robin.info" {
        type slave;
        file "/etc/bind/slave-zones/robin.info"; // Not the same file as external view!
        masters { 127.0.0.1; };
    };
};

view "external" {
    match-clients { !key internal; "any"; }; // everyone else
    server 127.0.0.1 {
        /* Deliver notify messages to internal view with internal key. */
        keys { internal; };
    };
    zone "robin.info" {
        type master;
        file "/etc/bind/zones/robin.info";
        // ACL file with allow-transfer and also-notify
        // including secondary DNS servers and 127.0.0.1
        include "/etc/bind/acls"; 
        key-directory "/etc/bind/dnssec/robin.info/2017";
        inline-signing yes;
        auto-dnssec maintain;
    };
};
    
por 24.05.2017 / 14:33
2

O núcleo parece ser a mensagem de erro could not get zone keys for secure dynamic update , portanto, voltando para não assinados; e como não está passando pelo caminho de assinatura que auto-bota o SOA para assinatura, ele reclama que o SOA está desatualizado.

Recebi a mesma mensagem de erro ao adicionar assinatura a três zonas e arranhei a minha cabeça, depois suspirei e reiniciei o nome completamente. Isso resolveu para mim. Vincular 9.11.0P3.

Não me lembro de ter visto esse problema no passado ao adicionar a assinatura, mas todas as outras zonas foram assinadas há muito tempo com a transição de uma versão anterior do Bind. Além disso, essas três zonas são arquivos DNS reversos, portanto, um pouco incomum no nome do arquivo. Isso é tudo o que tenho para explicar isso.

Portanto: bind bug, restart named inteiramente, deixe-o encontrar os arquivos de chave para real e então assine.

    
por 11.02.2017 / 22:37

Tags