<?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 Huawei - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/huawei/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/huawei</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Sat, 19 Oct 2024 01:03:15 +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 Huawei - Remontti</title>
	<link>https://blog.remontti.com.br/tag/huawei</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Aprenda a instalar um dos melhores Looking Glasses de código aberto: o Hyperglass</title>
		<link>https://blog.remontti.com.br/7201</link>
					<comments>https://blog.remontti.com.br/7201#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Thu, 30 Mar 2023 13:56:07 +0000</pubDate>
				<category><![CDATA[Huawei]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Arista EOS]]></category>
		<category><![CDATA[BGP AS Path]]></category>
		<category><![CDATA[BGP Community]]></category>
		<category><![CDATA[BIRD]]></category>
		<category><![CDATA[Cisco IOS-XR]]></category>
		<category><![CDATA[Cisco IOS/IOS-XE]]></category>
		<category><![CDATA[Cisco NX-OS]]></category>
		<category><![CDATA[Código Aberto]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[frrouting]]></category>
		<category><![CDATA[Hyperglass]]></category>
		<category><![CDATA[Juniper JunOS]]></category>
		<category><![CDATA[looking glass]]></category>
		<category><![CDATA[Nokia SR OS]]></category>
		<category><![CDATA[Personalização]]></category>
		<category><![CDATA[ping]]></category>
		<category><![CDATA[Rota BGP]]></category>
		<category><![CDATA[TNSR]]></category>
		<category><![CDATA[Traceroute]]></category>
		<category><![CDATA[VyOS]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7201</guid>

					<description><![CDATA[<p>O que é o Hyperglass O hyperglass é um espelho de rede de código aberto escrito por um engenheiro de rede para outros engenheiros de rede. O objetivo de um espelho é fornecer aos&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7201">Aprenda a instalar um dos melhores Looking Glasses de código aberto: o Hyperglass</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img fetchpriority="high" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass.jpg" alt="" width="720" height="340" class="size-full wp-image-7229" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass-520x245.jpg 520w" sizes="(max-width: 720px) 100vw, 720px" /></p>
<h3>O que é o <a href="https://hyperglass.dev/docs/introduction" rel="noopener" target="_blank">Hyperglass</a></h3>
<p>O hyperglass é um espelho de rede de código aberto escrito por um engenheiro de rede para outros engenheiros de rede. O objetivo de um espelho é fornecer aos clientes, colegas e completos estranhos uma visibilidade autônoma da rede de uma operadora. A hyperglass foi criada com o grande objetivo de beneficiar a comunidade da Internet em geral, fornecendo uma maneira mais rápida, fácil e segura para as operadoras fornecerem serviços de espelhos a seus clientes, colegas e outras operadoras de rede.</p>
<p><strong>Recursos:</strong><br />
 &#8211; Rota BGP<br />
 &#8211; BGP Community<br />
 &#8211; BGP AS Path<br />
 &#8211; Ping<br />
 &#8211; Traceroute</p>
<p><strong>Suporte para: </strong><br />
 &#8211; Arista EOS<br />
 &#8211; BIRD<br />
 &#8211; Cisco IOS-XR<br />
 &#8211; Cisco IOS/IOS-XE<br />
 &#8211; Cisco NX-OS<br />
 &#8211; FRRouting<br />
 &#8211; Huawei<br />
 &#8211; Juniper JunOS<br />
 &#8211; Mikrotik<br />
 &#8211; Nokia SR OS<br />
 &#8211; TNSR<br />
 &#8211; VyOS</p>
<p>Personalização recursos, tema, texto da UI/API, mensagens de erro e comandos.</p>
<p>Ao decorrer do tutorial irei deixar todos os links com referencia a documentação <a href="https://hyperglass.dev/docs/" rel="noopener" target="_blank">https://hyperglass.dev/docs/</a>, pois o mesmo tem muita possibilidades.</p>
<h4>Notas e agradecimento</h4>
<p>O hyperglass é tem sua principal base desenvolvida em Python e está disponível no github.com por <a href="https://github.com/thatmattlove" rel="noopener" target="_blank">thatmattlove</a>, no entanto conta com um grupo no <a href="https://t.me/hyperglasslg" rel="noopener" target="_blank">telegram</a> onde encontrei algumas soluções para huawei, meu conhecimento em Python é limitado (ainda), mas criei meu próprio <a href="https://github.com/remontti/hyperglass" rel="noopener" target="_blank">fork</a> do projeto, e realizei <a href="https://github.com/remontti/hyperglass/commits/main" rel="noopener" target="_blank">algumas alterações</a>. Deixar aqui uma agradecimento a <a href="https://github.com/thatmattlove/hyperglass/compare/main...eaitelecomunicacoes:hyperglass:add_huawei_support" rel="noopener" target="_blank">eaitelecomunicacoes</a> onde encontrei uma contribuição que me ajudou muito. Contamos com ajuda de todos para tornar o projeto algo ainda melhor! Se tiver melhorias nao deixe de realizar um <a href="https://github.com/remontti/hyperglass/pulls" rel="noopener" target="_blank">Pull requests</a>.</p>
<h4>Distribuição Linux</h4>
<p>Todos meus testes foram realizando em cima do Debian 11<br />
&#8211; <strong><a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank">Instalação do Debian 11 Bullseye limpa passo-a-passo</a></strong></p>
<p>Acesse seu servidor e se torne root da forma correta:</p>
<pre class="remontti-code"># su -</pre>
<h4>Pacotes necessários</h4>
<pre class="remontti-code"># apt install -y python3-dev python3-pip python3-pil python3-pil.imagetk\
 python3-libtiff python3-glymur libtiff-dev libfreetype-dev liblcms2-2\
 liblcms2-utils libwebp-dev libboost-dev libimagequant-dev libraqm-dev\
 libjpeg-dev wget unzip zip git curl gnupg2</pre>
<h4>Script de instalação</h4>
<pre class="remontti-code"># cd /tmp
# wget https://raw.githubusercontent.com/remontti/hyperglass/main/install.sh
# bash install.sh</pre>
<p>Ao finalize execute o comando hyperglass &#8211;help para ver se a instalação esta funcionando.</p>
<pre class="remontti-code"># hyperglass --help</pre>
<pre class="remontti-code-plain">
Usage: hyperglass [OPTIONS] COMMAND [ARGS]...

   hyperglass Command Line Interface

Options:
   -v, --version  <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f522.png" alt="🔢" class="wp-smiley" style="height: 1em; max-height: 1em;" /> hyperglass version
   -h, --help     <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f64f.png" alt="🙏" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Show this help message

Commands:
   build-ui     <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f98b.png" alt="🦋" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Create a new UI build
   clear-cache  <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9fc.png" alt="🧼" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Clear the Redis cache
   secret       <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f512.png" alt="🔒" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Generate agent secret
   setup        <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9f0.png" alt="🧰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Run the setup wizard
   start        <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Start web server
   system-info  <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f321.png" alt="🌡" class="wp-smiley" style="height: 1em; max-height: 1em;" />  Get system information for a bug report</pre>
<h3>Configurando hyperglass</h3>
<pre class="remontti-code"># hyperglass setup</pre>
<p>Vamos definir o diretório de configurações, selecione com a seta para baixo <strong>/etc/hyperglass</strong></p>
<pre class="remontti-code-plain">[?] Choose a directory for hyperglass: /etc/hyperglass
   /root/hyperglass
 &gt; /etc/hyperglass</pre>
<p>Antes de deixar você chanar no <strong>erro webpack</strong>:</p>
<pre class="remontti-code-plain">
[ERROR] 20230330 10:02:32 | hyperglass.util.frontend:401 | build_frontend → 
Messages:
info  - Using webpack 5. Reason: future.webpack5 option enabled https://nextjs.org/docs/messages/webpack5</pre>
<p>Vamos a solução localize `webpack5: true,` e altere para `webpack5: false,`</p>
<pre class="remontti-code"># sed -i &#039;s/webpack5: true,/webpack5: false,/g&#039; /usr/local/lib/python3.9/dist-packages/hyperglass/ui/next.config.js</pre>
<h4>Parâmetros de configuração</h4>
<p>Crie o arquivo /etc/hyperglass/hyperglass.yaml</p>
<pre class="remontti-code"># vim /etc/hyperglass/hyperglass.yaml</pre>
<p>Ajuste suas informações. <a href="https://hyperglass.dev/docs/parameters" rel="noopener" target="_blank">Doc</a>.</p>
<pre class="remontti-code-plain">
# https://hyperglass.dev/docs/parameters
debug: false
developer_mode: false
org_name: Remontti Telecom
primary_asn: 12345
site_title: Looking Glass Remontti
site_description: &quot;{org_name} Network Looking Glass&quot;
site_keywords: [hyperglass, looking glass, routing, bgp]
request_timeout: 30
listen_address: &quot;172.18.18.79&quot;  # IP que ira startar o serviço
listen_port: 80  # Porta do servico
#
# https://hyperglass.dev/docs/response-caching
cache:
  database: 0
  host: localhost
  port: 6379
  show_text: true
  timeout: 120
#
# https://hyperglass.dev/docs/messages/
messages:
  acl_denied: &quot;{target} is a member of {denied_network}, which is not allowed.&quot;
  acl_not_allowed: &quot;{target} is not allowed.&quot;
  authentication_error: Authentication error occurred.
  connection_error: &quot;Error connecting to {device_name}: {error}&quot;
  feature_not_enabled: &quot;{feature} is not enabled for {device_name}.&quot;
  general: Something went wrong.
  invalid_field: &quot;{input} is an invalid {field}.&quot;
  invalid_input: &quot;{target} is not a valid {query_type} target.&quot;
  no_input: &quot;{field} must be specified.&quot;
  no_output: The query completed, but no matching results were found.
  no_response: No response.
  parsing_error: An error occurred while parsing the query output.
  request_timeout: Request timed out.
  vrf_not_associated: VRF {vrf_name} is not associated with {device_name}.
  vrf_not_found: VRF {vrf_name} is not defined.
#
# https://hyperglass.dev/docs/logging/ (/var/log/hyperglass.log)
logging:
  directory: /var/log
  format: text
  max_size: 50 MB
#
# https://hyperglass.dev/docs/query-settings/
queries:
  bgp_route:
    display_name: BGP Route
    enable: true
  bgp_community:
    #Huwei modo structured não fuciona
    display_name: BGP Community
    enable: false
    mode: select
    communities:
      - community: 12345:666
        display_name: Blackhole
        description: 12345:666
  bgp_aspath:
    #Huwei modo structured não fuciona
    display_name: BGP AS Path
    enable: false
    pattern:
      asdot: &#039;^(\^|^\_)((\d+\.\d+)\_|(\d+\.\d+)\$|(\d+\.\d+)\(\_\.\+\_\))+$&#039;
      asplain: &#039;^(\^|^\_)(\d+\_|\d+\$|\d+\(\_\.\+\_\))+$&#039;
      mode: asplain
  ping:
    display_name: Ping
    enable: true
  traceroute:
    display_name: Traceroute
    enable: true
    #
# https://hyperglass.dev/docs/table-output/
structured:
  rpki:
    mode: external

#  communities:
#    #Para não exibir nenhuma communities    
#    mode: deny

#  communities:
#    # Para permitir apenas...
#    mode: permit
#    items:
#      - &#039;65000:\d+&#039;
#      - &#039;65[1-4]00:\d+&#039;

# https://hyperglass.dev/docs/ui/configuration/
web:
  links:
    - title: PeeringDB
      url: https://www.peeringdb.com/asn/12345
      side: left
      order: 1
    - title: Qrator
      url: https://radar.qrator.net/AS12345
      side: left
      order: 2
    - title: RADb
      url: https://www.radb.net/query?advanced_query=&amp;keywords=AS12345
      side: left
      order: 3
    - title: IRR Explorer
      url: https://irrexplorer.nlnog.net/asn/AS12345
      side: left
      order: 4
    - title: RDAP
      url: https://rdap.registro.br/autnum/12345
      side: left
      order: 5    
    - title: Remontti
      url: https://www.remontti.com.br
      side: right
      order: 0
  menus:
    - title: Contato
      content: &quot;Please contact [noc@remontti.com.br](mailto:noc@remontti.com.br) to get support.&quot;
      side: right
    - title: Termos e Condições
      content: /etc/hyperglass/terms-and-conditions.md
      side: right
  # https://hyperglass.dev/docs/ui/logo
  logo:
    dark: /etc/hyperglass/static/images/hyperglass-dark.svg
    light: /etc/hyperglass/static/images/hyperglass-light.svg
    favicon: /etc/hyperglass/static/images/hyperglass-icon.svg
    height: null
    width: 100%
  # https://hyperglass.dev/docs/ui/text
  text:
    cache_icon: Cached from {time} UTC
    cache_prefix: &quot;Results cached for &quot;
    complete_time: Completed in {seconds}
    fqdn_error: Unable to resolve {fqdn}
    fqdn_error_button: Try Again
    fqdn_message: Your browser has resolved {fqdn} to
    fqdn_tooltip: Use {protocol}
    no_communities: No Communities
    query_location: Location
    query_target: Target
    query_type: Query Type
    query_vrf: Routing Table
    rpki_invalid: Invalid
    rpki_unknown: No ROAs Exist
    rpki_unverified: Not Verified
    rpki_valid: Valid
    subtitle: Network Looking Glass
    title: hyperglass
    title_mode: logo_subtitle
  # https://hyperglass.dev/docs/ui/theme
  # https://hyperglass.dev/docs/ui/example</pre>
<h4>Adicionando Dispositivos</h4>
<p>Para adicionar seus dispositivos para cunsultas LG, crie o arquivo /etc/hyperglass/devices.yaml. Vou deixar um exemplo básico para Huawei, Mikrotik e comando personalizados com Linux. <a href="https://hyperglass.dev/docs/adding-devices" rel="noopener" target="_blank">Docs</a>  </p>
<pre class="remontti-code"># vim /etc/hyperglass/devices.yaml</pre>
<p>Adicione de acordo suas configurações</p>
<pre class="remontti-code-plain">
# https://hyperglass.dev/docs/adding-devices
routers:
  - name: AS12345 Remontti
    address: 10.50.50.25
    network:
      name: as12345
      display_name: Huawei
    credential:
      username: lookingglass
      password: supersenha
    port: 22
    nos: huawei
    vrfs:
      - name: global
        default: true
        ipv4:
          source_address: 200.200.200.200
          access_list:
            - network: 10.0.0.0/8
              action: deny
            - network: 192.168.0.0/16
              action: deny
            - network: 100.64.0.0/10
              action: deny
            - network: 172.16.0.0/12
              action: deny
            - network: 0.0.0.0/0
              action: permit
              ge: 8
              le: 32
        ipv6:
          source_address: 2000:2000:1::1
          access_list:
            - network: ::/0
              action: permit
              ge: 32
              le: 128

  - name: Mkzao Remontti
    address: 172.18.18.1
    network:
      name: routerosrr
      display_name: Mikrotik
    credential:
      username: usuario
      password: senha
    port: 22
    nos: mikrotik_routeros
    vrfs:
      - name: global
        default: true
        ipv4:
          source_address: 172.18.18.1
        ipv6:
          source_address: 2001:db8::2

  - name: Localhost Hyperglass
    address: 127.0.0.1
    network:
      name: test1
      display_name: Linux
    credential:
      username: usuario
      password: senha
    nos: linux
    commands: linux_comando_personlizado
    vrfs:
      - name: global
        default: true
        ipv4:
          source_address: 192.168.0.5
        ipv6:
          source_address: 2001:db8:bebe:cafe:5</pre>
<h4>Comandos personalizados</h4>
<pre class="remontti-code"># vim /etc/hyperglass/commands.yaml</pre>
<p>Acima adicionei um device linux, qual temos <a href="https://hyperglass.dev/docs/commands" rel="noopener" target="_blank">comandos personalizado</a>, segue um exemplo de como seria. Crie o arquivo /etc/hyperglass/commands.yaml</p>
<pre class="remontti-code-plain">#https://hyperglass.dev/docs/commands
linux_comando_personlizado:
  ipv4_default:
    bgp_route: &#039;echo bgp_route &quot;{target}&quot;&#039;
    bgp_aspath: &#039;echo bgp_aspath &quot;{target}&quot;&#039;
    bgp_community: &#039;echo bgp_community &quot;{target}&quot;&#039;
    ping: &#039;ping -c 4 &quot;{target}&quot;&#039;
    traceroute: &#039;traceroute -n &quot;{target}&quot;&#039;
  ipv6_default:
    bgp_route: &#039;echo &quot;{target}&quot;&#039;
    bgp_aspath: &#039;echo &quot;{target}&quot;&#039;
    bgp_community: &#039;echo &quot;{target}&quot;&#039;
    ping: &#039;echo &quot;{target}&quot;&#039;
    traceroute: &#039;echo &quot;{target}&quot;&#039;
  ipv4_vpn:
    bgp_route: &#039;echo &quot;{vrf} {target}&quot;&#039;
    bgp_aspath: &#039;echo &quot;{vrf} {target}&quot;&#039;
    bgp_community: &#039;echo &quot;{vrf} {target}&quot;&#039;
    ping: &#039;echo &quot;{vrf} {target}&quot;&#039;
    traceroute: &#039;echo &quot;{vrf} {target}&quot;&#039;
  ipv6_vpn:
    bgp_route: &#039;echo &quot;{vrf} {target}&quot;&#039;
    bgp_aspath: &#039;echo &quot;{vrf} {target}&quot;&#039;
    bgp_community: &#039;echo &quot;{vrf} {target}&quot;&#039;
    ping: &#039;echo &quot;{vrf} {target}&quot;&#039;
    traceroute: &#039;echo &quot;{vrf} {target}&quot;&#039;</pre>
<p>Crie um arquivo para seis termos:</p>
<pre class="remontti-code"># vim /etc/hyperglass/terms-and-conditions.md</pre>
<p>Descreva de acordo suas políticas.</p>
<pre class="remontti-code-plain">Ao usar {site_title}, você concorda em cumprir os seguintes termos de uso:

Todas as consultas executadas nesta página são registradas para análise e solução de problemas. 
Os usuários estão proibidos de automatizar consultas ou tentar processar consultas em massa. Este serviço é fornecido com base no melhor esforço, e {org_name} não oferece garantias ou garantias de disponibilidade ou desempenho.</pre>
<p>Agora vamos a construção da interface do usuário. o Comando a baixo pode levar uns minutinho.</p>
<pre class="remontti-code"># cd /etc/hyperglass/
# hyperglass build-ui</pre>
<p>Aguarde até ter a resposta:</p>
<pre class="remontti-code-plain">[SUCCESS] 20230329 21:36:48 | hyperglass.util.frontend:386 | build_frontend → Completed UI build
<img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Completed UI build in production mode</pre>
<h4>Iniciando o serviço</h4>
<p>Poderíamos iniciar com o comando `hyperglass start`, mas vamos criar um serviço no linux para fazer esse trabalho, para deixar até mesmo automatizado durante o boot. para isso irei criar uma pasta /etc/hyperglass/service/ onde irei criar nosso serviço.</p>
<pre class="remontti-code"># mkdir /etc/hyperglass/service/
# vim /etc/hyperglass/service/hyperglass.service</pre>
<p>Agora vamos instruir o que deve ser feito.</p>
<pre class="remontti-code-plain">
[Unit]
Description=hyperglass
After=network.target
Requires=redis-server.service

[Service]
User=root
Group=root
ExecStart=/usr/local/bin/hyperglass start
ExecStop=/usr/bin/pkill -f hyperglass

TimeoutStartSec=120
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target</pre>
<p>Vamos cria um apontamento, recarecar nosso daemon, dar um enable para deixar iniciando com o boot, em seguida vamos iniciar o serviço.</p>
<pre class="remontti-code"># ln -s /etc/hyperglass/service/hyperglass.service /etc/systemd/system/hyperglass.service
# systemctl daemon-reload
# systemctl enable hyperglass 
# systemctl start hyperglass
# systemctl status hyperglass</pre>
<p>Pode levar um minutinho até iniciar, você pode acompanhar os logs.</p>
<pre class="remontti-code"># tail -f /var/log/hyperglass.log</pre>
<p>Quando aparecer a mensagem a baixo você pode acessar em seu navegador:</p>
<pre class="remontti-code-plain">
...Started hyperglass 1.0.4 on http://SEUIP:PORTA with 6 workers</pre>
<p>Pode verificar também as portas que estão sendo ouvidas.</p>
<pre class="remontti-code"># ss -putan  | grep LISTEN | grep hyperglass</pre>
<p>Acesse me seu navegador http://SEUIP:PORTA</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_0.png" data-rel="lightbox-gallery-lvFyeCLV" data-rl_title="" data-rl_caption="" title=""><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_0.png" alt="" width="1773" height="773" class="alignnone size-full wp-image-7215" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_0.png 1773w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_0-300x131.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_0-1024x446.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_0-768x335.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_0-1536x670.png 1536w" sizes="(max-width: 1773px) 100vw, 1773px" /></a></p>
<h3>Bonus: Proxy Nginx + Https</h3>
<p>É bem comum querer executar o hyperglass em outra porta e somente para localhost, e criar um proxy para acesso web bem como ativar suporte https para sua página, pois em alguns casos ele pode esta rodando junto com outros serviços sem problema algum. Não é necessário ter uma &#8220;VM&#8221; só para isso. Vamos ao exemplo</p>
<pre class="remontti-code"># vim /etc/hyperglass/hyperglass.yaml</pre>
<p>Altere o IP em <strong>listen_address</strong> para nosso endereço da loopback <strong>127.0.0.1</strong> e defina outra porta <strong>listen_port</strong> que ira rodar o serviço, no meu caso vou usar <strong>58000</strong></p>
<pre class="remontti-code-plain">listen_address: &quot;127.0.0.1&quot;
listen_port: 58000</pre>
<p>Reinicie o hyperglass</p>
<pre class="remontti-code">systemctl restart hyperglass</pre>
<p><strong>Instale o Nxgix</strong></p>
<pre class="remontti-code"># apt install nginx
# sed -i &#039;s/# server_tokens/server_tokens/&#039; /etc/nginx/nginx.conf</pre>
<p>Em alguns caso recomendo deletar as conf padrões, caso tiver problemas.</p>
<pre class="remontti-code"># rm /etc/nginx/sites-enabled/default</pre>
<p>Crie um arquivo de configuração o nginx criar um proxy do nosso hyperglass</p>
<pre class="remontti-code"># vim /etc/nginx/sites-available/hyperglass.conf</pre>
<p>Adicione</p>
<pre class="remontti-code-plain">
server {
  listen 80;
  listen [::]:80;
  server_name lg.remontti.com.br;
  #server_name _;

  # Descomente para deixar restrito apenas para determinados prefixos ou IPs.
  #allow  192.168.87.0/24;
  #allow  127.0.0.1;
  #allow  2001:0db8::/32;
  #allow  ::1;
  #deny   all;
  #error_page  403   http://www.remontti.com.br;

  client_max_body_size 2M;
  root /etc/hyperglass/static;

  location / {
    try_files $uri $uri/ /ui /ui/$uri =404;
    index /ui/index.html;
  }

  location /openapi.json {
      try_files $uri @proxy_to_app;
  }

  location /custom/ {
      try_files $uri $uri/ /custom;
  }

  location /images/ {
      try_files $uri $uri/ /images;
  }

  location /api {
      try_files $uri @proxy_to_app;
  }

  location @proxy_to_app {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://127.0.0.1:58000;
  }
}</pre>
<p>Link o arquivo no diretório /etc/nginx/sites-enabled qual será carregado ao iniciar o nginx, em seguira reinicie o serviço do nginx.</p>
<pre class="remontti-code"># ln -s /etc/nginx/sites-available/hyperglass.conf /etc/nginx/sites-enabled/hyperglass.conf
# systemctl restart nginx</pre>
<p>Agora você já pode acessar seu hyperglass através do nginx.</p>
<h4>Criando certificado</h4>
<p>Ao executar o <strong>Certbot</strong> instalado via apt tive alguns erros do python, acredito que conflitou alguma coisa com o hyperglass, (como meu tempo é bem curto inclusive para esta escrevendo aqui) realizei a instalação via <strong>snap</strong> qual resolveu meu problema.<br />
Segue a instalação do snap:</p>
<pre class="remontti-code"># apt install snapd
# snap install core</pre>
<p>Instale o certbot via snap, crie um link em nossos binários, em seguida execute ele. </p>
<pre class="remontti-code"># snap install --classic certbot
# ln -s /snap/bin/certbot /usr/bin/certbot
# certbot</pre>
<p>Informe os dados, ao finalizar o mesmo irá já ajustar seu arquivo do nginx, e basta acessar seu domínio.</p>
<p>Não esqueça que a cada 90 dias o certificado expira, então crie uma rotina para renovação, você pode adicionar ao cron agendando por exemplo para todo dia primeiro tentar renovar.</p>
<pre class="remontti-code"># echo &#039;00 00   1 * *   root     certbot renew -q&#039; &gt;&gt; /etc/crontab
# systemctl restart cron</pre>
<p><strong>Parabéns você finalizou! 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>
<h4>Prints</h4>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_0.png" data-rel="lightbox-gallery-lvFyeCLV" data-rl_title="" data-rl_caption="" title=""><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_0-300x131.png" alt="" width="300" height="131" class="alignnone size-medium wp-image-7215" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_0-300x131.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_0-1024x446.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_0-768x335.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_0-1536x670.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_0.png 1773w" sizes="(max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1.png" data-rel="lightbox-gallery-lvFyeCLV" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1-300x141.png" alt="" width="300" height="141" class="alignnone size-medium wp-image-7216" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1-300x141.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1-1024x482.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1-768x362.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1-1536x723.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1-520x245.png 520w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1-720x340.png 720w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1.png 1773w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_3.png" data-rel="lightbox-gallery-lvFyeCLV" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_3-300x131.png" alt="" width="300" height="131" class="alignnone size-medium wp-image-7214" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_3-300x131.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_3-1024x446.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_3-768x335.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_3-1536x670.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_3.png 1773w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_4.png" data-rel="lightbox-gallery-lvFyeCLV" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_4-300x137.png" alt="" width="300" height="137" class="alignnone size-medium wp-image-7213" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_4-300x137.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_4-1024x468.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_4-768x351.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_4-1536x702.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_4-980x450.png 980w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_4.png 1773w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_2.png" data-rel="lightbox-gallery-lvFyeCLV" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_2-300x131.png" alt="" width="300" height="131" class="alignnone size-medium wp-image-7211" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_2-300x131.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_2-1024x446.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_2-768x335.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_2-1536x670.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_2.png 1773w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_5.png" data-rel="lightbox-gallery-lvFyeCLV" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_5-300x216.png" alt="" width="300" height="216" class="alignnone size-medium wp-image-7210" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_5-300x216.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_5-1024x737.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_5-768x553.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_5-1536x1105.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_5.png 1773w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1_1.png" data-rel="lightbox-gallery-lvFyeCLV" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1_1-300x131.png" alt="" width="300" height="131" class="alignnone size-medium wp-image-7212" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1_1-300x131.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1_1-1024x446.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1_1-768x335.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1_1-1536x670.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/03/hyperglass_huawei_1_1.png 1773w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Abraço!</p>
<p><strong>Fontes:</strong><br />
<a href="https://hyperglass.dev/" rel="noopener" target="_blank">https://hyperglass.dev/</a><br />
<a href="https://hyperglass.dev/docs/" rel="noopener" target="_blank">https://hyperglass.dev/docs/</a></p>
<p>O post <a href="https://blog.remontti.com.br/7201">Aprenda a instalar um dos melhores Looking Glasses de código aberto: o Hyperglass</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7201/feed</wfw:commentRss>
			<slash:comments>17</slash:comments>
		
		
			</item>
		<item>
		<title>BGP Monitoring Protocol (BMP) aprenda a instalar o OpenBMP</title>
		<link>https://blog.remontti.com.br/6723</link>
					<comments>https://blog.remontti.com.br/6723#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Thu, 04 Aug 2022 23:47:18 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bgp]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[grafana]]></category>
		<category><![CDATA[Huawei]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[junos]]></category>
		<category><![CDATA[monitoramento]]></category>
		<category><![CDATA[openbmp]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6723</guid>

					<description><![CDATA[<p>openBMP é um sistema de monitoramento BGP. Compatível com protocolo de monitoramento BGP (BMP). Os dados BGP são armazenados no banco de dados PostgreSQL. Os RIBs são mantidos pelo estado, bem como o histórico&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6723">BGP Monitoring Protocol (BMP) aprenda a instalar o OpenBMP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.openbmp.org/"><strong>openBMP</strong></a> é um sistema de monitoramento BGP. Compatível com protocolo de monitoramento BGP (BMP). Os dados BGP são armazenados no banco de dados PostgreSQL. Os RIBs são mantidos pelo estado, bem como o histórico completo para cada atualização do BGP.</p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-flow.png" alt="" width="640" height="565" class="alignnone size-full wp-image-6727" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-flow.png 640w, https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-flow-300x265.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<p>&#8211; Dispositivos BMP (por exemplo, roteadores) enviam mensagens BMP para um coletor/daemon OpenBMP. Um daemon OpenBMP pode lidar com muitos roteadores e peers bgp, mas em uma rede grande com links de trânsito e tabelas de roteamento de internet completas, vários coletores OpenBMP são recomendados. Basta configurar no dispositivo BMP (roteador) qual servidor BMP deve ser utilizado.</p>
<p>&#8211; O Kafka permite que muitos aplicativos acessem os feeds BMP existentes de qualquer número de roteadores. Um único feed BMP via OpenBMP pode alimentar centenas de aplicativos de consumo, como MySQL, Cassandra, monitores em tempo real, arquivo simples, ELK, Apache Spark, etc.</p>
<p>&#8211; Administradores, engenheiros de rede, programas/scripts automatizados, etc. interagem com a API OpenBMP ou qualquer outro aplicativo de consumo</p>
<h5>Casos de uso</h5>
<p><em>(Tradução de: <a href="https://www.openbmp.org">https://www.openbmp.org</a>)</em><br />
Existem muitas razões para usar o OpenBMP, mas para destacar algumas comuns:</p>
<p>&#8211; Coletor BMP Centralizado &#8211; OpenBMP é um produtor para Kafka. Você pode escrever seu próprio consumidor ou usar um existente. Outros produtos podem interagir com o OpenBMP via Apache Kafka para fluxos RAW BMP ou as mensagens analisadas. Consulte Especificação da API do Barramento de Mensagens para obter mais detalhes.</p>
<p>&#8211; Monitoramento de topologia em tempo real &#8211; Pode monitorar e alertar sobre alterações de topologia, alterações de política ou falta de aplicação, vazamento de rota, seqüestro, etc.</p>
<p>&#8211; Segurança de BGP/Rota &#8211; Vazamento de rota, seqüestro por origem, por melhores caminhos de trânsito ou desvio da linha de base</p>
<p>&#8211; Espelhos &#8211; IPv4, IPv6 e VPN4</p>
<p>&#8211; Route Analytics &#8211; Rastreie tempos de convergência, histórico de prefixos conforme eles mudam ao longo do tempo, monitore e rastreie mudanças de política BGP, etc…</p>
<p>&#8211; Análise de Engenharia de Tráfego &#8211; Adapte-se dinamicamente às mudanças e saiba qual é a melhor mudança</p>
<p>&#8211; Hipóteses pré-políticas de BGP &#8211; As informações de roteamento pré-políticas fornecem informações sobre todos os atributos de caminho de vários pontos na rede, permitindo visualizações de topologia hipotéticas não intrusivas para novas validações de políticas</p>
<p>&#8211; Topologia IGP &#8211; BGP-LS (link-state) fornece a topologia completa do IGP (OSPF e/ou IS-IS). A topologia IGP fornece informações de nível de nó, link e prefixo. Isso inclui todos os próximos saltos do BGP. Agora é possível fazer uma seleção de melhor caminho BGP com métrica IGP para informações Adj-In-RIB. Também é possível monitorar o próprio IGP no que se refere a links, nós, prefixos e BGP.</p>
<p>Quem desejar se aprofundar mais tem um lindo artigo no <a href="https://wiki.brasilpeeringforum.org/w/Solucoes_para_o_gerenciamento_efetivo_do_bgp_em_um_sistema_autonomo" rel="noopener" target="_blank">Brasil Peering Fórum</a> escrito pelo <a href="https://www.linkedin.com/in/leofurtadonyc/" rel="noopener" target="_blank">Leonardo Furtado</a>. Agradeço ao <a href="https://www.linkedin.com/in/rudsoncosta/" rel="noopener" target="_blank">Rudson Costa</a> por me apresentar a ferramenta e me instigar a escrever este tutorial.</p>
<p><strong>Distribuição utilizada neste tutorial:</strong><br />
Debian 11 (Bullseye) 64 bits <a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank">instalação mínima</a><br />
<a href="https://blog.remontti.com.br/5867" rel="noopener" target="_blank">Como melhorar a produtividade no seu Debian após instalação</a> (Recomendado)</p>
<p>Atualize e instale os pacotes necessários</p>
<pre class="remontti-code"># apt update -y 
# apt upgrade -y 
# apt install wget git vim nano docker-compose htop tree -y </pre>
<p>Crie o diretório qual iremos baixar o projeto OpenBMP</p>
<pre class="remontti-code"># mkdir /root/obmp-install
# cd /root/obmp-install
# wget https://raw.githubusercontent.com/OpenBMP/obmp-docker/main/docker-compose.yml 
# git clone https://github.com/OpenBMP/obmp-grafana.git</pre>
<p>Crie todos os diretórios e de as devidas permissões <em>(segui a documentação, antes de vir me criticar do 777)</em></p>
<pre class="remontti-code"># export OBMP_DATA_ROOT=/var/openbmp
# mkdir -p $OBMP_DATA_ROOT
# mkdir -p ${OBMP_DATA_ROOT}/config
# chmod -R 777 ${OBMP_DATA_ROOT}/config
# mkdir -p ${OBMP_DATA_ROOT}/zk-data
# mkdir -p ${OBMP_DATA_ROOT}/zk-log
# chown -R 1000:1000 ${OBMP_DATA_ROOT}/zk-*/
# mkdir -p ${OBMP_DATA_ROOT}/postgres/data
# mkdir -p ${OBMP_DATA_ROOT}/postgres/ts
# chown -R 1000:1000 ${OBMP_DATA_ROOT}/postgres/
# mkdir -p ${OBMP_DATA_ROOT}/kafka-data
# chown -R 1000:1000 ${OBMP_DATA_ROOT}/kafka-data/
# chmod 777 ${OBMP_DATA_ROOT}/kafka-data
# mkdir -p ${OBMP_DATA_ROOT}/grafana
# cp -r obmp-grafana/dashboards obmp-grafana/provisioning ${OBMP_DATA_ROOT}/grafana/
# chmod -R 777 ${OBMP_DATA_ROOT}/grafana</pre>
<p>Verifique se tudo foi criado</p>
<pre class="remontti-code"># tree $OBMP_DATA_ROOT</pre>
<p>Ajuste a memória Psql-App leia mais <a href="https://www.openbmp.org/getting_started.html#vm-sizing" rel="noopener" target="_blank">aqui</a> sobre requisitos de hardware</p>
<pre class="remontti-code"># sed -i &#039;s/- MEM=3/- MEM=4/&#039; docker-compose.yml</pre>
<p>Agora iremos subir todos os containes:</p>
<pre class="remontti-code"># OBMP_DATA_ROOT=/var/openbmp docker-compose -f ./docker-compose.yml -p obmp up -d</pre>
<p>Verifique se todos os containes estão Ups</p>
<pre class="remontti-code">docker ps</pre>
<pre class="remontti-code-plain">#CONTAINER ID   IMAGE                             COMMAND                  CREATED          STATUS          PORTS                                        NAMES
#079afaaba23f   confluentinc/cp-kafka:7.1.1       &quot;/etc/confluent/dock…&quot;   24 minutes ago   Up 24 minutes   0.0.0.0:9092-&gt;9092/tcp                       obmp-kafka
#fc2f5a316138   openbmp/whois:2.2.0               &quot;/bin/sh -c &#039;/usr/lo…&quot;   24 minutes ago   Up 24 minutes   0.0.0.0:4300-&gt;43/tcp                         obmp-whois
#47d8776c4fc9   openbmp/psql-app:2.2.1            &quot;/usr/sbin/run&quot;          24 minutes ago   Up 23 minutes   0.0.0.0:9005-&gt;9005/tcp                       obmp-psql-app
#9b97cc146ff7   openbmp/postgres:2.2.0            &quot;/docker-entrypoint.…&quot;   24 minutes ago   Up 24 minutes   8008/tcp, 0.0.0.0:5432-&gt;5432/tcp, 8081/tcp   obmp-psql
#dc694dd40972   openbmp/collector:2.2.0           &quot;/usr/sbin/run&quot;          24 minutes ago   Up 24 minutes   0.0.0.0:5000-&gt;5000/tcp                       obmp-collector
#305a1f316ba8   confluentinc/cp-zookeeper:7.1.1   &quot;/etc/confluent/dock…&quot;   24 minutes ago   Up 24 minutes   2181/tcp, 2888/tcp, 3888/tcp                 obmp-zookeeper
#949272653acb   grafana/grafana:8.5.4             &quot;/run.sh&quot;                24 minutes ago   Up 24 minutes   0.0.0.0:3000-&gt;3000/tcp                       obmp-grafana</pre>
<p>Acesse o grafana na porta 3000 deslogue e logue novamente com usuário <strong>admin</strong> e senha <strong>openbmp</strong> e faça a alteração do mesmo.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-grafana.png" alt="" width="1580" height="870" class="alignnone size-full wp-image-6734" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-grafana.png 1580w, https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-grafana-300x165.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-grafana-1024x564.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-grafana-768x423.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-grafana-1536x846.png 1536w" sizes="auto, (max-width: 1580px) 100vw, 1580px" /></p>
<h3>Criando um firewall para proteger</h3>
<p>Podemos consultar com o comando ss várias portas abertas, por segurança vamos fecha-las.</p>
<pre class="remontti-code"># ss -putan | grep LIST</pre>
<pre class="remontti-code-plain">tcp   LISTEN 0      128          0.0.0.0:22          0.0.0.0:*     users:((&quot;sshd&quot;,pid=441,fd=3))                        
tcp   LISTEN 0      4096         0.0.0.0:5432        0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=5651,fd=4))               
tcp   LISTEN 0      4096         0.0.0.0:3000        0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=5547,fd=4))               
tcp   LISTEN 0      4096         0.0.0.0:9092        0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=6188,fd=4))               
tcp   LISTEN 0      4096         0.0.0.0:5000        0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=5576,fd=4))               
tcp   LISTEN 0      4096       127.0.0.1:42315       0.0.0.0:*     users:((&quot;containerd&quot;,pid=429,fd=13))                 
tcp   LISTEN 0      4096         0.0.0.0:4300        0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=5756,fd=4))               
tcp   LISTEN 0      4096         0.0.0.0:9005        0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=6559,fd=4))               
tcp   LISTEN 0      128             [::]:22             [::]:*     users:((&quot;sshd&quot;,pid=441,fd=4))  </pre>
<p>O nftablesjá vem por padrão instalado no Debian 11. </p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<p>Neste exemplo (quase q auto explicativo) vou deixar apenas a porta do Grafana aberta, as demais restritas a variável <strong>ACESSO_EXTERNO</strong>.</p>
<pre class="remontti-code">#!/usr/sbin/nft -f

