Mudanças entre as edições de "Protegendo seu ASN com RPKI"

De Wiki BPF
Ir para navegação Ir para pesquisar
(Ajustes na formação dos códigos fonte do artigo)
Linha 17: Linha 17:
  
 
Agora vamos criar uma pasta para instalar e rodar o Krill:
 
Agora vamos criar uma pasta para instalar e rodar o Krill:
 
+
<pre>
<code>mkdir -p /opt/krill/</code>
+
mkdir -p /opt/krill/
 
+
cd /opt/krill
<code>cd /opt/krill</code>
+
touch krill.conf
 
+
</pre>
<code>touch krill.conf</code>
 
 
 
.
 
  
 
Agora vamos compilar/instalar o Krill, logo no primeiro comando ele irá fazer uma pergunta, apenas aperte ENTER e siga para os próximos comandos:
 
Agora vamos compilar/instalar o Krill, logo no primeiro comando ele irá fazer uma pergunta, apenas aperte ENTER e siga para os próximos comandos:
  
<code>curl --proto '=https' --tlsv1.2 -sSf <nowiki>https://sh.rustup.rs</nowiki> | sh</code>
+
<pre>
 
+
curl --proto '=https' --tlsv1.2 -sSf <nowiki>https://sh.rustup.rs</nowiki> | sh
<code>source ~/.cargo/env</code>
+
source ~/.cargo/env
 
+
cargo install krill
<code>cargo install krill</code>
+
</pre>
 
 
.
 
  
 
Execute o seguinte comando: <code>krill -V</code> e se o resultado for algo assim: <code>Krill 0.6.2</code> o Krill foi instalado com sucesso.
 
Execute o seguinte comando: <code>krill -V</code> e se o resultado for algo assim: <code>Krill 0.6.2</code> o Krill foi instalado com sucesso.
  
 
Caso de algum erro, faça os seguintes comandos e tente novamente:
 
Caso de algum erro, faça os seguintes comandos e tente novamente:
 
+
<pre>
<code>ln -s /root/.cargo/bin/krill /usr/bin</code>
+
ln -s /root/.cargo/bin/krill /usr/bin
 
+
ln -s /root/.cargo/bin/krillc /usr/bin
<code>ln -s /root/.cargo/bin/krillc /usr/bin</code>
+
</pre>
 
 
.
 
  
 
Vamos agora criar a config inicial do Krill, e criar uma senha/token seguro para o Krill, copie todas as linhas e cole no terminal:
 
Vamos agora criar a config inicial do Krill, e criar uma senha/token seguro para o Krill, copie todas as linhas e cole no terminal:
 
+
<pre>
<code>cat <<\EOF >/opt/krill/krill.conf</code>
+
cat <<\EOF >/opt/krill/krill.conf
 
+
ip = "0.0.0.0"
<code>ip = "0.0.0.0"</code>
+
port = 3000
 
+
auth_token = "ColoqueAquiSeuTokenSenhaSeguro"
<code>port = 3000</code>
+
EOF
 
+
</pre>
<code>auth_token = "ColoqueAquiSeuTokenSenhaSeguro"</code>
 
 
 
<code>EOF</code>
 
 
 
.
 
  
 
= Configuração =
 
= Configuração =
Linha 64: Linha 52:
  
 
Para iniciar (copiar todas as linhas abaixo e colar no terminal do seu Linux):
 
Para iniciar (copiar todas as linhas abaixo e colar no terminal do seu Linux):
 
+
<pre>
<code>cat <<\EOF >/usr/bin/krill_start</code>
+
cat <<\EOF >/usr/bin/krill_start
 
+
#!/bin/bash
<code>#!/bin/bash</code>
+
KRILL="krill"
 
+
DATA_DIR="/opt/krill"
<code>KRILL="krill"</code>
+
KRILL_PID="$DATA_DIR/krill.pid"
 
+
CONF="$DATA_DIR/krill.conf"
<code>DATA_DIR="/opt/krill"</code>
+
SCRIPT_OUT="$DATA_DIR/krill.log"
 
