<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos exabgp - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/exabgp/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/exabgp</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Fri, 16 Jun 2023 16:02:49 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.remontti.com.br/wp-content/uploads/2024/09/icone-rr-80x80.png</url>
	<title>Arquivos exabgp - Remontti</title>
	<link>https://blog.remontti.com.br/tag/exabgp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Proteja-se de ataques DoS/DDoS mitigando com FastNetMon e anuncie os prefixos atacados (blackholes) para sua operadora, usando Mikrotik :-)</title>
		<link>https://blog.remontti.com.br/3981</link>
					<comments>https://blog.remontti.com.br/3981#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sat, 25 Jan 2020 02:28:33 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[ataques]]></category>
		<category><![CDATA[bgp]]></category>
		<category><![CDATA[ddos]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debina 10]]></category>
		<category><![CDATA[dos]]></category>
		<category><![CDATA[exabgp]]></category>
		<category><![CDATA[fastnetmon]]></category>
		<category><![CDATA[ibgp]]></category>
		<category><![CDATA[mitigação]]></category>
		<category><![CDATA[notificações]]></category>
		<category><![CDATA[proteção]]></category>
		<category><![CDATA[routeros]]></category>
		<category><![CDATA[telegram]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3981</guid>

					<description><![CDATA[<p>Existe um tutorial mais atualizado acesse: Fortalecendo a Resiliência da Rede: Detecção de Ataques DDoS com FastNetMon, FRRouting, Grafana e Implementação em Debian 12 com Huawei &#038; RouterOS 👆 👆 👆 👆 👆 👆&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3981">Proteja-se de ataques DoS/DDoS mitigando com FastNetMon e anuncie os prefixos atacados (blackholes) para sua operadora, usando Mikrotik :-)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2><font color="red">Existe um tutorial mais atualizado acesse:</font></h2>
<p><a href="https://blog.remontti.com.br/7322">Fortalecendo a Resiliência da Rede: Detecção de Ataques DDoS com FastNetMon, FRRouting, Grafana e Implementação em Debian 12 com Huawei &#038; RouterOS</a><br />
 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<pre class="remontti-code">#
#
#
#
#
#
#
#
</pre>
<p><img fetchpriority="high" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-3991" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp-520x245.jpg 520w" sizes="(max-width: 720px) 100vw, 720px" /></p>
<p>Neste tutorial vamos aprender como identificar os ataques Dos/DDoS e anunciar os prefixo atacados (ou atacantes) <strong>de seu AS</strong> em envia-los para uma blackhole, e repassar os mesmo para sua operadora. (Acordo)</p>
<p>Vamos utilizar o <a href="https://github.com/pavel-odintsov/fastnetmon/" rel="noopener noreferrer" target="_blank">FastNetMon</a> que é um analisador de carga DoS/DDoS de alto desempenho, construído sobre vários mecanismos de captura de pacotes (NetFlow, IPFIX, sFlow, AF_PACKET, SnabbSwitch, netmap, PF_RING, PCAP). </p>
<p>Farei a instalação do FastNetMon no Debian 10 (Instalação Limpa)</p>
<p>Você irá precisar configurar o envido dos Flows em seu roteador de bora. Vou deixar aqui um exemplo de como configurar com o routerOS/Mikrotik.</p>
<p><strong>Cenário Ex.:</strong><br />
AS &#8211; 15169<br />
172.31.31.1/30 &#8211; RouterOS/Mikrotik<br />
172.31.31.2/30 &#8211; Servidor FastNetMon<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp.png" data-rel="lightbox-gallery-GG3vNybs" data-rl_title="" data-rl_caption="" title=""><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp.png" alt="" width="1332" height="606" class="alignnone size-full wp-image-3984" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp.png 1332w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp-300x136.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp-1024x466.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp-768x349.png 768w" sizes="(max-width: 1332px) 100vw, 1332px" /></a></p>
<p>Ative o envido dos flows em seu routerOS/Mikrotik, selecionando as interfaces de entrada (WAN) ex suas operadoras, PTTs (No exemplo sfp1,VLAN.1234-PTT) <em>observe que não irei usar a porta padrão 2055 e sim 62055.</em></p>
<pre class="remontti-code">/ip traffic-flow set active-flow-timeout=1m cache-entries=4k enabled=yes interfaces=&quot;sfp1,VLAN.1234-PTT&quot;
/ip traffic-flow target add dst-address=172.31.31.2 port=62055</pre>
<h3>Instalação FastNetMon</h3>
<p>Antes de iniciar a instalação do seu do seu servidor em nosso exemplo estou usando o IP 172.31.31.2/30, porém eu NUCA recomendaria você fazer NAT em seu roteador de borda ainda mais ele sendo um Mikrotik, a performasse estaria comprometida, quem tem NAT estude de uma pesquisada sobrem IPv4 Fast Path,  IPv4 Fasttrack, Connection Tracking. Quando você compreender esses &#8220;caras&#8221; e aplicar dentro de sua rede, vai descobrir que o mikrotik não é tão ruim quanto falam por ai kkkkk. (Quem sabe um dia escrevo algo sobre), mas voltando&#8230; Porque utilizar o IP 172.31.31.2 então? Primeiramente por que ele não é acessível pelo mundo, logo não pode ser atacado, mas por outro lado se ele não tiver internet você não poderá por exemplo configurar para receber uma notificação (que neste tutorial vou explicar como fazer para enviar alertas no telegram) então como proceder, se você manja já deve ter pensado em uma solução. No meu caso eu sempre divido a a rede, o que é borda é borda, nunca ligo um servidor nela! O ideal é termos um router apenas para os servidores, ou então ligado quem sabe no concentrador de NAT, então nesse caso você pode fazer uma NAT para seu servidor, na pior das hipóteses use um ip válido. Você pode também fechar uma sessão <strong>multihop</strong>. Bom de seus pulos, ai já é engenharia de redes! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>O pacote do fastnetmon já se encontra no repositório do debian, juntamente algumas pacotes extras que vamos utilizar em seguida.</p>
<pre class="remontti-code"># apt install fastnetmon zip curl wget python-pip socat -y</pre>
<p>Adicione todos os prefixos de se AS, são esses os IPs que ele fará analise. </p>
<pre class="remontti-code"># vim /etc/networks_list</pre>
<p>Exemplo</p>
<pre class="remontti-code">216.58.192.0/22
2800:3f0::/32</pre>
<p>Ajustes as configurações</p>
<pre class="remontti-code"># vim /etc/fastnetmon.conf</pre>
<p>Exlplicarei nos comentários</p>
<pre class="remontti-code"># Quantos pacotes serão coletados do tráfego de ataque
# Aumentamos para ter um log com mais informações
ban_details_records_count = 1000

# Defina por quanto tempo você irá ficar anunciando seu IP atacado a blackhole 
ban_time = 600

# Ative o rastreamento de conexão
enable_connection_tracking = on

# Ativaremos a detecção de ataques, por pacotes por/s, por limite de banda e pro flows.
ban_for_pps = on
ban_for_bandwidth = on
ban_for_flows = on

# Limites de pacotes
threshold_pps = 20000
# Limite de banda (Pode pegar como base o cliente/ plano com mair trafego 
# cuidado com ips de cgnat, eles terão bem mais consumo. 
threshold_mbps = 1000
# Limite por flows
threshold_flows = 3500

# Você pode desativar o sflow (Já que com RouterOS não vamos utiliza-lo)
sflow = off

# Ative o netflow
netflow = on

# Ative o exabgp (É com ele que vamos fechamos nosso per com a borda)
exabgp = on
# Defina para 60 o mesmo tempo setado la no Router (active-flow-timeout=1m)
average_calculation_time = 60

# Altere a porta para mesma que configuramos no Router
netflow_port = 62055

# Informe o IP da sua interface do servidor
exabgp_next_hop = 172.31.31.2

# Script que será executado sempre quer um banir/desbanir
notify_script_path = /usr/local/bin/notify_about_attack.sh</pre>
<p>O fastnetmon sempre que identificar um ataque irá executar <strong>notify_script_path</strong>, identificando o IP da sua rede que está sofrendo <strong>(incoming)</strong> o ataque ou que está cometendo <strong>(outgoing)</strong> o ataque. Ele <strong>NÃO</strong> irá identificar os IPs de origem. Em um futuro quando tivermos mais testes elaborados eu juntamente com o Gabriel Vargas Padilha estamos estudando os logs e através desses com um script (python) analisarmos a fundo vamos armazena-los em uma base de dados bem como identificar (porem no momento ainda tem falsos positivos), mas a ideia e saber a origem e através de um outro script notificar os IPs de origens enviando os logs para o dono do IP para que ele tome suas providencias, e por que não anunciar também nas blackholes.  </p>
<p>Criaremos então nosso arquivo chamado pelo opção &#8220;notify_script_path&#8221;, mas antes vamos criar um script para enviar notificações (mensagens) e arquivos pelo Telegram. Vai ser necessário criar um bot do telegram para o uso do mesmo. Se você não sabe como criar um Bot para telegram veja como fazer o mesmo no início do tutorial que já postei de como enviar alertas pelo zabbix, <a href="https://blog.remontti.com.br/3053" rel="noopener noreferrer" target="_blank">Zabbix 4.2 enviando alertas no Telegram via Bot (Debian 10)</a>, lá no ínico do tutorial explica como criar o bot, pegar o token e como descobrir o ID de um usuário ou grupo. </p>
<pre class="remontti-code"># cd /tmp/
# wget https://github.com/remontti/TelegramCMD/archive/master.zip
# unzip /tmp/master.zip
# chmod a+x /tmp/TelegramCMD-master/telegram
# mv /tmp/TelegramCMD-master/telegram* /usr/local/bin/</pre>
<p>Não esqueça de alterar o TOKEN para o do seu bot.</p>
<pre class="remontti-code"># vim /usr/local/bin/telegram.conf/token.conf</pre>
<pre class="remontti-code">######################################
# Telegram bot                       #
# Create a new bot with @BotFather   #
# get TOKEN                          #
######################################

TOKEN=&quot;000000000:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF&quot;</pre>
<p>Como usar? É importante você saber que o IDs de grupos tem um &#8220;-&#8221; no inicio do ID, já usuários direto não.</p>
<pre class="remontti-code">Uso: telegram [Opções]
  -m: Para enviar uma mensagem
     ex: telegram -m &quot;ID Chat&quot; &quot;Meu assunto&quot; &quot;Minha mensagem...&quot;
     ex: telegram -m &quot;-123456789&quot; &quot;Notificação&quot; &quot;Mensagem para um grupo ID&quot;
     ex: telegram -m &quot;123456789&quot; &quot;Notificação&quot; &quot;Mensagem para direta/privado&quot;

  -f: Para enviar um arquivo
     ex: telegram -f &quot;ID Chat&quot; &quot;/diretorio/arquivo&quot; &quot;nome do arquivo zip&quot; &quot;Comentário&quot;
     ex: telegram -f &quot;12345689&quot; /var/log/syslog syslog &quot;Logs do sistema para user privado&quot;</pre>
<p>     ex: telegram -f &#8220;-12345689&#8221; /var/log/syslog syslog &#8220;Logs do sistema para um grupo&#8221;</p>
<p>Bot funcionando, criamos então uma pasta onde os logs de ataques que terminaram vão ser movidos, e o script que será executado sempre que um ataque for identificado (BAN/UNBAN).</p>
<pre class="remontti-code"># mkdir /var/log/fastnetmon_attacks/ataques
# vim /usr/local/bin/notify_about_attack.sh</pre>
<pre class="remontti-code">
#!/usr/bin/env bash

# This script will get following params:
#  $1 client_ip_as_string
#  $2 data_direction
#  $3 pps_as_string
#  $4 action (ban or unban)

# Desbanindo um IP
if [ &quot;$4&quot; = &quot;unban&quot; ]; then
    /usr/local/bin/telegram -m &quot;-12345678&quot; &quot;UNBAN: $2 Ataque&quot; &quot;&lt;code&gt;IP $1&lt;/code&gt; removido da blackhole&quot;
    # Movemos os logs para pasta ataques pois não queremos mais receber elas.
    mv /var/log/fastnetmon_attacks/$1* /var/log/fastnetmon_attacks/ataques
    # Unban actions if used
    exit 0
fi

# Banindo
if [ &quot;$4&quot; = &quot;ban&quot; ]; then
    /usr/local/bin/telegram -m &quot;-12345678&quot; &quot;BAN: $2 ataque&quot; &quot;&lt;code&gt;IP $1&lt;/code&gt; prefixo anunciado a blackhole&quot;
    /usr/local/bin/telegram -f &quot;-12345678&quot; /var/log/fastnetmon_attacks/$1* $1 &quot;Logs do ataque ao IP $1&quot;
    exit 0
fi

if [ &quot;$4&quot; == &quot;attack_details&quot; ]; then    
    #/usr/local/bin/telegram -m &quot;-12345678&quot; &quot;BAN&quot; &quot;&lt;code&gt;FastNetMon: IP $1 blocked because $2 attack with power $3 pps&lt;/code&gt;&quot;
    exit 0
fi</pre>
<pre class="remontti-code"># chmod a+x /usr/local/bin/notify_about_attack.sh</pre>
<p>Restarte o fastnetmon</p>
<pre class="remontti-code"># systemctl restart fastnetmon</pre>
<h3>Instalação do exaBGP</h3>
<p>Iremos utilizar o <a href="https://github.com/Exa-Networks/exabgp" rel="noopener noreferrer" target="_blank">exaBGP</a> fechar nossa conexão BGP para realizar os anúncios dos prefixos atacados.</p>
<pre class="remontti-code"># pip install exabgp==3.4.20</pre>
<p>Configure o arquivo para fechar o peer.</p>
<pre class="remontti-code"># vim /etc/exabgp.conf</pre>
<pre class="remontti-code">group RouterBorda {
    hold-time 180;
    # AS do nosso ExaBGP (Pode deixar 65001)
    local-as 65001;
    # AS Remoto (Seu AS pois você vai estar fechando com seu roteador de borda)
    peer-as 15169;
    # ID do ExaBGP router (use o mesmo IP da sua placa de rede)
    router-id 172.31.31.2;
    graceful-restart 1200;
    # Remote peer
    neighbor 172.31.31.1 {
        # Endereço IP da interface desse servidor
        local-address 172.31.31.2;
        description &quot;ExaBGP&quot;;
        family {
            ipv4 unicast;
            ipv6 unicast;
        }
    }
    # Processo que vai receber as linhas de comandos para adicionar ou excluir uma prefixo
    process service-dynamic {
        run /usr/bin/socat stdout pipe:/var/run/exabgp.cmd;
    }
}</pre>
<p>Antes de iniciar o exaBGP você precisa criar um peer e alguns filtros em seu roteador de borda, no nosso exemplo routerOS/Mikrotik.</p>
<p><strong>Filtros</strong>:<br />
Crie um filtro de entrada que todas as rotas aprendida do fastnetmon seja setadas como blackhole, e não ensine nada para ele.</p>
<pre class="remontti-code">/routing filter
add action=accept chain=FastNetMon-IN set-type=blackhole
add action=discard chain=FastNetMon-OUT</pre>
<p><strong>Peer</strong>:<br />
Atenção para a <strong>instance</strong> que deve estar selecionada corretamente (use a mesma que você usa com sua operadora). Caso seu servidor não esteja com um conexão direta a borda poe usar multihop=<strong>yes</strong>, como comentado anteriormente.</p>
<pre class="remontti-code">/routing bgp peer
add name=FastNetMon instance=default remote-as=65001 multihop=no  \
 in-filter=FastNetMon-IN out-filter=FastNetMon-OUT \
 remote-address=172.31.31.2 update-source=172.31.31.1</pre>
<p>Para não ter que carregar na mão o exabgp, criaremos um script para inicialização do exaBGP automaticamente.</p>
<pre class="remontti-code"># vim /etc/init.d/exabgp </pre>
<pre class="remontti-code">#!/bin/bash
### BEGIN INIT INFO
# Provides:          exabgp
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
### END INIT INFO

VERMELHO=&#039;\033[1;31m&#039;
VERDE=&#039;\033[1;32m&#039;
NC=&#039;\033[0m&#039;

PROCESSO=$(ps -x |grep -v &quot;grep&quot; |grep -v &quot;/bin/bash&quot; |grep exabgp |wc -l); 

function startExaBGP(){
    if [  $PROCESSO -eq 0 ]
    then
        echo &quot;Iniciandos...&quot;;
        env exabgp.daemon.user=root \
          exabgp.daemon.daemonize=true \
          exabgp.daemon.pid=/var/run/exabgp.pid \
          exabgp.log.destination=/var/log/exabgp.log \
          exabgp /etc/exabgp.conf
        sleep 0.3
        echo -e &quot;ExaBGP [${VERDE} Iniciado ${NC}] &quot;;
    else
        echo -e &quot;ExaBGP já exstá em execuxão. [${VERDE} Ativo ${NC}] &quot;;
    fi
}
 
function stopExaBGP(){
    if [  $PROCESSO -eq 0 ]
    then
        echo -e &quot;ExaBGP não está sendo executado. [${VERMELHO} Parado ${NC}]&quot;;
        
    else 
        echo &quot;Parando...&quot;;
        kill -9 `cat /var/run/exabgp.pid` &amp;&gt;/dev/null
        echo -e &quot;ExaBGP [${VERMELHO} Parado ${NC}] &quot;;
    fi
}

function statusExaBGP(){
    if [  $PROCESSO -eq 0 ]
    then
        echo -e &quot;ExaBGP está [${VERMELHO} Parado ${NC}]&quot;;
    else 
        echo -e &quot;ExaBGP está [${VERDE} Ativo ${NC}]&quot;;
    fi
    echo 
    echo &quot;Logs:&quot;
    tail /var/log/exabgp.log
}

case &quot;$1&quot; in
    start )
        startExaBGP
        ;;
 
    stop )
        stopExaBGP
        ;;
 
    restart )
        stopExaBGP
        sleep 1
        startExaBGP
        ;;
 
    status )
        statusExaBGP      
        ;;
 
    * )
        echo &quot;Opção inválida, use start | stop | restart | status&quot;
        ;;