flush ruleset

define PORTAS_RESTRITAS = { 22,4300,5000,5432,9092,9005 }
define PORTAS_ABERTAS = { 3000 }

define ACESSO_EXTERNO_IPv4 = { 172.16.0.0/12, 10.0.0.0/8, 200.200.200.0/24 }
define ACESSO_EXTERNO_IPv6 = { 2001:db8:1::/64 }

define ACESSO_LOCALHOST_IPv4 = { 127.0.0.0/8 }
define ACESSO_LOCALHOST_IPv6 = { ::1/128 }

table inet filter {
    set src_ipv4 {
        type ipv4_addr
        flags interval
        elements = { $ACESSO_LOCALHOST_IPv4, $ACESSO_EXTERNO_IPv4 }
    }
    set src_ipv6 {
        type ipv6_addr
        flags interval
        elements = { $ACESSO_LOCALHOST_IPv6, $ACESSO_EXTERNO_IPv6 }
    }
    chain input {
        type filter hook input priority 0;
        ip saddr  != @src_ipv4 tcp dport { $PORTAS_RESTRITAS } counter drop
        ip6 saddr != @src_ipv6 tcp dport { $PORTAS_RESTRITAS } counter drop

        tcp dport { $PORTAS_ABERTAS } counter accept
        
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}</pre>
<p>Habilite para o boot e reinicie o nftables </p>
<pre class="remontti-code"># systemctl enable nftables 
# systemctl restart nftables </pre>
<p>Se desejar matar todos os containes rode:</p>
<pre class="remontti-code"># cd /root/obmp-install
OBMP_DATA_ROOT=/var/openbmp docker-compose -p obmp down</pre>
<p>Para apagar tudo:</p>
<pre class="remontti-code"># rm -rf /var/openbmp</pre>
<h4>Integração com Huawei</h4>
<pre class="remontti-code">bmp
 #
 bmp-session __IP_SERVIDOR__ alias meuprovedor
 tcp connect port 5000
 #
 monitor public
  route-mode ipv4-family unicast adj-rib-in pre-policy
 #
 monitor peer __IP_SERVIDOR__
#
bgp xxxx
 ipv4-family unicast
 peer __IP_PEER_MONITORADO__ keep-all-routes
</pre>
<p><strong>Se quiser apoiar o blog e 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><strong>FONTE:</strong> <a href="https://www.openbmp.org/" rel="noopener" target="_blank">https://www.openbmp.org/</a></p>
<p>O post <a href="https://blog.remontti.com.br/6723">BGP Monitoring Protocol (BMP) aprenda a instalar o OpenBMP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6723/feed</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Aprenda instalar o ElastiFlow, uma poderosa ferramenta para análise de tráfego de rede no Debian 11 Bullseye</title>
		<link>https://blog.remontti.com.br/6255</link>
					<comments>https://blog.remontti.com.br/6255#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Thu, 10 Mar 2022 18:29:24 +0000</pubDate>
				<category><![CDATA[Huawei]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[ASN]]></category>
		<category><![CDATA[Elasticsearch]]></category>
		<category><![CDATA[ElastiFlow]]></category>
		<category><![CDATA[flows]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6255</guid>

					<description><![CDATA[<p>Coletor de fluxo unificado ElastiFlow O ElastiFlow ™ Unified Flow Collector recebe, decodifica, transforma, normaliza, traduz e enriquece registros de fluxo de rede e telemetria enviados de dispositivos e aplicativos de rede usando IPFIX,&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6255">Aprenda instalar o ElastiFlow, uma poderosa ferramenta para análise de tráfego de rede no Debian 11 Bullseye</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/03/ElastiFlow.png" alt="" width="720" height="340" class="alignnone size-full wp-image-6414" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/03/ElastiFlow.png 720w, https://blog.remontti.com.br/wp-content/uploads/2022/03/ElastiFlow-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/03/ElastiFlow-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>Coletor de fluxo unificado <a href="https://github.com/robcowart/elastiflow/" rel="noopener" target="_blank">ElastiFlow</a><br />
O ElastiFlow <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Unified Flow Collector recebe, decodifica, transforma, normaliza, traduz e enriquece registros de fluxo de rede e telemetria enviados de dispositivos e aplicativos de rede usando IPFIX, Netflow e sFlow. Os registros resultantes podem ser enviados para diversas plataformas e serviços.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/03/elastiflow_br.png" alt="" width="1463" height="771" class="alignnone size-full wp-image-6402" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/03/elastiflow_br.png 1463w, https://blog.remontti.com.br/wp-content/uploads/2022/03/elastiflow_br-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/03/elastiflow_br-1024x540.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/03/elastiflow_br-768x405.png 768w" sizes="auto, (max-width: 1463px) 100vw, 1463px" /></p>
<p>Requisitos de sistema <a href="https://docs.elastiflow.com/docs/requirements/" rel="noopener" target="_blank">acesse aqui</a>.</p>
<p><strong>Com seu Debian 11 (Bullseye) 64 bits</strong>. <a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank">Instalação mínima</a> pronta </p>
<p>Existem outras formas de configurar, mas aqui tentei passar a forma mais simples possível para que qualquer um consiga insta-lo. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<pre class="remontti-code"># su - </pre>
<p>Instale os pacotes básicos necessários</p>
<pre class="remontti-code"># apt install wget apt-transport-https gnupg unzip curl net-tools</pre>
<p>Recomendo a instalacao dos firmwares binário para vários drivers do kernel Linux, para isso adicione contrib non-free ao seu repositório.</p>
<pre class="remontti-code"># vim /etc/apt/sources.list</pre>
<pre class="remontti-code">deb http://deb.debian.org/debian/ bullseye main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye main contrib non-free

deb http://security.debian.org/debian-security bullseye-security main contrib non-free
deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free

# bullseye-updates, to get updates before a point release is made;
# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
deb http://deb.debian.org/debian/ bullseye-updates main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye-updates main contrib non-free
</pre>
<pre class="remontti-code"># apt update
# apt install firmware-linux firmware-linux-free firmware-linux-nonfree</pre>
<p>Tuning no kernel</p>
<pre class="remontti-code"># echo &quot;vm.swappiness=10&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;vm.max_map_count=262144&quot; &gt; /etc/sysctl.d/70-elasticsearch.conf
# cat &lt;&lt;EOF &gt;/etc/sysctl.d/60-net.conf
net.core.netdev_max_backlog=4096
net.core.rmem_default=262144
net.core.rmem_max=67108864
net.ipv4.udp_rmem_min=131072
net.ipv4.udp_mem=2097152 4194304 8388608
EOF

# sysctl -w vm.max_map_count=262144 &amp;&amp; \
sysctl -w net.core.netdev_max_backlog=4096 &amp;&amp; \
sysctl -w net.core.rmem_default=262144 &amp;&amp; \
sysctl -w net.core.rmem_max=67108864 &amp;&amp; \
sysctl -w net.ipv4.udp_rmem_min=131072 &amp;&amp; \
sysctl -w net.ipv4.udp_mem=&#039;2097152 4194304 8388608&#039;</pre>
<p>Reinicie para que os novos módulos sejam carregado.</p>
<pre class="remontti-code"># reboot</pre>
<h3>:: Elastic Stack ::</h3>
<p>Será necessário ter o Java instalado.</p>
<pre class="remontti-code"># su -
# apt install default-jre</pre>
<p>Adicione o repositório elastic.</p>
<pre class="remontti-code"># wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
# echo &quot;deb https://artifacts.elastic.co/packages/8.x/apt stable main&quot; |  tee -a /etc/apt/sources.list.d/elastic.list
# apt update</pre>
<h3>:: Elasticsearch ::</h3>
<p>Elasticsearch é um mecanismo de pesquisa baseado em texto completo. </p>
<pre class="remontti-code"># apt install elasticsearch</pre>
<p>Se uma JVM for iniciada com tamanhos de heap inicial e máximo desiguais, ela poderá pausar conforme o heap da JVM for redimensionado durante o uso do sistema. Por esse motivo, é melhor iniciar a JVM com os tamanhos de heap inicial e máximo configurados com valores iguais.</p>
<p>Adicione o arquivo e defina e heap.optionsa cerca de um terço da memória do sistema, mas não exceda . Para este exemplo, usaremos 12 GB dos 32 GB de memória disponíveis para heap da JVM.</p>
<pre class="remontti-code"># echo -e &quot;-Xms12g\n-Xmx12g&quot; &gt; /etc/elasticsearch/jvm.options.d/heap.options</pre>
<p>Os limites do sistema aumentados devem ser especificados em um systemd.</p>
<pre class="remontti-code"># mkdir /etc/systemd/system/elasticsearch.service.d
# cat &lt;&lt;EOF &gt;/etc/systemd/system/elasticsearch.service.d/elasticsearch.conf
[Service]
LimitNOFILE=131072
LimitNPROC=8192
LimitMEMLOCK=infinity
LimitFSIZE=infinity
LimitAS=infinity
EOF</pre>
<p>Após instalação vamos alterar network.host para ouvir apenas localhost, em seguida ativar o serviço e inicia-lo.</p>
<pre class="remontti-code"># sed -i &#039;s/#cluster.name: my-application/cluster.name: elastiflow/&#039; /etc/elasticsearch/elasticsearch.yml
# sed -i &#039;s/#network.host: 192.168.0.1/network.host: 127.0.0.1/&#039; /etc/elasticsearch/elasticsearch.yml
# sed -i &#039;s/xpack.security.enabled: true/xpack.security.enabled: false/&#039; /etc/elasticsearch/elasticsearch.yml
# echo &quot;indices.query.bool.max_clause_count: 8192&quot; &gt;&gt; /etc/elasticsearch/elasticsearch.yml
# echo &quot;search.max_buckets: 250000&quot; &gt;&gt; /etc/elasticsearch/elasticsearch.yml

# systemctl daemon-reload
# systemctl enable elasticsearch
# systemctl start elasticsearch
# systemctl status elasticsearch</pre>
<pre class="remontti-code-plain">● elasticsearch.service - Elasticsearch
     Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/elasticsearch.service.d
             └─elasticsearch.conf
     Active: active (running) since Fri 2022-02-04 11:34:39 -03; 53s ago
       Docs: https://www.elastic.co
   Main PID: 4701 (java)
      Tasks: 60 (limit: 38490)
     Memory: 12.7G
        CPU: 52.548s
     CGroup: /system.slice/elasticsearch.service
             ├─4701 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 .....
             └─4893 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller

fev 04 11:34:23 debian systemd[1]: Starting Elasticsearch...
fev 04 11:34:39 debian systemd[1]: Started Elasticsearch.</pre>
<p>Cheque se o mesmo esta funcionando</p>
<pre class="remontti-code"># curl -X GET &quot;http://127.0.0.1:9200&quot;</pre>
<p>Retorno algo como&#8230;.</p>
<pre class="remontti-code-plain">{
  &quot;name&quot; : &quot;debianFlows&quot;,
  &quot;cluster_name&quot; : &quot;elastiflow&quot;,
  &quot;cluster_uuid&quot; : &quot;mgKF5EP-SnKbbULl3D6aXQ&quot;,
  &quot;version&quot; : {
    &quot;number&quot; : &quot;8.4.2&quot;,
    &quot;build_flavor&quot; : &quot;default&quot;,
    &quot;build_type&quot; : &quot;deb&quot;,
    &quot;build_hash&quot; : &quot;89f8c6d8429db93b816403ee75e5c270b43a940a&quot;,
    &quot;build_date&quot; : &quot;2022-09-14T16:26:04.382547801Z&quot;,
    &quot;build_snapshot&quot; : false,
    &quot;lucene_version&quot; : &quot;9.3.0&quot;,
    &quot;minimum_wire_compatibility_version&quot; : &quot;7.17.0&quot;,
    &quot;minimum_index_compatibility_version&quot; : &quot;7.0.0&quot;
  },
  &quot;tagline&quot; : &quot;You Know, for Search&quot;
}</pre>
<h3>:: kibana ::</h3>
<p>Kibana é uma plataforma de análise e visualização usada para exibir os painéis do ElastiFlow.</p>
<pre class="remontti-code"># apt install kibana</pre>
<p>Após instalação vamos alterar server.host, em seguida ativar o serviço e inicia-lo.</p>
<pre class="remontti-code"># echo &quot;telemetry.enabled: false&quot; &gt;&gt; /etc/kibana/kibana.yml
# echo &quot;telemetry.optIn: false&quot; &gt;&gt; /etc/kibana/kibana.yml
# echo &quot;newsfeed.enabled: false&quot; &gt;&gt; /etc/kibana/kibana.yml
# echo &quot;server.host: \&quot;0.0.0.0\&quot;&quot; &gt;&gt; /etc/kibana/kibana.yml
# echo &quot;server.maxPayload: 8388608&quot; &gt;&gt; /etc/kibana/kibana.yml
# echo &quot;elasticsearch.requestTimeout: 132000&quot; &gt;&gt; /etc/kibana/kibana.yml
# echo &quot;elasticsearch.shardTimeout: 120000&quot; &gt;&gt; /etc/kibana/kibana.yml</pre>
<pre class="remontti-code"># vim /etc/kibana/kibana.yml</pre>
<p>Ajuste para o endereço da sua URL(Domínio ou IP) pública, exemplo:</p>
<pre class="remontti-code-plain">server.publicBaseUrl: &quot;http://192.168.0.30:5601&quot;</pre>
<pre class="remontti-code"># systemctl daemon-reload
# systemctl enable kibana
# systemctl start kibana
# systemctl status kibana</pre>
<pre class="remontti-code-plain">● kibana.service - Kibana
     Loaded: loaded (/etc/systemd/system/kibana.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-02-03 17:45:24 -03; 3s ago
       Docs: https://www.elastic.co
   Main PID: 4638 (node)
      Tasks: 11 (limit: 6548)
     Memory: 138.6M
        CPU: 4.339s
     CGroup: /system.slice/kibana.service
             └─4638 /usr/share/kibana/bin/../node/bin/node /usr/share/kibana/bin/../src/cli/dist\ 
                                           --logging.dest=/var/log/kibana/kibana.log\ 
                                           --pid.file=/run/kibana/kibana.pi&gt;

fev 03 17:45:24 deb11 systemd[1]: Started Kibana.
</pre>
<h3>:: ElastiFlow ::</h3>
<p><a href="https://github.com/robcowart/elastiflow/" rel="noopener noreferrer" target="_blank">ElastiFlow</a> fornece coleta e visualização de dados de fluxo de rede usando o Elastic Stack.</p>
<pre class="remontti-code"># apt install libpcap-dev
# wget https://elastiflow-packages.s3.amazonaws.com/flow-collector/flow-collector_5.6.0_linux_amd64.deb
# dpkg -i flow-collector_5.6.0_linux_amd64.deb
# apt install -f
# systemctl daemon-reload 
# systemctl enable flowcoll
# systemctl start flowcoll
# systemctl status flowcoll</pre>
<pre class="remontti-code-plain">● flowcoll.service - ElastiFlow Unified Flow Collector
     Loaded: loaded (/etc/systemd/system/flowcoll.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/flowcoll.service.d
             └─flowcoll.conf
     Active: active (running) since Fri 2022-02-04 13:49:34 -03; 8s ago
       Docs: https://docs.elastiflow.com
   Main PID: 10763 (flowcoll)
      Tasks: 9 (limit: 38490)
     Memory: 33.0M
        CPU: 105ms
     CGroup: /system.slice/flowcoll.service
             └─10763 /usr/share/elastiflow/bin/flowcoll</pre>
<pre class="remontti-code"># wget https://raw.githubusercontent.com/elastiflow/elastiflow_for_elasticsearch/master/kibana/kibana-7.14.x-codex-dark.ndjson
# curl -XPOST &quot;http://127.0.0.1:5601/api/saved_objects/_import?overwrite=true&quot;\
 -k -H &quot;kbn-xsrf: true&quot; -H &quot;securitytenant: global&quot; --form file=@kibana-7.14.x-codex-dark.ndjson</pre>
<p>No retornos dos comando curl certifique-se de ter no inicio a mensagem <strong>&#8220;success&#8221;:true&#8221;</strong></p>
<pre class="remontti-code-plain">
{&quot;successCount&quot;:229,&quot;success&quot;:true,&quot;warnings&quot;:[],&quot;successResults...............</pre>
<h4>Configurações Avançadas Recomendadas do Kibana</h4>
<p>Acesse seu Kibana no navegador. <em><strong>http://____:5601</strong></em></p>
<p>Realizando esses ajustes avançados o Kibana produzirá uma experiência mais amigável ao usar o ElastiFlow. Essas configurações são feitas no Kibana, em <strong>Stack Management</strong> -><strong> Advanced Settings</strong>.<br />
Use a busca para localizar e ajustar os seguintes valores:</p>
<p><strong>Pin filters by default:</strong> On<br />
<strong>Highlight results :</strong> Off<br />
<strong>Store URLs in session storage:</strong> On<br />
<strong>Dark mode:</strong> On<br />
<strong>Day of week:</strong> Monday<br />
<strong>Formatting locale:</strong> Portuguese (Brazil)<br />
<strong>Number format:</strong> 0,0.[00]<br />
<strong>Percent format:</strong> 0,0.[00]%<br />
<strong>Time filter defaults:</strong></p>
<pre class="remontti-code-plain">{
  &quot;from&quot;: &quot;now-1h/m&quot;,
  &quot;to&quot;: &quot;now&quot;
}</pre>
<p><strong>Time filter quick ranges:</strong></p>
<pre class="remontti-code-plain">[
  {
    &quot;from&quot;: &quot;now-15m/m&quot;,
    &quot;to&quot;: &quot;now/m&quot;,
    &quot;display&quot;: &quot;Last 15 minutes&quot;
  },
  {
    &quot;from&quot;: &quot;now-30m/m&quot;,
    &quot;to&quot;: &quot;now/m&quot;,
    &quot;display&quot;: &quot;Last 30 minutes&quot;
  },
  {
    &quot;from&quot;: &quot;now-1h/m&quot;,
    &quot;to&quot;: &quot;now/m&quot;,
    &quot;display&quot;: &quot;Last 1 hour&quot;
  },
  {
    &quot;from&quot;: &quot;now-2h/m&quot;,
    &quot;to&quot;: &quot;now/m&quot;,
    &quot;display&quot;: &quot;Last 2 hours&quot;
  },
  {
    &quot;from&quot;: &quot;now-4h/m&quot;,
    &quot;to&quot;: &quot;now/m&quot;,
    &quot;display&quot;: &quot;Last 4 hours&quot;
  },
  {
    &quot;from&quot;: &quot;now-12h/m&quot;,
    &quot;to&quot;: &quot;now/m&quot;,
    &quot;display&quot;: &quot;Last 12 hours&quot;
  },
  {
    &quot;from&quot;: &quot;now-24h/m&quot;,
    &quot;to&quot;: &quot;now/m&quot;,
    &quot;display&quot;: &quot;Last 24 hours&quot;
  },
  {
    &quot;from&quot;: &quot;now-48h/m&quot;,
    &quot;to&quot;: &quot;now/m&quot;,
    &quot;display&quot;: &quot;Last 48 hours&quot;
  },
  {
    &quot;from&quot;: &quot;now-7d/m&quot;,
    &quot;to&quot;: &quot;now/m&quot;,
    &quot;display&quot;: &quot;Last 7 days&quot;
  },
  {
    &quot;from&quot;: &quot;now-30d/m&quot;,
    &quot;to&quot;: &quot;now/m&quot;,
    &quot;display&quot;: &quot;Last 30 days&quot;
  },
  {
    &quot;from&quot;: &quot;now-60d/m&quot;,
    &quot;to&quot;: &quot;now/m&quot;,
    &quot;display&quot;: &quot;Last 60 days&quot;
  },
  {
    &quot;from&quot;: &quot;now-90d/m&quot;,
    &quot;to&quot;: &quot;now/m&quot;,
    &quot;display&quot;: &quot;Last 90 days&quot;
  }
]</pre>
<p>Ajustes finos:</p>
<pre class="remontti-code"># vim /etc/systemd/system/flowcoll.service.d/flowcoll.conf</pre>
<p>Ajustes ELASTICSEARCH</p>
<pre class="remontti-code">Environment=&quot;EF_FLOW_OUTPUT_ELASTICSEARCH_ENABLE=true&quot;
Environment=&quot;EF_FLOW_OUTPUT_ELASTICSEARCH_TIMESTAMP_SOURCE=end&quot;
Environment=&quot;EF_FLOW_OUTPUT_ELASTICSEARCH_INDEX_TEMPLATE_ILM_LIFECYCLE=elastiflow&quot;
#Environment=&quot;EF_FLOW_OUTPUT_ELASTICSEARCH_USERNAME=elastic&quot;
#Environment=&quot;EF_FLOW_OUTPUT_ELASTICSEARCH_PASSWORD=changeme&quot;</pre>
<p>Ajustes DNS</p>
<pre class="remontti-code">Environment=&quot;EF_FLOW_DECODER_ENRICH_DNS_ENABLE=true&quot;
Environment=&quot;EF_FLOW_DECODER_ENRICH_DNS_NAMESERVER_IP=1.1.1.1&quot;</pre>
<p>Ajustes MAXMIND</p>
<pre class="remontti-code">Environment=&quot;EF_FLOW_DECODER_ENRICH_MAXMIND_ASN_ENABLE=true&quot; 
Environment=&quot;EF_FLOW_DECODER_ENRICH_MAXMIND_GEOIP_ENABLE=true&quot;
Environment=&quot;EF_FLOW_DECODER_ENRICH_MAXMIND_GEOIP_LANG=pt-BR&quot;
Environment=&quot;EF_FLOW_DECODER_ENRICH_MAXMIND_ASN_PATH=maxmind/GeoLite2-ASN.mmdb&quot;
Environment=&quot;EF_FLOW_DECODER_ENRICH_MAXMIND_GEOIP_PATH=maxmind/GeoLite2-City.mmdb&quot;</pre>
<p><a href="https://github.com/P3TERX/GeoLite.mmdb" rel="noopener" target="_blank">Base MAXMIND</a>.</p>
<pre class="remontti-code"># cd /etc/elastiflow/maxmind
# wget https://git.io/GeoLite2-ASN.mmdb
# wget https://git.io/GeoLite2-City.mmdb
# wget https://git.io/GeoLite2-Country.mmdb</pre>
<p>Reiniciando os serviços</p>
<pre class="remontti-code"># systemctl daemon-reload
# systemctl restart flowcoll
# systemctl status flowcoll
# systemctl restart elasticsearch kibana
# systemctl status elasticsearch kibana</pre>
<h3> Configure seu router para enviar os flows</h4>
<p><strong>Bonus: Huawei NE Netstream (NetFlow)</strong></p>
<pre class="remontti-code">ip netstream as-mode 32
ip netstream timeout active 1
ip netstream timeout inactive 15
ip netstream export version 9 origin-as
ip netstream export index-switch 32
ip netstream export template timeout-rate 2
ip netstream sampler fix-packets 128 inbound
ip netstream sampler fix-packets 128 outbound
ip netstream export source IPv4_LOOPBACK_ORIGEM
ip netstream export host IPv4_SERVIDOR 9995
ip netstream export template option sampler
ip netstream export template option application-label
#
ipv6 netstream as-mode 32
ipv6 netstream timeout active 1
ipv6 netstream timeout inactive 15
ipv6 netstream export version 9 origin-as
ipv6 netstream export index-switch 32
ipv6 netstream export template timeout-rate 2
ipv6 netstream sampler fix-packets 128 inbound
ipv6 netstream sampler fix-packets 128 outbound
ipv6 netstream export source IPv4_LOOPBACK_ORIGEM
ipv6 netstream export host IPv4_SERVIDOR 9995
ipv6 netstream export template option sampler
 
# CONFIG NO SLOT -- slot 9 ou 10 NE8000 / slot 3 NE40
# EXECUTE O CMD NO ROOT, COMANDO NÃO FUNCIONA NO VIRTUAL SYSTEM
slot 9
 ip netstream sampler to slot self
 ipv6 netstream sampler to slot self
 
# APLICAR APENAS NAS INTERFACES UPSTREAM (LINK IP, PTT, IX...)
ip netstream inbound
ip netstream outbound
ipv6 netstream inbound
ipv6 netstream outbound
 
# EM CASO DE INTERFACES DE CDN INTERNO, APLICAR:
ip netstream inbound
ipv6 netstream inbound
 
# EM CASO DE INTERFACE BILATERAL (ONDE TANTO RECEBE QUANTO ENVIA CONTEÚDO), APLICAR:
ip netstream inbound
ipv6 netstream inbound
</pre>
<p><strong>Bonus: Mikrotik</strong></p>
<pre class="remontti-code">
/ip traffic-flow
set active-flow-timeout=1m cache-entries=4k enabled=yes interfaces=INTERFACES_COLETAR
/ip traffic-flow target 
add dst-address=IP_SERVER_ASSTATS port=9995 src-address=IP_ORIGEM version=9</pre>
<p>Verificar se os pacotes estão chegando na porta 9995</p>
<pre class="remontti-code"># apt install tcpdump
# tcpdump -i ens18 -n udp port 9995 -T cnfp</pre>
<p>Acesse eu Kibana e seja feliz!<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/03/elastiflow_brasil1.png" alt="" width="971" height="586" class="alignnone size-full wp-image-6406" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/03/elastiflow_brasil1.png 971w, https://blog.remontti.com.br/wp-content/uploads/2022/03/elastiflow_brasil1-300x181.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/03/elastiflow_brasil1-768x463.png 768w" sizes="auto, (max-width: 971px) 100vw, 971px" /><br />
Escolha sua Dash<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/03/asn.png" alt="" width="1920" height="1012" class="alignnone size-full wp-image-6403" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/03/asn.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/03/asn-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/03/asn-1024x540.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/03/asn-768x405.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/03/asn-1536x810.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p>
<p>Gostou e quer me ajudar a manter o blog? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></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><strong>Fonte:</strong><br />
<a href="https://docs.elastiflow.com" rel="noopener" target="_blank">https://docs.elastiflow.com</a></p>
<p>O post <a href="https://blog.remontti.com.br/6255">Aprenda instalar o ElastiFlow, uma poderosa ferramenta para análise de tráfego de rede no Debian 11 Bullseye</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6255/feed</wfw:commentRss>
			<slash:comments>62</slash:comments>
		
		
			</item>
		<item>
		<title>Como se proteger de ataques DDoS com FastNetMon de graça &#8211; Integração FRR vs NE-Huawei &#8211; Bonus Gráficos Grafana</title>
		<link>https://blog.remontti.com.br/6278</link>
					<comments>https://blog.remontti.com.br/6278#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 16 Feb 2022 20:00:18 +0000</pubDate>
				<category><![CDATA[Huawei]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[ataques]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[ccr]]></category>
		<category><![CDATA[ddos]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[dos]]></category>
		<category><![CDATA[fastnemon]]></category>
		<category><![CDATA[grafana]]></category>
		<category><![CDATA[influxdb]]></category>
		<category><![CDATA[mitigação]]></category>
		<category><![CDATA[ne8000]]></category>
		<category><![CDATA[ne8000f1a]]></category>
		<category><![CDATA[Netflow]]></category>
		<category><![CDATA[telegram]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6278</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/6278">Como se proteger de ataques DDoS com FastNetMon de graça &#8211; Integração FRR vs NE-Huawei &#8211; Bonus Gráficos Grafana</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 loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_huawei-1.png" alt="" width="720" height="340" class="alignnone size-full wp-image-6341" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_huawei-1.png 720w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_huawei-1-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_huawei-1-520x245.png 520w" sizes="auto, (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"><strong>FastNetMon</strong></a> (<strong>Community Edition</strong>) 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 no <a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank"><strong>Debian 11 (Instalação Limpa)</strong></a>. O hardware utilizado por ser bem generoso, 1CPU e 1GB de memoria. </p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware.png" alt="" width="1212" height="383" class="alignnone size-full wp-image-6312" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware.png 1212w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware-300x95.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware-1024x324.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware-768x243.png 768w" sizes="auto, (max-width: 1212px) 100vw, 1212px" /><br />
Nesse gráfico podemos ver um servidor analisando 10GB via Netflow e quase nada sendo usado de recursos. Mais ao final irei configurar o Graphith para termos gráficos qual irá abusar mais do hardware, porém para muitos gráficos não são necessários, e sim algo que o proteja.  </p>
<p><strong>Cenário fictício de exemplo:</strong><br />
Seu AS: 260072 <em>(Madruga Telecom)</em><br />
Operadora AS: 71 <em>(BrUxa71 Telecom)</em><br />
10.100.0.1/30 &#8211; Huawei NE<br />
10.100.0.2/30 &#8211; Servidor</p>
<h3>Configurando a interface de Rede</h3>
<p>Antes de iniciar a instalação do seu do seu servidor em meu exemplo estou usando o IP 10.100.0.2/30, porém eu NUNCA faria um NAT no roteador de borda então porque utilizar o IP privado? Simples por que ele não é acessível logo não pode ser atacado, mas por outro lado se ele não tiver internet você não poderá fazer a instalação e ele não poderá te notificar pelo telegram. Solução que eu gosto muito de aplicar em servidores é a seguinte (falo muito de como configurar interface de redes <a href="https://blog.remontti.com.br/5848" rel="noopener" target="_blank">nesse tutorial</a>, recomendo uma leitura). </p>
<p>Vamos supor que seu prefixo seja 72.72.72.0/22 e você vai alocar o ip 72.72.72.255<strong>/32</strong> para ser o IP de &#8220;loopback&#8221;. <em>Dica que esse IP não seja próximo a do prefixo público que utiliza em seus servidores</em>.</p>
<pre class="remontti-code"># vim /etc/network/interfaces</pre>
<pre class="remontti-code-plain">allow-hotplug eno1
iface eno1 inet static
    address 72.72.72.255/32

iface enp0s3 inet static
    address 10.100.0.2/30
    post-up /usr/sbin/ip route add default via 10.100.0.1 src 72.72.72.255</pre>
<p>Perceba que nós estaremos conversando com nosso roteador de borda pelo prefixo privado 10.100.0.0/30 porém todo o pacote de origem do servidor sai pelo o IP público. Caso este ip seja atacado o mesmo poderá cair em blackhole que o nosso servidor ainda terá comunicação com a borda. </p>
<p>Mas para que seu IP publico tenha rota será necessário criar um rota em seu roteador de borda apontando o IP público para o privado.</p>
<pre class="remontti-code">&lt;NE-SEUMADRUGA&gt; system-view
Enter system view, return user view with return command.
[~NE-SEUMADRUGA] ip route-static 72.72.72.255 255.255.255.255 10.100.0.2 description FASTNETMON
[*NE-SEUMADRUGA] commit</pre>
<p>É claro que neste caso ficará sem internet, mas podemos aplicar um firewall para enviar que ele fique respondendo, apenas para deixar ele &#8220;escondidinho&#8221;. E para isso vamos usar o nftables (Que já vem instalado por padrão no Debian 11 substituindo o iptables)<br />
Habilite o mesmo para iniciar com o sistema:</p>
<pre class="remontti-code"># systemctl enable nftables</pre>
<p>Vamos montar nosso firewall de forma que apenas conexoes que forem abertas pelo servidor seja respondidas.</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<pre class="remontti-code-plain">#!/usr/sbin/nft -f

flush ruleset

table inet filter {

        chain input {
                type filter hook input priority 0;

                # Permite que apenas conexoes que foram aberta pelo servidor seja respondidas
                ip daddr 72.72.72.255 ct state related,established counter accept
                ip daddr 72.72.72.255 counter drop

        }
        chain forward {
                type filter hook forward priority 0;
        }
        chain output {
                type filter hook output priority 0;
        }
}</pre>
<p>Inicie o nftables</p>
<pre class="remontti-code"># systemctl start nftables</pre>
<p>Você pode simplesmente rodar um scanner de porta no seu IP público bem como um ping, o mesmo não deve responde. </p>
<h3>Instalação FastNetMon (Edição da comunidade)</h3>
<p>Para ver o comparativo da versão gratuita <a href="https://fastnetmon.com/compare-community-and-advanced/" rel="noopener" target="_blank">acesse aqui</a>. Já antemão o que não teremos suporte é ao IPv6 e alguns recursos extras.<br />
Conversando com <a href="https://www.linkedin.com/in/podintsov">Pavel Odintsov</a> entendeu que no Brasil os planos da versão paga ficam muito pesada para a grande maioria devido a alto do dólar, então ele criou um cupom com <strong>50%</strong> de desconto para os brasileiros. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
Segue os lins com o desconto:<br />
<a href="https://fastnetmon.chargebee.com/hosted_pages/plans/fastnetmon-10g?subscription[coupon]=BRAZIL_PROMO" rel="noopener" target="_blank">Licença 10Gb</a><br />
<a href="https://fastnetmon.chargebee.com/hosted_pages/plans/fastnetmon-40g?subscription[coupon]=BRAZIL_PROMO" rel="noopener" target="_blank">Licença 40GB</a><br />
<a href="https://fastnetmon.chargebee.com/hosted_pages/plans/fastnetmon-100g?subscription[coupon]=BRAZIL_PROMO" rel="noopener" target="_blank">Licença 100GB</a></p>
<p>Vamos a instalação <a href="https://fastnetmon.com/install/" rel="noopener" target="_blank">[Doc Oficial]</a></p>
<pre class="remontti-code"># apt install wget tcpdump net-tools zip curl
# cd /tmp/
# wget https://install.fastnetmon.com/installer -Oinstaller
# chmod +x installer
# ./installer -install_community_edition</pre>
<p>É necessário que vc informe seu e-mail durante a instalação. <em>(Para usar a Comunidade FastNetMon você deve fornecer seu e-mail corporativo válido e aceitar receber informações sobre nossa edição comercial e atualizações de segurança)</em></p>
<pre class="remontti-code-plain">18:13:33 Will log all installation process details into file: /tmp/fastnetmon_install_1170.log
18:13:33 Installer build git version is: b21331ee349eaf0bc2abc71a466802cd26ee2347 build time is: 2022-01-17T16:17:51
18:13:33 Install FastNetMon Community edition

We offer significantly improved FastNetMon Advanced edition: 
&lt;blockquote class=&quot;wp-embedded-content&quot; data-secret=&quot;ghCHMDUZME&quot;&gt;&lt;a href=&quot;https://fastnetmon.com/fastnetmon-advanced/&quot;&gt;FastNetMon Advanced&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe class=&quot;wp-embedded-content&quot; sandbox=&quot;allow-scripts&quot; security=&quot;restricted&quot; style=&quot;position: absolute; clip: rect(1px, 1px, 1px, 1px);&quot; title=&quot;&#8220;FastNetMon Advanced&#8221; &#8212; FastNetMon DDoS Detection Tool&quot; src=&quot;https://fastnetmon.com/fastnetmon-advanced/embed/#?secret=9HRlASbAu2#?secret=ghCHMDUZME&quot; data-secret=&quot;ghCHMDUZME&quot; width=&quot;500&quot; height=&quot;282&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;
You could order free one-month trial for Advanced edition here: 
&lt;blockquote class=&quot;wp-embedded-content&quot; data-secret=&quot;zdVTqp3qpj&quot;&gt;&lt;a href=&quot;https://fastnetmon.com/trial/&quot;&gt;Order trial&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe class=&quot;wp-embedded-content&quot; sandbox=&quot;allow-scripts&quot; security=&quot;restricted&quot; style=&quot;position: absolute; clip: rect(1px, 1px, 1px, 1px);&quot; title=&quot;&#8220;Order trial&#8221; &#8212; FastNetMon DDoS Detection Tool&quot; src=&quot;https://fastnetmon.com/trial/embed/#?secret=kKLHfdm2fM#?secret=zdVTqp3qpj&quot; data-secret=&quot;zdVTqp3qpj&quot; width=&quot;500&quot; height=&quot;282&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;

To use FastNetMon Community you must provide your valid corporate email and accept 
to receive information about our commercial edition and security updates.
You can find our privacy policy here https://fastnetmon.com/privacy-policy/

Provide your corporate email here, personal emails are not allowed: seu@email.com.br
18:13:41 Apply sysctl configuration changes
18:13:41 Disable rp_filter for all interfaces
18:13:41 Installing on Debian 11.2 platform
18:13:41 Download binary package
18:15:27 Successfully installed FastNetMon Community edition</pre>
<p>Adicione todos os prefixos do seu AS, são esses os IPs serão feito analise.</p>
<pre class="remontti-code"># vim /etc/networks_list</pre>
<p>Exemplo:</p>
<pre class="remontti-code">72.72.72.0/22</pre>
<p>Ajustando as configurações do /etc/fastnetmon.conf.<br />
Habilitamos o serviço de netflow: `netflow = off` para `netflow = on`</p>
<pre class="remontti-code"># sed -i &#039;s/netflow = off/netflow = on/&#039; /etc/fastnetmon.conf</pre>
<p>Ajustes de tempo</p>
<pre class="remontti-code"># sed -i &#039;s/average_calculation_time = 5/average_calculation_time = 15/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/average_calculation_time_for_subnets = 5/average_calculation_time_for_subnets = 15/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/netflow_sampling_ratio = 1/netflow_sampling_ratio = 1024/&#039; /etc/fastnetmon.conf</pre>
<p>Defina por quanto tempo em segundos um IP ficará em blackhole o padrão é 1900 seg. No comando estou alterando para 10min: </p>
<pre class="remontti-code"># sed -i &#039;s/ban_time = 1900/ban_time = 600/&#039; /etc/fastnetmon.conf</pre>
<p>Ative medidores de velocidade por sub-rede, para listar a velocidade da faixa em bps e pps para ambas as direções. (Parece que removeram na última versão)</p>
<pre class="remontti-code"># sed -i &#039;s/enable_subnet_counters = off/enable_subnet_counters = on/&#039; /etc/fastnetmon.conf</pre>
<p>Altera o top 7 para o top 10 ao usar o comando fastnetmon_client</p>
<pre class="remontti-code"># sed -i &#039;s/max_ips_in_list = 7/max_ips_in_list = 10/&#039; /etc/fastnetmon.conf</pre>
<p>Temos diferentes abordagens para detecção dos ataques: Pacotes por segundos, largura de banda e por fluxo (flows).</p>
<pre class="remontti-code-plain">ban_for_pps = on
ban_for_bandwidth = on
ban_for_flows = off

ban_for_tcp_bandwidth = off
ban_for_udp_bandwidth = off
ban_for_icmp_bandwidth = off

ban_for_tcp_pps = off
ban_for_udp_pps = off
ban_for_icmp_pps = off
</pre>
<p>Vamos ativar todos os filtros:</p>
<pre class="remontti-code"># sed -i &#039;s/ban_for_flows = off/ban_for_flows = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_tcp_bandwidth = off/ban_for_tcp_bandwidth = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_udp_bandwidth = off/ban_for_udp_bandwidth = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_icmp_bandwidth = off/ban_for_icmp_bandwidth = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_tcp_pps = off/ban_for_tcp_pps = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_udp_pps = off/ban_for_udp_pps = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_icmp_pps = off/ban_for_icmp_pps = on/&#039; /etc/fastnetmon.conf</pre>
<p>Como temos todas as detecções ativas, precisamos ajustar cada situação para sua realidade. Você precisa ter em mente qual é o maior tráfego que pode atingir por um IP da sua rede (seu maior plano) com base nisso tenha em mente que a cada 100MB gera em torno de 10.000 pps por segundo, <strong>isso não é regra</strong> mas pode ser uma base inicial. Vamos imaginar então que meu maior plano seja 900MB, farei uma ajuste no <strong>threshold_pps</strong> para 90.000 pps.</p>
<pre class="remontti-code"># sed -i &#039;s/threshold_pps = 20000/threshold_pps = 90000/&#039; /etc/fastnetmon.conf</pre>
<p>Agora em <strong>threshold_mbps</strong> seria o maior tráfego que você irá permitir, eu normalmente não altero e deixo no padrão 1gb. E em <strong>threshold_flows</strong> o fluxos de limite qual também mantenho o mesmo valor 3500.</p>
<pre class="remontti-code-plain">threshold_mbps = 1050
threshold_flows = 3500</pre>
<p>O netflow ouve a porta padrão 2055 se desejar alterar basta alterar o valor de <strong>netflow_port</strong>. Irei alterar para 52055.</p>
<pre class="remontti-code"># sed -i &#039;s/netflow_port = 2055/netflow_port = 52055/&#039; /etc/fastnetmon.conf</pre>
<p>Por o serviço ira ficar ouvindo em todos os endereços IPs do seu servidor (<strong>netflow_host = 0.0.0.0</strong>), logo o mais correto seria deixa-lo apenas para o IP privado.</p>
<pre class="remontti-code"># sed -i &#039;s/netflow_host = 0.0.0.0/netflow_host = 10.100.0.2/&#039; /etc/fastnetmon.conf</pre>
<p>Ainda em /etc/fastnetmon.conf temos <strong>notify_script_path</strong> que sempre que o fastnetmon identificar um ataque irá executar o script <strong>/usr/local/bin/notify_about_attack.sh</strong>, identificando o IP da sua rede que está sofrendo <strong>(incoming)</strong> o ataque ou que está atacando <strong>(outgoing)</strong> alguém. <strong>Ele NÃO irá identificar os IPs de origem</strong>, pois em um ataque quase sempre as origens são alteradas por milhares de IPs aleatórios.  </p>
<p>Habilite e reinicie o fastnetmon para carregar as novas configurações.</p>
<pre class="remontti-code"># systemctl enable fastnetmon
# systemctl restart fastnetmon</pre>
<p>Verifique se a porta 52055/udp esta ouvindo:</p>
<pre class="remontti-code"># netstat -putan  | grep 52055</pre>
<pre class="remontti-code-plain">udp        0      0 10.100.0.2:52055           0.0.0.0:*                           1599/fastnetmon </pre>
<p>Bom mas antes de criarmos nosso script notify_about_attack.sh, precisamos preparar algumas coisas, e antes de mais nada vamos configurar nosso Huawei para enviar os dados.</p>
<p>Acesse seu roteador Huawei:</p>
<pre class="remontti-code">&lt;NE-SEUMADRUGA&gt; system-view
[~NE-SEUMADRUGA] ip netstream export version ipfix peer-as bgp-nexthop ttl
[*NE-SEUMADRUGA] ip netstream export template sequence-number fixed
[*NE-SEUMADRUGA] ip netstream export index-switch 32
[*NE-SEUMADRUGA] ip netstream as-mode 32
[*NE-SEUMADRUGA] ip netstream timeout active 1
[*NE-SEUMADRUGA] ip netstream timeout inactive 15
[*NE-SEUMADRUGA] ip netstream export template timeout-rate 1
[*NE-SEUMADRUGA] ip netstream export template option sampler
[*NE-SEUMADRUGA] ip netstream export template option application-label
[*NE-SEUMADRUGA] ip netstream sampler fix-packets 1024 inbound
[*NE-SEUMADRUGA] ip netstream sampler fix-packets 1024 outbound
[*NE-SEUMADRUGA] ip netstream export source 10.100.0.1
[*NE-SEUMADRUGA] ip netstream export host 10.100.0.2 52055</pre>
<p>slot 0 NE8000F1A / slot 10 ou 9 NE8000 M8 / slot 3 NE40</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] slot &lt;0-10&gt;
[*NE-SEUMADRUGA] ip netstream sampler to slot self
[*NE-SEUMADRUGA]  ipv6 netstream sampler to slot self</pre>
<p>Será necessário adicionar em todas suas interfaces de Uplink: </p>
<pre class="remontti-code-plain"> ip netstream inbound
 ip netstream outbound</pre>
<p>Exemplo:</p>
<pre class="remontti-code">
interface 40GE0/1/49.71
 vlan-type dot1q 71
 description BruxaDo71Telecom
 ip address 71.71.71.2 255.255.255.252
 statistic enable
 ip netstream inbound
 ip netstream outbound
</pre>
<p>Com o tcpdump vamos monitorar a interface para ver o que esta chegando na porta.</p>
<pre class="remontti-code"># tcpdump -i ens192 -n udp port 52055 -T cnfp -c 10</pre>
<p>Se seu NE estiver mandado os pacotes você terá um resultado como:</p>
<pre class="remontti-code-plain">tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens192, link-type EN10MB (Ethernet), capture size 262144 bytes
14:25:19.601113 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.608068 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.668054 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.691123 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.768055 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.781129 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.831133 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.858054 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.941124 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.958060 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
10 packets captured
10 packets received by filter
0 packets dropped by kernel</pre>
<p>Agora com o comando: </p>
<pre class="remontti-code"># fastnetmon_client</pre>
<p>Iremos visualizar os TOP IPs</p>
<pre class="remontti-code-plain">FastNetMon 1.1.3 master git- Pavel Odintsov: stableit.ru
IPs ordered by: packets
Incoming traffic       724347 pps   6998 mbps    161 flows
72.72.72.238            51973 pps    569 mbps      0 flows  *banned*
72.72.72.112            14390 pps    154 mbps      0 flows
72.72.72.93             14000 pps    150 mbps      0 flows
72.72.72.161            11705 pps    129 mbps      0 flows
72.72.72.118             8797 pps     86 mbps      0 flows
72.72.72.43              7602 pps     84 mbps      0 flows
72.72.72.111             6669 pps     64 mbps      0 flows

Outgoing traffic       291008 pps    705 mbps    101 flows
72.72.72.238            18009 pps     14 mbps      0 flows  *banned*
72.72.72.112             7929 pps      5 mbps      0 flows
72.72.72.93              7110 pps     10 mbps      0 flows
72.72.72.14              4910 pps     40 mbps      0 flows
72.72.72.43              4887 pps      2 mbps      0 flows
72.72.72.161             4537 pps      2 mbps      0 flows
72.72.72.111             3933 pps     14 mbps      0 flows

Internal traffic             0 pps      0 mbps

Other traffic              420 pps      0 mbps

Screen updated in:              0 sec 331 microseconds
Traffic calculated in:          0 sec 854 microseconds
Total amount of IPv6 packets related to our own network: 0
Not processed packets: 0 pps 

Subnet load:
72.72.72.0/22      pps in: 256000   out: 52000    mbps in: 9630  out: 1077
100.100.0.6/32     pps in: 0        out: 0        mbps in: 0     out: 0
</pre>
<p>Perceba que o IP <strong>72.72.72.238</strong> foi banido, pois o mesmo excedeu os pps de 50.000, no entanto este é um dos IPs que então em meu CGNAT, e vai ser natural este ter um comportamento diferente. Para que o <strong>fastnetmon ignore o mesmo</strong> você pode cria uma <strong>lista branca</strong>. Não se preocupe se isso acontecer com você o fastnetmon não ira fazer nenhuma ação, pois não configuramos nada ainda.<br />
Para criar a lista branca <strong>networks_whitelist</strong> com os IPs ou prefixo que deseja ignorar.</p>
<pre class="remontti-code"># &gt; /etc/networks_whitelist
# vim /etc/networks_whitelist</pre>
<p>Exemplo</p>
<pre class="remontti-code-plain">72.72.72.224/28
72.72.73.224/28</pre>
<p>Reinicie para carregar as novas configurações.</p>
<pre class="remontti-code"># systemctl restart fastnetmon</pre>
<h3>Bot Telegram</h3>
<p>Para receber notificações pelo Telegram juntamente com o arquivo de log, 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 basta você falar com o <a href="https://telegram.me/BotFather" rel="noopener" target="_blank">@BotFather</a> e enviar para ele <strong>/newbot</strong>, ele irá pedir qual nome você gostaria de dar a seu bot, e em seguida ira gera um token que vamos precisar a seguir. </p>
<p>Para o Telegram vamos usar um scriptzinho que criei.</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/
# ln -s /usr/local/bin/telegram /bin/telegram</pre>
<p>Edite o token.conf e altere para o seu TOKEN.</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;123456789:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF&quot;</pre>
<p>Esse script você pode usar para diversas coisas, ele será capaz de zipar um diretorio e lhe enviar o arquivo bem como enviar apenas uma mensagem. Como usar? É importante você saber que o IDs de grupos tem um &#8220;-&#8221; no inicio do ID, já usuários não. Para descobrir o ID do seu usuário fale com o bot <a href="https://telegram.me/myidbot" rel="noopener" target="_blank"><strong>@myidbot</strong></a> e envie para ele <strong>/getid</strong>, para saber de um grupo adicione <strong>@myidbot</strong> ao seu grupo e envie <strong>/getgroupid@myidbot</strong>. Realize um teste com um dos comandos: (Não esqueça de alterar pelo seu ID)</p>
<pre class="remontti-code-plain">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;
     ex: telegram -f &quot;-12345689&quot; /var/log/syslog syslog &quot;Logs do sistema para um grupo&quot;</pre>
<h3>FRR</h3>
<p>Vamos realizar a instalação do <a href="http://frrouting.org/" rel="noopener" target="_blank">FRRouting</a> (FRR) para fechar sessão BGP entre o roteador de borda e servidor.</p>
<pre class="remontti-code">
# apt install curl apt-transport-https gnupg2 tree net-tools
# curl -s https://deb.frrouting.org/frr/keys.asc | apt-key add -
# echo deb https://deb.frrouting.org/frr bullseye frr-8 | tee -a /etc/apt/sources.list.d/frr.list
# apt update
# apt install frr frr-doc</pre>
<p>Parâmetros kernel</p>
<pre class="remontti-code"># echo &#039;net.ipv4.ip_forward = 1&#039; &gt;&gt; /etc/sysctl.conf
# echo &quot;net.ipv4.conf.all.rp_filter = 0&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;net.ipv4.conf.default.rp_filter = 0&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;net.ipv4.conf.lo.rp_filter = 0&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;net.ipv4.conf.`ip -br link |awk &#039;{print $1}&#039; |grep -v lo`.rp_filter = 0&quot; &gt;&gt; /etc/sysctl.conf
# sysctl -p</pre>
<p>Ative o modulo BGP</p>
<pre class="remontti-code"># sed -i &#039;s/bgpd=no/bgpd=yes/&#039; /etc/frr/daemons</pre>
<p>Reinicie o FRR</p>
<pre class="remontti-code"># systemctl restart frr</pre>
<p>Entre no shell VTY do FRR.</p>
<pre class="remontti-code"># vtysh</pre>
<p>Rode o comando: `show running-config`</p>
<pre class="remontti-code-plain">deb11# show running-config 
Building configuration...

Current configuration:
!
frr version 8.3.1
frr defaults traditional
hostname deb11
log syslog informational
no ip forwarding
no ipv6 forwarding
service integrated-vtysh-config
!
line vty
!
end</pre>
<p>Agora entre no modo de configuração, e vamos preparar nosso peer com o router de borda. No exemplo está praticamente auto explicativo, vamos fechar o peer e <strong>deixar</strong> ser anunciado <strong>apenas nossos prefixos</strong> e aplicaremos a <strong>community 65001:666</strong></p>
<pre class="remontti-code-plain">configure terminal
!
ip prefix-list FASTNETMON_EXPORT seq 5 permit 72.72.72.0/23 le 32
ip prefix-list FASTNETMON_EXPORT seq 10 permit 72.72.74.0/23 le 32
!
!
route-map MARK_FASTNETMON_IMPORT deny 10
!
route-map MARK_FASTNETMON_EXPORT permit 10
 match ip address prefix-list FASTNETMON_EXPORT
 set community 65001:666
!
router bgp 65001
 bgp router-id 10.100.0.2
 neighbor 10.100.0.1 remote-as 260072
 neighbor 10.100.0.1 description &quot;NE8K_BORDA&quot;
# neighbor 10.100.0.1 ebgp-multihop 255 # (Caso seja multihop)
 !
 address-family ipv4 unicast
  neighbor 10.100.0.1 route-map MARK_FASTNETMON_IMPORT in
  neighbor 10.100.0.1 route-map MARK_FASTNETMON_EXPORT out
 exit-address-family
!
line vty
!
end
write memory
exit</pre>
<p>Vamos ao <strong>Huawei</strong></p>
<pre class="remontti-code">&lt;NE-SEUMADRUGA&gt; system-view
Enter system view, return user view with return command.</pre>
<p>Crie uma rota estática de Blackhole</p>
<pre class="remontti-code">[~NE-SEUMADRUGA] ip route-static 192.0.2.1 255.255.255.255 NULL0 description BLACKHOLE</pre>
<p>Crie um filtro que irá aceitar qualquer rota /32</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] ip ip-prefix  ACCEP_PREFIX_MASK32_FASTNETMON_IPV4 index 10 permit 0.0.0.0 0 greater-equal 32</pre>
<p>Crie os prefixos publico para rejeitar e não cair em blackhole mesmo quando atacado, caso você deixar o fastnetmon anúnciar seu NE pode rejeitar (Ex IP Servidores ou CGNAT)</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] ip ip-prefix  IGNORE_PREFIX_FASTNETMON_IPV4 index 10 permit 72.72.72.224 28 greater-equal 28 less-equal 32
[*NE-SEUMADRUGA] ip ip-prefix  IGNORE_PREFIX_FASTNETMON_IPV4 index 20 permit 72.72.73.224 28 greater-equal 28 less-equal 32</pre>
<p>Crie um filtro para a community 65001:666</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] ip community-filter basic COMM_FASTNETMON_BLACKHOLE index 10 permit 65001:666</pre>
<p>Vamos montar agora nosso route policy de import (rotas que iremos receber). A 1ª é ignorar os prefixos <strong>IGNORE_PREFIX_FASTNETMON_IPV4</strong></p>
<pre class="remontti-code">[*NE-SEUMADRUGA] route-policy FASTNETMON_IMPORT_IPV4 deny node 1000
[*NE-SEUMADRUGA]  if-match ip-prefix IGNORE_PREFIX_FASTNETMON_IPV4</pre>
<p>A 2º é o que vir marcado do fastnetmon com 65001:666 (COMM_FASTNETMON_BLACKHOLE) jogar para blackhole e aplicar uma community nova <strong>65444:666</strong>, como no exemplo aqui meu AS é de 32bits vou usar um AS privado, mas onde seu AS é de 16bits o mais comum de se encontrar é AS:666. Assim se você for trânsito de outro AS você pode montar em suas route policy para aceitar prefixos do AS dele com /32 marcados com AS:666 e jogar para blackhole também fica dica!</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] route-policy FASTNETMON_IMPORT_IPV4 permit node 1010
[*NE-SEUMADRUGA]  if-match community-filter COMM_FASTNETMON_BLACKHOLE 
[*NE-SEUMADRUGA]  apply local-preference 999
[*NE-SEUMADRUGA]  apply ip-address next-hop 192.0.2.1
[*NE-SEUMADRUGA]  apply community 65444:666
[*NE-SEUMADRUGA]  if-match ip-prefix ACCEP_PREFIX_MASK32_FASTNETMON_IPV4</pre>
<p>E a 3ª ignoramos o resto como boas praticas.</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] route-policy FASTNETMON_IMPORT_IPV4 deny node 9999</pre>
<p>Para as route policy de export (Rotas que o NE irá ensinar) colocarei apenas um Deny pois ele não precisa ensinar nada.</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] route-policy FASTNETMON_EXPORT_IPV4 deny node 9999
[*NE-SEUMADRUGA] commit</pre>
<p>Vamos ao peer</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] bgp 260072
[~NE-SEUMADRUGA] undo peer 10.100.0.2
[*NE-SEUMADRUGA]  peer 10.100.0.2 as-number 65001
[*NE-SEUMADRUGA]  peer 10.100.0.2 description BORDA_VS_FASTNETMON_IPV4
[*NE-SEUMADRUGA]  peer 10.100.0.2 timer connect-retry 1
[*NE-SEUMADRUGA]  peer 10.100.0.2 connect-interface 10.100.0.1
[*NE-SEUMADRUGA]  peer 10.100.0.2 timer keepalive 10 hold 30 
[*NE-SEUMADRUGA]  ipv4-family unicast
[*NE-SEUMADRUGA]   peer 10.100.0.2 enable
[*NE-SEUMADRUGA]   peer 10.100.0.2 public-as-only
[*NE-SEUMADRUGA]   peer 10.100.0.2 route-policy FASTNETMON_IMPORT_IPV4 import
[*NE-SEUMADRUGA]   peer 10.100.0.2 route-policy FASTNETMON_EXPORT_IPV4 export
[*NE-SEUMADRUGA]   peer 10.100.0.2 next-hop-local
[*NE-SEUMADRUGA]   peer 10.100.0.2 advertise-community
[*NE-SEUMADRUGA]   peer 10.100.0.2 advertise-ext-community
[*NE-SEUMADRUGA] commit
[~NE-SEUMADRUGA] run save </pre>
<p>Em caso de alguma <strong>emergência</strong>, para <strong>baixar</strong> a sessão use:</p>
<pre class="remontti-code">[~NE-SEUMADRUGA] bgp 260072
[*NE-SEUMADRUGA] peer 10.100.0.2 ignore
[*NE-SEUMADRUGA] commit</pre>
<p>Para <strong>subir</strong> novamente:</p>
<pre class="remontti-code">[~NE-SEUMADRUGA] bgp 260072
[*NE-SEUMADRUGA] undo peer 10.100.0.2 ignore
[*NE-SEUMADRUGA] commit</pre>
<p>Verifique se sua sessão subiu:</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] display bgp peer | include 10.100.0.2</pre>
<pre class="remontti-code-plain"> BGP local router ID : x.x.x.x
 Local AS number : 260072
 Total number of peers : 13                 Peers in established state : 13

  Peer                             V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State  PrefRcv
  10.100.0.2                       4       65001   897801  1088107     0 2496h26m Established        0</pre>