+
nohup $KRILL -c $CONF >$SCRIPT_OUT 2>&1 &
<code>KRILL_PID="$DATA_DIR/krill.pid"</code>
+
echo $! > $KRILL_PID
 
+
EOF
<code>CONF="$DATA_DIR/krill.conf"</code>
+
chmod +x /usr/bin/krill_start
 
+
</pre>
<code>SCRIPT_OUT="$DATA_DIR/krill.log"</code>
 
 
 
<code>nohup $KRILL -c $CONF >$SCRIPT_OUT 2>&1 &</code>
 
 
 
<code>echo $! > $KRILL_PID</code>
 
 
 
<code>EOF</code>
 
 
 
<code>chmod +x /usr/bin/krill_start</code>
 
 
 
.
 
  
 
Para parar (copiar todas as linhas abaixo e colar no terminal do seu Linux):
 
Para parar (copiar todas as linhas abaixo e colar no terminal do seu Linux):
 
+
<pre>
<code>cat <<\EOF >/usr/bin/krill_stop</code>
+
cat <<\EOF >/usr/bin/krill_stop
 
+
#!/bin/bash
<code>#!/bin/bash</code>
+
DATA_DIR="/opt/krill"
 
+
KRILL_PID="$DATA_DIR/krill.pid"
<code>DATA_DIR="/opt/krill"</code>
+
kill `cat $KRILL_PID`
 
+
EOF
<code>KRILL_PID="$DATA_DIR/krill.pid"</code>
+
chmod +x /usr/bin/krill_stop
 
+
</pre>
<code>kill `cat $KRILL_PID`</code>
 
 
 
<code>EOF</code>
 
 
 
<code>chmod +x /usr/bin/krill_stop</code>
 
 
 
.
 
  
 
Agora temos 2 novos comandos no terminal do linux <code>krill_start</code> e <code>krill_stop</code>
 
Agora temos 2 novos comandos no terminal do linux <code>krill_start</code> e <code>krill_stop</code>
  
 
Então iniciemos o daemon do Krill com o comando <code>krill_start</code> direto no seu terminal, pronto, agora temos o daemon do Krill rodando e já podemos criar nossos ROAs.
 
Então iniciemos o daemon do Krill com o comando <code>krill_start</code> direto no seu terminal, pronto, agora temos o daemon do Krill rodando e já podemos criar nossos ROAs.
 
.
 
  
 
= Habilitando RPKI e Autorizando os ROAs =
 
= Habilitando RPKI e Autorizando os ROAs =
Linha 117: Linha 85:
  
 
<code>krillc add --server <nowiki>https://localhost:3000/</nowiki> --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA</code>
 
<code>krillc add --server <nowiki>https://localhost:3000/</nowiki> --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA</code>
 
.
 
  
 
Vamos criar agora nosso child_request:
 
Vamos criar agora nosso child_request:
  
 
<code>krillc parents request --server <nowiki>https://localhost:3000/</nowiki> --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA</code>
 
<code>krillc parents request --server <nowiki>https://localhost:3000/</nowiki> --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA</code>
 
.
 
  
 
Esse último comando gerou um XML chamado child_request, com ele conseguiremos gerar o parent_response no site do registro.br, então copie o XML.
 
Esse último comando gerou um XML chamado child_request, com ele conseguiremos gerar o parent_response no site do registro.br, então copie o XML.
Linha 141: Linha 105:
  
 
Agora vou facilitar para você criar um arquivo com o conteúdo do parent_response dentro do seu Linux, copie o comando abaixo e cole no seu Editor de Texto preferido e substitua no indicado com o XML gerado e execute todo o comando no terminal do linux.
 
Agora vou facilitar para você criar um arquivo com o conteúdo do parent_response dentro do seu Linux, copie o comando abaixo e cole no seu Editor de Texto preferido e substitua no indicado com o XML gerado e execute todo o comando no terminal do linux.
 
