RPKI - INSTALAÇÃO

Criada por Danilo Tomich, Modificado em Sun, 30 Apr 2023 na (o) 09:29 AM por Danilo Tomich

    RPKI - Resource Public Key Infrastructure – Permite validar a origem de cada prefixo recebido, classificando cada um deles como: Válido, Inválido ou Desconhecido.
    Garante uma proteção contra sequestro dos seus prefixos por uma rede ou rota não detentora do mesmo.



Distribuição utilizada neste tutorial:
Instalação do Debian 11 Bullseye limpa passo-a-passo

1
2
3
4
5
Hardware utilizado:
- 1 CPU 2.1GHZ
- 1 Gb Memória
- 10 Gb Disco
- Debian 11

A base desta instalação foi com informações na documentação oficial.

Não esqueça de virar root da forma correta e atualizar os pacotes, e instalar alguns pacotes que serão necessários.

su - 
apt update 
apt install wget gnupg2 apt-transport-https net-tools

Adicionaremos ao repositório os pacotes da nlnetlabs, faça de acordo com sua distribuição:
Debian 11 (Mais recomendada) 

echo 'deb [arch=amd64] https://packages.nlnetlabs.nl/linux/debian/ bullseye main' >  /etc/apt/sources.list.d/nlnetlabs.list

Importe a chave do repositório. 

wget -qO- https://packages.nlnetlabs.nl/aptkey.asc | apt-key add -

Atualize o repositório 

apt update


Instale o krill

apt install krill

Após a instalação será criado no sistema um usuário chamado krill que é dono do diretório /var/lib/krill/ (que até o momento não existe nada nele).

Por segurança criaremos um backp original do krill.conf o arquivo de configuração.

cp /etc/krill.conf /etc/krill.conf.orig


Por padrão o krill roda em localhost porta 3000. Mas para nós acessar posteriormente sua interface web (lagosta) será necessário ter acesso a mesma, tornado aberta para todos. (Veremos também como aplicar um firewall, para não deixar acessível à todos) 

nano /etc/krill.conf


Adicione como no print: 

ip = "0.0.0.0"


Por padrão o mesmo não vem habilitado na inicialização, para isso vamos habilita-lo. 

systemctl enable krill

Agora inicie o serviço

systemctl start krill

Verifique se o mesmo está rodando sem nenhum erro.

systemctl status krill


Com o comando netstat você pode se certificar que agora o krill está aberto para qualquer IP “0.0.0.0”

netstat -putan |grep krill

Tudo certo até aqui, será necessário pegarmos o Token que ele gerou na instalação, ele se encontra no arquivo /etc/krill.conf, para pega-ló pode executar este comando:

cat /etc/krill.conf |grep "token =" | cut -d'"' -s -f 2


Neste caso meu token é 38d8ffbe35eaa2391b01681662037600, salve isso com 7 chaves!

E a instalação é só isso! ?

Agora basta acessar em seu navegador https://IP:3000 e nos depararemos com interface web do krill “lagosta”. (User o Firefox) É necessário aceitar o certificado inválido.



Informe o seu token em senha, no meu ex.: “38d8ffbe35eaa2391b01681662037600”

Ao entrar pela primera vez será necessário informar um nome de autoridade, adotarei como nome “meu AS”


Hora de acessarmos nossa conta no Registro.br

Clique em titularidade, em seguida “1 ASN”

Role a página ate o final e clique em Configurar RPKI

Volte a tela do Krill, e clique em Parents e copie o conteúdo do Child Request

Retorne ao Registro.BR e cole o conteúdo no campo Child Request e Habilitar RPKI 

Copie o conteúdo do Parent Response que o RegistroBR gerou 

Cole o mesmo no Krill campo Parent Response e clique em confirmar.

Deve retornar uma mensagem de sucesso. 

Você será já direcionado para o Repository, então copie a Publisher Request 


Vá ao registroBR e logo a baixo de parent response clique em Configurar publicação remota irá abrir um campo Publisher Request, agora cole e clique em Habilitar Publicação Remota 

Role um pouco a paixa para baixo e veja que temos agora o Repository Response copie o mesmo e volte ao Krill 

Cole no campo Repository Response e clique em Confirmar 

Novamente deve retornar uma mensagem de sucesso. 

Será direcionado para aba ROAs. Clique em Click Here to refresh/Clique aqui para atualizar.

Agora precisamos adicionar nossos ROAs, clique em Add ROA/Adicionar ROA 

Adicione todos seus prefixos 

ROAs adicionados com sucesso! Nosso RPKI está finalizado! 

Para validar você pode acessar os Looking Glass da G8 e da Telia que fazem validação do RPKI, mas tenha paciência, aguarde pelo menos 1 hora antes de arrancar os cabelos se não validar.

https://lg.sp4.spo.g8.net.br/


https://lg.telia.net/ 

Temos o site que é bem legal também: https://rpki-validator.ripe.net/

Não podemos esquecer o firewall, usarei o nftables

Instale e ative-o para iniciar com o sistema. (No Debian 11 nftables já é o subistituto do iptables, não é necessários instalar, mas é necessário dar um enable)

apt install nftables 
systemctl enable nftables

Edite as regras 

vim /etc/nftables.conf

Neste exemplo eu acessível apenas deixo apenas aberto para 200.200.200.0/22 e 192.168.0.0/24 

#!/usr/sbin/nft -f
  
flush ruleset
 
table inet filter {
        chain input {
                type filter hook input priority 0;
                # Krill
                ip saddr 127.0.0.1 tcp dport 3000 counter accept
                ip6 saddr ::1 tcp dport 3000 counter accept
                ip saddr 192.168.0.0/24 tcp dport 3000 counter accept
                ip saddr 200.200.200.0/22 tcp dport 3000 counter accept
                # Drop 
                tcp dport 3000 counter drop
        }
        chain forward {
                type filter hook forward priority 0;
        }
        chain output {
                type filter hook output priority 0;
        }
}

Reinicie o serviço

systemctl restart nftables

Verificar as regras:

nft list ruleset
Backup

Não esqueça de colocar o diretório em suas políticas de backups: /var/lib/krill/. Uma dica é o tutorial: Criando backups de forma simples e enviando para o Telegram ou servidor via SSH

Bônus – Múltiplos CA

Se quiser hospedar as CA de outros provedores ou é responsável por mais de um AS, basta adicionar nova CA pelo cliente do terminal, e assim será possível gerenciar pela interface web (lagosta)

krillc add --token seutoken --ca NOME_CA

Ex:

1
# krillc add --token 38d8ffbe35eaa2391b01681662037600 --ca AS4321

Deixou meu agradecimento ao amigo @GlauberMattar por essa dica.

Monitoramento

Template Zabbix 5 e 4.4 para monitorar se a porta 3000 está respondendo. RR Krill Zabbix 5 / RR Krill Zabbix 4.4

Leitura recomendada:

Instalação do Routinator 3000, um software para validação RPKI

Curtiu o conteúdo? Quer me ajudar manter

Este artigo foi útil?

Que bom!

Obrigado pelo seu feedback

Desculpe! Não conseguimos ajudar você

Obrigado pelo seu feedback

Deixe-nos saber como podemos melhorar este artigo!

Selecione pelo menos um dos motivos

Feedback enviado

Agradecemos seu esforço e tentaremos corrigir o artigo