<p>No FRR use `show bgp summary`</p>
<pre class="remontti-code"># vtysh</pre>
<pre class="remontti-code-plain"># show bgp summary
IPv4 Unicast Summary:
BGP router identifier 10.100.0.2, local AS number 65001 vrf-id 0
BGP table version 0
RIB entries 0, using 0 bytes of memory
Peers 1, using 21 KiB of memory

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt
10.100.0.1      4     260072         5         5        0    0    0 00:02:52            0        0

Total number of neighbors 1
# exit</pre>
<p>Para repassar os prefixos marcados como blackhole para sua operadora você precisará saber qual é a community que a mesma utiliza e se ela lhe oferece esse recurso, em seguida você irá adiciar a route policy da sua operadora uma nova regra:</p>
<p>No exemplo tudo que recebemos do fastnetmon passamos a aplicar a community 65444:666, logo tudo que for marcado com a mesma irei repassar para operadora com a commnunity da operadora. Para isso crie então primeiro a community-filter de Blackhole sua.</p>
<pre class="remontti-code">[~NE-SEUMADRUGA] ip community-filter basic COMM_BLACKHOLE index 10 permit 65444:666</pre>
<p>Agora na route policy da operadora crie algo semelhante ao exemplo, sendo que a community de blackhole que sua operadora passou fosse &#8220;71:666&#8221;:</p>
<pre class="remontti-code">[~NE-SEUMADRUGA] route-policy UPSTREAM_OP_BRUXADO71_EXPORT_IPV4 permit node 2070
[~NE-SEUMADRUGA]  if-match community-filter COMM_BLACKHOLE
[~NE-SEUMADRUGA]  apply community 71:666</pre>
<p>Pronto agora que ja temos nosso peer Up entre router e servidor, nosso Bot mandando mensagem, iremos criar o script que será executado sempre que um ataque for identificado <strong>BAN</strong> ou <strong>UNBAN</strong>. Irei criar um diretório /var/log/fastnetmon_attacks/ataques qual irá ficar os ataques finalizados.</p>
<pre class="remontti-code"># mkdir /var/log/fastnetmon_attacks/ataques -p
# vim /usr/local/bin/notify_about_attack.sh</pre>
<p>Altere <strong>ID_CHAT=&#8217;-1000000000000&#8242;</strong> pelo ID do seu usuário ou grupo.</p>
<pre class="remontti-code">#!/usr/bin/env bash
  