+
<pre>
<code>cat <<\EOF >parent_response.xml</code>
+
cat <<\EOF >parent_response.xml
 
+
COLE AQUI O XML PARENT RESPONSE
<code>COLE AQUI O XML PARENT RESPONSE</code>
+
EOF
 
+
</pre>
<code>EOF</code>
 
 
 
.
 
  
 
Temos agora um arquivo chamado parent_response.xml, vamos adicionar ele ao nosso Krill.
 
Temos agora um arquivo chamado parent_response.xml, vamos adicionar ele ao nosso Krill.
  
 
<code>krillc parents add remote --server <nowiki>https://localhost:3000/</nowiki> --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA --parent nicbr_ca --rfc8183 parent_response.xml</code>
 
<code>krillc parents add remote --server <nowiki>https://localhost:3000/</nowiki> --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA --parent nicbr_ca --rfc8183 parent_response.xml</code>
 
.
 
  
 
Pronto, agora sim, o RPKI está ativo no seu ASN!
 
Pronto, agora sim, o RPKI está ativo no seu ASN!
  
Vamos então gerar os ROAs de seus prefixos para protege-los e prevenir que sofram hijack.
+
Vamos então gerar os ROAs de seus prefixos para protegê-los e prevenir que sofram hijack.
  
 
Mas antes vamos ativar para que o Krill faça publicação remota no registro.br, volte ao terminal do seu linux.
 
Mas antes vamos ativar para que o Krill faça publicação remota no registro.br, volte ao terminal do seu linux.
Linha 164: Linha 123:
 
<code>krillc repo request --server <nowiki>https://localhost:3000/</nowiki> --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA</code>
 
<code>krillc repo request --server <nowiki>https://localhost:3000/</nowiki> --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA</code>
  
.
 
  
 
O comando anterior gerou um XML chamado publisher_request, com ele copiado volte ao registro.br onde você ativou o RPKI e logo abaixo do Parent response, tem um link "Configurar publicação remota", clique nele, no campo que apareceu cole o XML e clique em '''HABILITAR PUBLICAÇÃO REMOTA''', agora você tem outro XML, chamado Repository response, seguindo o mesmo principio, precisamos criar um arquivo no linux com esse XML.
 
O comando anterior gerou um XML chamado publisher_request, com ele copiado volte ao registro.br onde você ativou o RPKI e logo abaixo do Parent response, tem um link "Configurar publicação remota", clique nele, no campo que apareceu cole o XML e clique em '''HABILITAR PUBLICAÇÃO REMOTA''', agora você tem outro XML, chamado Repository response, seguindo o mesmo principio, precisamos criar um arquivo no linux com esse XML.
 
+
<pre>
<code>cat <<\EOF >repository_response.xml</code>
+
cat <<\EOF >repository_response.xml
 
+
COLE AQUI O XML REPOSITORY RESPONSE
<code>COLE AQUI O XML REPOSITORY RESPONSE</code>
+
EOF
 
+
</pre>
<code>EOF</code>
 
 
 
.
 
  
 
Agora que temos o arquivo xml criado no Linux, vamos autorizar em nosso Krill:
 
Agora que temos o arquivo xml criado no Linux, vamos autorizar em nosso Krill:
Linha 181: Linha 136:
  
 
E, finalmente podemos criar os ROAs deu seus prefixos, para isso vamos criar um arquivo, mas antes de mais nada, abra seu Editor de Texto preferido e cole o seguinte comando:
 
E, finalmente podemos criar os ROAs deu seus prefixos, para isso vamos criar um arquivo, mas antes de mais nada, abra seu Editor de Texto preferido e cole o seguinte comando:
 
+
<pre>
<code>cat <<\EOF >meus_roas.txt</code>
+
cat <<\EOF >meus_roas.txt
 
+
EOF
<code>EOF</code>
+
</pre>
 
 
.
 
  
 
