<?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 ElastiFlow - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/elastiflow/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/elastiflow</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 ElastiFlow - Remontti</title>
	<link>https://blog.remontti.com.br/tag/elastiflow</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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 fetchpriority="high" 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="(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 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="(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 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="(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 obter gráficos de tráfego por AS utilizando AS-STATS (open source)</title>
		<link>https://blog.remontti.com.br/5129</link>
					<comments>https://blog.remontti.com.br/5129#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Thu, 05 Nov 2020 19:53:31 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[as-stats]]></category>
		<category><![CDATA[ElastiFlow]]></category>
		<category><![CDATA[graficos]]></category>
		<category><![CDATA[monitoramento]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Netflow]]></category>
		<category><![CDATA[sFlow]]></category>
		<category><![CDATA[Traffic Flow]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5129</guid>

					<description><![CDATA[<p>AS-Stats é uma ferramenta simples para gerar gráficos de tráfego por AS a partir de registros NetFlow / sFlow criada por Manuel Kasper para Monzoon Networks AG está na versão 1.6 (2014-09-12) e atualmente&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5129">Como obter gráficos de tráfego por AS utilizando AS-STATS (open source)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong><a href="https://github.com/manuelkasper/AS-Stats" rel="noopener noreferrer" target="_blank">AS-Stats</a></strong> é uma ferramenta simples para gerar gráficos de tráfego por AS a partir de registros NetFlow / sFlow criada<br />
por <a href="mk@neon1.net" rel="noopener noreferrer" target="_blank">Manuel Kasper</a> para Monzoon Networks AG está na versão 1.6 (2014-09-12) e atualmente não tem mais tempo para manter AS-Stats. No entanto houve algumas contribuições e além disso, <a href="https://github.com/nidebr/as-stats-gui" rel="noopener noreferrer" target="_blank">Nicolas Debrigode</a> lançou uma IU da Web mais moderna para AS-Stats, bem como o <a href="https://github.com/JackSlateur/perl-ip2as" rel="noopener noreferrer" target="_blank">Jack Slateur</a> que contribui para o mapeamento de IP para ASN.</p>
<p>Com todas essas melhorias fiz um novo <a href="https://github.com/remontti/AS-Stats" rel="noopener noreferrer" target="_blank">fork do projeto AS-Stats</a> atualizado varias coisas e unificando todo o projeto. </p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/11/as-stats.png" alt="" width="1180" height="634" class="alignnone size-full wp-image-5139" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/11/as-stats.png 1180w, https://blog.remontti.com.br/wp-content/uploads/2020/11/as-stats-300x161.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/11/as-stats-1024x550.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/11/as-stats-768x413.png 768w" sizes="auto, (max-width: 1180px) 100vw, 1180px" /></p>
<h3>Como funciona</h3>
<p>Um script Perl (asstatd.pl) coleta registros de agregação do NetFlow v8/v9 AS ou amostras sFlow v5 de um ou mais roteadores. Ele os armazena em cache por cerca de um minuto (para evitar gravações excessivas em arquivos RRD), identifica o link a que cada registro se refere (por meio do índice de interface de entrada/saída SNMP), mapeia-o para um &#8220;link conhecido&#8221; correspondente e dados RRD fonte e, em seguida, executa o RRDtool. Para evitar a perda de novos registros enquanto os arquivos RRD são atualizados, a tarefa de atualização é executada em um processo separado.</p>
<p>Para cada AS, um arquivo RRD separado é criado conforme necessário. Ele contém duas fontes de dados para cada link &#8211; uma para o tráfego de entrada e outra para o tráfego de saída. Em gráficos de tráfego por AS gerados, o tráfego de entrada é mostrado como positivo, enquanto o tráfego de saída é mostrado como valores negativos.</p>
<p>Outro script Perl, rrd-extractstats.pl, deve ser executado uma vez por hora. Ele soma o tráfego por AS e link durante as últimas 24 horas, classifica os AS pelo tráfego total (decrescente) e grava os resultados em um arquivo de texto. Isso é então usado para exibir os &#8220;principais N AS&#8221; e outras estatísticas dos scripts PHP fornecidos.</p>
<h4>Considerações</h4>
<p>Os arquivos RRD são pequenos, mas existem em grande quantidade. Você verá um ganho de desempenho em um sistema de arquivos como XFS sobre EXT4. Considere em qual sistema de arquivos você colocou os arquivos RRD se o desempenho for um fator para suas necessidades.</p>
<h3>Pré-requisitos</h3>
<p><a href="https://blog.remontti.com.br/5792" target="_blank" rel="noopener noreferrer">Debian 11 Bullseye – Instalação Limpa</a></p>
<p>Hardware vai depender muito da quantidade de flows coletado, mas ele é muito mais modesto em relação ao elastflow, vou deixar aqui um exemplo, de um servidor que subi com o Rudson para coletar ~5GB de um Huawei NE40 coletando de 4 interfaces. (4CPU 2.20GHz + 8GB Ram) mas como pode ver no print está super de boa <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 />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/09/htop.png" alt="" width="1231" height="253" class="alignnone size-full wp-image-5166" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/09/htop.png 1231w, https://blog.remontti.com.br/wp-content/uploads/2020/09/htop-300x62.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/09/htop-1024x210.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/09/htop-768x158.png 768w" sizes="auto, (max-width: 1231px) 100vw, 1231px" /><br />
Na questão de espaço em disco vai depender de quantas interfaces vc irá coletar, mas se prepare com ~50GB para não ter dor de cabeça, e na pior das hipóteses #format <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;" /></p>
<p>Ajustes seu repositório para pacotes <strong>non-free</strong> e <strong>contrib</strong>:</p>
<pre class="remontti-code"># vim /etc/apt/sources.list</pre>
<p>Ajuste:</p>
<pre class="remontti-code-plain">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

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>
<p>Instalaremos todos os pacotes necessários para o projeto</p>
<pre class="remontti-code"># apt update
# apt install \
  unzip wget git net-tools curl dnsutils whois build-essential \
  perl libnet-patricia-perl libjson-xs-perl netcat python3-requests \
  libdbd-sqlite3-perl libtrycatch-perl rrdtool-tcl libgd-graph-perl \
  librrds-perl librrdp-perl librrdtool-oo-perl \
  rrdtool python3-rrdtool python3-rrdtool-dbg librrd-dev rrdcollect \
  apache2 libapache2-mod-php php php-sqlite3 \
  php-cli php-gmp php-gd php-bcmath php-mbstring \
  php-pear php-curl php-xml php-zip libyaml-perl</pre>
<pre class="remontti-code"># perl -MCPAN -e &#039;install Net::sFlow&#039;</pre>
<p>Responta <strong>YES</strong></p>
<pre class="remontti-code-plain">Would you like to configure as much as possible automatically? [yes]</pre>
<p>Último resultado será:</p>
<pre class="remontti-code-plain">/usr/bin/make install  -- OK</pre>
<pre class="remontti-code"># perl -MCPAN -e &#039;install File::Find::Rule&#039;</pre>
<p>Último resultado será:</p>
<pre class="remontti-code-plain">/usr/bin/make install  -- OK</pre>
<p>Como dito unifique todo o projeto, então vamos baixa-lo em uma pasta /data onde ficará todos os arquivos.</p>
<pre class="remontti-code"># mkdir /data/
# cd /data/
# git clone https://github.com/remontti/AS-Stats.git asstats
# mkdir /data/asstats/rrd</pre>
<p>Pesquisas adicionais (em caso de Mikrotik será necessário um complemento a mais já que o flow enviado não vem informação do AS, a solução <del datetime="2020-11-05T15:06:01+00:00">gambiarra</del> é usar um &#8220;tradutor de IPs para AS&#8221;. </p>
<pre class="remontti-code"># cp /data/asstats/ip2asn/ip2as.pm /usr/share/perl5/</pre>
<p>Vai ser necessário instalar o snmpwalk e as MIBs para coletarmos informações do router, pois é com essas informações que vamos dizer qual interface vamos coletar os flows. </p>
<pre class="remontti-code"># apt install snmp snmp-mibs-downloader
# cp  /etc/snmp/snmp.conf   /etc/snmp/snmp.conf.old
# echo &quot;&quot; &gt; /etc/snmp/snmp.conf</pre>
<p>Para fazer a coleta <strong>precisamos saber</strong> o identificador (<strong>ifIndex</strong>) da <strong>interface</strong>, para isso então vamos usar o snmpwalk para descobrir qual os nomes (<strong>ifDescr</strong>) primeiro e em seguida o identificador (<strong>ifIndex</strong>).</p>
<p><strong>Exemplo de saída snmpwalk de um huawei:</strong></p>
<pre class="remontti-code"># snmpwalk -v2c -c public 10.20.30.2 IF-MIB::ifDescr</pre>
<pre class="remontti-code-plain">IF-MIB::ifDescr.1 = STRING: Virtual-Template0
IF-MIB::ifDescr.2 = STRING: NULL0
IF-MIB::ifDescr.3 = STRING: InLoopBack0
IF-MIB::ifDescr.4 = STRING: Ethernet0/0/0
IF-MIB::ifDescr.6 = STRING: GigabitEthernet0/7/0
IF-MIB::ifDescr.7 = STRING: GigabitEthernet0/7/1
IF-MIB::ifDescr.8 = STRING: GigabitEthernet0/7/2
IF-MIB::ifDescr.9 = STRING: GigabitEthernet0/7/3
IF-MIB::ifDescr.10 = STRING: GigabitEthernet0/7/4
IF-MIB::ifDescr.11 = STRING: GigabitEthernet0/7/5
IF-MIB::ifDescr.12 = STRING: GigabitEthernet0/7/6
IF-MIB::ifDescr.13 = STRING: GigabitEthernet0/7/7
IF-MIB::ifDescr.14 = STRING: GigabitEthernet0/7/8
IF-MIB::ifDescr.15 = STRING: GigabitEthernet0/7/9
IF-MIB::ifDescr.32 = STRING: LoopBack1023
IF-MIB::ifDescr.33 = STRING: Eth-Trunk100
IF-MIB::ifDescr.34 = STRING: Eth-Trunk100.2022
IF-MIB::ifDescr.35 = STRING: Eth-Trunk100.309
IF-MIB::ifDescr.36 = STRING: Eth-Trunk100.700
IF-MIB::ifDescr.37 = STRING: Eth-Trunk100.701
IF-MIB::ifDescr.38 = STRING: Eth-Trunk100.928
IF-MIB::ifDescr.39 = STRING: Eth-Trunk100.929
IF-MIB::ifDescr.40 = STRING: LoopBack0
IF-MIB::ifDescr.41 = STRING: Eth-Trunk100.200
IF-MIB::ifDescr.42 = STRING: Eth-Trunk100.2371
IF-MIB::ifDescr.44 = STRING: Eth-Trunk100.3675
IF-MIB::ifDescr.45 = STRING: Eth-Trunk100.3672</pre>
<pre class="remontti-code"># snmpwalk -v2c -c public 10.250.250.1 IF-MIB::ifIndex</pre>
<pre class="remontti-code-plain">IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifIndex.3 = INTEGER: 3
IF-MIB::ifIndex.4 = INTEGER: 4
IF-MIB::ifIndex.6 = INTEGER: 6
IF-MIB::ifIndex.7 = INTEGER: 7
IF-MIB::ifIndex.8 = INTEGER: 8
IF-MIB::ifIndex.9 = INTEGER: 9
IF-MIB::ifIndex.10 = INTEGER: 10
IF-MIB::ifIndex.11 = INTEGER: 11
IF-MIB::ifIndex.12 = INTEGER: 12
IF-MIB::ifIndex.13 = INTEGER: 13
IF-MIB::ifIndex.14 = INTEGER: 14
IF-MIB::ifIndex.15 = INTEGER: 15
IF-MIB::ifIndex.32 = INTEGER: 32
IF-MIB::ifIndex.33 = INTEGER: 33
IF-MIB::ifIndex.34 = INTEGER: 34
IF-MIB::ifIndex.35 = INTEGER: 35
IF-MIB::ifIndex.36 = INTEGER: 36
IF-MIB::ifIndex.37 = INTEGER: 37
IF-MIB::ifIndex.38 = INTEGER: 38
IF-MIB::ifIndex.39 = INTEGER: 39
IF-MIB::ifIndex.40 = INTEGER: 40
IF-MIB::ifIndex.41 = INTEGER: 41
IF-MIB::ifIndex.42 = INTEGER: 42
IF-MIB::ifIndex.44 = INTEGER: 44
IF-MIB::ifIndex.45 = INTEGER: 45</pre>
<p><strong>Exemplo de saída snmpwalk de um RouterOS/Mikrotik:</strong></p>
<pre class="remontti-code"># snmpwalk -v2c -c public 10.20.30.2 IF-MIB::ifDescr</pre>
<pre class="remontti-code-plain">IF-MIB::ifDescr.1 = STRING: sfp-sfpplus1
IF-MIB::ifDescr.2 = STRING: sfp-sfpplus2
IF-MIB::ifDescr.3 = STRING: ether1
IF-MIB::ifDescr.4 = STRING: ether2
IF-MIB::ifDescr.5 = STRING: ether3
IF-MIB::ifDescr.6 = STRING: ether4
IF-MIB::ifDescr.7 = STRING: ether5
IF-MIB::ifDescr.8 = STRING: ether6
IF-MIB::ifDescr.9 = STRING: ether7
IF-MIB::ifDescr.10 = STRING: ether8
IF-MIB::ifDescr.11 = STRING: VLAN-IX-SP-IPv4.10
IF-MIB::ifDescr.12 = STRING: VLAN-IX-SP-IPv6.11
IF-MIB::ifDescr.13 = STRING: VLAN-IX-PR-IPv6.20
IF-MIB::ifDescr.14 = STRING: VLAN-IX-PR-IPv4.21
IF-MIB::ifDescr.15 = STRING: VLAN-IX-RS-IPv4.30
IF-MIB::ifDescr.16 = STRING: VLAN-IX-RS-IPv6.31</pre>
<pre class="remontti-code"># snmpwalk -v2c -c public 10.20.30.2 IF-MIB::ifIndex</pre>
<pre class="remontti-code-plain">IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifIndex.3 = INTEGER: 3
IF-MIB::ifIndex.4 = INTEGER: 4
IF-MIB::ifIndex.5 = INTEGER: 5
IF-MIB::ifIndex.6 = INTEGER: 6
IF-MIB::ifIndex.7 = INTEGER: 7
IF-MIB::ifIndex.8 = INTEGER: 8
IF-MIB::ifIndex.9 = INTEGER: 9
IF-MIB::ifIndex.10 = INTEGER: 10
IF-MIB::ifIndex.11 = INTEGER: 11
IF-MIB::ifIndex.13 = INTEGER: 13
IF-MIB::ifIndex.14 = INTEGER: 14
IF-MIB::ifIndex.15 = INTEGER: 15
IF-MIB::ifIndex.16 = INTEGER: 16</pre>
<p>Agora que já sabemos os IDs (ifIndex) das suas respectivas interfaces:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/11/snmpwalk.png" data-rel="lightbox-gallery-LngUrf2l" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/11/snmpwalk.png" alt="" width="1235" height="824" class="alignnone size-full wp-image-5134" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/11/snmpwalk.png 1235w, https://blog.remontti.com.br/wp-content/uploads/2020/11/snmpwalk-300x200.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/11/snmpwalk-1024x683.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/11/snmpwalk-768x512.png 768w" sizes="auto, (max-width: 1235px) 100vw, 1235px" /></a></p>
<p>Vamos aos  ajustes as entradas no arquivo knownlinks:</p>
<pre class="remontti-code"># vim /data/asstats/conf/knownlinks</pre>
<p>Exemplo:</p>
<pre class="remontti-code-plain"># nota: tabulações devem ser usadas para separar campos (não espaços)
# máx. o comprimento da tag é de 12 caracteres; caracteres permitidos: a-z A-Z 0-9 _
# sampling: taxa de amostragem pode ser separada para entrada / saída especificando taxas &lt;in&gt; / &lt;out&gt;.
#
# Router IP		SNMP ifindex    tag					description	color	samplingrate
10.20.30.2		11				vlan10				IX.SP 		F44336	1
10.20.30.2		15				vlan30				IX.RS		CDDC39	1
10.20.30.2		13				vlan20				IX.PR		4CAF50	1
10.20.30.2		5				Eth-Trunk100.309	LINK1	009688	128
10.20.30.2		2				Eth-Trunk100.308	LINK2	A09688	128
</pre>
<p>Para melhor entendimento:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/11/knownlinks.png" data-rel="lightbox-gallery-LngUrf2l" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/11/knownlinks.png" alt="" width="1093" height="727" class="alignnone size-full wp-image-5135" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/11/knownlinks.png 1093w, https://blog.remontti.com.br/wp-content/uploads/2020/11/knownlinks-300x200.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/11/knownlinks-1024x681.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/11/knownlinks-768x511.png 768w" sizes="auto, (max-width: 1093px) 100vw, 1093px" /></a></p>
<p>knownlinks configurado, vamos configurar nosso arquivo que inicirá o processo, mas mantes é necessário informar o seu AS e caso for um RouterOS/Mikrotik as coisas mudam um pouco.</p>
<pre class="remontti-code"># vim /data/asstats/bin/start</pre>
<p>Altere para seu AS</p>
<pre class="remontti-code">MEUAS=1234</pre>
<p>Se seu router é um RouterOS/Mikrotik permaneça com a linha a baixo descomentada!</p>
<pre class="remontti-code-plain">perl ${ASSTATD} -r ${DIRRRD} -k ${KNOWNLINKS} -a ${MEUAS} -n -m ${IP2ASN} &amp;</pre>
<p>Caso ser outro, comente a linha acima e descomenta a linha:</p>
<pre class="remontti-code-plain">perl ${ASSTATD} -r ${DIRRRD}  -p 9996 -P 6343 -k ${KNOWNLINKS} -a ${MEUAS} &amp;</pre>
<p><strong>Exemplo:  &#8220;AS 666 no Huawei&#8221;</strong></p>
<pre class="remontti-code">#!/bin/bash

# Informe seu AS:
MEUAS=666

ASSTATD=&#039;/data/asstats/bin/asstatd.pl&#039;
DIRRRD=&#039;/data/asstats/rrd&#039;
KNOWNLINKS=&#039;/data/asstats/conf/knownlinks&#039;
IP2ASN=&#039;/data/asstats/ip2asn/ip2asn.json&#039;

# -p = Port netflow / -P port sflow
# 
# netflow/sflow - (Huawei NE, Cisco, JunOS...)
perl ${ASSTATD} -r ${DIRRRD}  -p 9996 -P 6343 -k ${KNOWNLINKS} -a ${MEUAS} &amp;

# Flow v5 - (RoutesOS/Mikrotik)
# perl ${ASSTATD} -r ${DIRRRD} -k ${KNOWNLINKS} -a ${MEUAS} -n -m ${IP2ASN} &amp;</pre>
<p>Para iniciar o serviço execute:</p>
<pre class="remontti-code"># /data/asstats/bin/start</pre>
<p>Verifique se as portas estão ouvindo</p>
<pre class="remontti-code"># netstat -putan  |grep perl</pre>
<pre class="remontti-code-plain">udp        0      0 0.0.0.0:9996            0.0.0.0:*                           1261/perl           
udp        0      0 0.0.0.0:6343            0.0.0.0:*                           1261/perl  </pre>
<p>Para carregar o start na inicialização faça:</p>
<pre class="remontti-code"># ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service</pre>
<pre class="remontti-code"># vim /etc/rc.local</pre>
<p>Adicione</p>
<pre class="remontti-code">#!/bin/bash
/data/asstats/bin/start
exit 0</pre>
<p>Altere as permissões para execução:</p>
<pre class="remontti-code"># chmod +x /etc/rc.local</pre>
<p>Ajustes no cron:</p>
<pre class="remontti-code"># crontab -e</pre>
<p>Adicione as linhas a baixo ao final do arquivo:</p>
<pre class="remontti-code"># 5min
*/5 * * * * perl /data/asstats/bin/rrd-extractstats.pl /data/asstats/rrd /data/asstats/conf/knownlinks /data/asstats/asstats/asstats_day.txt

# 7 Dias
#0 0 * * 0 perl /data/asstats/bin/rrd-extractstats.pl /data/asstats/rrd /data/asstats/conf/knownlinks /data/asstats/asstats/asstats_week.txt 168

# 30 dias 
#0 0 1 * * perl /data/asstats/bin/rrd-extractstats.pl /data/asstats/rrd /data/asstats/conf/knownlinks /data/asstats/asstats/asstats_month.txt 720
</pre>
<p>Reinicie o serviço cron</p>
<pre class="remontti-code"># systemctl restart cron</pre>
<p>Instale o tcpdump para verificar se os pacotes irão chegando ao seu servidor ao configurar os flows em seu servidor. Obs: <strong>enp0s3</strong> é o nome da interface do servidor.</p>
<pre class="remontti-code"># apt install tcpdump
# tcpdump -i enp0s3 -n udp port 9996 -T cnfp</pre>
<h3>Configuração para o router</h3>
<h4>RouterOS/Mikrotik (Flow v5)</h4>
<pre class="remontti-code">/ip traffic-flow
set active-flow-timeout=5m cache-entries=16k enabled=yes interfaces=INTERFACES

/ip traffic-flow ipfix
set dst-address-mask=no dst-mac-address=no first-forwarded=no gateway=no icmp-code=no icmp-type=no igmp-type=no ip-header-length=no ip-total-length=no ipv6-flow-label=no is-multicast=no last-forwarded=no \
    nat-dst-address=no nat-dst-port=no nat-src-address=no nat-src-port=no src-address-mask=no src-mac-address=no tcp-ack-num=no tcp-flags=no tcp-seq-num=no tcp-window-size=no tos=no ttl=no udp-length=no

/ip traffic-flow target
add dst-address=IP_SERVER_ASSTATS port=9996 src-address=IP_ORIGEM version=5</pre>
<h4>Huawei NE Netstream (netflow)</h4>
<p>Contribuição o <a href="https://www.facebook.com/rudson.costa.16" rel="noopener noreferrer" target="_blank">Rudson Costa</a> / <a href="http://t.me/gabrielmocan" rel="noopener" target="_blank">Gabriel Mocan</a> compartilhou: (Huawei NE40/8000)</p>
<pre class="remontti-code">
# CONFIG GLOBAL
#
ip netstream export version 9 origin-as
ip netstream export index-switch 32
ip netstream as-mode 32
ip netstream timeout active 5
ip netstream timeout inactive 60
ip netstream export template timeout-rate 1
ip netstream export template option sampler
ip netstream sampler fix-packets 128 inbound
ip netstream sampler fix-packets 128 outbound
ip netstream export source &gt;&gt;IPV4_LOOPBACK_ORIGEM&lt;&lt;
ip netstream export host &gt;&gt;IP_SERVIDOR&lt;&lt; 9996
#
ipv6 netstream export version 9 origin-as
ipv6 netstream export index-switch 32
ipv6 netstream as-mode 32
ipv6 netstream timeout active 5
ipv6 netstream timeout inactive 60
ipv6 netstream export template timeout-rate 1
ipv6 netstream export template option sampler
ipv6 netstream sampler fix-packets 128 inbound
ipv6 netstream sampler fix-packets 128 outbound
ipv6 netstream export source &gt;&gt;IPV4_LOOPBACK_ORIGEM&lt;&lt;
ipv6 netstream export host &gt;&gt;IP_SERVIDOR&lt;&lt; 9996

# CONFIG NO SLOT 
# NE40: slot 3
# NE8000-F1A: slot 0
# NE8000-M8: slot 9 ou 10 

# EXECUTE O COMANDO NO ROOT (ADM), COMANDO NÃO FUNCIONA EM VS
slot 0
 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>Contribuição do Thiago Melo para Juniper:</p>
<pre class="remontti-code">
# ---- ipv4
set chassis afeb slot 0 sampling-instance as-stats
set chassis afeb slot 0 inline-services flow-table-size ipv4-flow-table-size 10
set chassis afeb slot 0 inline-services flow-table-size ipv6-flow-table-size 10

set forwarding-options sampling instance as-stats input rate 2048
set forwarding-options sampling instance as-stats input max-packets-per-second 4096
set forwarding-options sampling instance as-stats family inet output flow-server IP_SERVIDOR_FLOW port 9996
set forwarding-options sampling instance as-stats family inet output flow-server IP_SERVIDOR_FLOW autonomous-system-type origin
set forwarding-options sampling instance as-stats family inet output flow-server IP_SERVIDOR_FLOW no-local-dump
set forwarding-options sampling instance as-stats family inet output flow-server IP_SERVIDOR_FLOW version-ipfix template ipv4
set forwarding-options sampling instance as-stats family inet output inline-jflow source-address IP_ORIGEM

set services flow-monitoring version-ipfix template ipv4 flow-active-timeout 60
set services flow-monitoring version-ipfix template ipv4 flow-inactive-timeout 30
set services flow-monitoring version-ipfix template ipv4 template-refresh-rate packets 48000
set services flow-monitoring version-ipfix template ipv4 template-refresh-rate seconds 30
set services flow-monitoring version-ipfix template ipv4 option-refresh-rate packets 48000
set services flow-monitoring version-ipfix template ipv4 option-refresh-rate seconds 30
set services flow-monitoring version-ipfix template ipv4 ipv4-template

set interfaces xe-2/0/0 unit 0 family inet sampling input
set interfaces xe-2/0/0 unit 0 family inet sampling output

# ---- ipv6

set forwarding-options sampling instance as-stats family inet6 output flow-server IP_SERVIDOR_FLOW port 9996
set forwarding-options sampling instance as-stats family inet6 output flow-server IP_SERVIDOR_FLOW autonomous-system-type origin
set forwarding-options sampling instance as-stats family inet6 output flow-server IP_SERVIDOR_FLOW no-local-dump
set forwarding-options sampling instance as-stats family inet6 output flow-server IP_SERVIDOR_FLOW version-ipfix template ipv6
set forwarding-options sampling instance as-stats family inet6 output inline-jflow source-address IP_ORIGEM

set services flow-monitoring version-ipfix template ipv6 flow-active-timeout 60
set services flow-monitoring version-ipfix template ipv6 flow-inactive-timeout 60
set services flow-monitoring version-ipfix template ipv6 template-refresh-rate packets 1000
set services flow-monitoring version-ipfix template ipv6 template-refresh-rate seconds 10
set services flow-monitoring version-ipfix template ipv6 option-refresh-rate packets 1000
set services flow-monitoring version-ipfix template ipv6 option-refresh-rate seconds 10
set services flow-monitoring version-ipfix template ipv6 ipv6-template

set interfaces xe-2/0/0 unit 0 family inet6 sampling input
set interfaces xe-2/0/0 unit 0 family inet6 sampling output</pre>
<p>No <a href="https://github.com/manuelkasper/AS-Stats">projeto oficial</a> você encontra modelos de configurações para outros vendors. </p>
<p>Agora é aguardar ~5 min até gerar os arquivos em /data/asstats/rrd</p>
<p>Uma boa dica é você ficar ligado com o a saúde do seu servidor, olhar para o processamento/memoria e como ta a escrita no disco é importante, vou deixar duas ferramentas para observar isso:</p>
<pre class="remontti-code"># apt install htop iotop
# htop
# iotop</pre>
<p>Agora precisamos fazer o acesso web para visualizar as informações.<br />
Ajustes de segurança para o apache:</p>
<pre class="remontti-code"># sed -i &#039;s/ServerTokens OS/ServerTokens Prod/&#039; /etc/apache2/conf-available/security.conf
# sed -i &#039;s/ServerSignature On/ServerSignature Off/&#039; /etc/apache2/conf-available/security.conf</pre>
<p>Para ficar algo bom vou criar um <a href="https://blog.remontti.com.br/3464" rel="noopener noreferrer" target="_blank">domínio virtual</a> para acessar o as-stats, não esqueça de apontar em seu DNS!</p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/asstats.conf</pre>
<p>Ajuste para sua realidade, fique ligado que em Require ip só permite que estes tenham acesso:</p>
<pre class="remontti-code">&lt;virtualhost *:80&gt;
   ServerName asstats.remontti.com.br
   ServerAdmin noc@remontti.com.br
 
   DocumentRoot /data/asstats/www
 
   ErrorDocument 403 http://www.remontti.com.br
 
   &lt;Directory /data/asstats/www/&gt;
      Options FollowSymLinks
      AllowOverride All
      Require all denied
      &lt;RequireAll&gt;
         &lt;RequireAny&gt;
            Require ip 192.168.0.0/24 2804:1234:bebe::/48
         &lt;/RequireAny&gt;
      &lt;/RequireAll&gt;
   &lt;/Directory&gt;
 
   ErrorLog ${APACHE_LOG_DIR}/error_asstats.log
   CustomLog ${APACHE_LOG_DIR}/access_asstats.log combined
 
&lt;/VirtualHost&gt;</pre>
<pre class="remontti-code"># a2ensite asstats.conf
# systemctl restart apache2</pre>
<p>Ajuste seu ASN:</p>
<pre class="remontti-code"># vim /data/asstats/www/config.inc </pre>
<p>Localize $my_asn = "1234" e altere pelo seu.</p>
<pre class="remontti-code-plain">$my_asn = &quot;1234&quot;;</pre>
<p>Execute para que o asstats_day.txt seja criado e ao acessar o web-ui não fique em branco.</p>
<pre class="remontti-code"># perl /data/asstats/bin/rrd-extractstats.pl /data/asstats/rrd /data/asstats/conf/knownlinks /data/asstats/asstats/asstats_day.txt</pre>
<p>Acesse em seu navegador "<strong>http://asstats.remontti.com.br</strong>". Caso você não tenha dificuldade com dominios virtuais pode fazer um atalho dentro de /var/www/html, assim basta vc acessar o IP/as-stats/</p>
<pre class="remontti-code"># ln -s /data/asstats/www/ /var/www/html/as-stats</pre>
<p> e acessar <strong>http://ip/as-stats</strong></p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/11/as-stats-zero.png" alt="" width="1427" height="473" class="alignnone size-full wp-image-5149" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/11/as-stats-zero.png 1427w, https://blog.remontti.com.br/wp-content/uploads/2020/11/as-stats-zero-300x99.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/11/as-stats-zero-1024x339.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/11/as-stats-zero-768x255.png 768w" sizes="auto, (max-width: 1427px) 100vw, 1427px" /></p>
<p>Espero que tenha gostado!</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>Fontes:<br />
<a href="https://github.com/manuelkasper/AS-Stats" rel="noopener noreferrer" target="_blank">https://github.com/manuelkasper/AS-Stats</a><br />
<a href="https://github.com/nidebr/as-stats-gui" rel="noopener noreferrer" target="_blank">https://github.com/nidebr/as-stats-gui</a><br />
<a href="https://github.com/JackSlateur/perl-ip2as" rel="noopener noreferrer" target="_blank">https://github.com/JackSlateur/perl-ip2as</a></p>
<p>O post <a href="https://blog.remontti.com.br/5129">Como obter gráficos de tráfego por AS utilizando AS-STATS (open source)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5129/feed</wfw:commentRss>
			<slash:comments>66</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação do Elastic Stack 7 + ElastiFlow no Debian 10 Buster (Bônus Traffic Flow Mikrotik/RouterOS)</title>
		<link>https://blog.remontti.com.br/3368</link>
					<comments>https://blog.remontti.com.br/3368#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 16 Aug 2019 18:06:41 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian buster]]></category>
		<category><![CDATA[debian10]]></category>
		<category><![CDATA[Elasticsearch]]></category>
		<category><![CDATA[ElastiFlow]]></category>
		<category><![CDATA[IPFIX]]></category>
		<category><![CDATA[Kibana]]></category>
		<category><![CDATA[Logstash]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Netflow]]></category>
		<category><![CDATA[routeros]]></category>
		<category><![CDATA[sFlow]]></category>
		<category><![CDATA[Traffic Flow]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3368</guid>

					<description><![CDATA[<p>Para um tutorial mais atualizado acesse: https://blog.remontti.com.br/6255 Neste tutorial abordaremos a instalação e configuração do Elastic Stack 7.x, que será usado para alimentar a solução ElastiFlow. Elastic Stack consiste no Elasticsearch, Logstash e Kibana.&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3368">Instalação do Elastic Stack 7 + ElastiFlow no Debian 10 Buster (Bônus Traffic Flow Mikrotik/RouterOS)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Para um tutorial mais atualizado acesse: <a href="https://blog.remontti.com.br/6255" rel="noopener" target="_blank">https://blog.remontti.com.br/6255</a></h3>
<p>Neste tutorial abordaremos a instalação e configuração do Elastic Stack 7.x, que será usado para alimentar a solução ElastiFlow. </p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-debian-10-buster-1.png" alt="" width="1173" height="720" class="alignnone size-full wp-image-3374" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-debian-10-buster-1.png 1173w, https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-debian-10-buster-1-300x184.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-debian-10-buster-1-768x471.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-debian-10-buster-1-1024x629.png 1024w" sizes="auto, (max-width: 1173px) 100vw, 1173px" /></p>
<p><strong>Elastic Stack</strong> consiste no Elasticsearch, Logstash e Kibana.<br />
&#8211; <strong>Elasticsearch</strong> é um mecanismo de pesquisa baseado em texto completo.<br />
&#8211; <strong>Logstash</strong> é um mecanismo de coleta de dados e análise de log.<br />
&#8211; <strong>Kibana</strong> é uma plataforma de análise e visualização usada para exibir os painéis do ElastiFlow.<br />
&#8211; <strong>ElastiFlow</strong> fornece coleta e visualização de dados de fluxo de rede usando o Elastic Stack (Elasticsearch, Logstash e Kibana). Suporta os tipos de fluxo Netflow v5/v9, sFlow e IPFIX.</p>
<p>Painéis fornecidos através do ElastiFlow</p>
<p><strong>Visão Global</strong> <em>Overview</em><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/Overview.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/Overview-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3391" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/Overview-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Overview-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Overview-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Overview.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Top-N</strong><br />
Existem painéis Top-N separados para os principais locutores, serviços, conversas e aplicativos.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/Top-N.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/Top-N-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3392" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/Top-N-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Top-N-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Top-N-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Top-N.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Ameaças</strong> <em>Threats</em><br />
O ElastiFlow inclui um dicionário de endereços IP públicos que são conhecidos por terem uma má reputação. Este dicionário é construído a partir de muitas fontes de dados OSINT, normalizadas para uma taxonomia comum. O painel de ameaças usa essas informações de reputação de IP para destacar três tipos de ameaça/risco.<br />
1. Ameaças Públicas &#8211; Clientes públicos com baixa reputação de IP que estão atingindo endereços privados.<br />
2. Servidores em Risco &#8211; Servidores Privados que estão sendo acessados ​​por clientes com baixa reputação de IP.<br />
3. Clientes de alto risco &#8211; Clientes privados que acessam servidores públicos com baixa reputação.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/Threats.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/Threats-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3393" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/Threats-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Threats-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Threats-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Threats.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Fluxos</strong> <em>Flows</em><br />
Existem painéis Sankey separados para as perspectivas Cliente/Servidor, Origem/Destino e Sistema Autônomo. As visualizações sankey são construídas usando o novo plugin de visualização Vega.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/Flows.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/Flows-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3395" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/Flows-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Flows-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Flows-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Flows.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Geo IP</strong><br />
Existem painéis de Geo localização separados para as perspectivas Cliente/Servidor e Origem/Destino (Dados GeoLite2 criados pela MaxMind, disponíveis em <a href="http://www.maxmind.com" rel="noopener noreferrer" target="_blank">http://www.maxmind.com</a>)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/IPGeo.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/IPGeo-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3396" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/IPGeo-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/IPGeo-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/IPGeo-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/IPGeo.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Tráfego por AS</strong><em> AS Traffic</em><br />
Fornece uma visão do tráfego para e de sistemas autônomos (intervalos de IP públicos)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/ASTraffic.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/ASTraffic-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3397" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/ASTraffic-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/ASTraffic-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/ASTraffic-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/ASTraffic.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Exportadores de Fluxo</strong> <em>Flow Exporters</em><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowExporters.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowExporters-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3398" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowExporters-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowExporters-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowExporters-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowExporters.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Detalhes do Trânsito</strong> <em>Traffic Details</em><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/TrafficDetails.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/TrafficDetails-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3399" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/TrafficDetails-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/TrafficDetails-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/TrafficDetails-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/TrafficDetails.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Registros de Fluxo</strong><em> Flow Records</em><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowRecords.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowRecords-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3400" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowRecords-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowRecords-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowRecords-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/FlowRecords.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Ziften ZFlow</strong><br />
O ElastiFlow adicionou suporte para registros IPFIX do agente ZFlow do ZFlow. Além de estar totalmente integrado aos painéis de controle padrão, os painéis ZFlow independentes exibem o tráfego de rede com base nos dados de usuário e de comando fornecidos pelo ZFlow.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/Ziften-ZFlow.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/Ziften-ZFlow-1024x601.png" alt="" width="1024" height="601" class="alignnone size-large wp-image-3401" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/Ziften-ZFlow-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Ziften-ZFlow-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Ziften-ZFlow-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/Ziften-ZFlow.png 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><a href="https://github.com/robcowart/elastiflow/blob/master/INSTALL.md#requirements" rel="noopener noreferrer" target="_blank">Requisitos de Hardware</a>.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-Requirements.png" alt="" width="682" height="157" class="alignnone size-full wp-image-3375" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-Requirements.png 682w, https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow-Requirements-300x69.png 300w" sizes="auto, (max-width: 682px) 100vw, 682px" /></p>
<p><em>Meus testes foram realizado em meu computador com VM no Virtualbox sendo 4 CPUs (i7) e 8GB de RAM</em><br />
<div id="attachment_3376" style="width: 310px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/VirtualBox_Debian-10-NetFlow_16_08_2019_10_43_03.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3376" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/VirtualBox_Debian-10-NetFlow_16_08_2019_10_43_03-300x225.png" alt="" width="300" height="225" class="size-medium wp-image-3376" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/VirtualBox_Debian-10-NetFlow_16_08_2019_10_43_03-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/VirtualBox_Debian-10-NetFlow_16_08_2019_10_43_03-768x576.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/VirtualBox_Debian-10-NetFlow_16_08_2019_10_43_03.png 800w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><p id="caption-attachment-3376" class="wp-caption-text">E o bixinho levou um pau!</p></div></p>
<p>Vou utilizar o Debian 10 instalado de forma &#8220;limpa&#8221;, sem nenhum outro pacote, para isso siga o tutorial:<br />
<strong><a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Instalação Debian 10 Buster LIMPA Passo-a-passo</a></strong></p>
<p>Com seu Debian 10 instalado acesse o mesmo e vire root!</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/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

deb http://deb.debian.org/debian/ buster-updates main contrib non-free
deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free</pre>
<pre class="remontti-code"># apt update
# apt install firmware-linux firmware-linux-free firmware-linux-nonfree</pre>
<p>Reinicie para que os novos módulos sejam carregado.</p>
<pre class="remontti-code"># reboot</pre>
<h3>:: Elastic Stack 7 ::</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/7.x/apt stable main&quot; |  tee -a /etc/apt/sources.list.d/elastic-7.x.list
# apt update</pre>
<p>Faremos a instalação individual dos pacotes elasticsearch, kibana e logstash.</p>
<h3>:: Elasticsearch ::</h3>
<p>Elasticsearch é um mecanismo de pesquisa baseado em texto completo. </p>
<pre class="remontti-code"># apt install elasticsearch</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/#network.host: 192.168.0.1/network.host: 127.0.0.1/&#039; /etc/elasticsearch/elasticsearch.yml
# systemctl daemon-reload
# systemctl enable elasticsearch
# systemctl start elasticsearch</pre>
<p>Cheque se o mesmo esta funcionando</p>
<pre class="remontti-code"># curl -X GET 127.0.0.1:9200</pre>
<p>Retorno algo como&#8230;.</p>
<pre class="remontti-code">{
  &quot;name&quot; : &quot;lab&quot;,
  &quot;cluster_name&quot; : &quot;elasticsearch&quot;,
  &quot;cluster_uuid&quot; : &quot;-U7i4KbKSxSgChHSxMpcfg&quot;,
  &quot;version&quot; : {
    &quot;number&quot; : &quot;7.3.0&quot;,
    &quot;build_flavor&quot; : &quot;default&quot;,
    &quot;build_type&quot; : &quot;deb&quot;,
    &quot;build_hash&quot; : &quot;de777fa&quot;,
    &quot;build_date&quot; : &quot;2019-07-24T18:30:11.767338Z&quot;,
    &quot;build_snapshot&quot; : false,
    &quot;lucene_version&quot; : &quot;8.1.0&quot;,
    &quot;minimum_wire_compatibility_version&quot; : &quot;6.8.0&quot;,
    &quot;minimum_index_compatibility_version&quot; : &quot;6.0.0-beta1&quot;
  },
  &quot;tagline&quot; : &quot;You Know, for Search&quot;
}</pre>
<p>Caso o comando `curl -X GET 127.0.0.1:9200` retorne algum erro, tente verificar se o serviço esta rodando com o comando `systemctl status elasticsearch`. Verifique nos logs `tail -f /var/log/elasticsearch/elasticsearch.log`se o erro aparece:</p>
<pre class="remontti-code">Failure running machine learning native code. 
This could be due to running on an unsupported OS or distribution, missing OS libraries, 
or a problem with the temp directory. To bypass this problem by running 
Elasticsearch without machine learning functionality set [xpack.ml.enabled: false].&quot;</pre>
<p>Se o mesmo aparecer execute o comando:</p>
<pre class="remontti-code"># echo &quot;xpack.ml.enabled: false&quot; &gt;&gt; /etc/elasticsearch/elasticsearch.yml
# systemctl restart elasticsearch</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"># sed -i &#039;s/#server.host: &quot;localhost&quot;/server.host: &quot;0.0.0.0&quot;/&#039; /etc/kibana/kibana.yml
# systemctl daemon-reload
# systemctl enable kibana
# systemctl start kibana</pre>
<p>Aguarde um pouco o serviço iniciar e já será possível acessar Kibana em seu navegador:<br />
http://[IP-SERVIDOR]<strong>:5601</strong></p>
<h3>:: logstash ::</h3>
<p>O Logstash é um mecanismo de coleta de dados e análise de log.</p>
<pre class="remontti-code"># apt install logstash</pre>
<p>Para aumentar o desempenho o ElastiFlow aproveita os recursos de cache e enfileiramento disponíveis em muitos dos plugins do Logstash. Esses recursos aumentam o consumo do heap da JVM. O espaço de heap da JVM usado pelo Logstash é configurado em jvm.options. Recomenda-se que o Logstash receba pelo menos 2GB de heap da JVM. Se todas as opções, incl. Pesquisas DNS estão habilitadas aumente para 4GB. Defina o tamanho de heap da JVM. </p>
<pre class="remontti-code"># vim /etc/logstash/jvm.options</pre>
<p>Altere de a cordo com a necessidades. No meu caso vou resolver nomes então vou usar 4gb</p>
<pre class="remontti-code">-Xms4g
-Xmx4g</pre>
<p>Instale e atualize os plugins necessários pelo Logstash. Para usar o ElastiFlow, você precisará instalar o codec sFlow suportado pela comunidade para o Logstash. Também é recomendável que você sempre use a versão mais recente do codec Netflow, a entrada UDP e o filtro DNS. Isso pode ser conseguido executando os seguintes comandos:</p>
<pre class="remontti-code"># /usr/share/logstash/bin/logstash-plugin install logstash-codec-sflow --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-codec-netflow --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-input-udp --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-input-tcp --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-dns --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-geoip --no-verify
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-translate --no-verify
# /usr/share/logstash/bin/logstash-plugin install --no-verify

# /usr/share/logstash/bin/logstash-plugin install logstash-codec-sflow
# /usr/share/logstash/bin/logstash-plugin update logstash-codec-netflow
# /usr/share/logstash/bin/logstash-plugin update logstash-input-udp
# /usr/share/logstash/bin/logstash-plugin update logstash-input-tcp
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-dns
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-geoip
# /usr/share/logstash/bin/logstash-plugin update logstash-filter-translate</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 (Elasticsearch, Logstash e Kibana). Suporta os tipos de fluxo Netflow v5/v9, sFlow e IPFIX. </p>
<pre class="remontti-code"># mkdir /root/flowinstall
# cd /root/flowinstall
# wget https://github.com/robcowart/elastiflow/archive/master.zip
# unzip master.zip
# mv elastiflow-master/logstash/elastiflow/  /etc/logstash/
# mv elastiflow-master/logstash.service.d/ /etc/systemd/system/
# cp /etc/logstash/logstash-sample.conf  /etc/logstash/logstash.conf
</pre>
<p>Adicione o pipeline ElastiFlow aos pipelines.yml</p>
<pre class="remontti-code"># vim  /etc/logstash/pipelines.yml</pre>
<p>Adicione ao final:</p>
<pre class="remontti-code">- pipeline.id: elastiflow
  path.config: &quot;/etc/logstash/elastiflow/conf.d/*.conf&quot;</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/pipelines.yml_.png" alt="" width="796" height="225" class="alignnone size-full wp-image-3379" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/pipelines.yml_.png 796w, https://blog.remontti.com.br/wp-content/uploads/2019/08/pipelines.yml_-300x85.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/pipelines.yml_-768x217.png 768w" sizes="auto, (max-width: 796px) 100vw, 796px" /></p>
<p>Também defino ELASTIFLOW_RESOLVE_IP2HOST como true e defino meu servidor DNS em ELASTIFLOW_NAMESERVER para que os painéis tentem resolver os nomes DNS em vez de exibir apenas o endereço IP. Há um impacto no desempenho por isso será necessário ter RAM sobrando!<br />
Neste exemplo vou aplicar a resolução de nomes.</p>
<pre class="remontti-code"># sed -i &#039;s/ELASTIFLOW_RESOLVE_IP2HOST=false/ELASTIFLOW_RESOLVE_IP2HOST=true/&#039; /etc/systemd/system/logstash.service.d/elastiflow.conf
# sed -i &#039;s/ELASTIFLOW_NAMESERVER=127.0.0.1/ELASTIFLOW_NAMESERVER=1.1.1.1/&#039; /etc/systemd/system/logstash.service.d/elastiflow.conf</pre>
<p>Se desejar pode editar o arquivo /etc/systemd/system/logstash.service.d/elastiflow.conf<br />
E alterar as opções conforme suas necessidades. Os dois comandos acima alteram:<br />
<em>ELASTIFLOW_RESOLVE_IP2HOST=true<br />
ELASTIFLOW_NAMESERVER=1.1.1.1</em></p>
<p>Vamos configurar os arquivos init (system-install) em seguida ativar o serviço para inicialização e starta-lo.</p>
<pre class="remontti-code"># systemctl daemon-reload
# /usr/share/logstash/bin/system-install
# systemctl enable logstash
# systemctl start logstash</pre>
<p>Precisamos configurar os índices do elastiflow-*padrão, execute o seguinte comando: </p>
<p>Atualização: O projeto da data de hoje (20/03/2020) está da versão 7.6.x e em suas releases https://github.com/robcowart/elastiflow/releases alguns arquivos não parecem mais estarem lá, uma das &#8220;gambi&#8221; é pegar esses arquivos de commits antigas. Vamos precisar deles -> <a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow.tar.gz">elastiflow.tar.gz</a></em> (boa sorte)</p>
<pre class="remontti-code"># cd /root/flowinstall
# wget https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow.tar.gz
# tar vxf elastiflow.tar.gz 
# curl -X POST http://127.0.0.1:5601/api/saved_objects/index-pattern/elastiflow-* -H &quot;Content-Type: application/json&quot; -H &quot;kbn-xsrf: true&quot; -d @elastiflow.index_pattern.json</pre>
<p>O arquivo JSON contém a configuração do padrão de índice.</p>
<p>Agora o arquivo elastiflow.kibana.7.0.x.json deveria estar em  <a href="https://github.com/robcowart/elastiflow/tree/master/kibana" rel="noopener noreferrer" target="_blank">https://github.com/robcowart/elastiflow/tree/master/kibana</a> mas não está rsrsrs então baixe ele aqui <a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/elastiflow.kibana.7.0.x.zip">elastiflow.kibana.7.0.x</a> e extraia ele no seu computador. (peguei ele la da v.<a href="https://github.com/robcowart/elastiflow/tree/v3.5.1" rel="noopener noreferrer" target="_blank">3.5.1</a>) </p>
<p>Porém Hoje <strong>31/03/2020 </strong>utilizando o arquivo <a href="https://raw.githubusercontent.com/robcowart/elastiflow/master/kibana/elastiflow.kibana.7.5.x.ndjson" rel="noopener noreferrer" target="_blank">elastiflow.kibana.7.5.x.ndjson</a>  <strong>deu certo</strong>, entao tente importar ele, caso contrario tente o citado acima (P* zona não seguem um padrão fica foda do cara dizer algo rsrsrs) (Versão testada 7.6.1) </p>
<p>Para que os painéis possam ser carregados no Kibana, importando o <strong>elastiflow.kibana.7.0.x.json</strong>. Isso é feito a partir do menu <strong>Management -> Saved Objects</strong>. Abra o kibana<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1024x492.png" alt="" width="1024" height="492" class="alignnone size-large wp-image-3380" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1024x492.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-300x144.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-768x369.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><br />
<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-import.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-import-1024x492.png" alt="" width="1024" height="492" class="alignnone size-large wp-image-3381" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-import-1024x492.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-import-300x144.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-import-768x369.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-import.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><br />
<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1-1024x763.png" alt="" width="1024" height="763" class="alignnone size-large wp-image-3382" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1-1024x763.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1-300x224.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1-768x572.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/kibana-Management-Save_Objects-1.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Configurações Avançadas Recomendadas do Kibana</p>
<p>Modificar algumas das configurações avançadas do Kibana produzirá uma experiência mais amigável ao usar o ElastiFlow. Essas configurações são feitas em Kibana, abaixo <strong>Management -> Advanced Settings</strong>.</p>
<p><strong>doc_table:highlight</strong><br />
<div id="attachment_3383" style="width: 495px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/doc_table.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3383" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/doc_table.png" alt="" width="485" height="156" class="size-full wp-image-3383" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/doc_table.png 485w, https://blog.remontti.com.br/wp-content/uploads/2019/08/doc_table-300x96.png 300w" sizes="auto, (max-width: 485px) 100vw, 485px" /></a><p id="caption-attachment-3383" class="wp-caption-text">Há uma penalidade de desempenho de consulta muito grande que vem com o uso do recurso de destaque. Como não é muito útil para este caso de uso, é melhor simplesmente retirá-lo.</p></div></p>
<p><strong>filters:pinnedByDefault</strong><br />
<div id="attachment_3385" style="width: 555px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/filters.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3385" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/filters.png" alt="" width="545" height="139" class="size-full wp-image-3385" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/filters.png 545w, https://blog.remontti.com.br/wp-content/uploads/2019/08/filters-300x77.png 300w" sizes="auto, (max-width: 545px) 100vw, 545px" /></a><p id="caption-attachment-3385" class="wp-caption-text">Fixar um filtro permitirá que ele persista quando você está mudando de dashbaords. Isso é muito útil ao detalhar algo interessante e você deseja alterar os painéis para uma perspectiva diferente dos mesmos dados. Este é o primeiro cenário que mudo sempre que estou trabalhando com o Kibana.</p></div></p>
<p><strong>state:storeInSessionStorage</strong><br />
<div id="attachment_3386" style="width: 558px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/state.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3386" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/state.png" alt="" width="548" height="182" class="size-full wp-image-3386" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/state.png 548w, https://blog.remontti.com.br/wp-content/uploads/2019/08/state-300x100.png 300w" sizes="auto, (max-width: 548px) 100vw, 548px" /></a><p id="caption-attachment-3386" class="wp-caption-text">Os URLs do Kibana podem ficar muito grandes. Especialmente quando se trabalha com visualizações Vega. Isso provavelmente resultará em mensagens de erro para usuários do Internet Explorer. Usar o armazenamento na sessão corrigirá esse problema para esses usuários.</p></div></p>
<p><strong>timepicker:quickRanges</strong><br />
<div id="attachment_3387" style="width: 702px" class="wp-caption alignnone"><a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/timepicker.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3387" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/timepicker.png" alt="" width="692" height="496" class="size-full wp-image-3387" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/timepicker.png 692w, https://blog.remontti.com.br/wp-content/uploads/2019/08/timepicker-300x215.png 300w" sizes="auto, (max-width: 692px) 100vw, 692px" /></a><p id="caption-attachment-3387" class="wp-caption-text">As opções padrão no Seletor de Tempo são menos que ideais, para a maioria dos casos de uso de registro e monitoramento. Felizmente, o Kibana agora permite que você personalize o selecionador de tempo. Nossas configurações recomendadas podem ser encontradas abaixo.</p></div><br />
timepicker:</p>
<pre class="remontti-code">[
  {
    &quot;from&quot;: &quot;now-15m&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 15 minutes&quot;
  },
  {
    &quot;from&quot;: &quot;now-30m&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 30 minutes&quot;
  },
  {
    &quot;from&quot;: &quot;now-1h&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 1 hour&quot;
  },
  {
    &quot;from&quot;: &quot;now-2h&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 2 hours&quot;
  },
  {
    &quot;from&quot;: &quot;now-4h&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 4 hours&quot;
  },
  {
    &quot;from&quot;: &quot;now-12h&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 12 hours&quot;
  },
  {
    &quot;from&quot;: &quot;now-24h&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 24 hours&quot;
  },
  {
    &quot;from&quot;: &quot;now-48h&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 48 hours&quot;
  },
  {
    &quot;from&quot;: &quot;now-7d&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 7 days&quot;
  },
  {
    &quot;from&quot;: &quot;now-30d&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 30 days&quot;
  },
  {
    &quot;from&quot;: &quot;now-60d&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 60 days&quot;
  },
  {
    &quot;from&quot;: &quot;now-90d&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Last 90 days&quot;
  },
  {
    &quot;from&quot;: &quot;now/d&quot;,
    &quot;to&quot;: &quot;now/d&quot;,
    &quot;display&quot;: &quot;Today&quot;
  },
  {
    &quot;from&quot;: &quot;now/w&quot;,
    &quot;to&quot;: &quot;now/w&quot;,
    &quot;display&quot;: &quot;This week&quot;
  },
  {
    &quot;from&quot;: &quot;now/M&quot;,
    &quot;to&quot;: &quot;now/M&quot;,
    &quot;display&quot;: &quot;This month&quot;
  },
  {
    &quot;from&quot;: &quot;now/d&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Today so far&quot;
  },
  {
    &quot;from&quot;: &quot;now/w&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Week to date&quot;
  },
  {
    &quot;from&quot;: &quot;now/M&quot;,
    &quot;to&quot;: &quot;now&quot;,
    &quot;display&quot;: &quot;Month to date&quot;
  }
]</pre>
<p>Por padrão, os dados de fluxo serão recebidos nas portas padrão para cada tipo de fluxo. Você pode alterar os IPs e as portas usadas modificando as seguintes variáveis em /etc/systemd/system/logstash.service.d/elastiflow.conf.</p>
<p>Se tiver alguma dificuldade verifique os logs do logstash:</p>
<pre class="remontti-code"># tail -f /var/log/logstash/logstash-plain.log</pre>
<p>Use também o tcpdum para verificar se seu roteador está enviando os flows.</p>
<p>Se você instalou não quer atualizar com medo de algum &#8220;BO&#8221; recomendo você desativar o repositório do elastic:</p>
<pre class="remontti-code"># vim /etc/apt/sources.list.d/elastic-7.x.list</pre>
<p>Comente &#8220;# deb https://artifacts.elastic.co/packages/7.x/apt stable main&#8221;</p>
<p><strong>Portas Padrões</strong><br />
Netflow &#8211; IPv4: 2055<br />
Netflow &#8211; IPv6: 52055<br />
sFlow   &#8211; IPv4: 6343<br />
sFlow   &#8211; IPv6: 56343<br />
IPFIX   &#8211; IPv4: 4739<br />
IPFIX   &#8211; IPv6: 54739<br />
Pode ser alterado </p>
<h3>BÔNUS &#8211; Enviando dados do RouterOS/Mikrotik</h3>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/ElastiFlow-Mikrotik.png" data-rel="lightbox-gallery-QNZBlTAU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/ElastiFlow-Mikrotik.png" alt="" width="962" height="585" class="alignnone size-full wp-image-3389" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/ElastiFlow-Mikrotik.png 962w, https://blog.remontti.com.br/wp-content/uploads/2019/08/ElastiFlow-Mikrotik-300x182.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/ElastiFlow-Mikrotik-768x467.png 768w" sizes="auto, (max-width: 962px) 100vw, 962px" /></a><br />
Onde ether1 é a interface que vai ser monitorada, no meu caso estou coletando 4k, isso vai depender muito do hardware da sua máquina, e 200.200.200.200 seria o IP do nosso servidor.</p>
<pre class="remontti-code">/ip traffic-flow
set cache-entries=4k enabled=yes interfaces=ether1
/ip traffic-flow target
add dst-address=200.200.200.200 version=5</pre>
<p>Como não tem restrição ao acesso a porta 5601 é interessante você aplicar um firewall em seu servidor<br />
<a href="https://blog.remontti.com.br/2435" rel="noopener noreferrer" target="_blank">Modelo simples e funcional de Firewall com iptables</a></p>
<p>Parabéns! Você concluiu! Gostou?</p>
<p><center><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></center></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>Fonte:<br />
<a href="https://github.com/robcowart/elastiflow/blob/master/INSTALL.md" rel="noopener noreferrer" target="_blank">https://github.com/robcowart/elastiflow/blob/master/INSTALL.md</a><br />
<a href="https://www.elastic.co/guide/en/kibana/current/deb.html" rel="noopener noreferrer" target="_blank">https://www.elastic.co/guide/en/kibana/current/deb.html</a></p>
<p>O post <a href="https://blog.remontti.com.br/3368">Instalação do Elastic Stack 7 + ElastiFlow no Debian 10 Buster (Bônus Traffic Flow Mikrotik/RouterOS)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3368/feed</wfw:commentRss>
			<slash:comments>49</slash:comments>
		
		
			</item>
	</channel>
</rss>