# Este script receberá os seguintes parâmetros:
#  $1 IP do cliente
#  $2 INCOMING -&gt; Vindo de fora da rede | OUTGOING -&gt; Saindo da sua rede
#  $3 Pacotes por seguncoes
#  $4 Ação (ban ou unban)

# Defina o ID do Chat ou Grupo (Grupos sempre começam com &quot;-&quot; )
ID_CHAT=&#039;-1000000000000&#039;

if [ &quot;$2&quot; = &quot;incoming&quot; ]; then
  TIPO=&quot;Sendo atacado&quot;
else 
  TIPO=&quot;Realizando um ataque&quot;
fi

# Desbanindo um IP
if [ &quot;$4&quot; = &quot;unban&quot; ]; then
  /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;UNBAN IP: &lt;code&gt;$1&lt;/code&gt;&quot; &quot;&lt;code&gt;-&gt;&gt;&lt;/code&gt; Removido da blackhole&quot;
  # Remove IP do anuncio para o FRR
  vtysh --command &quot;configure terminal
  no ip route $1/32 lo
  router bgp 65001
   address-family ipv4 unicast
    no network $1/32
  &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
  exit 0
fi

# Banindo um IP
if [ &quot;$4&quot; = &quot;ban&quot; ]; then
  /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;BAN IP: &lt;code&gt;$1&lt;/code&gt; $TIPO &lt;b&gt;[$3 pps]&lt;/b&gt;&quot; &quot;&lt;code&gt;-&gt;&gt;&lt;/code&gt; Anunciado em blackhole&quot;
  /usr/local/bin/telegram -f &quot;$ID_CHAT&quot; /var/log/fastnetmon_attacks/$1* $1 &quot;Logs do ataque ao IP $1&quot;
  # Anuncia IP ao FRR
  vtysh --command &quot;configure terminal
  ip route $1/32 lo
  router bgp 65001
   address-family ipv4 unicast
    network $1/32
  &quot;
    exit 0