Após o meus_roas.txt, na segunda linha, vamos adicionar os ROAs que queremos que sejam válidos, eu vou explanar antes como funciona isso e depois você pode brincar um pouco.
 
Após o meus_roas.txt, na segunda linha, vamos adicionar os ROAs que queremos que sejam válidos, eu vou explanar antes como funciona isso e depois você pode brincar um pouco.
Linha 192: Linha 145:
 
Você pode adicionar "A" ou remover "R" um ROA sempre que quiser e é bem simples, no arquivo que vamos utilizar para publicar os ROAs você pode fazer o seguinte:
 
Você pode adicionar "A" ou remover "R" um ROA sempre que quiser e é bem simples, no arquivo que vamos utilizar para publicar os ROAs você pode fazer o seguinte:
  
A: 192.168.0.0/22-24 => 65535
+
A: 192.168.0.0/22-24 => 65535<BR>
 
 
 
A: 2001:db8::/32-48 => 65535
 
A: 2001:db8::/32-48 => 65535
 
+
<BR>
.
 
  
 
Note que coloquei 22-24 para IPv4 e 32-48 para IPv6, ou seja, estamos dizendo que seus prefixos dentro desse range serão válidos para serem exportados!
 
Note que coloquei 22-24 para IPv4 e 32-48 para IPv6, ou seja, estamos dizendo que seus prefixos dentro desse range serão válidos para serem exportados!
 
 
Outro caso:
 
Outro caso:
  
A: 192.168.0.0/24 => 65535
+
A: 192.168.0.0/24 => 65535<BR>
 
+
A: 192.168.1.0/24 => 65535<BR>
A: 192.168.1.0/24 => 65535
+
A: 192.168.2.0/24 => 65535<BR>
 
+
A: 192.168.3.0/24 => 65535<BR>
A: 192.168.2.0/24 => 65535
+
A: 2001:db8::/48 => 65535<BR>
 
 
A: 192.168.3.0/24 => 65535
 
 
 
A: 2001:db8::/48 => 65535
 
 
 
 
A: 2001:db8:9000::/48 => 65535
 
A: 2001:db8:9000::/48 => 65535
 
+
<BR>
.
 
  
 
Nesse caso, estamos dizendo que os blocos /24 são os únicos válidos, ou seja, quando algum provedor for exportar seus blocos, e por algum motivo ele tentar exportar seu prefixo /23 para um AS que valide os prefixos por RPKI, esse AS vai aceitar somente os prefixos /24 pois você não validou o /23 e com isso o prefixo é descartado e não será roteado por esse AS.
 
Nesse caso, estamos dizendo que os blocos /24 são os únicos válidos, ou seja, quando algum provedor for exportar seus blocos, e por algum motivo ele tentar exportar seu prefixo /23 para um AS que valide os prefixos por RPKI, esse AS vai aceitar somente os prefixos /24 pois você não validou o /23 e com isso o prefixo é descartado e não será roteado por esse AS.
Linha 221: Linha 165:
  
 
R: 192.168.0.0/22-24 => 65535
 
R: 192.168.0.0/22-24 => 65535
 
+
<BR>
.
 
  
 
Salve o arquivo e atualize seus ROAs, e agora abra denovo o arquivo e faça o seguinte:
 
Salve o arquivo e atualize seus ROAs, e agora abra denovo o arquivo e faça o seguinte:
  
 
A: 192.168.0.0/22-23 => 65535
 
A: 192.168.0.0/22-23 => 65535
 
+
<BR>
.
 
  
 
E agora pode atualizar novamente seus ROAs, nesse momento, todos os AS que fazem drop de RPKI invalid, não irão mais aceitar prefixos /24 do seu AS originados por qualquer AS, e perceberam que toda vez que quero mudar alguma coisa eu tenho que apagar o que fiz anteriormente e "R"emover ou "A"adicionar? Entenderam a mecânica?
 
