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
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 RequestVá 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.
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:
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
Feedback enviado
Agradecemos seu esforço e tentaremos corrigir o artigo