fi

if [ &quot;$4&quot; == &quot;attack_details&quot; ]; then
  #/usr/local/bin/telegram -m &quot;$ID_CHAT&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>
<p>De permissão para execução</p>
<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>
<p>Se quiser fazer um teste manual anunciando um IP (um que não esteja em uso né!!! rsrsrs) exemplo: 72.72.73.255/32<br />
Adicionando:</p>
<pre class="remontti-code"># vtysh --command &quot;configure terminal
  ip route 72.72.73.255/32 lo
  router bgp 65001
   address-family ipv4 unicast
    network 72.72.73.255/32&quot;</pre>
<p>Verificando se esta enviando:</p>
<pre class="remontti-code"># vtysh --command &quot; show ip bgp neighbors 10.100.0.1 advertised-routes&quot;</pre>
<pre class="remontti-code-plain">BGP table version is 3, local router ID is 10.100.0.2, vrf id 0
Default local pref 100, local AS 65001
Status codes:  s suppressed, d damped, h history, * valid, &gt; best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop&#039;s vrf id, &lt; announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

   Network          Next Hop            Metric LocPrf Weight Path
*&gt; 72.72.73.255/32  0.0.0.0                  0         32768 i

Total number of prefixes 1</pre>
<p>Removendo:</p>
<pre class="remontti-code"># vtysh --command &quot;configure terminal
  no ip route 72.72.73.255/32 lo
  router bgp 65001
   address-family ipv4 unicast
    no network 72.72.73.255/32&quot;</pre>