E agora pode atualizar novamente seus ROAs, nesse momento, todos os AS que fazem drop de RPKI invalid, não irão mais aceitar prefixos /24 do seu AS originados por qualquer AS, e perceberam que toda vez que quero mudar alguma coisa eu tenho que apagar o que fiz anteriormente e "R"emover ou "A"adicionar? Entenderam a mecânica?
Linha 234: Linha 176:
 
Bom, agora que você entendeu como funciona, vamos aos comandos para atualizar e autorizar os ROAs.
 
Bom, agora que você entendeu como funciona, vamos aos comandos para atualizar e autorizar os ROAs.
  
A: 192.168.0.0/22-24 => 65535
+
A: 192.168.0.0/22-24 => 65535<BR>
 
 
 
A: 2001:db8::/32-48 => 65535
 
A: 2001:db8::/32-48 => 65535
 
+
<BR>
.
 
  
 
Você colocou seus prefixos no arquivo, agora faça o seguinte comando:
 
Você colocou seus prefixos no arquivo, agora faça o seguinte comando:
  
 
<code>krillc roas update --server <nowiki>https://localhost:3000/</nowiki> --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA --delta meus_roas.txt</code>
 
<code>krillc roas update --server <nowiki>https://localhost:3000/</nowiki> --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA --delta meus_roas.txt</code>
 
+
<BR>
.
 
  
 
Pronto, com isso você já atualizou os ROAs, e seus prefixos agora são válidos e não mais desconhecidos.
 
Pronto, com isso você já atualizou os ROAs, e seus prefixos agora são válidos e não mais desconhecidos.
Linha 250: Linha 189:
 
Esse é o primeiro passo, agora que você tem seu ASN protegido com RPKI, o próximo passo é você também validar prefixos de outros ASs e dropar prefixos inválidos direto no seu BGP, mas isso vai ficar para outro artigo.
 
Esse é o primeiro passo, agora que você tem seu ASN protegido com RPKI, o próximo passo é você também validar prefixos de outros ASs e dropar prefixos inválidos direto no seu BGP, mas isso vai ficar para outro artigo.
  
'''IMPORTANTE:''' Manter seu Krill sempre atualizado, rodando, ligado e nunca pare o daemon.
+
'''IMPORTANTE:''' Manter seu Krill sempre atualizado, rodando, ligado e nunca pare o daemon.<BR>
 
 
.
 
  
 
Artigo feito por: '''Diorges Rocha'''
 
Artigo feito por: '''Diorges Rocha'''
 +
[[Categoria:Roteamento]]
 
[[Categoria:BCOPs]]
 
[[Categoria:BCOPs]]
[[Categoria:Roteamento]]
 

Edição das 22h14min de 25 de maio de 2020

Neste artigo iremos mostrar quais os passos necessários para criar ROAs (Route Origin Authorisation) dos prefixos de seu ASN.

Antes de mais nada, deem uma lida nesse artigo: https://wiki.brasilpeeringforum.org/w/Redes_que_descartam_RPKI_Invalidos

Antes de começarmos, se você leu o artigo que deixei o link, você deve ter entendido que todo AS que ainda não criou ROAs de seus prefixos ou ainda não criou o CA para seu ASN, seus prefixos são conhecidos na internet como "unknown" ou "desconhecidos" e com isso seus prefixos ainda serão roteados pela internet, então não se preocupe com isso, esse artigo vai apenas ensinar a você deixar seus prefixos como "valid".

Neste artigo será utilizado o Krill para ativarmos o RPKI no seu ASN.

Instalação

Instalação e Configuração do Krill.

Primeiramente você precisa de uma máquina virtual rodando linux Debian ou Ubuntu, com isso iremos prosseguir para os passos de instalação:

Instalando as dependências para compilar o Krill:

apt install build-essential libssl-dev openssl pkg-config curl

Agora vamos criar uma pasta para instalar e rodar o Krill:

mkdir -p /opt/krill/
cd /opt/krill
touch krill.conf

Agora vamos compilar/instalar o Krill, logo no primeiro comando ele irá fazer uma pergunta, apenas aperte ENTER e siga para os próximos comandos:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
cargo install krill