esac</pre>
<p>De permissão para execução</p>
<pre class="remontti-code"># chmod a+x /etc/init.d/exabgp</pre>
<p>Crie o arquivo de serviço para o programa exabgp.</p>
<pre class="remontti-code"># vim /lib/systemd/system/exabgp.service</pre>
<p>Adicione</p>
<pre class="remontti-code">[Unit]
Description=ExaBGP
After=network.target remote-fs.target

[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/etc/init.d/exabgp start
ExecStop=/etc/init.d/exabgp stop
ExecReload=/etc/init.d/exabgp restart
 
[Install]
WantedBy=multi-user.target</pre>
<p>Recarregue a nova definição do serviço:</p>
<pre class="remontti-code"># systemctl daemon-reload</pre>
<p>Ative o novo serviço, e verifique se o mesmo foi ativado</p>
<pre class="remontti-code"># systemctl enable exabgp
# systemctl list-unit-files | grep exabgp</pre>
<p>Reinicie seu servidor</p>
<pre class="remontti-code"># reboot</pre>
<p>Verifique se o exabgp foi carregado na inicialização, e seu peer estabilizou.</p>
<pre class="remontti-code"># systemctl status exabgp</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/12/exabgp_fastnetmon_mikrotik.png" data-rel="lightbox-gallery-GG3vNybs" data-rl_title="" data-rl_caption="" title=""><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/12/exabgp_fastnetmon_mikrotik.png" alt="" width="1639" height="381" class="alignnone size-full wp-image-3894" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/12/exabgp_fastnetmon_mikrotik.png 1639w, https://blog.remontti.com.br/wp-content/uploads/2019/12/exabgp_fastnetmon_mikrotik-300x70.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/12/exabgp_fastnetmon_mikrotik-1024x238.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/12/exabgp_fastnetmon_mikrotik-768x179.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/12/exabgp_fastnetmon_mikrotik-1536x357.png 1536w" sizes="(max-width: 1639px) 100vw, 1639px" /></a></p>
<p>Para iniciar/reiniciar os exabgp pode usar os seguintes comandos:</p>
<pre class="remontti-code"># systemctl stop exabgp
# systemctl start exabgp
# systemctl restart exabgp</pre>
<p>Para acompanhar a coleta de flows use o comando:</p>
<pre class="remontti-code"># fastnetmon_client</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon.png" data-rel="lightbox-gallery-GG3vNybs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon.png" alt="" width="661" height="610" class="alignnone size-full wp-image-3986" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon.png 661w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon-300x277.png 300w" sizes="auto, (max-width: 661px) 100vw, 661px" /></a></p>
<p>Você vai encontrar tutoriais como integrar com grafana&#8230;. mas para mim isso é perfumaria, o mais legal é ver o processamento sem frescura, e saber que pode ser implementado com uma minimo de hardware, essa mesma analise de flows do gráfico assim que está na casa dos 3GBps de tráfego temos o seguinte uso do hasrdware:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_htop.png" data-rel="lightbox-gallery-GG3vNybs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_htop.png" alt="" width="1114" height="277" class="alignnone size-full wp-image-3987" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_htop.png 1114w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_htop-300x75.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_htop-1024x255.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_htop-768x191.png 768w" sizes="auto, (max-width: 1114px) 100vw, 1114px" /></a></p>
<p>Se quiser fazer algum teste, para anunciar uma rotas manualmente user os seguintes comandos:</p>
<pre class="remontti-code"># echo &quot;announce route 100.101.255.200 next-hop 172.31.31.2 community 65001:666&quot; &gt; /var/run/exabgp.cmd</pre>
<p>E para remover:</p>
<pre class="remontti-code"># echo &quot;withdraw route 100.101.255.200 next-hop 172.31.31.2&quot;  &gt; /var/run/exabgp.cmd</pre>
<h3>Acordo de communities com sua operadora</h3>
<p>Não vai adiantar muito você identificar o IP que está tomando o ataque se você não repassar o mesmo para sua operadora e ela o mesmo. Como você identificou o IP que esta recebendo o ataque (ou ate mesmo atacando) o mesmos vai subir na sua tabela de rotas como tipo blackhole, logo seu roteador não vai mais responder para esse IP. <strong>Sim esse IP não terá mais internet </strong>(clientes, servidor&#8230;.) sim não terá! rsrs, por isso é importante receber o alerta, para saber qual medidas realizar. Nas configurações do fastnetmon existe um arquivo de <strong>lista branca /etc/networks_whitelist</strong> se desejar você pode incluir os IPs que não quer que o fastnetmon analise (logo não ira bani-lo) porém você também não vai saber se ele foi atacado, eu prefiro deixar esse networks_whitelist vazio e criar então um filtro no roteador para descartar os IPs que não quero que ele jogue na blackhole, assim eu sou notificado, e se o bicho realmente estiver pegando eu deixo passar o ip do servidor e penso no que vou fazer hehehe.</p>
<p>As grande operadoras normalmente tem uma politica de communities que aceita você repassar prefixos /32 com a communities onde em quase todos os casos é AS:666 ou 65xxx:666, então o que você precisa fazer é primeira mente entrar em contato com a mesma para pegar essas informações, caso ela não saiba do que você está falando manda esse o link  deste tutorial <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Bom, vamos imaginar que sua operadora senha o AS28146 (olha o marketing ai de graça/patrocina eu MH) e seu bloco seja 200.200.200.0/22, como ficaria seu filtro no seu MK? </p>
<pre class="remontti-code">/routing filter
add action=accept  chain=AS28146-IPv4-OUT bgp-communities=65001:666 prefix-length=32 set-bgp-communities=28146:666
add action=accept  chain=AS28146-IPv4-OUT prefix=45.189.228.0/22 prefix-length=22-23
add action=discard chain=AS28146-IPv4-OUT</pre>
<p>Explicando a primiera linha:<br />
<strong>action=accept</strong> &#8211;> aceita<br />
<strong>chain=AS28146-IPv4-OUT</strong> &#8211;> nome do seu filtro<br />
<strong>bgp-communities=65001:666</strong> -> todas as rotas marcadas com a communities=65001:666 (as q o fastnetmon nos enviou)<br />
<strong>prefix-length=32</strong> &#8211;> com prefixo apenas /32<br />
set-bgp-communities=28146:666 &#8211;> seta a communitie que você verificou com sua operadora</p>
<p>Se você quiser descartar algum IP, ex um servidor (como comentei anteriormente) apenas para a operadora você precisa colocar antes das regras (antes da linha 1). Ex servidor 200.200.200.7 quero descartar para não cair na blackhole:</p>
<pre class="remontti-code">/routing filter
add action=discard chain=AS28146-IPv4-OUT prefix=45.189.228.7/32 prefix-length=32 
add action=accept  chain=AS28146-IPv4-OUT bgp-communities=65001:666 prefix-length=32 set-bgp-communities=28146:666
add action=accept  chain=AS28146-IPv4-OUT prefix=45.189.228.0/22 prefix-length=22-23
add action=discard chain=AS28146-IPv4-OUT</pre>
<p>Agora se você simplesmente não quer que seja bloqueado de forma alguma é só add no filtro do peer com o fastnetmon.</p>
<pre class="remontti-code">/routing filter
add action=discard chain=FastNetMon-IN prefix=45.189.228.7/32 prefix-length=32
add action=accept  chain=FastNetMon-IN set-type=blackhole
add action=discard chain=FastNetMon-OUT</pre>
<p>Seria interessante fazer alguns teste de ataques (coisa pequena) de dentro da sua rede e de fora, escolha uma IP que não esteja em uso para tal! Para realizar esse ataque user o a ferramenta criada pelo ekovegeance:<br />
<a href="https://github.com/ekovegeance/DDOS" rel="noopener noreferrer" target="_blank">https://github.com/ekovegeance/DDOS</a></p>
<p>Em um servidor/desktop linux  vai precisar ter instalado os pacotes bash sudo curl netcat hping3 openssl stunnel nmap whois dnsutils.<br />
<a href="https://github.com/ekovegeance/DDOS/archive/v1.2.4.zip">Baixe os arquivos</a>, extraia entre em sua pasta e execute o arquivo ddos.</p>
<pre class="remontti-code">$ wget https://github.com/ekovegeance/DDOS/archive/v1.2.4.zip
$ unzip v1.2.4.zip 
$ cd DDOS-1.2.4/
$ ./ddos</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos.png" data-rel="lightbox-gallery-GG3vNybs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos.png" alt="" width="676" height="881" class="alignnone size-full wp-image-3988" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos.png 676w, https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos-230x300.png 230w" sizes="auto, (max-width: 676px) 100vw, 676px" /></a></p>
<p>Gostou? Se sentindo mais seguro agora?</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/3981">Proteja-se de ataques DoS/DDoS mitigando com FastNetMon e anuncie os prefixos atacados (blackholes) para sua operadora, usando Mikrotik :-)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3981/feed</wfw:commentRss>
			<slash:comments>47</slash:comments>
		
		
			</item>
	</channel>
</rss>