<p>Finalizamos a primeira parte sem fazer nenhum estrago ao servidor (CPU) <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
<p>Seria interessante fazer alguns testes de ataques (coisa pequena) mas com características reais 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: <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-cuDznRQh" 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>
<h3>Gráficos Grafana</h3>
<p>Habilite o graphite no fastnetmon</p>
<pre class="remontti-code"># sed -i &#039;s/graphite = off/graphite = on/&#039; /etc/fastnetmon.conf</pre>
<p>Vamos instalar o <strong>influxdb</strong> para ser a base de dados</p>
<pre class="remontti-code"># apt install lsb-release gnupg2 curl wget
# wget -q https://repos.influxdata.com/influxdata-archive_compat.key
# echo &#039;393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key&#039; \
  | sha256sum -c &amp;&amp; cat influxdata-archive_compat.key \
  | gpg --dearmor \
  | tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg &gt; /dev/null
# echo &#039;deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main&#039;\
  | tee /etc/apt/sources.list.d/influxdata.list
# apt update
# apt install influxdb</pre>
<p>Edite o influxdb.conf</p>
<pre class="remontti-code"># vim /etc/influxdb/influxdb.conf</pre>
<p>Localize [[graphite]] e abaixo adicione:</p>
<pre class="remontti-code-plain">[[graphite]]
  enabled = true
  bind-address = &quot;:2003&quot;
  protocol = &quot;tcp&quot;
  consistency-level = &quot;one&quot;
  separator = &quot;.&quot;
  batch-size = 5000 # will flush if this many points get buffered
  batch-timeout = &quot;1s&quot; # will flush at least this often even if we haven&#039;t hit buffer limit
  templates = [
    &quot;fastnetmon.hosts.* app.measurement.cidr.direction.function.resource&quot;,
    &quot;fastnetmon.networks.* app.measurement.cidr.direction.resource&quot;,
    &quot;fastnetmon.total.* app.measurement.direction.resource&quot;
  ]</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/influxdb_graphite.png" alt="" width="1038" height="639" class="alignnone size-full wp-image-6314" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/influxdb_graphite.png 1038w, https://blog.remontti.com.br/wp-content/uploads/2022/02/influxdb_graphite-300x185.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/influxdb_graphite-1024x630.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/influxdb_graphite-768x473.png 768w" sizes="auto, (max-width: 1038px) 100vw, 1038px" /></p>
<p>Reinicie o influxdb</p>
<pre class="remontti-code"># systemctl restart influxdb</pre>
<p>Em seguida o fastnetmon</p>
<pre class="remontti-code"># systemctl restart fastnetmon</pre>
<p>Agora vamos acessar o o influxdb para ver se o banco graphite foi criado.</p>
<pre class="remontti-code"># influx</pre>
<pre class="remontti-code-plain">Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10</pre>
<pre class="remontti-code">&gt; use graphite</pre>
<pre class="remontti-code-plain">Using database graphite</pre>
<pre class="remontti-code">&gt; show measurements</pre>
<pre class="remontti-code-plain">name: measurements
name
----
hosts
networks
total</pre>
<pre class="remontti-code">&gt; exit</pre>
<h4> Grafana</h3>
<p>Adicione o repositório do grafana e instale-o</p>
<pre class="remontti-code"># wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -
# echo &quot;deb https://packages.grafana.com/oss/deb stable main&quot; | tee -a /etc/apt/sources.list.d/grafana.list
# apt update; apt install grafana</pre>
<p>Habilite serviço para inicialização e inicie o mesmo</p>
<pre class="remontti-code"># systemctl enable grafana-server
# systemctl start grafana-server</pre>
<p>Acesse em seu navegador <strong>http://ip_privado:3000</strong> e entre com <strong>usuário e senha admin</strong> em seguida defina uma nova senha.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_01.png" alt="" width="1384" height="769" class="alignnone size-full wp-image-6318" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_01.png 1384w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_01-300x167.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_01-1024x569.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_01-768x427.png 768w" sizes="auto, (max-width: 1384px) 100vw, 1384px" /></p>
<p>No menu <strong>Configuration</strong> e vá em  <strong>Data sources</strong>, clique em <strong>Add data source</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_02.png" alt="" width="1113" height="564" class="alignnone size-full wp-image-6319" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_02.png 1113w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_02-300x152.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_02-1024x519.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_02-768x389.png 768w" sizes="auto, (max-width: 1113px) 100vw, 1113px" /></p>
<p>Localize influxDB e selecione<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_03.png" alt="" width="1370" height="366" class="alignnone size-full wp-image-6320" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_03.png 1370w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_03-300x80.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_03-1024x274.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_03-768x205.png 768w" sizes="auto, (max-width: 1370px) 100vw, 1370px" /></p>
<p>Preencha apenas:<br />
URL:<strong> http://localhost:8086</strong><br />
Database: <strong>graphite</strong><br />
E clique em <strong>Save &#038; test</strong>, você deve ter a resposta <strong>Data source is working</strong>.</p>
<p>Faça <strong><a href="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon-Dash.zip" rel="noopener" target="_blank">download aqui</a> </strong>das Dashs e importe.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_04.png" alt="" width="207" height="187" class="alignnone size-full wp-image-6321" /><br />
Não esqueça de definir o banco InfluxDB<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_05.png" alt="" width="859" height="590" class="alignnone size-full wp-image-6323" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_05.png 859w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_05-300x206.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_05-768x527.png 768w" sizes="auto, (max-width: 859px) 100vw, 859px" /></p>
<p>Você pode pesquisar por mais dashs em: <a href="https://grafana.com/grafana/dashboards/?search=fastnetmon" rel="noopener" target="_blank">https://grafana.com/grafana/dashboards/?search=fastnetmon</a></p>
<p><strong>Fastnetmon</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon.png" alt="" width="1920" height="1480" class="alignnone size-full wp-image-6329" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon-300x231.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon-1024x789.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon-768x592.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon-1536x1184.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /><br />
<strong>Fastnetmon PAINEL GERAL</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_PAINEL_GERAL.png" alt="" width="1920" height="984" class="alignnone size-full wp-image-6328" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_PAINEL_GERAL.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_PAINEL_GERAL-300x154.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_PAINEL_GERAL-1024x525.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_PAINEL_GERAL-768x394.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_PAINEL_GERAL-1536x787.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p>
<p><strong>Fastnetmon TOP HOSTS (+100MB)</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_100MB.png" alt="" width="1920" height="1478" class="alignnone size-full wp-image-6331" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_100MB.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_100MB-300x231.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_100MB-1024x788.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_100MB-768x591.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_100MB-1536x1182.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p>
<p><strong>Fastnetmon TOP HOSTS (+300MB)</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_300MB.png" alt="" width="1920" height="984" class="alignnone size-full wp-image-6332" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_300MB.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_300MB-300x154.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_300MB-1024x525.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_300MB-768x394.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_300MB-1536x787.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p>
<p><strong>Fastnetmon TOP NETWORKS</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_NETWORKS.png" alt="" width="1920" height="984" class="alignnone size-full wp-image-6333" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_NETWORKS.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_NETWORKS-300x154.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_NETWORKS-1024x525.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_NETWORKS-768x394.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_NETWORKS-1536x787.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p>
<p><strong>Fastnetmon TOP TRÁFEGO DE SAÍDA</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_TRAFEGO_DE_SAIDA.png" alt="" width="1920" height="984" class="alignnone size-full wp-image-6334" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_TRAFEGO_DE_SAIDA.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_TRAFEGO_DE_SAIDA-300x154.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_TRAFEGO_DE_SAIDA-1024x525.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_TRAFEGO_DE_SAIDA-768x394.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_TRAFEGO_DE_SAIDA-1536x787.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p>
<p><strong>Fastnetmon TRÁFEGO REDE ESPECIFICADA</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_REDE_ESPECIFICADA.png" alt="" width="1920" height="912" class="alignnone size-full wp-image-6335" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_REDE_ESPECIFICADA.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_REDE_ESPECIFICADA-300x143.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_REDE_ESPECIFICADA-1024x486.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_REDE_ESPECIFICADA-768x365.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_REDE_ESPECIFICADA-1536x730.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p>
<p><strong>Fastnetmon TRÁFEGO POR IP ESPECIFICO</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_POR_IP_ESPECIFICO.png" alt="" width="1920" height="912" class="alignnone size-full wp-image-6336" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_POR_IP_ESPECIFICO.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_POR_IP_ESPECIFICO-300x143.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_POR_IP_ESPECIFICO-1024x486.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_POR_IP_ESPECIFICO-768x365.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_POR_IP_ESPECIFICO-1536x730.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p>
<p>E como ficou o hardware agora?<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware_grafana.png" alt="" width="1340" height="458" class="alignnone size-full wp-image-6338" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware_grafana.png 1340w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware_grafana-300x103.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware_grafana-1024x350.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware_grafana-768x262.png 768w" sizes="auto, (max-width: 1340px) 100vw, 1340px" /></p>
<p>Gostou? Se sentindo mais seguro agora? É consultor e ganha $ com isso!?</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>Fontes:<br />
<a href="https://fastnetmon.com/install/" rel="noopener" target="_blank">https://fastnetmon.com/install/</a><br />
<a href="https://docs.frrouting.org/en/latest/bgp.html" rel="noopener" target="_blank">https://docs.frrouting.org/en/latest/bgp.html</a><br />
<a href="https://deb.frrouting.org/" rel="noopener" target="_blank">https://deb.frrouting.org/</a><br />
<a href="https://fastnetmon.com/docs/influxdb_integration/" rel="noopener" target="_blank">https://fastnetmon.com/docs/influxdb_integration/</a><br />
<a href="https://grafana.com/docs/grafana/latest/installation/debian/" rel="noopener" target="_blank">https://grafana.com/docs/grafana/latest/installation/debian/</a></p>
<h4>BÔNUS PEGANDO PREFIXO /24 DO IP ATACADO E ANUNCIANDO COM OUTRA COMMUNITY PARA MITIGAR</h4>
<pre class="remontti-code-plain">
#####################
# SCRIPT FASTNETMON
#####################

#!/usr/bin/env bash
  
# Este script receberá os seguintes parâmetros:
#  $1 IP do cliente
#  $2 INCOMING -&gt; Vindo de fora da rede | OUTGOING -&gt; Saindo da sua rede
#  $3 Pacotes por seguncoes
#  $4 Ação (ban ou unban)

# Pegando prefixo 24
ip32=$1
prefixo24=&quot;${ip32%.*}.0/24&quot;

# Defina o ID do Chat ou Grupo (Grupos sempre começam com &quot;-&quot; )
ID_CHAT=&#039;-1000000000000&#039;
 
if [ &quot;$2&quot; = &quot;incoming&quot; ]; then
  TIPO=&quot;Sendo atacado&quot;
else 
  TIPO=&quot;Realizando um ataque&quot;
fi
 
# Desbanindo um IP
if [ &quot;$4&quot; = &quot;unban&quot; ]; then
  /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;UNBAN IP: &lt;code&gt;$1&lt;/code&gt;&quot; &quot;&lt;code&gt;-&gt;&gt;&lt;/code&gt; Removido da blackhole&quot;
  # Remove IP do anuncio para o FRR
  vtysh --command &quot;configure terminal
  no ip route $1/32 lo
  no ip route $prefixo24 lo
  router bgp 65001
   address-family ipv4 unicast
    no network $1/32
    no network $prefixo24
  &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
  exit 0
fi
 
# Banindo um IP
if [ &quot;$4&quot; = &quot;ban&quot; ]; then
  /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;BAN IP: &lt;code&gt;$1&lt;/code&gt; $TIPO &lt;b&gt;[$3 pps]&lt;/b&gt;&quot; &quot;&lt;code&gt;-&gt;&gt;&lt;/code&gt; Anunciado em blackhole&quot;
  /usr/local/bin/telegram -f &quot;$ID_CHAT&quot; /var/log/fastnetmon_attacks/$1* $1 &quot;Logs do ataque ao IP $1&quot;
  # Anuncia IP ao FRR
  vtysh --command &quot;configure terminal
  ip route $1/32 lo
  ip route $prefixo24 lo
  router bgp 65001
   address-family ipv4 unicast
    network $1/32
    network $prefixo24
  &quot;
    exit 0
fi
 
if [ &quot;$4&quot; == &quot;attack_details&quot; ]; then
  #/usr/local/bin/telegram -m &quot;$ID_CHAT&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


#####################
# FRR
#####################


!
frr version 8.5.1
frr defaults traditional
hostname fnm
log syslog informational
no ipv6 forwarding
service integrated-vtysh-config
!
router bgp 65001
 bgp router-id 172.16.1.2
 neighbor 172.16.1.1 remote-as 12345
 neighbor 172.16.1.1 description &quot;BORDA&quot;
 !
 address-family ipv4 unicast
  neighbor 172.16.1.1 route-map MARK_FASTNETMON_IMPORT in
  neighbor 172.16.1.1 route-map MARK_FASTNETMON_EXPORT out
 exit-address-family
exit
!
ip prefix-list FASTNETMON_EXPORT_32 seq 5 permit 200.0.0.0/22 le 32
!
ip prefix-list FASTNETMON_EXPORT_24 seq 5 permit 200.0.0.0/22 le 24
!
route-map MARK_FASTNETMON_IMPORT deny 10
exit
!
route-map MARK_FASTNETMON_EXPORT permit 10
 match ip address prefix-list FASTNETMON_EXPORT_24
 set community 65001:777
exit
! 
route-map MARK_FASTNETMON_EXPORT permit 20
 match ip address prefix-list FASTNETMON_EXPORT_32
 set community 65001:666
exit
!
end
write memory


#####################
# HUAWEI
#####################


#Configurando filtros e sessão BGP
ip route-static 192.0.2.1 255.255.255.255 NULL0 description BLACKHOLE

# Aceitas os prefixos 32 do AS para blackhole
ip ip-prefix  ACCEP_PREFIX_MASK32_FASTNETMON_IPV4 index 10 permit 200.0.0.0 22 greater-equal 32

# Aceitas os prefixos 24 do AS para mitigar
ip ip-prefix  ACCEP_PREFIX_MASK24_FASTNETMON_IPV4 index 10 permit 200.0.0.0 22 greater-equal 24

#Iginora Prefixos do CGNAT/Servidores
ip ip-prefix  IGNORE_PREFIX_FASTNETMON_IPV4 index 10 permit 200.0.1.0 28 greater-equal 28 less-equal 32
ip ip-prefix  IGNORE_PREFIX_FASTNETMON_IPV4 index 20 permit 200.0.2.0 26 greater-equal 26 less-equal 32

# community que o FRR ira enviar
ip community-filter basic COMM_FASTNETMON_BLACKHOLE_32 index 10 permit 65001:666
ip community-filter basic COMM_FASTNETMON_BLACKHOLE_24 index 10 permit 65001:777

# Define comm para usar nos RP das operadoras
ip community-filter basic COMM_BLACKHOLE_32 index 10 permit 65444:666
ip community-filter basic COMM_BLACKHOLE_24 index 10 permit 65444:777

# RP
route-policy FASTNETMON_IMPORT_IPV4 deny node 1000
 if-match ip-prefix IGNORE_PREFIX_FASTNETMON_IPV4