Execute o seguinte comando: krill -V e se o resultado for algo assim: Krill 0.6.2 o Krill foi instalado com sucesso.

Caso de algum erro, faça os seguintes comandos e tente novamente:

ln -s /root/.cargo/bin/krill /usr/bin
ln -s /root/.cargo/bin/krillc /usr/bin

Vamos agora criar a config inicial do Krill, e criar uma senha/token seguro para o Krill, copie todas as linhas e cole no terminal:

cat <<\EOF >/opt/krill/krill.conf
ip = "0.0.0.0"
port = 3000
auth_token = "ColoqueAquiSeuTokenSenhaSeguro"
EOF

Configuração

Enfim, nosso Krill já está pronto para ser usado, antes precisamos iniciar o daemon do Krill, mas ainda, infelizmente o Krill não vem com script para iniciar e parar, a NTLabs disponibilizou dois scripts que podemos usar para iniciar e parar o daemon:

Para iniciar (copiar todas as linhas abaixo e colar no terminal do seu Linux):

cat <<\EOF >/usr/bin/krill_start
#!/bin/bash
KRILL="krill"
DATA_DIR="/opt/krill"
KRILL_PID="$DATA_DIR/krill.pid"
CONF="$DATA_DIR/krill.conf"
SCRIPT_OUT="$DATA_DIR/krill.log"
nohup $KRILL -c $CONF >$SCRIPT_OUT 2>&1 &
echo $! > $KRILL_PID
EOF
chmod +x /usr/bin/krill_start

Para parar (copiar todas as linhas abaixo e colar no terminal do seu Linux):

cat <<\EOF >/usr/bin/krill_stop
#!/bin/bash
DATA_DIR="/opt/krill"
KRILL_PID="$DATA_DIR/krill.pid"
kill `cat $KRILL_PID`
EOF
chmod +x /usr/bin/krill_stop

Agora temos 2 novos comandos no terminal do linux krill_start e krill_stop

Então iniciemos o daemon do Krill com o comando krill_start direto no seu terminal, pronto, agora temos o daemon do Krill rodando e já podemos criar nossos ROAs.

Habilitando RPKI e Autorizando os ROAs

Vamos então criar nosso CA utilizando o cliente do Krill:

krillc add --server https://localhost:3000/ --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA

Vamos criar agora nosso child_request:

krillc parents request --server https://localhost:3000/ --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA

Esse último comando gerou um XML chamado child_request, com ele conseguiremos gerar o parent_response no site do registro.br, então copie o XML.

Para gerar o parent_response siga os passos abaixo:

1 - Entre na sua conta no Registro.br;

2 - Vá em Titularidade e clique no seu ASN;

3 - No final da página clique em CONFIGURAR RPKI; e

4 - No campo Child request cole o XML que foi gerado pelo comando e clique em HABILITAR RPKI.

O registro.br vai gerar um outro XML chamado parent_response, copie o conteúdo e volte ao linux.

Agora vou facilitar para você criar um arquivo com o conteúdo do parent_response dentro do seu Linux, copie o comando abaixo e cole no seu Editor de Texto preferido e substitua no indicado com o XML gerado e execute todo o comando no terminal do linux.

cat <<\EOF >parent_response.xml
COLE AQUI O XML PARENT RESPONSE
EOF

Temos agora um arquivo chamado parent_response.xml, vamos adicionar ele ao nosso Krill.

krillc parents add remote --server https://localhost:3000/ --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA --parent nicbr_ca --rfc8183 parent_response.xml

Pronto, agora sim, o RPKI está ativo no seu ASN!

Vamos então gerar os ROAs de seus prefixos para protegê-los e prevenir que sofram hijack.

Mas antes vamos ativar para que o Krill faça publicação remota no registro.br, volte ao terminal do seu linux.

krillc repo request --server https://localhost:3000/ --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA


O comando anterior gerou um XML chamado publisher_request, com ele copiado volte ao registro.br onde você ativou o RPKI e logo abaixo do Parent response, tem um link "Configurar publicação remota", clique nele, no campo que apareceu cole o XML e clique em HABILITAR PUBLICAÇÃO REMOTA, agora você tem outro XML, chamado Repository response, seguindo o mesmo principio, precisamos criar um arquivo no linux com esse XML.

cat <<\EOF >repository_response.xml
COLE AQUI O XML REPOSITORY RESPONSE
EOF

Agora que temos o arquivo xml criado no Linux, vamos autorizar em nosso Krill:

krillc repo update remote --server https://localhost:3000/ --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA --rfc8183 repository_response.xml

E, finalmente podemos criar os ROAs deu seus prefixos, para isso vamos criar um arquivo, mas antes de mais nada, abra seu Editor de Texto preferido e cole o seguinte comando:

cat <<\EOF >meus_roas.txt
EOF

Após o meus_roas.txt, na segunda linha, vamos adicionar os ROAs que queremos que sejam válidos, eu vou explanar antes como funciona isso e depois você pode brincar um pouco.

Você pode adicionar "A" ou remover "R" um ROA sempre que quiser e é bem simples, no arquivo que vamos utilizar para publicar os ROAs você pode fazer o seguinte:

A: 192.168.0.0/22-24 => 65535
A: 2001:db8::/32-48 => 65535

Note que coloquei 22-24 para IPv4 e 32-48 para IPv6, ou seja, estamos dizendo que seus prefixos dentro desse range serão válidos para serem exportados! Outro caso:

A: 192.168.0.0/24 => 65535
A: 192.168.1.0/24 => 65535
A: 192.168.2.0/24 => 65535
A: 192.168.3.0/24 => 65535
A: 2001:db8::/48 => 65535
A: 2001:db8:9000::/48 => 65535

Nesse caso, estamos dizendo que os blocos /24 são os únicos válidos, ou seja, quando algum provedor for exportar seus blocos, e por algum motivo ele tentar exportar seu prefixo /23 para um AS que valide os prefixos por RPKI, esse AS vai aceitar somente os prefixos /24 pois você não validou o /23 e com isso o prefixo é descartado e não será roteado por esse AS.

Vamos para outro exemplo, vamos supor que você fez o primeiro exemplo de validar os prefixo 22 até 24, e você resolveu que não quer mais assim e quer somente validar os prefixos /22 e /23, para isso você abre o seu arquivo de roas, apague tudo e faça o seguinte:

R: 192.168.0.0/22-24 => 65535

Salve o arquivo e atualize seus ROAs, e agora abra denovo o arquivo e faça o seguinte:

A: 192.168.0.0/22-23 => 65535

E agora pode atualizar novamente seus ROAs, nesse momento, todos os AS que fazem drop de RPKI invalid, não irão mais aceitar prefixos /24 do seu AS originados por qualquer AS, e perceberam que toda vez que quero mudar alguma coisa eu tenho que apagar o que fiz anteriormente e "R"emover ou "A"adicionar? Entenderam a mecânica?

Bom, agora que você entendeu como funciona, vamos aos comandos para atualizar e autorizar os ROAs.

A: 192.168.0.0/22-24 => 65535
A: 2001:db8::/32-48 => 65535

Você colocou seus prefixos no arquivo, agora faça o seguinte comando:

krillc roas update --server https://localhost:3000/ --token ColoqueAquiSeuTokenSenhaSeguro --ca MEU_CA --delta meus_roas.txt

Pronto, com isso você já atualizou os ROAs, e seus prefixos agora são válidos e não mais desconhecidos.

Esse é o primeiro passo, agora que você tem seu ASN protegido com RPKI, o próximo passo é você também validar prefixos de outros ASs e dropar prefixos inválidos direto no seu BGP, mas isso vai ficar para outro artigo.

IMPORTANTE: Manter seu Krill sempre atualizado, rodando, ligado e nunca pare o daemon.

Artigo feito por: Diorges Rocha