route-policy FASTNETMON_IMPORT_IPV4 permit node 1010
 if-match community-filter COMM_FASTNETMON_BLACKHOLE_32 
 apply local-preference 999
 apply ip-address next-hop 192.0.2.1
 apply community 65444:666
 if-match ip-prefix ACCEP_PREFIX_MASK32_FASTNETMON_IPV4
 
route-policy FASTNETMON_IMPORT_IPV4 permit node 1020
 if-match community-filter COMM_FASTNETMON_BLACKHOLE_24
 apply local-preference 999
 apply ip-address next-hop 192.0.2.1
 apply community 65444:777
 if-match ip-prefix ACCEP_PREFIX_MASK24_FASTNETMON_IPV4
 
route-policy FASTNETMON_IMPORT_IPV4 deny node 9999
route-policy FASTNETMON_EXPORT_IPV4 deny node 9999

# FILTRO OPERADORA

# Envia para community de blackhole da operadora 
route-policy UPSTREAM_OP_BRUXADO71_EXPORT_IPV4 permit node 2070
 if-match community-filter COMM_BLACKHOLE_32
 apply community 71:666

# Envia para community de blackhole de mitigraçação
route-policy UPSTREAM_OP_BRUXADO71_EXPORT_IPV4 permit node 2070
 if-match community-filter COMM_BLACKHOLE_24
 apply community 71:999
</pre>
<p>O post <a href="https://blog.remontti.com.br/6278">Como se proteger de ataques DDoS com FastNetMon de graça &#8211; Integração FRR vs NE-Huawei &#8211; Bonus Gráficos Grafana</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6278/feed</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação do Routinator 3000, um software para validação RPKI</title>
		<link>https://blog.remontti.com.br/5720</link>
					<comments>https://blog.remontti.com.br/5720#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Thu, 22 Jul 2021 20:56:32 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[BIRD]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[frrouting]]></category>
		<category><![CDATA[GoBGP]]></category>
		<category><![CDATA[Huawei]]></category>
		<category><![CDATA[junos]]></category>
		<category><![CDATA[OpenBGPD]]></category>
		<category><![CDATA[routinator]]></category>
		<category><![CDATA[rpki]]></category>
		<category><![CDATA[VyOS]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5720</guid>

					<description><![CDATA[<p>O Routinator 3000 é um software RPKI Relying Party gratuito e de código aberto desenvolvido pela NLnet Labs na linguagem de programação Rust. O aplicativo foi desenvolvido para ser seguro e ter ótima portabilidade.&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5720">Instalação do Routinator 3000, um software para validação RPKI</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator.webp" alt="" width="2400" height="400" class="alignnone size-full wp-image-5754" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator.webp 2400w, https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator-300x50.webp 300w, https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator-1024x171.webp 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator-768x128.webp 768w, https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator-1536x256.webp 1536w, https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator-2048x341.webp 2048w" sizes="auto, (max-width: 2400px) 100vw, 2400px" /><br />
O Routinator 3000 é um software RPKI Relying Party gratuito e de código aberto desenvolvido pela <a href="https://nlnetlabs.nl/" rel="noopener" target="_blank">NLnet Labs</a> na linguagem de programação Rust. O aplicativo foi desenvolvido para ser seguro e ter ótima portabilidade. É uma implementação leve que pode ser executada sem esforço em quase qualquer sistema operacional usando hardware minimalista.</p>
<p>O Routinator se conecta às âncoras de confiança dos cinco Registros Regionais da Internet (RIRs) &#8211; APNIC, AFRINIC, ARIN, LACNIC e RIPE NCC &#8211; baixa todos os certificados e ROAs nos vários repositórios, verifica as assinaturas e disponibiliza o resultado para uso em seu fluxo de trabalho BGP.</p>
<p>É um pacote de software completo que pode realizar a validação RPKI como uma operação única e armazenar o resultado no disco em formatos como CSV e JSON, ou executar como um serviço que faz download e verifica periodicamente os dados RPKI. Os roteadores podem se conectar ao Routinator para buscar dados verificados por meio do protocolo <strong>RPKI-RTR</strong>. O servidor HTTP embutido oferece uma interface de usuário e terminais para os vários formatos de arquivo, bem como registro, status e monitoramento do Prometheus.</p>
<p>Mas antes de você querer validar, você já tem seus prefixos validado??? Leia:<br />
<a href="https://blog.remontti.com.br/4848" rel="noopener" target="_blank">Como configurar o RPKI de forma simples</a></p>
<p>Para essa instalação irei usar o <a href="https://blog.remontti.com.br/2966" rel="noopener" target="_blank">Debian 10</a> ou Debian 11</p>
<p>Acesse seu servidor, e não esqueça de virar root da forma correta. Irei atualizar os pacotes e em seguida instalar alguns pacotes que serão necessários para a instalação do Routinator.</p>
<pre class="remontti-code"># su - 
# apt update ; apt upgrade 
# apt install wget gnupg2 apt-transport-https software-properties-common net-tools</pre>
<p>Agora adicione ao repositório do Debian os pacotes da nlnetlabs. Para <a href="https://github.com/NLnetLabs/routinator" rel="noopener" target="_blank">outras distribuição</a> leia a documentação <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><strong>Debian 10</strong></p>
<pre class="remontti-code"># echo &#039;deb [arch=amd64] https://packages.nlnetlabs.nl/linux/debian/ buster main&#039; &gt;  /etc/apt/sources.list.d/nlnetlabs.list</pre>
<p><strong>Debian 11</strong></p>
<pre class="remontti-code"># echo &#039;deb [arch=amd64] https://packages.nlnetlabs.nl/linux/debian/ bullseye main&#039; &gt;  /etc/apt/sources.list.d/nlnetlabs.list</pre>
<p>Em seguida, execute os seguintes comandos para adicionar a chave pública e atualizar a lista de repositórios:</p>
<pre class="remontti-code"># wget -qO- https://packages.nlnetlabs.nl/aptkey.asc | apt-key add -
# apt update</pre>
<p>Procure o pacote para ver se o mesmo se encontra em seu repositório.</p>
<pre class="remontti-code"># apt search routinator</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator.deb_.png" data-rel="lightbox-gallery-XcyxyFQP" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator.deb_.png" alt="" width="340" height="116" class="alignnone size-full wp-image-5737" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator.deb_.png 340w, https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator.deb_-300x102.png 300w" sizes="auto, (max-width: 340px) 100vw, 340px" /></a></p>
<p>Você pode então instala-lo e habilita-lo para iniciar o Routinator com o sistema. </p>
<pre class="remontti-code"># apt install routinator
# systemctl enable routinator
# routinator-init --accept-arin-rpa</pre>
<p>Terá o seguinte retorno:</p>
<pre class="remontti-code">Running command as user routinator: routinator --config /etc/routinator/routinator.conf init --accept-arin-rpa
Created local repository directory /var/lib/routinator/rpki-cache
Installed 5 TALs in /var/lib/routinator/tal</pre>
<p>Por padrão, o Routinator escuta apenas em seu serviço em localhost (tcp/127.0.0.1). Se você quiser que outros dispositivos possam ter acesso o serviço (e vamos querer é claro!) precisamos ajustar para ter acesso de qualquer local, fica tranquilo que já já vamos realizar um firewall para resolver as questões de segurança.</p>
<pre class="remontti-code"># vim /etc/routinator/routinator.conf</pre>
<p>Altere rtr-listen e http-listen:</p>
<pre class="remontti-code">#rtr-listen = [&quot;127.0.0.1:3323&quot;]
#http-listen = [&quot;127.0.0.1:8323&quot;]
rtr-listen = [ &quot;[::]:3323&quot; ]
http-listen = [ &quot;[::]:8323&quot; ]</pre>
<p>Inicie o serviço (Ele leva alguns minutos para fazer a sincronização)</p>
<pre class="remontti-code"># systemctl start routinator</pre>
<p>Verifique se o mesmo não teve nenhum erro.</p>
<pre class="remontti-code"># systemctl status routinator</pre>
<p>Você pode consultar se as portas 8323 e 3323 estão rodando, e se o servidor estebeleceu conexões com os servidores</p>
<pre class="remontti-code"># netstat -putan |grep routinator</pre>
<pre class="remontti-code">tcp        0      0 192.168.254.121:58014   170.39.226.189:443      ESTABELECIDA 354/routinator      
tcp        0     84 192.168.254.121:47658   103.235.88.190:443      ESTABELECIDA 354/routinator      
tcp        0      0 192.168.254.121:53364   149.56.154.148:443      ESTABELECIDA 354/routinator      
tcp        0      0 192.168.254.121:42862   218.241.105.61:443      ESTABELECIDA 354/routinator      
tcp        0      0 192.168.254.121:58334   141.98.88.107:443       ESTABELECIDA 354/routinator      
tcp        0      0 192.168.254.121:60420   45.89.251.100:443       ESTABELECIDA 354/routinator      
tcp        0      0 192.168.254.121:43290   44.242.33.211:443       ESTABELECIDA 354/routinator      
tcp        0      0 192.168.254.121:57370   35.205.101.187:443      ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:51314 2602:feda:4:dead:21:443 ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:55342 2406:6cc0:a100:4622:443 ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:60814 2a01:4f9:c010:206e::443 ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:43562 2001:12ff:0:2::50:443   ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:58358 2a0e:1cc1:1::1:7:443    ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:40998 2a01:6f0:101:17::1:443  ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:52372 2001:dd8:9:2::101:1:443 ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:55418 2001:67c:2e8:22::c1:443 ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:50044 2a04:4e42:5c::729:443   ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:50292 2401:2000:6660::14:443  ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:56746 2600:6ce4:0:202::7:443  ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:39656 2001:13c7:7002:4128:443 ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:59412 2001:500:13::149:443    ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:50094 2001:dd8:9:2::101:9:443 ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:36894 2a09:0:8::21:443        ESTABELECIDA 354/routinator      
tcp6       0      0 9999:bebe:bebe:f0d:50128 2600:9000:20bb:ae00:443 ESTABELECIDA 354/routinator 
tcp6       0      0 :::8080                 :::*                    OUÇA       354/routinator      
tcp6       0      0 :::3323                 :::*                    OUÇA       354/routinator      </pre>
<p>Acesse serviço HTTP <strong>(http://IP:8323)</strong> do Routinator, o mesmo fornece uma interface de usuário, uma <a href="https://routinator.docs.nlnetlabs.nl/en/stable/api-endpoints.html#doc-routinator-api" rel="noopener" target="_blank">API</a>, <a href="https://routinator.docs.nlnetlabs.nl/en/stable/monitoring.html#doc-routinator-monitoring" rel="noopener" target="_blank">monitoramento</a> e <a href="https://routinator.docs.nlnetlabs.nl/en/stable/logging.html#doc-routinator-logging" rel="noopener" target="_blank">log</a> de endpoints.  para ter </p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator-debian10.png" data-rel="lightbox-gallery-XcyxyFQP" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator-debian10.png" alt="" width="1920" height="1034" class="alignnone size-full wp-image-5724" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator-debian10.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator-debian10-300x162.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator-debian10-1024x551.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator-debian10-768x414.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/07/routinator-debian10-1536x827.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></a></p>
<p>Não podemos esquecer o firewall para proteger nosso Routinator, usarei o nftables para fechar as portas 3323 e 8323 permitindo apenas as listas de IPs <strong>acesso-routinator-v4/acesso-routinator-v6</strong>.</p>
<p>Instale o nftables e ative-o para iniciar com o sistema.</p>
<pre class="remontti-code"># apt install nftables 
# systemctl enable nftables</pre>
<p>Criando as regras:</p>
<pre class="remontti-code"># vim /etc/nftables.conf </pre>
<p>Ajustes para os ips da sua rede que terão acesso ao routinator.</p>
<pre class="remontti-code">#!/usr/sbin/nft -f
  
flush ruleset
 
table inet filter {
 
    # IPs que serão permitidos ter acesso ao routinator
    set acesso-routinator-v4 {
        type ipv4_addr
        flags interval
        elements = { 127.0.0.1, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, 100.64.0.0/10, 200.200.200.0/22 }
    }
    set acesso-routinator-v6 {
        type ipv6_addr
        flags interval
        elements = { ::1,  2804:bebe:bebe::/48 }
    }
  
    chain input {
        type filter hook input priority 0;
 
        # RTR
        ip saddr  @acesso-routinator-v4 udp dport 3323 counter accept
        ip6 saddr @acesso-routinator-v6 udp dport 3323 counter accept
        udp dport 3323 counter drop
        
        # HTTP
        ip saddr  @acesso-routinator-v4 udp dport 8323 counter accept
        ip6 saddr @acesso-routinator-v6 udp dport 8323 counter accept
        udp dport 8323 counter drop
 
        type filter hook input priority 0;
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}
</pre>
<p>Reinicie o serviço</p>
<pre class="remontti-code"># systemctl restart nftables</pre>
<p>Verificar as regras com o comando:</p>
<pre class="remontti-code"># nft list ruleset</pre>
<p>Seu Routinator está pronto para receber a conexão de seu roteador. </p>
<h3>Soluções de Hardware</h3>
<p>As versões listadas aqui são as primeiras em que o suporte RPKI foi disponibilizado. No entanto, uma versão mais recente pode ser necessária para obter melhorias recomendadas e correções de bugs.<br />
├── <a href="https://www.juniper.net/documentation/en_US/junos/topics/topic-map/bgp-origin-as-validation.html" rel="noopener" target="_blank">Juniper</a> – Junos versão 12.2 e mais recente. Leia PR1461602 e PR1309944 antes de implantar.<br />
├── <a href="https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_bgp/configuration/15-s/irg-15-s-book/irg-origin-as.html" rel="noopener" target="_blank">Cisco</a> – IOS versão 15.2 e mais recente, bem como Cisco IOS / XR desde a versão 4.3.2.<br />
├── <a href="https://infocenter.alcatel-lucent.com/public/7750SR160R4A/index.jsp?topic=%2Fcom.sr.unicast%2Fhtml%2Fbgp.html&#038;cp=22_4_7_2&#038;anchor=d2e5366" rel="noopener" target="_blank">Nokia</a> – SR OS 12.0.R4 e mais recente, rodando no 7210 SAS, 7250 IXR, 7750 SR, 7950 XRS e no VSR.<br />
├── <a href="https://support.huawei.com/hedex/hdx.do?lib=EDOC1000142112AEI0520D&#038;docid=EDOC1000142112&#038;lang=en&#038;v=05&#038;tocLib=EDOC1000142112AEI0520D&#038;tocV=05&#038;id=dc_vrp_bgp_cfg_3099&#038;tocURL=resources%2525252Fvrp%2525252Fdc_vrp_bgp_cfg_3099.html&#038;p=t&#038;fe=1&#038;ui=3&#038;keyword=configuring%25252Brpki" rel="noopener" target="_blank">Huawei</a> – VRP 8.150 and newer.<br />
└── <a href="https://forum.mikrotik.com/viewtopic.php?f=1&#038;t=161980" rel="noopener" target="_blank">Mikrotik</a> <a href="https://help.mikrotik.com/docs/pages/viewpage.action?pageId=59277471">RouterOSv7</a> – 7.0beta7 and newer</p>
<h3>Soluções de software</h3>
<p>Várias soluções de software têm suporte para validação de origem:<br />
├── <a href="https://bird.network.cz/" rel="noopener" target="_blank">BIRD</a><br />
├── <a href="http://openbgpd.org/" rel="noopener" target="_blank">OpenBGPD</a><br />
├── <a href="https://frrouting.org/" rel="noopener" target="_blank">FRRouting</a><br />
├── <a href="https://osrg.github.io/gobgp/" rel="noopener" target="_blank">GoBGP</a><br />
└── <a href="https://www.vyos.io/" rel="noopener" target="_blank">VyOS</a></p>
<p>Curtiu o conteúdo? Quer me ajudar manter essa p*** ? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></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>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </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>Fontes:<br />
<a href="https://routinator.docs.nlnetlabs.nl/en/stable/" rel="noopener" target="_blank">https://routinator.docs.nlnetlabs.nl/en/stable/</a><br />
<a href="https://nlnetlabs.nl/projects/rpki/about/" rel="noopener" target="_blank">https://nlnetlabs.nl/projects/rpki/about/</a><br />
<a href="https://github.com/NLnetLabs/routinator" rel="noopener" target="_blank">https://github.com/NLnetLabs/routinator</a><br />
<a href="https://docs.ixpmanager.org/features/rpki/routinator/" rel="noopener" target="_blank">https://docs.ixpmanager.org/features/rpki/routinator/</a></p>
<p>O post <a href="https://blog.remontti.com.br/5720">Instalação do Routinator 3000, um software para validação RPKI</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5720/feed</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Monitoramento com o Observium no Debian 10</title>
		<link>https://blog.remontti.com.br/5103</link>
					<comments>https://blog.remontti.com.br/5103#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 20 Oct 2020 20:03:05 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Huawei]]></category>
		<category><![CDATA[monitoramento]]></category>
		<category><![CDATA[observium]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[rrd]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5103</guid>

					<description><![CDATA[<p>Observium é uma ferramenta de gerenciamento e monitoramento de rede gratuita e de código aberto que pode ser usada para monitorar todos os dispositivos de rede. Ele é escrito em PHP e usa SNMP&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5103">Monitoramento com o Observium no Debian 10</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium-remontti-capa.png" alt="" width="720" height="340" class="alignnone size-full wp-image-5117" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium-remontti-capa.png 720w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium-remontti-capa-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium-remontti-capa-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /><br />
<a href="https://www.observium.org/" rel="noopener noreferrer" target="_blank">Observium</a> é uma ferramenta de gerenciamento e monitoramento de rede gratuita e de código aberto que pode ser usada para monitorar todos os dispositivos de rede. Ele é escrito em PHP e usa SNMP para coletar os dados do dispositivo conectado e monitorá-los usando uma interface da web. </p>
<p>Observium oferece suporte a vários hardwares de rede e sistemas operacionais, incluindo Linux, Windows, FreeBSD, Cisco, Dell, Netscaler, Huawei, Mikrotik e muito mais. O Observium oferece uma interface poderosa, simples e fácil de usar para monitorar a saúde e o status de sua rede.</p>
<p>Profissionalmente desenvolvido e mantido por uma equipe de experientes engenheiros de rede e administradores de sistemas, o Observium é uma plataforma projetada e construída por seus usuários.</p>
<p>A <strong>Comunidade Observium </strong>está disponível <strong>gratuitamente</strong> para todos e recebe atualizações e recursos duas vezes por ano. O <strong>Observium Professional </strong>adiciona acesso prioritário a atualizações diárias e novos recursos por uma pequena <strong>taxa anual</strong>.</p>
<h3>Requisitos:</h3>
<p><a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">* Debian 10 (Buster) -> Instalação Limpa</a><br />
<a href="https://blog.remontti.com.br/3006" rel="noopener noreferrer" target="_blank">* Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP”</a><br />
A instalação do <strong>phpMyAdmin não é necessária</strong>.</p>
<p>Instale os pacotes necessários:</p>
<pre class="remontti-code"># apt install snmp fping python-mysqldb rrdtool subversion whois mtr-tiny ipmitool graphviz imagemagick wget</pre>
<p>Crie o banco de dados do observium </p>
<pre class="remontti-code"># mariadb -u root -p</pre>
<p>Não esqueça de alterar <strong>SUA_SENHA</strong></p>
<pre class="remontti-code">CREATE DATABASE observium DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON observium.* TO &#039;observium&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039;;
FLUSH PRIVILEGES;
QUIT;</pre>
<p>Edições Observium</p>
<p>Como dito o Observium vem em duas edições, uma Open Source Community Edition lançada em um ciclo semestral e uma edição com recursos adicionais, correções rápidas de bugs e melhorias de recursos diariamente. Caso queira a versão &#8220;Pro&#8221; acesse <a href="https://www.observium.org/" rel="noopener noreferrer" target="_blank">https://www.observium.org/</a></p>
<p>Como a a gente é pobre <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> (zueira) vamos instalar a versão <strong>Community Edition</strong><br />
Se desejar instalar o Community Edition, instale usando a versão .tar.gz mais recente.</p>
<p>Baixe o .tar.gz mais recente do Observium e descompacte:</p>
<pre class="remontti-code"># cd /var/www/
# wget http://www.observium.org/observium-community-latest.tar.gz
# tar zxvf observium-community-latest.tar.gz</pre>
<p>Crie o diretório para armazenar RRDs e ous logs:</p>
<pre class="remontti-code"># mkdir /var/www/observium/rrd 
# mkdir /var/www/observium/logs</pre>
<p>Ajustes as permissões:</p>
<pre class="remontti-code"># chown www-data. /var/www/observium/ -R </pre>
<p>Crie uma cópia do config.php.default para config.php e ajustes os valores do banco de dados colocando os valores criado no passo anterior:</p>
<pre class="remontti-code"># cp /var/www/observium/config.php.default /var/www/observium/config.php
# vim /var/www/observium/config.php</pre>
<pre class="remontti-code">$config[&#039;db_extension&#039;] = &#039;mysqli&#039;;
$config[&#039;db_host&#039;]      = &#039;localhost&#039;;
$config[&#039;db_user&#039;]      = &#039;observium&#039;;
$config[&#039;db_pass&#039;]      = &#039;SUA_SENHA&#039;;
$config[&#039;db_name&#039;]      = &#039;observium&#039;;</pre>
<p>Configure o banco de dados:</p>
<pre class="remontti-code"># php /var/www/observium/discovery.php -u </pre>
<p>Retornará:</p>
<pre class="remontti-code">  ___   _                              _
 / _ \ | |__   ___   ___  _ __ __   __(_) _   _  _ __ ___
| | | || &#039;_ \ / __| / _ \| &#039;__|\ \ / /| || | | || &#039;_ ` _ \
| |_| || |_) |\__ \|  __/| |    \ V / | || |_| || | | | | |
 \___/ |_.__/ |___/ \___||_|     \_/  |_| \__,_||_| |_| |_|
                     Observium Community Edition 20.9.10731
                                  https://www.observium.org

Install initial database schema ... done.
-- Updating database/file schema
416 -&gt; 417 # (db) .. Done (0s).
417 -&gt; 418 # (db) . Done (0s).
418 -&gt; 419 # (db) .... Done (1s).
419 -&gt; 420 # (db) .. Done (0s).
420 -&gt; 421 # (db) ... Done (0s).
421 -&gt; 422 # (db) .. Done (0s).
422 -&gt; 423 # (db) ...... Done (0s).
423 -&gt; 424 # (php)  Done (0s).
424 -&gt; 425 # (db) . Done (0s).
425 -&gt; 426 # (db) ............... Done (0s).
426 -&gt; 427 # (db) ... Done (0s).
427 -&gt; 428 # (db) ... Done (0s).
428 -&gt; 429 # (db) ... Done (0s).
429 -&gt; 430 # (db) (WARNING! Required MySQL version 5.6+ or MariaDB 10.0+).... Done (0s).
430 -&gt; 431 # (db) ..... Done (0s).
431 -&gt; 432 # (php)  Done (0s).
432 -&gt; 433 # (db) ......... Done (0s).
433 -&gt; 434 # (db) ... Done (0s).
434 -&gt; 435 # (db) . Done (0s).
-- Done.</pre>
<p>Como o php-mcrypt não está mais no repositório do Debian 10 (php.7.3) vamos instala-lo na mão:</p>
<pre class="remontti-code"># apt install php-dev libmcrypt-dev mcrypt
# pecl channel-update pecl.php.net
# pecl install channel://pecl.php.net/mcrypt-1.0.2</pre>
<p>Edite o php.ini</p>
<pre class="remontti-code"># vim /etc/php/7.3/cli/php.ini</pre>
<p>Inclua:</p>
<pre class="remontti-code">extension=mcrypt.so</pre>
<p>Verifique se a extensão esta sendo carregada, deve retornar o valor mcrypt.</p>
<pre class="remontti-code"># php -m | grep mcrypt</pre>
<p>Faremos a configuração do apache para que quando o servidor for acessado no navegado o mesmo já abra o Observium, caso você esteja instalando com outros serviços web, ou gosta das coisas organizadas pode pular para o próximo exemplo.</p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/000-default.conf</pre>
<p>Ajuste para:</p>
<pre class="remontti-code">&lt;VirtualHost *:80&gt;
    ServerAdmin noc@remontti.com.br

    DocumentRoot /var/www/observium/html

    &lt;FilesMatch \.php$&gt;
      SetHandler application/x-httpd-php
    &lt;/FilesMatch&gt;

    &lt;Directory /&gt;
            Options FollowSymLinks
            AllowOverride None
    &lt;/Directory&gt;

    &lt;Directory /var/www/observium/html/&gt;
            DirectoryIndex index.php
            Options FollowSymLinks MultiViews
            AllowOverride All
            Require all granted
    &lt;/Directory&gt;

    ErrorLog  ${APACHE_LOG_DIR}/error_observium.log    
    CustomLog  ${APACHE_LOG_DIR}/access_observium.log combined
    ServerSignature On

&lt;/VirtualHost&gt;</pre>
<p>Caso você queira proteger para algumas classes de IPs e usar um subdomíno pode usar este modelo. (Mas você pode filtrar por IP também no modelo anterior ajustando os &#8220;Require&#8221;)</p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/observium.conf</pre>
<pre class="remontti-code">&lt;virtualhost *:80&gt;
   ServerName observium.remontti.com.br
   ServerAdmin noc@remontti.com.br

   # Sem permissões será redirecionada para
   ErrorDocument 403 http://www.remontti.com.br
 
   DocumentRoot /var/www/observium/html

    &lt;FilesMatch \.php$&gt;
      SetHandler application/x-httpd-php
    &lt;/FilesMatch&gt;

    &lt;Directory /&gt;
      Options FollowSymLinks
      AllowOverride None
    &lt;/Directory&gt;
 
   &lt;Directory /var/www/observium/html/&gt;
      DirectoryIndex index.php
      Options FollowSymLinks MultiViews
      AllowOverride All
      Require all denied
      &lt;RequireAll&gt;
         &lt;RequireAny&gt;
            Require ip 127.0.0.1 ::1 45.80.51.0/29 2804:f123:bebe:c0ca::/64
         &lt;/RequireAny&gt;
      &lt;/RequireAll&gt;
   &lt;/Directory&gt;
 
   ErrorLog ${APACHE_LOG_DIR}/error_observium.log
   CustomLog ${APACHE_LOG_DIR}/access_observium.log combined
 
&lt;/VirtualHost&gt;</pre>
<p>Habilite a configuração criada acima:</p>
<pre class="remontti-code"># a2ensite observium</pre>
<p>Habilite o o modulo rewrite</p>
<pre class="remontti-code"># a2enmod rewrite</pre>
<p>Reinicie o serviço do apache</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>Vamos utilizar as MIBs do Observium, para isso vamos chama-las (Você pode adicionar outras, verifique quais disponiveis em /var/www/observium/mibs). </p>
<pre class="remontti-code"># vim /etc/snmp/snmp.conf</pre>
<p>Ajuste:</p>
<pre class="remontti-code">mibs : /var/www/observium/mibs/rfc:/var/www/observium/mibs/net-snmp:/var/www/observium/mibs/mikrotik:/var/www/observium/mibs/huawei</pre>
<p>Precisamos ajustar </p>
<p>Observium opera em uma frequência de poller fixa de 5 minutos ou 300 segundos. O processo poller-wrapper deve ser executado nesta frequência NÃO funcionará de outra forma. então vamos criar o /etc/cron.d/observium </p>
<pre class="remontti-code"># vim /etc/cron.d/observium</pre>
<p>Adicione:</p>
<pre class="remontti-code"># Execute uma descoberta completa de todos os dispositivos uma vez a cada 6 horas
# Run a complete discovery of all devices once every 6 hours
33  */6   * * *   root    /var/www/observium/discovery.php -h all &gt;&gt; /dev/null 2&gt;&amp;1

# Execute a descoberta automática de dispositivos recém-adicionados a cada 5 minutos
# Run automated discovery of newly added devices every 5 minutes
*/5 *     * * *   root    /var/www/observium/discovery.php -h new &gt;&gt; /dev/null 2&gt;&amp;1

# Execute o multithreaded poller wrapper a cada 5 minutos
# Run multithreaded poller wrapper every 5 minutes
*/5 *     * * *   root    /var/www/observium/poller-wrapper.py &gt;&gt; /dev/null 2&gt;&amp;1

# Execute o script de manutenção diariamente para syslog, log de eventos e log de alerta
# Run housekeeping script daily for syslog, eventlog and alert log
13 5      * * *   root    /var/www/observium/housekeeping.php -ysel &gt;&gt; /dev/null 2&gt;&amp;1

# Execute o script de manutenção diariamente para rrds, portas, entradas órfãs no banco de dados e dados de desempenho
# Run housekeeping script daily for rrds, ports, orphaned entries in the database and performance data
47 4      * * *   root    /var/www/observium/housekeeping.php -yrptb &gt;&gt; /dev/null 2&gt;&amp;1</pre>
<p>Reinicie o Cron:</p>
<pre class="remontti-code"># systemctl restart cron</pre>
<p>Adicione o primeiro usuário, use o level 10 para o administrador:</p>
<pre class="remontti-code"># php /var/www/observium/adduser.php &lt;usuario&gt; &lt;senha&gt; &lt;level&gt;</pre>
<p>Ex.:</p>
<pre class="remontti-code"># php /var/www/observium/adduser.php admin suasenha 10</pre>
<p>Adicione um primeiro dispositivo para monitorar: (Não esqueça de configurar o SNMP)</p>
<pre class="remontti-code"># php /var/www/observium/add_device.php &lt;hostname&gt; &lt;community&gt; v2c
# php /var/www/observium/add_device.php 10.0.0.100 publicsnmp v2c</pre>
<p>Agora acesse seu servidor em seu navegador e entre com usuário e senha criado.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_debian_buster.png" alt="" width="1019" height="489" class="alignnone size-full wp-image-5112" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_debian_buster.png 1019w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_debian_buster-300x144.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_debian_buster-768x369.png 768w" sizes="auto, (max-width: 1019px) 100vw, 1019px" /></p>
<p>Parabéns!<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_home_debian_buster.png" alt="" width="1345" height="919" class="alignnone size-full wp-image-5113" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_home_debian_buster.png 1345w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_home_debian_buster-300x205.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_home_debian_buster-1024x700.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_home_debian_buster-768x525.png 768w" sizes="auto, (max-width: 1345px) 100vw, 1345px" /></p>
<p>Espero que tenha lhe instigado/inspirado a buscar mais aprender um pouquinho +</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>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </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><strong>Fonte:</strong><br />
<a href="https://docs.observium.org/install_debian/" rel="noopener noreferrer" target="_blank">https://docs.observium.org/install_debian/</a><br />
<a href="https://docs.observium.org/web_config/" rel="noopener noreferrer" target="_blank">https://docs.observium.org/web_config/</a><br />
<a href="https://docs.observium.org/dashboard/" rel="noopener noreferrer" target="_blank">https://docs.observium.org/dashboard/</a></p>
<p>O post <a href="https://blog.remontti.com.br/5103">Monitoramento com o Observium no Debian 10</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5103/feed</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Servidor Looking Glass simples e rápido!</title>
		<link>https://blog.remontti.com.br/4243</link>
					<comments>https://blog.remontti.com.br/4243#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 27 Mar 2020 20:54:36 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[bgp]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[Comware]]></category>
		<category><![CDATA[Huawei]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[lg]]></category>
		<category><![CDATA[looking glass]]></category>
		<category><![CDATA[OpenBGPD]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Quagga]]></category>
		<category><![CDATA[RADb]]></category>
		<category><![CDATA[routeros]]></category>
		<category><![CDATA[Zebra]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=4243</guid>

					<description><![CDATA[<p>Um servidor Looking Glass (ou servidor LG) é muito útil para acesso remoto com o objetivo de disponibilizar informações de roteamento publicamente. O servidor atua como um portal limitado e somente leitura para roteadores&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/4243">Servidor Looking Glass simples e rápido!</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Um servidor Looking Glass (ou servidor LG) é muito útil para acesso remoto com o objetivo de disponibilizar informações de roteamento publicamente. O servidor atua como um portal limitado e somente leitura para roteadores de qualquer organização que esteja executando o servidor LG.</p>
<p>Para montar o servidor vamos usar um projeto muito simples que basicamente tem 2 arquivos, o <a href="https://github.com/remontti/lg" rel="noopener noreferrer" target="_blank">PHP Looking Glass</a> qual é um fork do projeto russo <a href="https://github.com/hsdn/lg" rel="noopener noreferrer" target="_blank">hsdn</a>.<br />
<center><a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10_graph.png" data-rel="lightbox-gallery-cMOcKOHQ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10_graph-300x265.png" alt="" width="300" height="265" class="alignnone size-medium wp-image-4254" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10_graph-300x265.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10_graph-768x677.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10_graph.png 848w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/show-ip-bgp.png" data-rel="lightbox-gallery-cMOcKOHQ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/show-ip-bgp-300x265.png" alt="" width="300" height="265" class="alignnone size-medium wp-image-4256" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/show-ip-bgp-300x265.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/show-ip-bgp-768x677.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/03/show-ip-bgp.png 862w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></center></p>
<p>Você encontra outros projetos legais também como o da <a href="https://github.com/respawner/looking-glass" rel="noopener noreferrer" target="_blank">respawner</a> qual o pessoal da <a href="https://wiki.brasilpeeringforum.org/w/Como_Ter_Seu_Proprio_Looking_Glass" rel="noopener noreferrer" target="_blank">BPF</a> já fez tutorial sobre o mesmo. </p>
<h3>Características do PHP Looking Glass</h3>
<p>Suporte a Telnet e SSH (plink ou sshpass).<br />
Suporte aos roteadores <strong>Cisco, MikroTik (RouterOS), Juniper, Huawei (Comware), Quagga (Zebra) e OpenBGPD</strong>.<br />
Suppores aos protocolos IPv4 e IPv6.<br />
Conversão automática de IPs em sub-redes usando Merit RADb para MikroTik (http://www.ra.net/).<br />
Desenho do gráfico BGP AS usando o kit de ferramentas GraphViz.<br />
Funciona no php 5.2.0 e superiores.</p>
<p>Para subir o projeto em seu servidor você precisa ter um serviço web como apache por exemplo e PHP basicamente. Você pode subir ele em um servido já em produção, não é necessário criar um servidor apenas para essa finalidade. (Porém fica a seu critério) </p>
<p>Vou trazer uma instalação limpa com base na <a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">instalação zerada do Debian 10</a>. </p>
<p>Com Debian instalado vamos instalar os pacotes necessários:</p>
<pre class="remontti-code"># apt install apache2 apache2-utils sshpass graphviz
# apt install libapache2-mod-php php php-cli php-pear php-gmp php-gd php-bcmath php-mbstring php-curl php-xml php-zip
# pear install Image_GraphViz-1.3.0</pre>
<p>Vou colocar o projeto no diretório padrão do apache /var/www/html/, mas você pode criar um <a href="https://blog.remontti.com.br/3464" rel="noopener noreferrer" target="_blank">domínio virtual </a>para isso ficar muito mais legal e ainda criar um <a href="https://blog.remontti.com.br/3548" rel="noopener noreferrer" target="_blank">certificado gratuitamente</a> com o  Let’s Encrypt</p>
<pre class="remontti-code"># mkdir /var/www/html/lg
# cd /var/www/html/lg
# apt install wget
# wget https://github.com/remontti/lg/raw/master/htdocs/favicon.ico
# wget https://github.com/remontti/lg/raw/master/htdocs/lg_logo.gif
# wget https://raw.githubusercontent.com/remontti/lg/master/htdocs/index.php
# wget https://raw.githubusercontent.com/remontti/lg/master/htdocs/lg_config.php</pre>
<p>Agora basta vocÊ editar o arquivo <strong>lg_config.php</strong> e alterar os valores das variáveis:</p>
<p><strong>$_CONFIG[&#8216;asn&#8217;]</strong> &#8211; Seu AS para exibição na página LG.<br />
<strong>$_CONFIG[&#8216;company&#8217;]</strong> &#8211; Nome da empresa para exibição na página LG.<br />
<strong>$_CONFIG[&#8216;logo&#8217;]</strong> &#8211; O logotipo da sua empresa para exibição na página LG.<br />
<strong>$_CONFIG[&#8216;color&#8217;]</strong> &#8211; Cor principal dos elementos de design na página LG.</p>
<p>A configuração dos roteadores é especificada em $_CONFIG[&#8216;routers&#8217;], no seguinte formato:</p>
<pre class="remontti-code-plain">$_CONFIG[&#039;routers&#039;] = array
(
    &#039;router1&#039; = array
    (
        // Router valores
    ),
    &#039;router2&#039; = array
    (
        // Router valores
    ),
    // etc.
);</pre>
<p>No nosso arquivo atual já consta com 3 exemplos sendo um o do IX.BR (SP). Basta você configurar seu roteado seguindo os padrões:</p>
<p><strong>url</strong> &#8211; Endereço no formato: [ssh|telnet]://[login]:[password]@[host]:[port].<br />
<strong>pingtraceurl</strong> &#8211; Endereço URL para ferramentas de ping e traceroute para roteadores Quagga (ou * FALSE *).<br />
<strong>description</strong> &#8211; Descrição do roteador.<br />
<strong>group</strong> &#8211; Nome do grupo de roteadores (AS) (ou FALSE).<br />
<strong>ipv6</strong> &#8211; Suporte IPv6? (TRUE ou FALSE).<br />
<strong>os</strong> &#8211; Tipo do Router (ios, mikrotik, quagga, junos, openbgpd, huawei).</p>
<p>Configurações ajustada basta acessar o endereço http://ip-servidor/lg ou se você fez bonitinho via domínio <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10.png" data-rel="lightbox-gallery-cMOcKOHQ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10.png" alt="" width="978" height="544" class="alignnone size-full wp-image-4250" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10.png 978w, https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10-300x167.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10-768x427.png 768w" sizes="auto, (max-width: 978px) 100vw, 978px" /></a></p>
<p>Curtiu o conteúdo? Quer me ajudar? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento! (Esse deu trabalho!)</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>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Abraço!</p>
<p><strong>Demos</strong><br />
<a href="http://dev.hsdn.org/lg/" rel="noopener noreferrer" target="_blank">http://dev.hsdn.org/lg/</a><br />
<a href="http://lg.campus-rv.net/" rel="noopener noreferrer" target="_blank">http://lg.campus-rv.net/</a><br />
<a href="http://lg.lankabell.com/" rel="noopener noreferrer" target="_blank">http://lg.lankabell.com/</a></p>
<p><strong>Gráfico da demonstração (BGP AS)</strong><br />
<a href="http://dev.hsdn.org/lg/?command=graph&#038;protocol=ipv4&#038;query=8.8.8.8&#038;router=example1" rel="noopener noreferrer" target="_blank">http://dev.hsdn.org/lg/?command=graph&#038;protocol=ipv4&#038;query=8.8.8.8&#038;router=example1</a></p>
<p>O post <a href="https://blog.remontti.com.br/4243">Servidor Looking Glass simples e rápido!</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/4243/feed</wfw:commentRss>
			<slash:comments>36</slash:comments>
		
		
			</item>
	</channel>
</rss>
