<?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 Debian 12 - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/debian-12/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/debian-12</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Wed, 15 Oct 2025 17:33:42 +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 Debian 12 - Remontti</title>
	<link>https://blog.remontti.com.br/tag/debian-12</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Guia Completo: Como instalar e configurar o Nextcloud Hub 9 no Debian 12</title>
		<link>https://blog.remontti.com.br/8193</link>
					<comments>https://blog.remontti.com.br/8193#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Mon, 06 Jan 2025 18:34:38 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[armazenamento em nuvem]]></category>
		<category><![CDATA[banco de dados nextcloud]]></category>
		<category><![CDATA[configuração nextcloud]]></category>
		<category><![CDATA[configuração redis]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[debian server]]></category>
		<category><![CDATA[guia completo nextcloud]]></category>
		<category><![CDATA[instalação nextcloud]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[nextcloud]]></category>
		<category><![CDATA[nextcloud em português]]></category>
		<category><![CDATA[nextcloud hub]]></category>
		<category><![CDATA[otimização nextcloud]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[segurança servidor]]></category>
		<category><![CDATA[servidor linux]]></category>
		<category><![CDATA[servidor nextcloud]]></category>
		<category><![CDATA[ssl certbot]]></category>
		<category><![CDATA[tutorial nextcloud]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=8193</guid>

					<description><![CDATA[<p>Neste tutorial, você aprenderá como configurar e instalar o NextCloud em um servidor Linux Debian 12. O Nextcloud Hub é uma poderosa solução de armazenamento em nuvem que permite hospedar seus próprios arquivos, calendários,&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/8193">Guia Completo: Como instalar e configurar o Nextcloud Hub 9 no Debian 12</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/2025/01/NEXTCLOUD-HUB-9-DEBIAN-12.png" alt="" width="1792" height="1024" class="alignnone size-full wp-image-8217" srcset="https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD-HUB-9-DEBIAN-12.png 1792w, https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD-HUB-9-DEBIAN-12-300x171.png 300w, https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD-HUB-9-DEBIAN-12-1024x585.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD-HUB-9-DEBIAN-12-768x439.png 768w, https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD-HUB-9-DEBIAN-12-1536x878.png 1536w" sizes="(max-width: 1792px) 100vw, 1792px" /><br />
Neste tutorial, você aprenderá como configurar e instalar o NextCloud em um servidor Linux Debian 12. O Nextcloud Hub é uma poderosa solução de armazenamento em nuvem que permite hospedar seus próprios arquivos, calendários, contatos e outros dados, garantindo total controle sobre a privacidade e segurança.</p>
<p>Abordaremos passo a passo desde a configuração do servidor web com Apache, PHP e MariaDB, até a instalação e configuração do NextCloud. Além disso, este guia inclui ajustes de segurança, como a implementação de SSL com Certbot (Let&#8217;s Encrypt) e otimizações para melhorar o desempenho do sistema.</p>
<p>Ao final, você terá um ambiente funcional e seguro para hospedar sua própria nuvem privada, ideal para empresas ou usuários que desejam independência de serviços de terceiros.</p>
<p>Prepare-se para transformar seu servidor em uma plataforma de nuvem privada robusta e personalizável! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h3>Debian 12</h3>
<p><strong><a href="https://blog.remontti.com.br/7236" target="_blank">Instalação do Debian 12 Bookworm limpa passo-a-passo</a></strong></p>
<h2>Subindo Servidor Web</h2>
<p>Instale o servidor web Apache e vários módulos do PHP necessários para o nextcloud</p>
<pre class="remontti-code"># apt install apache2 apache2-utils redis-server php \
  php-{fpm,pclzip,xmlrpc,imagick,redis,memcached,apcu,imap,ldap,intl,mysql,cli,pear,gmp,gd,bcmath,mbstring,curl,xml,zip} -y</pre>
<p>Habilitação de Módulos do Apache</p>
<pre class="remontti-code"># a2enmod proxy_fcgi setenvif mpm_event rewrite headers http2</pre>
<ul>
<li><strong>proxy_fcgi</strong>: Permite que o Apache se conecte a servidores FastCGI, como PHP-FPM.  </li>
<li><strong>setenvif</strong>: Configura variáveis de ambiente com base em condições das requisições.  </li>
<li><strong>mpm_event</strong>: Otimiza o Apache para lidar com conexões simultâneas de forma eficiente.  </li>
<li><strong>rewrite</strong>: Permite redirecionamentos e reescritas de URL dinâmicas.  </li>
<li><strong>headers</strong>: Permite manipulação de cabeçalhos HTTP em respostas e requisições.  </li>
<li><strong>http2</strong>: Habilita suporte ao protocolo HTTP/2 para maior velocidade e eficiência.</li>
</ul>
<p>Desabilitação do Módulo PHP do Apache, vamos utilizar o PHP-FPM.</p>
<pre class="remontti-code"># a2dismod php8.2</pre>
<p>Ativação do PHP-FPM no Boot, e habilite o PHP-FPM no Apache.</p>
<pre class="remontti-code"># systemctl enable php8.2-fpm
# a2enconf php8.2-fpm</pre>
<p>Melhorias de Segurança: Ajusta as configurações para ocultar informações sensíveis do servidor, como versão do Apache e detalhes do sistema operacional.</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>Adiciona o usuário `www-data` (usado pelo servidor web) ao grupo do Redis, permitindo acesso ao cache Redis pelo Apache ou PHP.</p>
<pre class="remontti-code"># usermod -a -G redis www-data
echo &#039;apc.enable_cli=1&#039; &gt;&gt; /etc/php/8.2/cli/php.ini</pre>
<p>Edite o arquivo php.ini do PHP-FPM</p>
<pre class="remontti-code"># vim /etc/php/8.2/fpm/php.ini</pre>
<ul>
<li>Defina o limite de memória para scripts PHP em <strong>512MB</strong>, garantindo que aplicações PHP que consomem mais memória possam funcionar adequadamente.</li>
<li>Configura o <strong>opcache</strong> para usar <strong>16MB de buffer para strings internada</strong>, melhorando o desempenho e reduzindo o consumo de memória de strings repetitivas.</li>
</ul>
<pre class="remontti-code-plain">
memory_limit = 512M
opcache.interned_strings_buffer=16
</pre>
<p>Para instalação do NextCloud vou utilizar o diretório padrão do Apache /var/www/html, desta forma se você se você não fou utilizar DNS (acessar via IP) pode pular o próximo passo.</p>
<p>Aponte em seus DNS a entra para o subdomínio, exemplo: <strong>nextcloud</strong>.seudominio.com.br. Agora vamos criar a configuração do Apache para tratar o <em>&#8220;nextcloud.seudominio.com.br&#8221;</em></p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/nextcloud.conf</pre>
<p>Ajuste da seguinte forma:</p>
<pre class="remontti-code-plain">
&lt;virtualhost *:80&gt;
        Protocols h2 http/1.1
        ServerName nextcloud.seudominio.com.br
        ServerAdmin noc@seudominio.com.br
 
        DocumentRoot /var/www/html 
 
        &lt;IfModule mod_headers.c&gt;
          Header always set Strict-Transport-Security &quot;max-age=15552000; includeSubDomains&quot;
        &lt;/IfModule&gt; 
 
        &lt;directory /var/www/html/ &gt;
                Options FollowSymLinks
                AllowOverride All
        &lt;/directory&gt; 
 
        LogLevel warn 
        ErrorLog ${APACHE_LOG_DIR}/error_nextcloud.log
        CustomLog ${APACHE_LOG_DIR}/access_nextcloud.log combined
&lt;/virtualhost&gt;</pre>
<p>Se estiver configurado servidor para um DNS desative a configuração <strong>000-default</strong>, caso não configurou pule essa etapa.</p>
<pre class="remontti-code"># a2dissite 000-default</pre>
<p>Ative as configurações do nextcloud.conf no apache para interpretar as configurações com nosso domínio.</p>
<pre class="remontti-code"># a2ensite nextcloud</pre>
<p>Reinicia o servidor Apache e php-fpm para aplicar as configurações feitas.</p>
<pre class="remontti-code"># systemctl restart php8.2-fpm apache2</pre>
<p>Instala o Certbot (ferramenta para gerenciar certificados grátis da Let’s Encrypt) e o plugin para integração com o Apache.</p>
<pre class="remontti-code"># apt install certbot python3-certbot-apache</pre>
<p>Execute o Certbot para configura automaticamente o VirtualHost.</p>
<pre class="remontti-code"># certbot</pre>
<pre class="remontti-code-green">Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter &#039;c&#039; to cancel): noc@seudominio.com.br <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f448.png" alt="👈" class="wp-smiley" style="height: 1em; max-height: 1em;" />

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf. You must agree in
order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f448.png" alt="👈" class="wp-smiley" style="height: 1em; max-height: 1em;" />

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let&#039;s Encrypt project and the non-profit organization that
develops Certbot? We&#039;d like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f448.png" alt="👈" class="wp-smiley" style="height: 1em; max-height: 1em;" />
Account registered.

Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: nextcloud.seudominio.com.br
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter &#039;c&#039; to cancel): 1
Requesting a certificate for nextcloud.seudominio.com.br

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/nextcloud.seudominio.com.br/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/nextcloud.seudominio.com.br/privkey.pem
This certificate expires on 2025-04-06.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for nextcloud.seudominio.com.br to /etc/apache2/sites-available/nextcloud-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://nextcloud.seudominio.com.br

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let&#039;s Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</pre>
<p>Certificados gerados pela Let&#8217;s Encrypt tem validade de 90 dias. Então vamos criar um script para renovar de forma automática.</p>
<pre class="remontti-code"># vim /usr/local/bin/renew-certificates.sh</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain">#!/bin/bash

# Renova os certificados usando Certbot
/usr/bin/certbot renew --quiet</pre>
<p>De permissão para execução.</p>
<pre class="remontti-code">chmod +x /usr/local/bin/renew-certificates.sh</pre>
<p>Adicione ao cron para 1x por semana às 03:00 da manhã ele realizar a renovação.</p>
<pre class="remontti-code">crontab -e</pre>
<p>Adicion:</p>
<pre class="remontti-code-plain">
0 3 * * 1 /usr/local/bin/renew-certificates.sh</pre>
<p>Reinicie o cron.</p>
<pre class="remontti-code"># systemctl restart cron</pre>
<h4>MariaDB <em>(Banco de Dados)</em></h4>
<p>Instala o servidor e o cliente do MariaDB, um sistema de gerenciamento de banco de dados.</p>
<pre class="remontti-code"># apt install mariadb-server mariadb-client</pre>
<p>Crie o banco de dados para o NextCloud, acesso o terminal do MariaDB.</p>
<pre class="remontti-code"># mariadb -u root </pre>
<p>Altere <strong>SUA_SENHA</strong> para sua senha.</p>
<pre class="remontti-code-plain">
CREATE USER &#039;nextcloud&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039;;
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO &#039;nextcloud&#039;@&#039;localhost&#039;;
FLUSH PRIVILEGES;
QUIT;</pre>
<p>Vamos fazer mais um ajuste no banco de dados MariaDB:</p>
<pre class="remontti-code"># vim /etc/mysql/conf.d/mysql.cnf</pre>
<p>Adicione configuração extras do <strong>innodb_buffer_pool_size</strong> e <strong>innodb_io_capacity</strong> para uma melhor performace.</p>
<pre class="remontti-code-plain">[mysqld]

# Define o tamanho do buffer pool do InnoDB para 1 GB, usado para armazenar 
# dados e índices em memória, melhorando o desempenho.
innodb_buffer_pool_size=1G

# Configura a capacidade máxima de I/O por segundo do InnoDB, 
# ideal para servidores com discos rápidos, como SSDs.
innodb_io_capacity=4000</pre>
<p>Reinicie o serviço para carregar as novas configurações.</p>
<pre class="remontti-code"># systemctl restart mariadb</pre>
<h5>Bibliotecas adicionais</h5>
<p>Instala bibliotecas adicionais para suporte a formatos de imagem extras e funcionalidades avançadas no ImageMagick.</p>
<pre class="remontti-code"># apt install libmagickcore-6.q16-6-extra -y</pre>
<h2>Instalação do NextCloud</h2>
<p>Servidor web pronto, vamos as configurações do NextCloud</p>
<p>Vamos fazer download da versão mais recente (Hoje 06/01/2025 v30.0.4)</p>
<pre class="remontti-code"># cd /tmp/
# wget https://download.nextcloud.com/server/releases/latest.zip</pre>
<pre class="remontti-code-green">--2025-01-06 11:50:58--  https://download.nextcloud.com/server/releases/latest.zip
Resolvendo download.nextcloud.com (download.nextcloud.com)... 2a01:21c8::145, 5.9.202.145
Conectando-se a download.nextcloud.com (download.nextcloud.com)|2a01:210:21c8::145|:443... conectado.
A requisição HTTP foi enviada, aguardando resposta... 200 OK
Tamanho: 225508096 (215M) [application/zip]
Salvando em: “latest.zip”

latest.zip  100%[============================================&gt;] 215,06M   373KB/s    em 8m 11s  

2025-01-06 11:59:10 (448 KB/s) - “latest.zip” salvo [225508096/225508096]</pre>
<p>Extraia o arquivo</p>
<pre class="remontti-code"># unzip -q latest.zip</pre>
<p>Agora vamos mover os arquivos para /var/www/html, porem antes vamos renomear a pasta html que contém o arquivo index.html padrão do apache. </p>
<pre class="remontti-code"># mv /var/www/html/ /var/www/html_old</pre>
<p>Agora vamos mover nossa pasta que extraímos <strong>nextcloud</strong> para <strong>/var/www/html</strong>, e vamos dar permissões para o usuário Apache administrar os arquivos.</p>
<pre class="remontti-code"># mv nextcloud /var/www/html
# chown -R www-data: /var/www/html</pre>
<p>Agora acesse em seu navegador <em>&#8220;https://nextcloud.seudominio.com.br&#8221;</em> para finalizar a instalação:<br />
Crie uma nome de <strong>usuário</strong> e senha para o <strong>administrador</strong>, em seguida informe os dados da conexão do banco de dados MariaDB, conforme você criou anteriormente, e clique em <strong>instalar</strong>.<br />
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD.png" alt="" width="956" height="1088" class="alignnone size-full wp-image-8210" srcset="https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD.png 956w, https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD-264x300.png 264w, https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD-900x1024.png 900w, https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD-768x874.png 768w" sizes="(max-width: 956px) 100vw, 956px" /></p>
<p>Selecione quais aplicações gostaria de instalar e clique em instalar, ou clique em ignorar para não instalar agora. (É possível instalar posteriormente no painel de administração.)<br />
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD3.png" alt="" width="1353" height="955" class="alignnone size-full wp-image-8212" srcset="https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD3.png 1353w, https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD3-300x212.png 300w, https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD3-1024x723.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD3-768x542.png 768w" sizes="(max-width: 1353px) 100vw, 1353px" /></p>
<p>Algumas telas irão aparecer apresentando o Nexcloud Hub. </p>
<p>Ao final você terá a seguinte tela.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD10.png" alt="" width="2560" height="957" class="alignnone size-full wp-image-8213" srcset="https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD10.png 2560w, https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD10-300x112.png 300w, https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD10-1024x383.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD10-768x287.png 768w, https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD10-1536x574.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2025/01/NEXTCLOUD10-2048x766.png 2048w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /></p>
<p>Seu NextCloud está quase pronto para utilizar, vamos a mais alguns ajustes.</p>
<p><strong>Adicionar Índices Ausentes ao Banco de Dados:</strong></p>
<pre class="remontti-code"># su - www-data --shell=/bin/bash -c &#039;php /var/www/html/occ db:add-missing-indices&#039; </pre>
<p>Este comando utiliza a interface de linha de comando do Nextcloud (`occ`) para verificar e adicionar índices que possam estar faltando nas tabelas do banco de dados. Índices são cruciais para melhorar a velocidade das consultas e o desempenho geral do sistema. Ao adicionar os índices ausentes, garantimos que o banco de dados opere de maneira mais eficiente. </p>
<p><strong>Configurar o Horário de Início da Janela de Manutenção:</strong></p>
<pre class="remontti-code"># su - www-data --shell=/bin/bash -c &#039;php /var/www/html/occ config:system:set maintenance_window_start --type=integer --value=3&#039; </pre>
<p>Este comando define o horário de início da janela de manutenção para as tarefas de segundo plano que exigem muitos recursos. Ao configurar este parâmetro, você especifica a hora (em UTC) em que essas tarefas devem começar, minimizando o impacto no desempenho durante os períodos de uso intenso. No exemplo acima, o valor `3` indica que a janela de manutenção começará às 03:00 UTC. </p>
<p><strong>Executar Reparos de Manutenção Incluindo Migrações de Mime Types:</strong></p>
<pre class="remontti-code"># su - www-data --shell=/bin/bash -c &#039;php /var/www/html/occ maintenance:repair --include-expensive&#039; </pre>
<p>Este comando executa uma série de reparos no sistema Nextcloud, incluindo tarefas que podem ser demoradas (`&#8211;include-expensive`). Entre essas tarefas, está a migração de tipos MIME, que assegura que novos tipos de arquivos sejam reconhecidos e tratados corretamente pelo sistema. É especialmente útil após atualizações ou quando novos tipos de arquivos são adicionados. </p>
<p><strong>Ajustes finais</strong></p>
<pre class="remontti-code"># vim /var/www/html/config/config.php</pre>
<p>Adicione as seguintes linhas dentro do array $CONFIG {}: </p>
<pre class="remontti-code-plain">
  &#039;default_language&#039; =&gt; &#039;pt-BR&#039;,
  &#039;default_locale&#039; =&gt; &#039;pt_BR&#039;,
  &#039;default_phone_region&#039; =&gt; &#039;BR&#039;,
</pre>
<p>Adicione: Redis como memcache para o bloqueio de arquivos.</p>
<pre class="remontti-code-plain">
  &#039;filelocking.enabled&#039; =&gt; true,
  &#039;memcache.local&#039; =&gt; &#039;\OC\Memcache\APCu&#039;,
  &#039;memcache.locking&#039; =&gt; &#039;\OC\Memcache\Redis&#039;,
  &#039;redis&#039; =&gt; [
    &#039;host&#039; =&gt; &#039;localhost&#039;,
    &#039;port&#039; =&gt; 6379,
  ],
</pre>
<p>Sempre que você cria um usuário novo ele cria vários arquivos de exemplo/modelo, se desejar desativar isso adicione também:</p>
<pre class="remontti-code-plain">
  &#039;skeletondirectory&#039; =&gt; &#039;&#039;,
</pre>
<p>Agora limpe os logs</p>
<pre class="remontti-code"> # &gt; /var/www/html/data/nextcloud.log</pre>
<p>Agora vá até as configurações de administrador para verificar se a instalação está tudo &#8220;dentro dos conformes&#8221;.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2025/01/nextcloud-hub-conf.png" alt="" width="453" height="525" class="alignnone size-full wp-image-8215" srcset="https://blog.remontti.com.br/wp-content/uploads/2025/01/nextcloud-hub-conf.png 453w, https://blog.remontti.com.br/wp-content/uploads/2025/01/nextcloud-hub-conf-259x300.png 259w" sizes="auto, (max-width: 453px) 100vw, 453px" /></p>
<p>Deve conter apenas um &#8220;problema&#8221;: <em>Você ainda não definiu ou verificou a configuração do seu servidor de e-mail. </em> Para resolver basta configurar o serviço de envio de e-mail.</p>
<p>É possível testar seu servidor em: <a href="https://scan.nextcloud.com" target="_blank">https://scan.nextcloud.com</a></p>
<p>Agora sim seu servidor NextCloud Hub está pronto!</p>
<h5>Bônus</h5>
<p>Perdi a senha como recupara?</p>
<pre class="remontti-code"># su - www-data --shell=/bin/bash -c &#039;php /var/www/html/occ user:resetpassword administrador&#039;</pre>
<pre class="remontti-code-green">Enter a new password: 
Confirm the new password: 
Successfully reset password for administrador</pre>
<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><strong>Fonte:</strong><br />
<a href="https://docs.nextcloud.com/server/latest/admin_manual/contents.html" target="_blank">https://docs.nextcloud.com/server/latest/admin_manual/contents.html</a></p>
<p>O post <a href="https://blog.remontti.com.br/8193">Guia Completo: Como instalar e configurar o Nextcloud Hub 9 no Debian 12</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/8193/feed</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>RR-WhatsApp-API, simples API para envio de mensagens.</title>
		<link>https://blog.remontti.com.br/8109</link>
					<comments>https://blog.remontti.com.br/8109#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sun, 20 Oct 2024 18:17:29 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[API REST WhatsApp]]></category>
		<category><![CDATA[API WhatsApp em produção]]></category>
		<category><![CDATA[API WhatsApp node.js]]></category>
		<category><![CDATA[automação de mensagens]]></category>
		<category><![CDATA[automação WhatsApp]]></category>
		<category><![CDATA[chatbot WhatsApp]]></category>
		<category><![CDATA[configurar API WhatsApp]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[enviar mensagens com anexo]]></category>
		<category><![CDATA[enviar mensagens via API]]></category>
		<category><![CDATA[enviar mensagens WhatsApp]]></category>
		<category><![CDATA[envio de mensagem WhatsApp URL]]></category>
		<category><![CDATA[envio de mensagens em grupos]]></category>
		<category><![CDATA[instalação WhatsApp API]]></category>
		<category><![CDATA[instalar dependências WhatsApp API]]></category>
		<category><![CDATA[integração WhatsApp]]></category>
		<category><![CDATA[mensageria WhatsApp]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[QR code WhatsApp API]]></category>
		<category><![CDATA[sistema operacional Debian]]></category>
		<category><![CDATA[tutorial RR WhatsApp API]]></category>
		<category><![CDATA[tutorial WhatsApp API]]></category>
		<category><![CDATA[WhatsApp API]]></category>
		<category><![CDATA[WhatsApp API com curl]]></category>
		<category><![CDATA[WhatsApp API com formulários]]></category>
		<category><![CDATA[WhatsApp API como serviço]]></category>
		<category><![CDATA[WhatsApp com anexo]]></category>
		<category><![CDATA[whatsapp-web.js]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=8109</guid>

					<description><![CDATA[<p>Hoje acordei querendo me incomodar e pensei vou fazer a &#8220;droga&#8221; da API de Whatsapp que tanto me pedem (mesmo que ninguém me doa bo***ta nenhuma, é foi um desabafo), pois quem me conhece&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/8109">RR-WhatsApp-API, simples API para envio de mensagens.</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2024/10/capa-rr-whatsapp-api.webp" alt="" width="1792" height="1024" class="alignnone size-full wp-image-8122" srcset="https://blog.remontti.com.br/wp-content/uploads/2024/10/capa-rr-whatsapp-api.webp 1792w, https://blog.remontti.com.br/wp-content/uploads/2024/10/capa-rr-whatsapp-api-300x171.webp 300w, https://blog.remontti.com.br/wp-content/uploads/2024/10/capa-rr-whatsapp-api-1024x585.webp 1024w, https://blog.remontti.com.br/wp-content/uploads/2024/10/capa-rr-whatsapp-api-768x439.webp 768w, https://blog.remontti.com.br/wp-content/uploads/2024/10/capa-rr-whatsapp-api-1536x878.webp 1536w" sizes="auto, (max-width: 1792px) 100vw, 1792px" /></p>
<p>Hoje acordei querendo me incomodar e pensei vou fazer a &#8220;droga&#8221; da API de Whatsapp que tanto me pedem (<del datetime="2024-10-20T21:08:00+00:00">mesmo que ninguém me doa bo***ta nenhuma, é foi um desabafo</del>), pois quem me conhece sabe que odeio o Whatsapp, mas vamos lá, eu e o GPT tentamos fazer algo simples para enviar mensagens do WhatsApp utilizando o projeto <strong><a href="https://wwebjs.dev/">whatsapp-web.js</a></strong>. </p>
<p>Bom minha ideia inicial era poder enviar mensagem chamando uma URL, depois fiquei enjoado e fiz uma pagina com um formulário para o envio até de anexo (olha só e luxuria!) então essa P***a de API possibilita o envio de mensagens com ou sem anexos, tanto para números individuais quanto para grupos. A aplicação pode ser utilizada via interface web ou diretamente através de endpoints REST.</p>
<p>Github: <a href="https://github.com/remontti/RR-WhatsApp-API" rel="noopener" target="_blank"><strong>RR-WhatsApp-API</strong></a></p>
<h4>Requisitos</h4>
<p>Sistema Operacional: Debian 12</p>
<p>Atualize os pacotes existentes:</p>
<pre class="remontti-code"># apt update ; apt upgrade -y</pre>
<h3>Instalação</h3>
<p>Instale as dependências necessárias para o `puppeteer` e outras bibliotecas:</p>
<pre class="remontti-code"># apt install -y \
  curl wget nano vim git nodejs npm psmisc \
  ca-certificates fonts-liberation libappindicator3-1 \
  libatk-bridge2.0-0 libcups2 libdrm-dev libgbm-dev libgtk-3-0 \
  libnspr4 libnss3 libxss1 lsb-release xdg-utils libasound2 libdrm2 \
  libxcomposite1 libxrandr2 libgbm1
</pre>
<p>Crie um usuário para a aplicação e clone o repositório, e ajuste o local dos arquivos:</p>
<pre class="remontti-code"># adduser --home /opt/RR-WhatsApp-API rr-whatsapp-api
$ su - rr-whatsapp-api
$ git clone https://github.com/remontti/RR-WhatsApp-API.git
$ mv /opt/RR-WhatsApp-API/RR-WhatsApp-API/* /opt/RR-WhatsApp-API/
$ rm -rf /opt/RR-WhatsApp-API/RR-WhatsApp-API</pre>
<p>Instale as dependências do projeto:</p>
<pre class="remontti-code">$ cd /opt/RR-WhatsApp-API/
$ npm install</pre>
<p>Altere o arquivo `index.js` para configurar os IPs autorizados (allowedIPs) que terão acesso à API:</p>
<pre class="remontti-code">$ vim /opt/RR-WhatsApp-API/index.js</pre>
<p>Exemplo de configuração de IPs permitidos:</p>
<pre class="remontti-code">const allowedIPs = [
    &#039;192.168.0.0/16&#039;,
    &#039;127.0.0.1&#039;,
    &#039;::1&#039;,
];</pre>
<p>Se desejar, altere também a porta da aplicação:</p>
<pre class="remontti-code">const port = 3001;</pre>
<p>Para iniciar a aplicação, execute:</p>
<pre class="remontti-code">$ node index.js</pre>
<p>A saída será semelhante a: API rodando em http://0.0.0.0:3001</p>
<p>Ctrl+c para cancelar, vamos colocar para executar a aplicação como um serviço no Debian 12, siga os passos abaixo:<br />
$ exit</p>
<pre class="remontti-code"># nano /etc/systemd/system/rr-whatsapp-api.service</pre>
<p>Adicione:</p>
<pre class="remontti-code">[Unit]
Description=RR WhatsApp API
After=network.target

[Service]
ExecStart=/usr/bin/node /opt/RR-WhatsApp-API/index.js
WorkingDirectory=/opt/RR-WhatsApp-API
Restart=always
User=rr-whatsapp-api
Environment=NODE_ENV=production
ExecReload=/usr/bin/killall -9 rr-whatsapp-api
KillMode=process
RestartSec=10

[Install]
WantedBy=multi-user.target</pre>
<p>Recarregar o systemd e Iniciar o Serviço</p>
<pre class="remontti-code"># systemctl daemon-reload
# systemctl enable rr-whatsapp-api
# systemctl start rr-whatsapp-api
</pre>
<p>Verificar o Status do Serviço</p>
<pre class="remontti-code"># systemctl status rr-whatsapp-api.service</pre>
<h2>Uso</h2>
<h3>1. Utilizando o Formulário Web</h3>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2024/10/img.png" alt="" width="1471" height="748" class="alignnone size-full wp-image-8126" srcset="https://blog.remontti.com.br/wp-content/uploads/2024/10/img.png 1471w, https://blog.remontti.com.br/wp-content/uploads/2024/10/img-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2024/10/img-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2024/10/img-768x391.png 768w" sizes="auto, (max-width: 1471px) 100vw, 1471px" /></p>
<h4>1.1. Acessar a Interface Web</h4>
<p>No seu navegador, acesse: <strong>http://SEU_SERVIDOR:3001</strong></p>
<p>Substitua <code>SEU_SERVIDOR</code> pelo endereço IP ou nome de domínio do seu servidor.</p>
<h4>1.2. Conectar ao WhatsApp</h4>
<ul>
<li>Na interface web, se não estiver conectado, você verá a opção para <strong>Conectar</strong>.</li>
<li>Clique no botão <strong>Conectar</strong>.</li>
<li>Um modal será aberto exibindo o QR Code.</li>
<li>Escaneie o QR Code com o aplicativo do WhatsApp no seu dispositivo móvel:
<ul>
<li>Abra o WhatsApp.</li>
<li>Vá em <strong>Configurações</strong> &gt; <strong>Aparelhos Conectados</strong> &gt; <strong>Conectar um Aparelho</strong>.</li>
<li>Escaneie o QR Code exibido na tela.</li>
</ul>
</li>
<li>Após a autenticação, a página será atualizada e mostrará o status <strong>Conectado ao WhatsApp</strong>.</li>
</ul>
<h4>1.3. Enviar Mensagens</h4>
<ul>
<li>Preencha o formulário:
<ul>
<li><strong>Número(s) ou Grupo(s):</strong> Insira os números de telefone (com código do país e DDD) ou nomes dos grupos, separados por vírgula. Se notar que deu mensagem enviada, mas não foi, provavelmente vai ter que tirar o &#8220;9 da frente&#8221;, essa M de whatsapp é zoado. Exemplo:<br />
               +5511999999999, +552188888888, Nome do Grupo
            </li>
<li><strong>Mensagem:</strong> Digite a mensagem que deseja enviar.</li>
<li><strong>Selecionar Imagem/Documento (Opcional):</strong> Se desejar enviar um anexo, selecione o arquivo.</li>
</ul>
</li>
<li>Clique em <strong>Enviar Mensagem</strong>.</li>
<li>Um modal aparecerá informando o sucesso ou erro do envio.</li>
</ul>
<p>OBS: A primeira mensagem após autenticar teve uma vez que chegou a levar 4 min para enviar. mas depois ficou tudo certo. </p>
<h4>1.4. Desconectar do WhatsApp</h4>
<ul>
<li>Na interface web, clique no botão <strong>Desconectar</strong>.</li>
<li>Você receberá uma confirmação de que foi desconectado.</li>
</ul>
<h3>2. Utilizando a API Diretamente</h3>
<h4>2.1. Verificar o Status da Conexão</h4>
<p>Faça uma requisição <strong>GET</strong> para:<br />
<strong>http://SEU_SERVIDOR:3001/api/status</strong></p>
<p><strong>Resposta:</strong></p>
<ul>
<li>Conectado:
<pre class="remontti-code">{
  &quot;status&quot;: &quot;connected&quot;,
  &quot;number&quot;: &quot;552199999999&quot;
}</pre>
</li>
<li>Desconectado:
<pre class="remontti-code">{
  &quot;status&quot;: &quot;disconnected&quot;
}</pre>
</li>
</ul>
<h4>2.2. Obter o QR Code</h4>
<p>Para autenticar o cliente sem usar a interface web, você pode obter o QR Code via API.</p>
<p>Faça uma requisição <strong>GET</strong> para:<br />
<strong>http://SEU_SERVIDOR:3001/api/qr</strong></p>
<ul>
<li><strong>Se não estiver conectado:</strong>
<ul>
<li>Você receberá a imagem do QR Code.</li>
<li>Escaneie essa imagem usando o aplicativo do WhatsApp.</li>
</ul>
</li>
<li><strong>Se já estiver conectado:</strong>
<pre class="remontti-code">{
  &quot;status&quot;: &quot;connected&quot;,
  &quot;message&quot;: &quot;Cliente já está conectado&quot;
}</pre>
</li>
</ul>
<h4>2.3. Enviar Mensagens via API</h4>
<h5>2.3.1. Enviar Mensagem Sem Anexo</h5>
<p>Faça uma requisição <strong>POST</strong> para:<br />
<strong>http://SEU_SERVIDOR:3001/api/send</strong></p>
<p><strong>Parâmetros do Formulário (multipart/form-data):</strong></p>
<ul>
<li><strong>recipients:</strong> Número(s) ou Grupo(s) separados por vírgula.</li>
<li><strong>message:</strong> Texto da mensagem.</li>
</ul>
<p><strong>Exemplo usando <code>curl</code>:</strong></p>
<pre class="remontti-code">curl -X POST http://localhost:3001/api/send \
  -F &#039;recipients=+552199999999,Grupo de Amigos&#039; \
  -F &#039;message=Olá, esta é uma mensagem de teste!&#039;</pre>
<h5>2.3.2. Enviar Mensagem Com Anexo</h5>
<p>Além dos parâmetros anteriores, inclua o campo <strong>file</strong> com o arquivo.<br />
<strong>Exemplo usando <code>curl</code>:</strong></p>
<pre class="remontti-code">curl -X POST http://localhost:3001/api/send \
  -F &#039;recipients=+552199999999&#039; \
  -F &#039;message=Aqui está o documento solicitado.&#039; \
  -F &#039;file=@/opt/o/arquivo.pdf&#039;</pre>
<h5>2.3.3. Enviar Mensagem via URL</h5>
<p><strong>Atenção:</strong> Este método é menos seguro e deve ser usado apenas para testes.</p>
<p>Faça uma requisição <strong>GET</strong> para:<br />
<strong>http://SEU_SERVIDOR:3001/api/sendMessage/:recipient/:message</strong></p>
<ul>
<li><strong>:recipient</strong>: Número sem caracteres especiais ou nome do grupo (URL-encoded).</li>
<li><strong>:message</strong>: Mensagem (URL-encoded).</li>
</ul>
<p><strong>Exemplo:</strong><br />
Enviar &#8220;Teste via GET&#8221; para o número +55 21 99999-9999:<br />
<strong>http://SEU_SERVIDOR:3001/api/sendMessage/5511912345678/Teste%20via%20GET</strong></p>
<p>Enviar &#8220;Aviso importante&#8221; para o grupo &#8220;Equipe&#8221;:<br />
<strong>http://SEU_SERVIDOR:3001/api/sendMessage/Equipe/Aviso%20importante</strong></p>
<h4>2.4. Desconectar do WhatsApp via API</h4>
<p>Faça uma requisição <strong>GET</strong> para:<br />
<strong>http://SEU_SERVIDOR:3001/api/disconnect</strong></p>
<hr>
<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>O post <a href="https://blog.remontti.com.br/8109">RR-WhatsApp-API, simples API para envio de mensagens.</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/8109/feed</wfw:commentRss>
			<slash:comments>22</slash:comments>
		
		
			</item>
		<item>
		<title>Guia Completo de Instalação e Configuração do GenieACS em Debian 12 Bookworm</title>
		<link>https://blog.remontti.com.br/7904</link>
					<comments>https://blog.remontti.com.br/7904#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 10 Apr 2024 15:18:40 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[ACS (Sistema de Configuração Automática)]]></category>
		<category><![CDATA[Automação de Serviços]]></category>
		<category><![CDATA[configuração de rede]]></category>
		<category><![CDATA[Configuração do Node.js]]></category>
		<category><![CDATA[CWMP]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[GenieACS]]></category>
		<category><![CDATA[Gerenciamento de Dispositivos]]></category>
		<category><![CDATA[Gerenciamento de Firmware]]></category>
		<category><![CDATA[Instalação do MongoDB]]></category>
		<category><![CDATA[Monitoramento de CPE]]></category>
		<category><![CDATA[Protocolo de Gerenciamento WAN]]></category>
		<category><![CDATA[Segurança de Rede]]></category>
		<category><![CDATA[tr-069]]></category>
		<category><![CDATA[Tutorial Linux]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7904</guid>

					<description><![CDATA[<p>Cliente TR-069 (Relatório Técnico 069) é uma implementação do CWMP (CPE WAN Management Protocol) para gerenciar dispositivos de usuários finais de forma centralizada. Este CWMP é executado em uma rede IP usando HTTP ou&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7904">Guia Completo de Instalação e Configuração do GenieACS em Debian 12 Bookworm</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2024/04/genieacs-debian12.png" alt="" width="1792" height="838" class="alignnone size-full wp-image-7908" srcset="https://blog.remontti.com.br/wp-content/uploads/2024/04/genieacs-debian12.png 1792w, https://blog.remontti.com.br/wp-content/uploads/2024/04/genieacs-debian12-300x140.png 300w, https://blog.remontti.com.br/wp-content/uploads/2024/04/genieacs-debian12-1024x479.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2024/04/genieacs-debian12-768x359.png 768w, https://blog.remontti.com.br/wp-content/uploads/2024/04/genieacs-debian12-1536x718.png 1536w" sizes="auto, (max-width: 1792px) 100vw, 1792px" /><br />
Cliente TR-069 (Relatório Técnico 069) é uma implementação do CWMP (CPE WAN Management Protocol) para gerenciar dispositivos de usuários finais de forma centralizada. Este CWMP é executado em uma rede IP usando HTTP ou HTTPS para se comunicar com dispositivos ACS (Sistema de configuração automática), onde ACS é um sistema usado para monitorar, configurar e atualizar o firmware de dispositivos remotos.</p>
<p>Em geral, a função do TR-069 é mais amplamente usada em ISPs para gerenciamento de dispositivos do usuário final. Alguns dispositivos que estão atualmente começando a implementar as funções do TR-069, como FTTH CPE/ONT, WIMAX CPE, também podem ser usados ​​para monitoramento de VoIP ou CFTV. E no próprio MikroTik, a função Cliente TR-069 também foi adicionada a partir do RouterOS versão 6.38.</p>
<p><strong>Leitura recomendada:</strong><br />
<a href="https://blog.remontti.com.br/5848" rel="noopener" target="_blank"><strong>Configurando interface de rede no Debian</strong></a></p>
<h3>Requisitos Debian 12 Bookworm</h3>
<p><a href="https://blog.remontti.com.br/7236" rel="noopener" target="_blank">Instalação do Debian 12 Bookworm limpa passo-a-passo</a></p>
<h3>Melhorando o seu BASH</h3>
<p>Para melhorar seu bash e entender o comando a seguir, visite: Como melhorar a produtividade no seu Debian após a instalação</p>
<pre class="remontti-code"># apt -y install wget; wget remontti.com.br/debian; bash debian; su -</pre>
<h3>Repositório</h3>
<p>Adicione <strong>contrib non-free </strong>aos repositórios</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/ bookworm main non-free-firmware contrib non-free
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free

deb http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free
deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free

deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware contrib non-free
deb-src http://deb.debian.org/debian/ bookworm-updates main non-free-firmware contrib non-free
</pre>
<p>Atualize o repositório:</p>
<pre class="remontti-code"># apt update</pre>
<p>Se tiver algum pacote para atualização também faça:</p>
<pre class="remontti-code"># apt upgrade -y</pre>
<p>Instale os firmware-linux*</p>
<pre class="remontti-code"># apt install firmware-linux firmware-linux-free firmware-linux-nonfree -y</pre>
<p>Reinicie seu servidor para carregar os novos módulos do kernel</p>
<pre class="remontti-code"># reboot</pre>
<p>Pacotes requisitos</p>
<pre class="remontti-code"># apt -y install gnupg gnupg2 curl wget rsyslog</pre>
<h4>Repositório MongoDB</h3>
<pre class="remontti-code"># curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
 gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor

# echo &quot;deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] \
 http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main&quot; \
 &gt; /etc/apt/sources.list.d/mongodb-org-7.0.list</pre>
<p>Recarregue o repositório, e instale o MongoDB vamos</p>
<pre class="remontti-code"># apt update
# apt -y install mongodb-org </pre>
<p>Ative o serviço para iniciar com o boot, inicie o serviço e verifique se o mesmo iniciou com êxito. </p>
<pre class="remontti-code"># systemctl enable mongod
# systemctl start mongod
# systemctl status mongod</pre>
<h4>Node.js</h4>
<pre class="remontti-code"># apt -y install nodejs npm --no-install-recommends
# apt -y install node-mongodb</pre>
<h3>Instalação do GenieACS</h3>
<p>Procure se o pacote existe:</p>
<pre class="remontti-code"># npm search -g genieacs</pre>
<pre class="remontti-code-plain">
NAME                   | DESCRIPTION    | AUTHOR    | DATE       | VERSION | KEYWORDS       
genieacs               | A TR-069 Auto… | =zaidka   | 2024-03-28 | 1.2.12  | TR-069 CWMP ACS
@anlix-io/genieacs-sim | TR-069 client… | =anlix-io | 2024-01-15 | 1.14.0  | TR-069 CWMP ACS Simulator
genieacs-sim           | TR-069 client… | =zaidka   | 2017-02-05 | 0.9.0   | TR-069 CWMP ACS

</pre>
<p>Instale o genieacs</p>
<pre class="remontti-code"># npm install -g genieacs</pre>
<pre class="remontti-code-plain">
added 220 packages in 5s

18 packages are looking for funding
  run `npm fund` for details

</pre>
<p>Crie um usuário do sistema para executar daemons GenieACS</p>
<pre class="remontti-code"># useradd --system --no-create-home --user-group genieacs</pre>
<p>Crie um diretório para salvar extensões e arquivo de ambiente<br />
Usaremos o diretório /opt/genieacs/ext/ para armazenar scripts de extensão (se houver).</p>
<pre class="remontti-code"># mkdir /opt/genieacs
# mkdir /opt/genieacs/ext</pre>
<p>Crie o arquivo /opt/genieacs/genieacs.envpara que irá conter as opções de configuração, que passamos ao GenieACS como variáveis de ambiente. </p>
<pre class="remontti-code"># vim /opt/genieacs/genieacs.env</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain">GENIEACS_CWMP_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-cwmp-access.log
GENIEACS_NBI_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-nbi-access.log
GENIEACS_FS_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-fs-access.log
GENIEACS_UI_ACCESS_LOG_FILE=/var/log/genieacs/genieacs-ui-access.log
GENIEACS_DEBUG_FILE=/var/log/genieacs/genieacs-debug.yaml
NODE_OPTIONS=--enable-source-maps
GENIEACS_EXT_DIR=/opt/genieacs/ext</pre>
<p>Gere um segredo JWT seguro e anexe a /opt/genieacs/genieacs.env:</p>
<pre class="remontti-code"># node -e &quot;console.log(\&quot;GENIEACS_UI_JWT_SECRET=\&quot; + require(&#039;crypto&#039;).\
 randomBytes(128).toString(&#039;hex&#039;))&quot; \
 &gt;&gt; /opt/genieacs/genieacs.env</pre>
<p>Defina a propriedade e as permissões do arquivo:</p>
<pre class="remontti-code"># chown genieacs: /opt/genieacs -R
# chmod 600 /opt/genieacs/genieacs.env</pre>
<p>Criar diretório de logs</p>
<pre class="remontti-code"># mkdir /var/log/genieacs
# chown genieacs: /var/log/genieacs</pre>
<p>Configure os serviços no systemd</p>
<pre class="remontti-code"># systemctl edit --force --full genieacs-cwmp</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain">
[Unit]
Description=GenieACS CWMP
After=network.target

[Service]
User=genieacs
EnvironmentFile=/opt/genieacs/genieacs.env
ExecStart=/usr/local/bin/genieacs-cwmp

[Install]
WantedBy=default.target
</pre>
<pre class="remontti-code"># systemctl edit --force --full genieacs-nbi</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain">
[Unit]
Description=GenieACS NBI
After=network.target

[Service]
User=genieacs
EnvironmentFile=/opt/genieacs/genieacs.env
ExecStart=/usr/local/bin/genieacs-nbi

[Install]
WantedBy=default.target
</pre>
<pre class="remontti-code"># systemctl edit --force --full genieacs-fs</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain">
[Unit]
Description=GenieACS FS
After=network.target

[Service]
User=genieacs
EnvironmentFile=/opt/genieacs/genieacs.env
ExecStart=/usr/local/bin/genieacs-fs

[Install]
WantedBy=default.target
</pre>
<pre class="remontti-code"># systemctl edit --force --full genieacs-ui</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain">
[Unit]
Description=GenieACS UI
After=network.target

[Service]
User=genieacs
EnvironmentFile=/opt/genieacs/genieacs.env
ExecStart=/usr/local/bin/genieacs-ui

[Install]
WantedBy=default.target
</pre>
<p>Configure o logrotate para rotação dos log gerados</p>
<pre class="remontti-code"># vim /etc/logrotate.d/genieacs</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain">
/var/log/genieacs/*.log /var/log/genieacs/*.yaml {
    daily
    rotate 30
    compress
    delaycompress
    dateext
}
</pre>
<p>Ative e inicie serviços, e revise a mensagem de status de cada um para verificar se os serviços estão sendo executados com êxito.</p>
<pre class="remontti-code"># systemctl daemon-reload
# systemctl enable genieacs-cwmp genieacs-nbi genieacs-fs genieacs-ui
# systemctl start genieacs-cwmp genieacs-nbi genieacs-fs genieacs-ui
# systemctl status genieacs-cwmp genieacs-nbi genieacs-fs genieacs-ui --no-pager</pre>
<pre class="remontti-code-plain">
● genieacs-cwmp.service - GenieACS CWMP
     Loaded: loaded (/etc/systemd/system/genieacs-cwmp.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-04-10 12:09:13 -03; 44s ago
   Main PID: 9695 (node)
      Tasks: 25 (limit: 4645)
     Memory: 101.1M
        CPU: 1.541s
     CGroup: /system.slice/genieacs-cwmp.service
             ├─9695 node /usr/local/bin/genieacs-cwmp
             ├─9725 /usr/bin/node /usr/local/bin/genieacs-cwmp
             └─9730 /usr/bin/node /usr/local/bin/genieacs-cwmp

abr 10 12:09:13 deb12-rr-flow systemd[1]: Started genieacs-cwmp.service - GenieACS CWMP.
abr 10 12:09:14 deb12-rr-flow genieacs-cwmp[9695]: 2024-04-10T15:09:14.701Z [INFO] genieacs-cwmp starting; …80f66&quot;
abr 10 12:09:16 deb12-rr-flow genieacs-cwmp[9695]: 2024-04-10T15:09:16.465Z [INFO] Worker listening; pid=97…t=7547
abr 10 12:09:16 deb12-rr-flow genieacs-cwmp[9695]: 2024-04-10T15:09:16.475Z [INFO] Worker listening; pid=97…t=7547

● genieacs-nbi.service - GenieACS NBI
     Loaded: loaded (/etc/systemd/system/genieacs-nbi.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-04-10 12:09:13 -03; 44s ago
   Main PID: 9696 (node)
      Tasks: 25 (limit: 4645)
     Memory: 98.5M
        CPU: 1.639s
     CGroup: /system.slice/genieacs-nbi.service
             ├─9696 node /usr/local/bin/genieacs-nbi
             ├─9731 /usr/bin/node /usr/local/bin/genieacs-nbi
             └─9737 /usr/bin/node /usr/local/bin/genieacs-nbi

abr 10 12:09:13 deb12-rr-flow systemd[1]: Started genieacs-nbi.service - GenieACS NBI.
abr 10 12:09:14 deb12-rr-flow genieacs-nbi[9696]: 2024-04-10T15:09:14.710Z [INFO] genieacs-nbi starting; pi…80f66&quot;
abr 10 12:09:16 deb12-rr-flow genieacs-nbi[9696]: 2024-04-10T15:09:16.497Z [INFO] Worker listening; pid=973…t=7557
abr 10 12:09:16 deb12-rr-flow genieacs-nbi[9696]: 2024-04-10T15:09:16.523Z [INFO] Worker listening; pid=973…t=7557

● genieacs-fs.service - GenieACS FS
     Loaded: loaded (/etc/systemd/system/genieacs-fs.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-04-10 12:09:13 -03; 44s ago
   Main PID: 9697 (node)
      Tasks: 25 (limit: 4645)
     Memory: 88.0M
        CPU: 1.561s
     CGroup: /system.slice/genieacs-fs.service
             ├─9697 node /usr/local/bin/genieacs-fs
             ├─9723 /usr/bin/node /usr/local/bin/genieacs-fs
             └─9724 /usr/bin/node /usr/local/bin/genieacs-fs

abr 10 12:09:13 deb12-rr-flow systemd[1]: Started genieacs-fs.service - GenieACS FS.
abr 10 12:09:14 deb12-rr-flow genieacs-fs[9697]: 2024-04-10T15:09:14.676Z [INFO] genieacs-fs starting; pid=…80f66&quot;
abr 10 12:09:16 deb12-rr-flow genieacs-fs[9697]: 2024-04-10T15:09:16.386Z [INFO] Worker listening; pid=9723…t=7567
abr 10 12:09:16 deb12-rr-flow genieacs-fs[9697]: 2024-04-10T15:09:16.497Z [INFO] Worker listening; pid=9724…t=7567

● genieacs-ui.service - GenieACS UI
     Loaded: loaded (/etc/systemd/system/genieacs-ui.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-04-10 12:09:13 -03; 44s ago
   Main PID: 9698 (node)
      Tasks: 25 (limit: 4645)
     Memory: 114.1M
        CPU: 2.003s
     CGroup: /system.slice/genieacs-ui.service
             ├─9698 node /usr/local/bin/genieacs-ui
             ├─9777 /usr/bin/node /usr/local/bin/genieacs-ui
             └─9778 /usr/bin/node /usr/local/bin/genieacs-ui

abr 10 12:09:13 deb12-rr-flow systemd[1]: Started genieacs-ui.service - GenieACS UI.
abr 10 12:09:15 deb12-rr-flow genieacs-ui[9698]: 2024-04-10T15:09:15.244Z [INFO] genieacs-ui starting; pid=…80f66&quot;
abr 10 12:09:16 deb12-rr-flow genieacs-ui[9698]: 2024-04-10T15:09:16.757Z [INFO] Worker listening; pid=9777…t=3000
abr 10 12:09:16 deb12-rr-flow genieacs-ui[9698]: 2024-04-10T15:09:16.763Z [INFO] Worker listening; pid=9778…t=3000
Hint: Some lines were ellipsized, use -l to show in full.

</pre>
<p>Acesse em seu navegador: <strong>http://IP:3000 </strong></p>
<p>Clique em: <strong>ABRACADABRA! </strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_1.png" alt="" width="1194" height="446" class="alignnone size-full wp-image-6003" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_1.png 1194w, https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_1-300x112.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_1-1024x382.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_1-768x287.png 768w" sizes="auto, (max-width: 1194px) 100vw, 1194px" /></p>
<p>Clique em: <strong>Open Sesame!</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_2.png" alt="" width="1194" height="446" class="alignnone size-full wp-image-6004" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_2.png 1194w, https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_2-300x112.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_2-1024x382.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_2-768x287.png 768w" sizes="auto, (max-width: 1194px) 100vw, 1194px" /></p>
<p>Entre com: <strong>admin/admin</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_3.png" alt="" width="1194" height="386" class="alignnone size-full wp-image-6005" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_3.png 1194w, https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_3-300x97.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_3-1024x331.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_3-768x248.png 768w" sizes="auto, (max-width: 1194px) 100vw, 1194px" /></p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_4.png" alt="" width="1194" height="483" class="alignnone size-full wp-image-6006" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_4.png 1194w, https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_4-300x121.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_4-1024x414.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11_4-768x311.png 768w" sizes="auto, (max-width: 1194px) 100vw, 1194px" /></p>
<p>Grupo do telegram: <strong><a href="https://t.me/acsbrasil" rel="noopener" target="_blank">ACS/CWMP &#8211; TR069 &#8211; Brasil (PT-Br)</a></strong></p>
<p>Gostou? Quer ajudar 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>Fonte: <a href="https://genieacs.com/" rel="noopener" target="_blank">https://genieacs.com/</a></p>
<p>O post <a href="https://blog.remontti.com.br/7904">Guia Completo de Instalação e Configuração do GenieACS em Debian 12 Bookworm</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7904/feed</wfw:commentRss>
			<slash:comments>18</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação e Configuração do NetBox no Debian 12: Guia Completo</title>
		<link>https://blog.remontti.com.br/7851</link>
					<comments>https://blog.remontti.com.br/7851#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 05 Apr 2024 15:16:39 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Administração de Sistemas]]></category>
		<category><![CDATA[Configuração do servidor]]></category>
		<category><![CDATA[Configuração NetBox]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[Debian 12 Bookworm]]></category>
		<category><![CDATA[Debian Bookworm]]></category>
		<category><![CDATA[documentação de rede]]></category>
		<category><![CDATA[gerenciamento de racks]]></category>
		<category><![CDATA[gerenciamento de rede]]></category>
		<category><![CDATA[gestão de rede]]></category>
		<category><![CDATA[Infraestrutura de Rede]]></category>
		<category><![CDATA[infraestrutura de TI]]></category>
		<category><![CDATA[instalação do NetBox]]></category>
		<category><![CDATA[Instalação NetBox]]></category>
		<category><![CDATA[IPAM]]></category>
		<category><![CDATA[IPAM (Gerenciamento de Endereço IP)]]></category>
		<category><![CDATA[netbox]]></category>
		<category><![CDATA[NetBox Debian]]></category>
		<category><![CDATA[NetBox Plugin]]></category>
		<category><![CDATA[NetBox Setup]]></category>
		<category><![CDATA[NetBox Topology Views]]></category>
		<category><![CDATA[Open Source Networking]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Redis]]></category>
		<category><![CDATA[Segurança de Rede]]></category>
		<category><![CDATA[tutorial de TI]]></category>
		<category><![CDATA[Tutorial NetBox]]></category>
		<category><![CDATA[virtualização]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7851</guid>

					<description><![CDATA[<p>Netbox é um aplicativo web de código aberto desenvolvido para auxiliar na gestão e documentação de redes de computadores. Originalmente criado pela equipe de engenharia de rede da DigitalOcean, o NetBox foi desenhado para&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7851">Instalação e Configuração do NetBox no Debian 12: Guia Completo</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-remontti-com-br.png" alt="" width="1792" height="1024" class="alignnone size-full wp-image-7868" srcset="https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-remontti-com-br.png 1792w, https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-remontti-com-br-300x171.png 300w, https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-remontti-com-br-1024x585.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-remontti-com-br-768x439.png 768w, https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-remontti-com-br-1536x878.png 1536w" sizes="auto, (max-width: 1792px) 100vw, 1792px" /><br />
<a href="https://docs.netbox.dev/en/stable/" rel="noopener" target="_blank">Netbox</a> é um aplicativo web de código aberto desenvolvido para auxiliar na gestão e documentação de redes de computadores. Originalmente criado pela equipe de engenharia de rede da DigitalOcean, o NetBox foi desenhado para satisfazer as necessidades de engenheiros de rede e infraestrutura, cobrindo aspectos como:</p>
<ul>
<li><strong>Gerenciamento de endereço IP (IPAM)</strong> &#8211; Redes e endereços IP, VRFs e VLANs</li>
<li><strong>Racks de equipamentos</strong> &#8211; Organizados por grupo e local</li>
<li><strong>Dispositivos</strong> &#8211; Tipos de dispositivos e suas instalações</li>
<li><strong>Conexões</strong> &#8211; Rede, console e conexões de energia entre dispositivos</li>
<li><strong>Virtualização</strong> &#8211; Máquinas virtuais e clusters</li>
<li><strong>Circuitos de dados</strong> &#8211; Circuitos e fornecedores de comunicações de longa distância</li>
<li><strong>Segredos</strong> &#8211; Armazenamento criptografado de credenciais sensíveis</li>
</ul>
<p><strong>Requisitos:</strong><br />
<a href="https://blog.remontti.com.br/2966" rel="noopener" target="_blank">Instalação do Debian 12 Bookworm</a></p>
<p>Para tornar-se root corretamente, utilize o comando abaixo com o sinal de hífen.</p>
<pre class="remontti-code">su -</pre>
<p>Instale os pacotes necessários que são pré-requisitos para a instalação do NetBox.</p>
<pre class="remontti-code"># apt install gcc vim net-tools wget redis-server supervisor\
  postgresql-contrib postgresql libpq-dev \
  python3 python3-pip python3-venv python3-dev\
  build-essential libxml2-dev libxslt1-dev\
  libffi-dev libssl-dev zlib1g-dev graphviz\
  nginx redis python3-setuptools python3-gunicorn</pre>
<p>Faça login como usuário postgres para criar o banco de dados necessário.</p>
<pre class="remontti-code"># su - postgres</pre>
<p>Acesse o terminal do postgres com o comando a seguir:</p>
<pre class="remontti-code">$ psql</pre>
<p>Altere a <strong>senha</strong> conforme necessário.</p>
<pre class="remontti-code">postgres=# CREATE DATABASE netboxdb;
postgres=# CREATE USER netboxuser WITH PASSWORD &#039;sua_senha&#039;;
postgres=# GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netboxuser;
postgres=# ALTER USER netboxuser WITH SUPERUSER;
postgres=# \q</pre>
<p>Verifique se o serviço redis está funcionando corretamente.</p>
<pre class="remontti-code">$ redis-cli ping</pre>
<p>Deverá retornar: <strong>PONG</strong></p>
<p>Volte ao usuário root.</p>
<pre class="remontti-code">exit</pre>
<p>Prossiga com o download do projeto NetBox verificando se há uma nova versão disponível no <a href="https://github.com/netbox-community/netbox/releases" rel="noopener" target="_blank">GitHub</a>. Acesse o diretório temporário, faça o download do NetBox, extraia o arquivo, mova para o diretório correto e ajuste as permissões.</p>
<pre class="remontti-code"># cd /tmp
# wget https://github.com/netbox-community/netbox/archive/refs/tags/v3.7.4.tar.gz
# tar vxf v3.7.4.tar.gz
# mv netbox*/ /opt/netbox
# cd /opt/netbox/
# chown www-data: /opt/netbox/netbox/media/ -R</pre>
<p>Gere a SECRET KEY que será usada posteriormente.</p>
<pre class="remontti-code"># /opt/netbox/netbox/generate_secret_key.py </pre>
<p>Exemplo:</p>
<pre class="remontti-code-plain">T7TE07O$j^Jqf9(*20q8M5kG4%NBIci#gEEn0$wuw*qodT7Lfo</pre>
<p>Copie e ajuste o arquivo de configuração com suas informações.</p>
<pre class="remontti-code"># cp /opt/netbox/netbox/netbox/configuration_example.py /opt/netbox/netbox/netbox/configuration.py
# vim /opt/netbox/netbox/netbox/configuration.py</pre>
<p>Edite o arquivo de configuração como no exemplo a seguir:</p>
<pre class="remontti-code">ALLOWED_HOSTS = [&#039;localhost&#039;,&#039;netbox.remontti.com.br&#039;]

DATABASE = {
    &#039;NAME&#039;: &#039;netboxdb&#039;,
    &#039;USER&#039;: &#039;netboxuser&#039;,
    &#039;PASSWORD&#039;: &#039;sua_senha&#039;,
    &#039;HOST&#039;: &#039;localhost&#039;,
    &#039;PORT&#039;: &#039;&#039;,
    &#039;CONN_MAX_AGE&#039;: 300,
}

SECRET_KEY = &#039;T7TE07O$j^Jqf9(*20q8M5kG4%NBIci#gEEn0$wuw*qodT7Lfo&#039;

LOGIN_REQUIRED = True</pre>
<p>Proceda com a instalação executando:</p>
<pre class="remontti-code"># /opt/netbox/upgrade.sh</pre>
<p>Crie um usuário administrador para o NetBox com o seguinte comando:</p>
<pre class="remontti-code"># source /opt/netbox/venv/bin/activate
(venv) # python3 /opt/netbox/netbox/manage.py createsuperuser
Username: remontti
Email address: noc@remontti.com.br
Password: xxxx
Password (again): xxxxx
Superuser created successfully.
(venv) # deactivate</pre>
<p>Configure o servidor web (nginx) e inicie os serviços do NetBox.</p>
<pre class="remontti-code"># cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
# cp /opt/netbox/contrib/*.service /etc/systemd/system/
# sed -i &#039;s/User=netbox/User=root/&#039; /etc/systemd/system/netbox*.service
# sed -i &#039;s/Group=netbox/Group=root/&#039; /etc/systemd/system/netbox*.service
# systemctl daemon-reload
# systemctl enable netbox netbox-rq netbox-housekeeping
# systemctl start netbox netbox-rq netbox-housekeeping
# systemctl status netbox netbox-rq</pre>
<p>Configure o nginx removendo o arquivo default e criando um novo arquivo de configuração.</p>
<pre class="remontti-code"># rm /etc/nginx/sites-enabled/default
# vim /etc/nginx/sites-available/netbox.conf</pre>
<p>Insira a configuração necessária no arquivo `netbox.conf` do nginx.</p>
<pre class="remontti-code-plain">
server {
    listen 80;
    listen [::]:80;
 
    server_name netbox.remontti.com.br;

    client_max_body_size 25m;
 
    location /static/ {
        alias /opt/netbox/netbox/static/;
    }
 
    location / {
        proxy_pass http://localhost:8001;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
</pre>
<p>Crie um link simbólico para ativar a configuração do nginx e reinicie o serviço.</p>
<pre class="remontti-code"># ln -s /etc/nginx/sites-available/netbox.conf /etc/nginx/sites-enabled/
# systemctl restart nginx</pre>
<p>Acesse seu NetBox pelo navegador em <em>&#8220;https://netbox.remontti.com.br/&#8221;</em> ou <em>&#8220;https://ip/&#8221;</em> e faça login com a senha criada.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12.png" alt="" width="1268" height="528" class="alignnone size-full wp-image-7865" srcset="https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12.png 1268w, https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-300x125.png 300w, https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-1024x426.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-768x320.png 768w" sizes="auto, (max-width: 1268px) 100vw, 1268px" /></p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-ok.png" alt="" width="1268" height="897" class="alignnone size-full wp-image-7866" srcset="https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-ok.png 1268w, https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-ok-300x212.png 300w, https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-ok-1024x724.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-ok-768x543.png 768w" sizes="auto, (max-width: 1268px) 100vw, 1268px" /></p>
<p>Instale o plugin <strong><a href="https://github.com/netbox-community/netbox-topology-views" rel="noopener" target="_blank">topology-views</a></strong>.</p>
<pre class="remontti-code"># source /opt/netbox/venv/bin/activate
(venv) # vim /opt/netbox/netbox/netbox/configuration.py</pre>
<p>Configure o plugin `netbox_topology_views` no arquivo de configuração.</p>
<pre class="remontti-code-plain">PLUGINS = [&quot;netbox_topology_views&quot;]

PLUGINS_CONFIG = {
    &#039;netbox_topology_views&#039;: {
        &#039;static_image_directory&#039;: &#039;netbox_topology_views/img&#039;,
        &#039;allow_coordinates_saving&#039;: True,
        &#039;always_save_coordinates&#039;: True
    }
}
</pre>
<p>Conclua a instalação do plugin e atualize as configurações.</p>
<pre class="remontti-code">(venv) # cd /opt/netbox/netbox
(venv) # pip3 install netbox-topology-views
(venv) # python3 manage.py migrate netbox_topology_views
(venv) # python3 manage.py collectstatic --no-input
# deactivate
# systemctl restart netbox netbox-rq netbox-housekeeping</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-netbox_topology_views.png" alt="" width="1276" height="798" class="alignnone size-full wp-image-7860" srcset="https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-netbox_topology_views.png 1276w, https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-netbox_topology_views-300x188.png 300w, https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-netbox_topology_views-1024x640.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2024/04/netbox-debian12-netbox_topology_views-768x480.png 768w" sizes="auto, (max-width: 1276px) 100vw, 1276px" /></p>
<p>Agradecimentos e convite para doação:<br />
<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 sempre atualizado. Agradeço por qualquer feedback nos comentários ou <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">contato direto</a>.</p>
<p>Fonte: <a href="https://docs.netbox.dev/" rel="noopener" target="_blank">Documentação Oficial do NetBox</a></p>
<p>O post <a href="https://blog.remontti.com.br/7851">Instalação e Configuração do NetBox no Debian 12: Guia Completo</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7851/feed</wfw:commentRss>
			<slash:comments>18</slash:comments>
		
		
			</item>
		<item>
		<title>Guia Passo a Passo para Instalar o Typebot em seu servidor próprio</title>
		<link>https://blog.remontti.com.br/7656</link>
					<comments>https://blog.remontti.com.br/7656#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 22 Sep 2023 15:32:29 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[automação]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[bookworm]]></category>
		<category><![CDATA[Certbot]]></category>
		<category><![CDATA[Chatbot]]></category>
		<category><![CDATA[Configuração]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[instalaçao]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[passo a passo]]></category>
		<category><![CDATA[PM2]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[Prisma]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Servidor]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Typebot]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7656</guid>

					<description><![CDATA[<p>O Typebot é uma ferramenta de código aberto que permite criar aplicativos ou formulários conversacionais de forma simples e eficaz. Ele oferece uma alternativa robusta a outras plataformas como o Landbot. Com o Typebot,&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7656">Guia Passo a Passo para Instalar o Typebot em seu servidor próprio</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot.jpeg" alt="" width="1024" height="640" class="alignnone size-full wp-image-7666" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot.jpeg 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-300x188.jpeg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-768x480.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>O <a href="https://typebot.io" rel="noopener" target="_blank"><strong>Typebot</strong></a> é uma ferramenta de código aberto que permite criar aplicativos ou formulários conversacionais de forma simples e eficaz. Ele oferece uma alternativa robusta a outras plataformas como o Landbot. Com o Typebot, você pode criar diferentes tipos de aplicativos conversacionais, como:</p>
<p>&#8211; Qualificação de leads<br />
&#8211; Lançamento de produtos<br />
&#8211; Integração de usuários<br />
&#8211; Suporte ao cliente</p>
<p>O Typebot é amado por equipes e criadores em todo o mundo e oferece uma experiência de construção fácil. Você pode arrastar e soltar blocos para criar seu aplicativo e integrá-lo facilmente em qualquer plataforma. Além disso, ele permite coletar resultados em tempo real, o que é uma grande vantagem.</p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-scaled.webp" alt="" width="2560" height="1465" class="alignnone size-full wp-image-7664" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-scaled.webp 2560w, https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-300x172.webp 300w, https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-1024x586.webp 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-768x439.webp 768w, https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-1536x879.webp 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/09/builder-screenshot-2048x1172.webp 2048w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /></p>
<h4>Exemplos de Uso</h4>
<p><strong>&#8211; Coleta de Informações de Contato:</strong> Substitua seus formulários tradicionais por um chatbot que pode coletar nomes, e-mails e outros detalhes de forma interativa.<br />
<strong>&#8211; Suporte ao Cliente:</strong> Use o Typebot para responder automaticamente a perguntas frequentes e fornecer suporte em tempo real.<br />
<strong>&#8211; Integração de Usuários:</strong> Facilite o processo de integração, fornecendo aos novos usuários um guia passo a passo interativo.<br />
&#8211; Campanhas de Marketing: Utilize o Typebot em suas landing pages para aumentar as taxas de conversão e engajamento.<br />
<strong>&#8211; Pesquisas e Feedback:</strong> Colete feedback do usuário ou conduza pesquisas de forma mais envolvente e interativa.</p>
<h4>Requesitos</h4>
<p><a href="https://blog.remontti.com.br/7236" rel="noopener" target="_blank">Debian 12 bookworm (Instalação Limpa)</a></p>
<h4>DNS</h4>
<p>Crie duas entradas em seu DNS exemplo:<br />
&#8211; typebot.remontti.cum.br apontando para os IPs do servidor<br />
&#8211; typebotapi.remontti.cum.br apontando para os IPs do servidor</p>
<p>Se você<a href="https://blog.remontti.com.br/5958" rel="noopener" target="_blank"> já é da turma do blog</a> vai entender o que temos a baixo la no amigo bind9:</p>
<pre class="remontti-code-plain">typebot       A       192.168.0.100
              AAAA    2001:db8:bebe:cafe::100

typebotapi    A       192.168.0.100
              AAAA    2001:db8:bebe:cafe::100</pre>
<h4>Atualização e Instalação de Pacotes</h4>
<pre class="remontti-code"># apt update; apt upgrade -y</pre>
<p>Instale os pacotes necessários para o projeto</p>
<pre class="remontti-code"># apt install -y nodejs npm git nginx postgresql postgresql-contrib</pre>
<p>Instala globalmente os pacotes pm2 e pnpm usando npm</p>
<pre class="remontti-code"># npm install -g pm2 pnpm</pre>
<h4>Configuração do PostgreSQL</h4>
<p>Alterne para o usuário postgres</p>
<pre class="remontti-code"># su - postgres</pre>
<p>Crie um novo usuário chamado &#8216;typebot&#8217; em seguida inserira uma senha.</p>
<pre class="remontti-code">$ createuser --pwprompt typebot</pre>
<p>Crie um novo banco de dados &#8216;typebot&#8217; e define &#8216;typebot&#8217; como o proprietário</p>
<pre class="remontti-code">$ createdb -O typebot typebot</pre>
<p>Sai do usuário postgres</p>
<pre class="remontti-code">$ exit</pre>
<h4>Preparando formas de autenticação</h4>
<p>Vou deixar 3 formas que são as mais fáceis, você pode optar em usar apenas uma.</p>
<h4>Email</h4>
<p>A mais fácil de todas, basta você utilizar um email, assim toda vez que você for logar ele ira lhe mandar um e-mail com o link. </p>
<h4>Google</h4>
<p>Crie um novo projeto em <a href="https://console.developers.google.com/apis/credentials" rel="noopener" target="_blank">https://console.developers.google.com/apis/credentials</a></p>
<pre class="remontti-code-plain">
Cria um novo projeto
&gt; OAuth consent screen
	&gt; externo 
	Nome: Typebot
	User support email: seu!
	Developer contact information: seu!
	 SAVE

	 ADD OR REMOVE SCOPES
	   	.../auth/userinfo.email
	   	.../auth/userinfo.profile
	   	 SAVE

	   	 SAVE

	   	 BACK TO DASH
&gt; Credentials 
	+ CREATE CREDENTALS
	  &gt; Create OAuth client ID 
		Application type: Web application
		Name: Typebot

		Authorized redirect URIs
		https://typebot.remontti.cum.br/api/auth/callback/google

	Client ID
	Anote

	Client secret
	Anote</pre>
<p>Será usado em:</p>
<pre class="remontti-code-plain">GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=</pre>
<h4>Github</h4>
<p>Acesse <a href="https://github.com/settings/developers" rel="noopener" target="_blank">https://github.com/settings/developers</a> e clique em <strong>New OAuth Apps</strong></p>
<pre class="remontti-code-plain">Application name: Typebot
Homepage URL: https://typebot.remontti.cum.br
Application description: Typebot Auth
Authorization callback URL: https://typebot.remontti.cum.br/api/auth/callback/github</pre>
<p>Anote o <strong>Client ID</strong> e clique em <strong>Generate a new client secret</strong> anote os dois para ser usado em </p>
<pre class="remontti-code-plain">GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=</pre>
<h4>Configuração do Projeto Typebot no Servidor</h4>
<p>Vamos armazenar o projeto mo diretório /opt. </p>
<pre class="remontti-code"># cd /opt/
# git clone https://github.com/baptisteArno/typebot.io.git</pre>
<p>Entre no diretório do projeto<br />
cd typebot.io</p>
<p>Crie arquivo <strong>.env</strong> onde irá ficar as <a href="https://docs.typebot.io/self-hosting/configuration" rel="noopener" target="_blank">variáveis de ambiente</a>.</p>
<pre class="remontti-code"># vim /opt/typebot.io/.env</pre>
<p>Faça os ajustes:</p>
<pre class="remontti-code-plain"># Define a chave de criptografia (Gere aqui https://senhasegura.remontti.cum.br/)
ENCRYPTION_SECRET=i9eRecwVJQeKENqdcrQeizOXFHzQdwAp

# Define a URL de conexão com o banco de dados PostgreSQL
DATABASE_URL=postgresql://typebot:minhasupersenha@localhost:5432/typebot

# Define as URLs para autenticação e API
NEXTAUTH_URL=https://typebot.remontti.cum.br
NEXT_PUBLIC_VIEWER_URL=https://typebotapi.remontti.cum.br

# Define o e-mail do administrador
ADMIN_EMAIL=typebot@remontti.cum.br

# Define as configurações para o servidor SMTP
SMTP_USERNAME=typebot@remontti.cum.br
SMTP_PASSWORD=minhasenha
SMTP_HOST=mail.remontti.cum.br
SMTP_PORT=25
NEXT_PUBLIC_SMTP_FROM=typebot@remontti.cum.br
SMTP_SECURE=false
SMTP_AUTH_DISABLED=false

# Configurações para autenticação via Google e GitHub (opcional)
# Google
GOOGLE_CLIENT_ID=98916e5d5dd1-e3lfmixxuditlz2egexp0n8bfwf3oie3.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=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

# GitHub
GITHUB_CLIENT_ID=6ewyvfeumndg2ve5kve1
GITHUB_CLIENT_SECRET=7r78f2vpmihgriebkp7p4b0ervd4qc7ufu1uu5nx

# Permite ou desabilita o cadastro de novas contas
DISABLE_SIGNUP=false</pre>
<p>Instale todas as dependências do projeto</p>
<pre class="remontti-code"># cd /opt/typebot.io/
# pnpm install</pre>
<p>Saída:</p>
<pre class="remontti-code-plain">Scope: all 19 workspace projects
Lockfile is up to date, resolution step is skipped
Packages: +2398
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Downloading registry.npmjs.org/next/13.4.3: 12,32 MB/12,32 MB, done
[...]
[...]
[...]
devDependencies:
+ cross-env 7.0.3
+ cz-emoji 1.3.2-canary.2
+ husky 8.0.3
+ prettier 2.8.8
+ turbo 1.10.12

. prepare$ husky install
│ husky - Git hooks installed
└─ Done in 288ms
Done in 2m 12.5s</pre>
<p>Compile os aplicativos</p>
<pre class="remontti-code"># cd /opt/typebot.io/
# pnpm run build:apps</pre>
<p>Saída</p>
<pre class="remontti-code-plain">&gt; typebot-os@2.17.2 build:apps /root/typebot.io
&gt; turbo run build --filter=builder... --filter=viewer...
[...]
[...]
[...]
[...]
builder:build: ○  (Static)  automatically rendered as static HTML (uses no initial props)
builder:build: 

 Tasks:    9 successful, 9 total
Cached:    0 cached, 9 total
  Time:    5m28.928s 

⠋ ...writing to cache...  [1s] 

─────────┴──────────┴──────────┘</pre>
<p>Copie o arquivo .env para os diretórios dos aplicativos</p>
<pre class="remontti-code"># cp /opt/typebot.io/.env /opt/typebot.io/apps/builder/
# cp /opt/typebot.io/.env /opt/typebot.io/apps/viewer/</pre>
<p>Configuração e migrações do banco de dados</p>
<pre class="remontti-code"># cd /opt/typebot.io/
# pnpm prisma generate &amp;&amp; pnpm db:migrate</pre>
<p>Saída:</p>
<pre class="remontti-code-plain">Environment variables loaded from .env
prisma:warn We could not find your Prisma schema at `prisma/schema.prisma`.
If you have a Prisma schema file in a custom path, you will need to run
`prisma generate --schema=./path/to/your/schema.prisma` to generate Prisma Client.
If you do not have a Prisma schema file yet, you can ignore this message.


&gt; typebot-os@2.17.2 db:migrate /opt/typebot.io
&gt; cd packages/prisma &amp;&amp; pnpm run db:migrate


&gt; @typebot.io/prisma@0.1.0 db:migrate /opt/typebot.io/packages/prisma
&gt; pnpm migrate:deploy


&gt; @typebot.io/prisma@0.1.0 migrate:deploy /opt/typebot.io/packages/prisma
&gt; dotenv -e ./.env -e ../../.env -- tsx scripts/migrate-deploy.ts

Executing for PostgreSQL schema
┌─────────────────────────────────────────────────────────┐
│  Update available 5.0.0 -&gt; 5.3.1                        │
│  Run the following to update                            │
│    npm i --save-dev prisma@latest                       │
│    npm i @prisma/client@latest                          │
└─────────────────────────────────────────────────────────┘</pre>
<p>Inicia os aplicativos com o PM2</p>
<pre class="remontti-code"># pm2 start --name=typebotwww --cwd /opt/typebot.io/apps/builder/ &quot;pnpm -- next start -p 54001&quot;
# pm2 start --name=typebotapi --cwd /opt/typebot.io/apps/viewer/ &quot;pnpm -- next start -p 54002&quot;</pre>
<pre class="remontti-code-plain">┌────┬───────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name          │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├────┼───────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 1  │ typebotapi    │ default     │ N/A     │ fork    │ 819      │ 0s     │ 0    │ online    │ 0%       │ 10.8mb   │ root     │ disabled │
│ 0  │ typebotwww    │ default     │ N/A     │ fork    │ 760      │ 19s    │ 0    │ online    │ 0%       │ 97.2mb   │ root     │ disabled │
└────┴───────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘</pre>
<p>Salva a configuração atual do PM2 e configura para iniciar com o sistema</p>
<pre class="remontti-code"># pm2 save
# pm2 startup</pre>
<h5>Configuração do Nginx</h5>
<p>Cria os arquivos de configuração do Nginx para os subdomínios</p>
<pre class="remontti-code"># vim /etc/nginx/sites-available/typebot.remontti.cum.br.conf</pre>
<pre class="remontti-code-plain">
server {
    listen 80;
    listen [::]:80;
 
    server_name typebot.remontti.cum.br;

    location / {
        proxy_pass http://localhost:54001;
        proxy_set_header Host $host;
    }
}

</pre>
<pre class="remontti-code"># vim /etc/nginx/sites-available/typebotapi.remontti.cum.br.conf</pre>
<pre class="remontti-code-plain">
server {
    listen 80;
    listen [::]:80;
 
    server_name typebotapi.remontti.cum.br;
 
    location / {
        proxy_pass http://localhost:54002;
        proxy_set_header Host $host;
    }
}
</pre>
<p>Ativa os sites no Nginx</p>
<pre class="remontti-code"># ln -s /etc/nginx/sites-available/typebot.remontti.cum.br.conf /etc/nginx/sites-enabled/
# ln -s /etc/nginx/sites-available/typebotapi.remontti.cum.br.conf /etc/nginx/sites-enabled/
# rm /etc/nginx/sites-enabled/default</pre>
<p>Verifica a sintaxe e reinicia o Nginx</p>
<pre class="remontti-code"># nginx -t
# systemctl restart nginx</pre>
<h5>Configuração do Certbot/Let&#8217;s Encrypt para HTTPS</h5>
<p>Instala o Certbot e o plugin do Nginx</p>
<pre class="remontti-code"># apt install certbot python3-certbot-nginx</pre>
<p>Executa o Certbot para obter os certificados SSL</p>
<pre class="remontti-code">certbot</pre>
<p>Responda: </p>
<pre class="remontti-code-plain">Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter &#039;c&#039; to cancel): noc@remontti.cum.br

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y &lt;&lt;&lt;&lt;&lt;

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let&#039;s Encrypt project and the non-profit organization that
develops Certbot? We&#039;d like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N &lt;&lt;&lt;&lt;
Account registered.

Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: typebotapi.remontti.cum.br
2: typebot.remontti.cum.br
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter &#039;c&#039; to cancel):  &lt;&lt;&lt;&lt;
Requesting a certificate for typebotapi.remontti.cum.br and typebot.remontti.cum.br

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/typebotapi.remontti.cum.br/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/typebotapi.remontti.cum.br/privkey.pem
This certificate expires on 2023-12-20.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for typebotapi.remontti.cum.br to /etc/nginx/sites-enabled/typebotapi.remontti.cum.br.conf
Successfully deployed certificate for typebot.remontti.cum.br to /etc/nginx/sites-enabled/typebot.remontti.cum.br.conf
Congratulations! You have successfully enabled HTTPS on https://typebotapi.remontti.cum.br and https://typebot.remontti.cum.br

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let&#039;s Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -</pre>
<h5>Configuração do Cron para Renovação Automática do Certificado SSL.</h5>
<p>Adicione uma tarefa cron para renovar automaticamente o certificado SSL todo dia 1 de cada mês à meia-noite, e reinicie o cron.</p>
<pre class="remontti-code"># echo &#039;00 00   1 * *   root    /usr/bin/certbot renew -q&#039; &gt;&gt; /etc/crontab
# systemctl restart cron.service</pre>
<h5>Acessando a aplicação</h5>
<p>Abra seu navegador e acesse: https://typebot.remontti.cum.br<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.cum.br/wp-content/uploads/2023/09/typebot-remontti.png" alt="" width="900" height="403" class="alignnone size-full wp-image-7661" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti.png 900w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-300x134.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-768x344.png 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></p>
<p>Clique em <strong>Registre-se gratuitamente</strong><br />
Escolha a forma desejada.</p>
<h4><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2757.png" alt="❗" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2757.png" alt="❗" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2757.png" alt="❗" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </h4>
<p>Os registros <strong>ficam aberto</strong>, então registre toda sua equipe e em seguida desativa a possibilidade de novos registros nos arquivos .env (<strong>DISABLE_SIGNUP=true</strong>)<br />
Com o comando sed</p>
<pre class="remontti-code"># sed -i &#039;s/DISABLE_SIGNUP=false/DISABLE_SIGNUP=true/&#039; /opt/typebot.io/.env
# sed -i &#039;s/DISABLE_SIGNUP=false/DISABLE_SIGNUP=true/&#039; /opt/typebot.io/apps/viewer/.env
# sed -i &#039;s/DISABLE_SIGNUP=false/DISABLE_SIGNUP=true/&#039; /opt/typebot.io/apps/builder/.env</pre>
<p>Reinicie o pm2 </p>
<pre class="remontti-code"># systemctl restart pm2-root.service</pre>
<p>Se deseja realizar novos cadastros basta alterar <strong>DISABLE_SIGNUP=true</strong> para <strong>DISABLE_SIGNUP=false</strong> e reiniciar novamente.</p>
<pre class="remontti-code"># sed -i &#039;s/DISABLE_SIGNUP=true/DISABLE_SIGNUP=false/&#039; /opt/typebot.io/.env
# sed -i &#039;s/DISABLE_SIGNUP=true/DISABLE_SIGNUP=false/&#039; /opt/typebot.io/apps/viewer/.env
# sed -i &#039;s/DISABLE_SIGNUP=true/DISABLE_SIGNUP=false/&#039; /opt/typebot.io/apps/builder/.env</pre>
<p>Reinicie o pm2 </p>
<pre class="remontti-code"># systemctl restart pm2-root.service</pre>
<p>Se desejar fazer alterações faça os arquivos:</p>
<pre class="remontti-code-plain">/opt/typebot.io/.env
/opt/typebot.io/apps/viewer/.env
/opt/typebot.io/apps/builder/.env</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.cum.br/wp-content/uploads/2023/09/typebot-remontti-1.png" alt="" width="1050" height="411" class="alignnone size-full wp-image-7662" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-1.png 1050w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-1-300x117.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-1-1024x401.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/09/typebot-remontti-1-768x301.png 768w" sizes="auto, (max-width: 1050px) 100vw, 1050px" /></p>
<p>A parte mais complicada está feita!<br />
Existe vários videos no <a href="https://www.youtube.com/results?search_query=typebot" rel="noopener" target="_blank">YouTube</a> sobre como mexer nessa criança. Inclusive no <a href="https://www.youtube.com/@typebot4666" rel="noopener" target="_blank">canal oficial </a>dos desenvolvedores. <em>Dica ative a legenda e selecione traduzir!</em></p>
<p><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/jp3ggg_42-M?si=xPi09hAm6AqyZfcU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></p>
<p>Gostou e quer me ajudar manter o blog sem a inconveniência de anúncios intrusivos ou a imposição de taxas? <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.cum.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.cum.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p><strong>Fonte:</strong><br />
<a href="https://docs.typebot.io/" rel="noopener" target="_blank">https://docs.typebot.io/</a></p>
<p>O post <a href="https://blog.remontti.com.br/7656">Guia Passo a Passo para Instalar o Typebot em seu servidor próprio</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7656/feed</wfw:commentRss>
			<slash:comments>17</slash:comments>
		
		
			</item>
		<item>
		<title>Guia passo a passo: Instalando NFDUMP, NFSEN e NFSEN-NG para Análise de Fluxo de Rede no Debian 12 Bookworm</title>
		<link>https://blog.remontti.com.br/7610</link>
					<comments>https://blog.remontti.com.br/7610#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 11 Jul 2023 22:13:53 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Administração de Rede]]></category>
		<category><![CDATA[Análise]]></category>
		<category><![CDATA[Análise de Segurança]]></category>
		<category><![CDATA[Análise de Tráfego]]></category>
		<category><![CDATA[bookworm]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[Debian 12 Bookworm]]></category>
		<category><![CDATA[Debian12]]></category>
		<category><![CDATA[Ferramentas de Análise]]></category>
		<category><![CDATA[Ferramentas de Rede]]></category>
		<category><![CDATA[Fluxo de Rede]]></category>
		<category><![CDATA[Gerenciamento de Tráfego]]></category>
		<category><![CDATA[GuiaPassoAPasso]]></category>
		<category><![CDATA[instalaçao]]></category>
		<category><![CDATA[monitoramento]]></category>
		<category><![CDATA[Monitoramento de Tráfego]]></category>
		<category><![CDATA[NFDUMP]]></category>
		<category><![CDATA[NFSEN]]></category>
		<category><![CDATA[NFSEN-NG]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[software livre]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7610</guid>

					<description><![CDATA[<p>Neste tutorial você adquirirá conhecimentos e habilidades relacionadas à análise de fluxo de rede bem como a área de segurança. Você poderá examinar os dados de fluxo de rede capturados e identificar padrões, tendências&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7610">Guia passo a passo: Instalando NFDUMP, NFSEN e NFSEN-NG para Análise de Fluxo de Rede no Debian 12 Bookworm</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-nfsen-nfsen-ng-nfcap-debian-12-bokworm.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-7619" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-nfsen-nfsen-ng-nfcap-debian-12-bokworm.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-nfsen-nfsen-ng-nfcap-debian-12-bokworm-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-nfsen-nfsen-ng-nfcap-debian-12-bokworm-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>Neste tutorial você adquirirá conhecimentos e habilidades relacionadas à análise de fluxo de rede bem como a área de segurança. Você poderá examinar os dados de fluxo de rede capturados e identificar padrões, tendências e anomalias no tráfego de rede. Isso pode ajudar a detectar atividades suspeitas, como ataques cibernéticos, tráfego malicioso ou congestionamentos.</p>
<h4>Distribuição Utilizada</h4>
<p><strong><a href="https://blog.remontti.com.br/7236" rel="noopener" target="_blank">Debian 12 bookworm (Instalação Limpa)</a></strong></p>
<h4>Requisitos de hardware</h4>
<p>Para o que vamos utilizar aqui não precisamos nada tão agressivo, porém o armazenamento vai depender muito de quanto tempo você for deixar salvo, em média você pode colocar 2GB a 4GB (por source) de dados por dias (mas isso é bem relativo), em questão de CPU e memoria 2 CPU e 2GB de memória já da conta, mas se puder coloca mais melhor para processar os dados.</p>
<h4>Pacotes Requeridos</h4>
<pre class="remontti-code"># apt install \
 curl wget unzip man-db tcpdump htop tree dialog git \
 build-essential autoconf pkg-config flex byacc bison \
 php php-dev apache2 libapache2-mod-php autogen \
 libtool librrd-dev libbz2-dev libpcap-dev rrdtool \
 libcurl4-openssl-dev librrds-perl libsocket6-perl \
 librrdp-perl libio-socket-inet6-perl libmailtools-perl \
 libnet-telnet-perl libnet-whois-ip-perl libnet-snmp-perl \
 libio-socket-ssl-perl libgd-perl git -y</pre>
<p>Crie o diretório onde iremos baixar nossos arquivos extras</p>
<pre class="remontti-code"># mkdir /root/nf</pre>
<h3>NFDUMP</h3>
<p><strong><a href="https://github.com/phaag/nfdump" rel="noopener" target="_blank">NFDUMP</a></strong> é um conjunto de ferramentas para coletar e processar dados netflow/ipfix e sflow, enviados de dispositivos compatíveis com netflow/sflow.</p>
<p>O conjunto de ferramentas contém vários coletores para coletar dados de fluxo:</p>
<ul>
<li>nfcapd suporta netflow v1, v5/v7, v9 e IPFIX</li>
<li>sfcapd suporta sflow.</li>
<li>nfpcapd converte dados pcap lidos de uma interface de host ou de arquivos pcap.</li>
</ul>
<p>O nfdump possui um filtro de fluxo muito poderoso para processar fluxos. A sintaxe do filtro é muito semelhante ao tcpdump, mas adaptada e estendida para filtragem de fluxo. Um filtro de fluxo também pode conter matrizes de muitos milhares de endereços IP, etc., para pesquisar registros específicos.</p>
<p>O nfdump pode agregar fluxos de acordo com um número de elementos definido pelo usuário. Isso mascara certos elementos e permite somar registros de fluxo correspondentes aos mesmos valores.</p>
<p>A combinação de filtragem e agregação de fluxo como entrada para qualquer estatística de fluxo permite processamento de fluxo complexo. Os dados de fluxo pré-filtrados e agregados também podem ser gravados de volta em um arquivo de fluxo binário, que novamente pode ser processado com nfdump</p>
<p>O nfdump pode enriquecer a listagem de fluxos com informações de localização geográfica e informações de AS, a menos que as informações de AS já estejam disponíveis nos registros de fluxo. Os endereços IP podem ser marcados com um código de país de duas letras ou com uma etiqueta de localização mais longa contendo a região geográfica, o país e a cidade. A localização geográfica e as informações AS são recuperadas do banco de dados geoDB opcional, criado pelo programa geolookup das ferramentas nfdump. geolookup usa o banco de dados Maxmind GeoDB ou GeoLite2 para criar um banco de dados de pesquisa binária para nfdump.</p>
<p><strong>Instalação:</strong><br />
O nfdump até se encontra no repositório do Debian 12 (na versão 1.7.1) como um serviço de coleta, como a ideia é mais voltada a depois utilizar o nfsen, irei baixar a ultima versão que inclusive tem alguns recursos interessantes que você pode se aprofundar posteriormente.  </p>
<pre class="remontti-code"># mkdir /root/nf
# cd /root/nf
# git clone https://github.com/phaag/nfdump.git
# cd nfdump
# ./autogen.sh</pre>
<p>Na compilação podemos ativar algumas features adicionais, para ver mais sobre use o comando:</p>
<pre class="remontti-code"># ./configure --help</pre>
<p>Estarei instalando as seguintes: (&#8211;enable-influxdb &#8211;enable-maxmind opcional)</p>
<pre class="remontti-code"># ./configure --enable-nfprofile --enable-nftrack --enable-jnat --enable-influxdb --enable-maxmind 
# make ; make install</pre>
<p>Atualize o cache das bibliotecas dinâmicas.</p>
<pre class="remontti-code"># ldconfig</pre>
<p>Iremos ter uma lista de novos binários em /usr/local/bin/</p>
<pre class="remontti-code-plain">├── geolookup
├── nfanon
├── nfcapd
├── nfdump
├── nfexpire
├── nfprofile
├── nfreplay
├── nftrack
└── updateGeoDB.sh</pre>
<p>Configure seu roteador para enviar dados de netflow para porta 2055, e com o comando a baixo vamos analisar se os mesmo estão chegando em nosso servidor e capturados pelo nfcap.</p>
<pre class="remontti-code"># nfcapd -E -p 2055 -w /tmp/</pre>
<pre class="remontti-code-plain">
Verbose log level: 3
Add flow source: ident: none, IP: any IP, flowdir: /tmp
Bound to IPv4 host/IP: any, Port: 2055
Init v1
Init v5/v7: Default sampling: 1
Init v9: Max number of v9 tags enabled: 105, default sampling: 1
Init IPFIX: Max number of ipfix tags enabled: 88, default sampling: 1
Startup nfcapd.
Process_v9: New v9 exporter: SysID: 1, Domain: 2166325505, IP: 10.10.10.255
Process_v9: New v9 exporter: SysID: 2, Domain: 18841857, IP: 10.10.10.255
^CFile Block Header: type: 3, size: 64, NumRecords: 2
Ident: &#039;none&#039; Flows: 0, Packets: 0, Bytes: 0, Sequence Errors: 0, Bad Packets: 0
Terminating nfcapd.
</pre>
<p><strong>Ctrl+C</strong> Para cancelar (Não precisa deixar em execução, deixe apenas alguns segundos para ver se esta chegando os flows)</p>
<pre class="remontti-code"># ls -lh /tmp/nfcapd.*</pre>
<p>Se tudo ocorreu bem você ira ter uma arquivo da captura com o nome nfcapd.AAAAMMDDHHMM [ANO MÊS DIA HORA MINUTO]</p>
<pre class="remontti-code-plain">-rw-r--r-- 1 root root 149K jul 11 14:54 /tmp/nfcapd.202307111450</pre>
<p>Nfdump é muito poderoso, para dar apenas uma provinha do que estamos falando testes os comandos a baixo para visualizar as saídas. O ultimo comando você vai gostar!</p>
<pre class="remontti-code"># nfdump -r /tmp/nfcapd.202307111450
# nfdump -r /tmp/nfcapd.202307111450 dst ip 8.8.8.8
# nfdump -r /tmp/nfcapd.202307111450 dst ip 8.8.8.8 and dst port 53
# nfdump -r /tmp/nfcapd.202307111500 dst port 80 or dst port 443 -s srcip/bytes
# nfdump -r /tmp/nfcapd.202307111450 -s record/bytes
# nfdump -r /tmp/nfcapd.202307111450 -s dstip/bytes
# nfdump -r /tmp/nfcapd.202307111450 -s dstas/bytes
# nfdump -r /tmp/nfcapd.202307111450 -s dstas/bytes
# nfdump -r /tmp/nfcapd.202307111450 &#039;net 200.200.200.0/22 and (dst port 80 or dst port 443)&#039; -s dstas/bytes -n 20</pre>
<p>Para mais informações de como utiliza-lo use comando <strong>man</strong> para ver o manual do nfdump.</p>
<pre class="remontti-code"># man nfdump</pre>
<p>Mas não se preocupe ainda em aprender todas as possibilidades, para isso vamos aprender agora utilizar duas ferramentar que poderão ser uteis para você. Mas ler <a href="https://blog.remontti.com.br/wp-content/uploads/2023/07/NFDUMP.txt" rel="noopener" target="_blank">esse manual</a> não vai cair o braço. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f602.png" alt="😂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h3>NFSEN</h3>
<p>O <a href="https://github.com/phaag/nfsen" rel="noopener" target="_blank">NfSen</a> é uma ferramenta de código aberto para análise e visualização de dados de fluxo de rede. Com uma interface web intuitiva (estilo anos 90 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f602.png" alt="😂" class="wp-smiley" style="height: 1em; max-height: 1em;" />), ele coleta registros de fluxo de diferentes dispositivos e os apresenta de forma compreensível. Além disso, oferece recursos avançados, como detecção de ataques e armazenamento de dados de fluxo histórico, tornando-o uma opção popular para monitoramento e solução de problemas em redes de grande porte.</p>
<pre class="remontti-code"># cd /root/nf
# wget https://github.com/phaag/nfsen/archive/v1.3.9.tar.gz
# tar -vxzf v1.3.9.tar.gz
# cd nfsen-1.3.9
# sed -i &#039;s/\$USER\s*=\s*&quot;netflow&quot;;/\$USER    = &quot;www-data&quot;;/&#039; etc/nfsen-dist.conf
# sed -i &#039;s/\$WWWUSER\s*=\s*&quot;www&quot;;/\$WWWUSER  = &quot;www-data&quot;;/&#039; etc/nfsen-dist.conf
# sed -i &#039;s/\$WWWGROUP\s*=\s*&quot;www&quot;;/\$WWWGROUP = &quot;www-data&quot;;/&#039; etc/nfsen-dist.conf
# sed -i &#039;s/\$HTMLDIR\s*=\s*&quot;\/var\/www\/nfsen\/&quot;;/\$HTMLDIR    = &quot;\/var\/www\/html\/nfsen\/&quot;;/&#039; etc/nfsen-dist.conf
# sed -i &#039;s/\$BUFFLEN = 200000;/\$BUFFLEN = 1073741824;/&#039; etc/nfsen-dist.conf</pre>
<p>Vamos definir nosso enviadores de fluxos (sim você pode enviar de vários locais)</p>
<pre class="remontti-code"># vim etc/nfsen-dist.conf</pre>
<p>Procure pela seguintes linhas:</p>
<pre class="remontti-code-plain">
%sources = (
    &#039;Borda&#039;        =&gt; { &#039;port&#039; =&gt; &#039;2055&#039;, &#039;col&#039; =&gt; &#039;#0D47A1&#039;, &#039;type&#039; =&gt; &#039;netflow&#039; },
    &#039;Cgnat&#039;        =&gt; { &#039;port&#039; =&gt; &#039;3055&#039;, &#039;col&#039; =&gt; &#039;#B71C1C&#039;, &#039;type&#039; =&gt; &#039;netflow&#039; },
);
</pre>
<p>No exemplo acima estarei incluindo analise do meu <strong>Cgnat</strong> para fins de investigação de problemas <strong>(Mas se prepare que os arquivos capturados serão gigantes</strong>). Vale lembrar que para <strong>cada source a porta não pode ser a mesma</strong>!</p>
<p>Caso você queira adicionar ou remover um novo source edite o arquivo <strong>/data/nfsen/etc/nfsen.conf</strong> e rode o comando <strong>/data/nfsen/bin/nfsen reconfig</strong></p>
<p>Vamos criar o diretório /data/nfsen onde ficarão nossos dados do sistema.</p>
<pre class="remontti-code"># mkdir -p /data/nfsen
# ./install.pl etc/nfsen-dist.conf</pre>
<p>De um ENTER ao perguntar:  Perl to use: [/usr/bin/perl]</p>
<pre class="remontti-code-plain">
  Check for required Perl modules: All modules found.
  Setup NfSen:
  Version: 1.3.9: install.pl 2022-12-19

  Perl to use: [/usr/bin/perl]  [ENTER]
  Setup php and html files.
  mkdir /var/www/html/nfsen/

  Copy NfSen dirs etc bin libexec plugins doc ...
  Copy config file &#039;/etc/nfsen.conf&#039;

  In directory: /data/nfsen/bin ...
  Update script: nfsen
...
...</pre>
<p>Vamos ajustar o <a href="https://www.php.net/manual/pt_BR/timezones.america.php" rel="noopener" target="_blank">timezone</a> do PHP</p>
<pre class="remontti-code"># vim /etc/php/8.2/apache2/php.ini</pre>
<p>Localize e altere: (remova &#8220;;&#8221; do início para descomentar)</p>
<pre class="remontti-code-plain">date.timezone = &#039;America/Sao_Paulo&#039;</pre>
<pre class="remontti-code"># vim /etc/php/8.2/cli/php.ini</pre>
<p>Localize e altere:</p>
<pre class="remontti-code-plain">date.timezone = &#039;America/Sao_Paulo&#039;</pre>
<p>Reinicie p apache</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>Agora vamos criar um serviço no systemd para nosso amigo nfsen </p>
<pre class="remontti-code"># ln -s /data/nfsen/bin/nfsen /etc/init.d/nfsen</pre>
<p>Crie o arquivo:</p>
<pre class="remontti-code"># vim /lib/systemd/system/nfsen.service</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain">[Unit]
Description=nfsen
After=network-online.target

[Service]
Type=simple
#Type=oneshot
RemainAfterExit=yes
ExecStart=/data/nfsen/bin/nfsen start
ExecStop=/data/nfsen/bin/nfsen stop
ExecReload=/data/nfsen/bin/nfsen restart
 
[Install]
WantedBy=multi-user.target</pre>
<p>Recarregue o daemon e vamos por para rodar </p>
<pre class="remontti-code"># systemctl daemon-reload
# systemctl enable nfsen
# systemctl start nfsen
# systemctl status nfsen</pre>
<p>Verificar logs</p>
<pre class="remontti-code"># journalctl -u nfsen 
# journalctl -u nfsen -p err</pre>
<p>Vamos ver se as portas estão na escuta</p>
<pre class="remontti-code"># ss -putan | grep nfcapd</pre>
<pre class="remontti-code-plain">
udp   UNCONN 0      0     0.0.0.0:2055     0.0.0.0:*     users:((&quot;nfcapd&quot;,pid=20756,fd=3))
udp   UNCONN 0      0     0.0.0.0:3055     0.0.0.0:*     users:((&quot;nfcapd&quot;,pid=20752,fd=3))</pre>
<p>Se quiser testar se algo esta chegando o tcpdump pode ser uma boa escolha também.</p>
<pre class="remontti-code"># tcpdump -i enp0s3 -n udp port 2055 -T cnfp -c 10
# tcpdump -i enp0s3 -n udp port 3055 -T cnfp -c 10
</pre>
<p><strong>Vamos entender como os dados vão ser armazenados</strong><br />
Em /data/nfsen/profiles-data/live/ todos nossos sources terão uma pasta, outra pasta com ano, mes, dia. Cada arquivos criado tem um intervalo de 5 minutos. Aguarde uns 15min e rode o seguinte comando:</p>
<pre class="remontti-code"># tree /data/nfsen/profiles-data/live/</pre>
<p>Iremos ver que alguns arquivos e diretórios já foram criados. </p>
<pre class="remontti-code-plain">
├── Borda
│   ├── 2023
│   │   └── 07
│   │       └── 11
│   │           ├── nfcapd.202307111600
│   │           ├── nfcapd.202307111605
│   │           ├── nfcapd.202307111610
│   │           ├── nfcapd.202307111615
│   │           └── nfcapd.202307111620
│   └── nfcapd.current.29124
└── Cgnat
    ├── 2023
    │   └── 07
    │       └── 11
    │           ├── nfcapd.202307111600
    │           ├── nfcapd.202307111605
    │           ├── nfcapd.202307111610
    │           ├── nfcapd.202307111615
    │           └── nfcapd.202307111620
    └── nfcapd.current.29128

9 directories, 12 files
</pre>
<p>Projeto não tem uma index então para não precisar informar na url nfsen.php crie um atalho apontando para index.php</p>
<pre class="remontti-code"># ln -s /var/www/html/nfsen/nfsen.php /var/www/html/nfsen/index.php</pre>
<p>Agora acesse: <strong>http://__endereco_servidor/nfsen/</strong><br />
E temos nossa bela interface anos 90! Não me preocupo com isso, a ferramenta é o que importa. Recomendo você dar uma olha na <a href="https://nfsen.sourceforge.net/#mozTocId391879" rel="noopener" target="_blank">documentação</a>.</p>
<h3>NFSEN-NG</h3>
<p>O projeto <a href="https://github.com/mbolli/nfsen-ng" rel="noopener" target="_blank">NfSen-NG</a> é uma implementação melhorada do NfSen, que oferece recursos avançados para coleta, análise e visualização de dados de tráfego de rede. Com sua interface web intuitiva e poderosa, o &#8220;nfsen-ng&#8221; permite aos usuários monitorar e analisar o tráfego em tempo real, realizar pesquisas detalhadas em dados históricos e criar relatórios personalizados, facilitando a detecção de problemas, a análise de desempenho e a tomada de decisões relacionadas à rede.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12.png" alt="" width="1199" height="778" class="alignnone size-full wp-image-7613" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12.png 1199w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-300x195.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-1024x664.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-768x498.png 768w" sizes="auto, (max-width: 1199px) 100vw, 1199px" /></p>
<pre class="remontti-code"># cd /var/www/html
# git clone https://github.com/mbolli/nfsen-ng /var/www/html/nfsen-ng
# cd /var/www/html/nfsen-ng/
# chmod +x backend/cli.php
# cp backend/settings/settings.php.dist backend/settings/settings.php
# mkdir /var/www/html/nfsen-ng/backend/datasources/data/
# chown -R www-data: /var/www/html/nfsen-ng/</pre>
<p>Vamos fazer alguns ajustes para ler nossa mesma base de dados do nfsen.</p>
<pre class="remontti-code"># vim backend/settings/settings.php</pre>
<p>Localize os sources.</p>
<pre class="remontti-code-plain">        &#039;sources&#039; =&gt; array(
            &#039;source1&#039;, &#039;source2&#039;,
        ),</pre>
<p>Informe os seus:</p>
<pre class="remontti-code-plain">        &#039;sources&#039; =&gt; array(
            &#039;Borda&#039;, &#039;Cgnat&#039;,
        ),</pre>
<p>Se desejar incluir algumas porta para analisar os gráficos.</p>
<pre class="remontti-code-plain">
        &#039;ports&#039; =&gt; array(
            80, 22, 53,
        ),</pre>
<p>No meu vou alterar para:</p>
<pre class="remontti-code-plain">        &#039;ports&#039; =&gt; array(
            0, 22, 53, 80, 443,
        ),</pre>
<p>Localize e altere:</p>
<pre class="remontti-code-plain">        &#039;binary&#039; =&gt; &#039;/usr/bin/nfdump&#039;,
        &#039;profiles-data&#039; =&gt; &#039;/var/nfdump/profiles-data&#039;,</pre>
<p>Por</p>
<pre class="remontti-code-plain">        &#039;binary&#039; =&gt; &#039;/usr/local/bin/nfdump&#039;,
        &#039;profiles-data&#039; =&gt; &#039;/data/nfsen/profiles-data&#039;,</pre>
<p>Enable apache modules</p>
<pre class="remontti-code"># a2enmod rewrite expires</pre>
<p>Configure a biblioteca RRD para o PHP</p>
<pre class="remontti-code"># pecl install rrd
# echo &quot;extension=rrd.so&quot; &gt; /etc/php/8.2/mods-available/rrd.ini
# phpenmod rrd</pre>
<p>Configure virtual host para ler o .htaccess</p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/000-default.conf</pre>
<p>Deve ficar assim:</p>
<pre class="remontti-code-plain">&lt;VirtualHost *:80&gt;
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    &lt;Directory /var/www/html/&gt;
        Options FollowSymLinks Indexes
        AllowOverride All
    &lt;/Directory&gt;

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
&lt;/VirtualHost&gt;</pre>
<p>Reinicie o serviço web</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>Vamos criar um &#8220;serviço&#8221; no systemd para iniciar o /var/www/html/nfsen-ng/backend/cli.php. </p>
<pre class="remontti-code"># vim /lib/systemd/system/nfsen-ng.service</pre>
<p>Adicione?</p>
<pre class="remontti-code-plain">[Unit]
Description=nfsen-ng
After=network-online.target
 
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=su - www-data --shell=/bin/bash -c &#039;/var/www/html/nfsen-ng/backend/cli.php start&#039;
ExecStop=su - www-data --shell=/bin/bash -c &#039;/var/www/html/nfsen-ng/backend/cli.php stop&#039;
 
[Install]
WantedBy=multi-user.target</pre>
<p>Recarregue o daemon e vamos por para rodar</p>
<pre class="remontti-code"># systemctl daemon-reload
# systemctl enable nfsen-ng
# systemctl start nfsen-ng
# systemctl status nfsen-ng</pre>
<p>Acesse agora: <strong>http://__endereco__/nfsen-ng/</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph.png" data-rel="lightbox-gallery-I3IkM5ju" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph.png" alt="" width="2560" height="967" class="alignnone size-full wp-image-7614" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph.png 2560w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph-300x113.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph-1024x387.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph-768x290.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph-1536x580.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph-2048x774.png 2048w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-graph-1320x500.png 1320w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat.png" data-rel="lightbox-gallery-I3IkM5ju" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat.png" alt="" width="1920" height="1059" class="alignnone size-full wp-image-7615" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat-300x165.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat-1024x565.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat-768x424.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat-1536x847.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></a></p>
<p>Utilizando um filtro Ex: &#8220;dst as 15169 OR dst as 2906 OR dst as 32934&#8221; obtém um informações com destino aos 3 AS.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat2.png" data-rel="lightbox-gallery-I3IkM5ju" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat2.png" alt="" width="1920" height="992" class="alignnone size-full wp-image-7616" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat2.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat2-300x155.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat2-1024x529.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat2-768x397.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfsen-ng-debian-12-stat2-1536x794.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></a><br />
Se notar na parte verde temos o comando executado no terminal</p>
<pre class="remontti-code"># nfdump -M &#039;/data/nfsen/profiles-data/live/Borda&#039; -R &#039;2023/07/11/nfcapd.202307111605:2023/07/11/nfcapd.202307111730&#039; -s &#039;dstas/pps&#039; &#039;dst as 15169 OR dst as 2906 OR dst as 32934&#039;</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix.png" data-rel="lightbox-gallery-I3IkM5ju" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix.png" alt="" width="2292" height="316" class="alignnone size-full wp-image-7617" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix.png 2292w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix-300x41.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix-1024x141.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix-768x106.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix-1536x212.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/07/nfdump-google-facebook-netflix-2048x282.png 2048w" sizes="auto, (max-width: 2292px) 100vw, 2292px" /></a><br />
Pode ser um bom &#8220;meio de você aprender os comandos&#8221;. </p>
<p>Algo legal do NfSen-Ng é que ele tem uma API: <strong>http://__endereco__//nfsen-ng/api/config</strong> de uma lida em <a href="https://github.com/mbolli/nfsen-ng/blob/master/README.md" rel="noopener" target="_blank">https://github.com/mbolli/nfsen-ng/blob/master/README.md</a> como utiliza, com um pouco de imaginação você pode fazer algumas coisas bem legais.</p>
<h4>Script para ir apagando arquivos mais antigos</h4>
<pre class="remontti-code"># mkdir /root/scripts/
# vim /root/scripts/faxina_nf.sh</pre>
<p>Adicione (ajuste os dias para realidade do seu disco)</p>
<pre class="remontti-code-plain">#!/bin/bash
  
# Defina o diretório do NFSen
nf_dir=&quot;/data/nfsen/profiles-data/live/&quot;

#Define o número de dias a ser removido
ref_date=$(date -d &#039;60 days ago&#039; +%Y%m%d)

# Ativar o modo de depuração
debug=false

# Percorre os diretórios e exclui os arquivos antigos
find &quot;$nf_dir&quot; -type f -name &#039;nfcapd.*&#039; | while read -r file; do
    # Obtém a data do arquivo em vez do diretório
    file_date=$(date -r &quot;$file&quot; +%Y%m%d)
    if [[ &quot;$file_date&quot; -lt &quot;$ref_date&quot; ]]; then
        if [[ &quot;$debug&quot; = true ]]; then
            echo &quot;$(date -r &quot;$file&quot;) - $file excluído&quot;
        fi
        rm &quot;$file&quot;
    fi
done</pre>
<p>Agende o script para roda todos os dias as 4h da manhã</p>
<pre class="remontti-code"># crontab -e</pre>
<p>Adcione</p>
<pre class="remontti-code-plain">
# m h  dom mon dow   command
# Apaga coletas
00 04  *   *   *     /root/scripts/faxina_nf.sh</pre>
<p>Reinicie o cron</p>
<pre class="remontti-code"># systemctl  restart cron</pre>
<p>Para verificar o tamanho do diretório use o comando</p>
<pre class="remontti-code"># du -sh /data/nfsen/profiles-data/live/</pre>
<p>E para ver o disco use:</p>
<pre class="remontti-code"># df -h</pre>
<p>Gostou e quer me ajudar 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://github.com/phaag/nfdump" rel="noopener" target="_blank">https://github.com/phaag/nfdump</a><br />
<a href="https://github.com/phaag/nfsen" rel="noopener" target="_blank">https://github.com/phaag/nfsen</a><br />
<a href="https://nfsen.sourceforge.net/#mozTocId391879" rel="noopener" target="_blank">https://nfsen.sourceforge.net/</a><br />
<a href="https://github.com/mbolli/nfsen-ng" rel="noopener" target="_blank">https://github.com/mbolli/nfsen-ng</a><br />
<a href="https://github.com/phaag/nfinflux" rel="noopener" target="_blank">https://github.com/phaag/nfinflux</a><br />
<a href="https://github.com/phaag/nfexporter" rel="noopener" target="_blank">https://github.com/phaag/nfexporter</a><br />
<a href="https://github.com/phaag/go-nfdump" rel="noopener" target="_blank">https://github.com/phaag/go-nfdump</a></p>
<p>O post <a href="https://blog.remontti.com.br/7610">Guia passo a passo: Instalando NFDUMP, NFSEN e NFSEN-NG para Análise de Fluxo de Rede no Debian 12 Bookworm</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7610/feed</wfw:commentRss>
			<slash:comments>29</slash:comments>
		
		
			</item>
		<item>
		<title>Guia de Instalação do Greenbone OpenVAS: Um Scanner de Vulnerabilidades Poderoso</title>
		<link>https://blog.remontti.com.br/7555</link>
					<comments>https://blog.remontti.com.br/7555#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 23 Jun 2023 21:27:19 +0000</pubDate>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Vírus]]></category>
		<category><![CDATA[Ajuste de desempenho]]></category>
		<category><![CDATA[Atualizações diárias]]></category>
		<category><![CDATA[bookworm]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[Feed de testes.]]></category>
		<category><![CDATA[Greenbone OpenVAS]]></category>
		<category><![CDATA[instalaçao]]></category>
		<category><![CDATA[Linguagem de programação interna]]></category>
		<category><![CDATA[Protocolos de alto nível da Internet]]></category>
		<category><![CDATA[Protocolos industriais]]></category>
		<category><![CDATA[Scanner de Vulnerabilidades]]></category>
		<category><![CDATA[Testes autenticados]]></category>
		<category><![CDATA[Testes não autenticados]]></category>
		<category><![CDATA[Varreduras em larga escala]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7555</guid>

					<description><![CDATA[<p>Greenbone OpenVAS é um scanner de vulnerabilidade completo. Seus recursos incluem testes não autenticados e autenticados, vários protocolos industriais e de alto nível da Internet, ajuste de desempenho para varreduras em larga escala e&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7555">Guia de Instalação do Greenbone OpenVAS: Um Scanner de Vulnerabilidades Poderoso</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/Greenbone-OpenVAS-Debian-12-bookworm.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-7579" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/Greenbone-OpenVAS-Debian-12-bookworm.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Greenbone-OpenVAS-Debian-12-bookworm-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Greenbone-OpenVAS-Debian-12-bookworm-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p><strong><a href="https://openvas.org/" rel="noopener" target="_blank">Greenbone OpenVAS</a></strong> é um scanner de vulnerabilidade completo. Seus recursos incluem testes não autenticados e autenticados, vários protocolos industriais e de alto nível da Internet, ajuste de desempenho para varreduras em larga escala e uma poderosa linguagem de programação interna para implementar qualquer tipo de teste de vulnerabilidade.<br />
O scanner obtém os testes para detectar vulnerabilidades de um feed que possui um longo histórico e atualizações diárias.</p>
<p>O OpenVAS foi desenvolvido e impulsionado pela empresa Greenbone desde 2006. Como parte da família de produtos de gerenciamento de vulnerabilidade comercial Greenbone Enterprise Appliance, o scanner forma o Greenbone Community Edition junto com outros módulos de código aberto (Open Source).<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/Greenbone-OpenVAS.png" alt="" width="520" height="97" class="aligncenter size-full wp-image-7561" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/Greenbone-OpenVAS.png 520w, https://blog.remontti.com.br/wp-content/uploads/2023/06/Greenbone-OpenVAS-300x56.png 300w" sizes="auto, (max-width: 520px) 100vw, 520px" /><br />
Leia mais sobre a <a href="https://greenbone.github.io/docs/latest/background.html#history-of-the-openvas-project" rel="noopener" target="_blank">história do OpenVAS aqui</a>.</p>
<p>A figura a seguir mostra uma visão geral da arquitetura da versão 22.4.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/greenbone-community-22.4-architecture.png" data-rel="lightbox-gallery-nN9kflnV" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/greenbone-community-22.4-architecture.png" alt="" width="3249" height="1913" class="alignnone size-full wp-image-7556" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/greenbone-community-22.4-architecture.png 3249w, https://blog.remontti.com.br/wp-content/uploads/2023/06/greenbone-community-22.4-architecture-300x177.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/greenbone-community-22.4-architecture-1024x603.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/greenbone-community-22.4-architecture-768x452.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/06/greenbone-community-22.4-architecture-1536x904.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/06/greenbone-community-22.4-architecture-2048x1206.png 2048w" sizes="auto, (max-width: 3249px) 100vw, 3249px" /></a></p>
<p>A arquitetura do Greenbone Community Edition é agrupada em três partes principais:<br />
 &#8211; Aplicativos de scanner executáveis que executam testes de vulnerabilidade (VT) em sistemas de destino<br />
 &#8211; Daemon do gerenciador de vulnerabilidade Greenbone (gvmd)<br />
 &#8211; Greenbone Security Assistant (GSA) com o Greenbone Security Assistant Daemon (gsad)</p>
<h4>Distribuição Utilizada</h4>
<p><strong> <a href="https://blog.remontti.com.br/7236" rel="noopener" target="_blank">Debian 12 bookworm (Instalação Limpa)</a></strong></p>
<h4>Requisitos de hardware</h4>
<p><strong><em>Mínimo</em></strong><br />
 &#8211; 2 CPU<br />
 &#8211; 4 GB Memória<br />
 &#8211; 20 GB de disco livres</p>
<p><strong><em>Recomendado:</em></strong><br />
 &#8211; 4 CPU<br />
 &#8211; 8 GB Memória<br />
 &#8211; 60 GB de disco livres</p>
<h2>Instalação</h2>
<p>Irei fazer a instalação através de containes pois ser mais pratico e fácil, mas se você quiser compilar e instala-lo siga <a href="https://greenbone.github.io/docs/latest/22.4/source-build/index.html" rel="noopener" target="_blank">esses passos</a>.</p>
<p>Vamos a instalação dos pacotes necessários:</p>
<pre class="remontti-code"># apt install curl docker.io python3 python3-pip docker-compose
# mkdir -p /usr/local/lib/docker/cli-plugins
# curl -SL https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-linux-x86_64 \
  -o /usr/local/lib/docker/cli-plugins/docker-compose
</pre>
<p>Vamos adicionar o docker ao grupo root.</p>
<pre class="remontti-code"># usermod -aG docker root</pre>
<p>Crie um diretório onde iremos criar a composição do docker, em seguinta entre no diretório.</p>
<pre class="remontti-code"># mkdir -p /opt/greenbone-community-container
# cd /opt/greenbone-community-container</pre>
<p>Baixe o arquivo de composição do docker.</p>
<pre class="remontti-code"># curl -f -L \
 https://greenbone.github.io/docs/latest/_static/docker-compose.yml \
 -o docker-compose.yml</pre>
<p>Puxe os contêiners.</p>
<pre class="remontti-code"># docker-compose -f \
 /opt/greenbone-community-container/docker-compose.yml \
 -p greenbone-community-edition pull</pre>
<p>Inicie os contêiner.</p>
<pre class="remontti-code"># docker-compose -f \
 /opt/greenbone-community-container/docker-compose.yml \
 -p greenbone-community-edition up -d</pre>
<p>Acesse em seu navegador com usuário e senha <strong>admin</strong>.<br />
<strong>http://IP_SERVIDOR:9392</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/greenbone-community-debian-12.png" data-rel="lightbox-gallery-nN9kflnV" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/greenbone-community-debian-12.png" alt="" width="1406" height="928" class="alignnone size-full wp-image-7559" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/greenbone-community-debian-12.png 1406w, https://blog.remontti.com.br/wp-content/uploads/2023/06/greenbone-community-debian-12-300x198.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/greenbone-community-debian-12-1024x676.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/greenbone-community-debian-12-768x507.png 768w" sizes="auto, (max-width: 1406px) 100vw, 1406px" /></a></p>
<p>Se achar melhor pode fazer um proxy<a href="https://blog.remontti.com.br/7413" rel="noopener" target="_blank">utilizando o Nginx</a> para acessar via domínio (Http/Http)</p>
<pre class="remontti-code"># apt install nginx
# sed -i &#039;s/# server_tokens/server_tokens/&#039; /etc/nginx/nginx.conf
# vim /etc/nginx/sites-available/greenbone.conf</pre>
<p>Ajuste</p>
<pre class="remontti-code">
server {
    listen 80;
    listen [::]:80;
 
    server_name greenbone.remontti.com.br;
 
    # Descomente para restringir o acesso apenas aos IPs Listados
    # allow 127.0.0.1;
    # allow ::1;
    # allow 192.168.0.0/16;
    # allow 2801:db8::/32;
    # deny  all;
    # error_page  403   http://www.remontti.com.br;
 
    location / {
        proxy_pass http://localhost:9392;
        proxy_set_header   Host $host;
    }
}</pre>
<p>Crie o link para sites-enabled, e reinicie o serviços.</p>
<pre class="remontti-code"># ln -s /etc/nginx/sites-available/greenbone.conf /etc/nginx/sites-enabled/
# systemctl restart nginx</pre>
<p>Agora você pode acessar via Domínio (removendo a criação de um firewall com nftables)</p>
<h4>Primeiros passos</h4>
<p>A ferramenta tem uma ótima documentação, <a href="https://docs.greenbone.net/GSM-Manual/gos-22.04/en/index.html" rel="noopener" target="_blank">basta acessar aqui</a>. Mas vou deixar aqui uns passo básicos para você realizar ao menos um primeiro scan.</p>
<p>Alterando as <a href="https://docs.greenbone.net/GSM-Manual/gos-22.04/en/web-interface.html#changing-the-user-settings" rel="noopener" target="_blank">configurações do usuário</a> (provavelmente vai querer trocar a senha admin)<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/user_settings.png" alt="" width="317" height="162" class="alignnone size-full wp-image-7563" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/user_settings.png 317w, https://blog.remontti.com.br/wp-content/uploads/2023/06/user_settings-300x153.png 300w" sizes="auto, (max-width: 317px) 100vw, 317px" /></p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/user_settings_3.png" alt="" width="499" height="426" class="alignnone size-full wp-image-7565" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/user_settings_3.png 499w, https://blog.remontti.com.br/wp-content/uploads/2023/06/user_settings_3-300x256.png 300w" sizes="auto, (max-width: 499px) 100vw, 499px" /></p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/user_settings_2.png" alt="" width="813" height="658" class="alignnone size-full wp-image-7564" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/user_settings_2.png 813w, https://blog.remontti.com.br/wp-content/uploads/2023/06/user_settings_2-300x243.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/user_settings_2-768x622.png 768w" sizes="auto, (max-width: 813px) 100vw, 813px" /></p>
<p><strong>Administration >>  Feed Status</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/feed.png" alt="" width="967" height="411" class="alignnone size-full wp-image-7566" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/feed.png 967w, https://blog.remontti.com.br/wp-content/uploads/2023/06/feed-300x128.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/feed-768x326.png 768w" sizes="auto, (max-width: 967px) 100vw, 967px" /><br />
Em todo lugar você irá encontrar esse <strong>(?)</strong> que irá te jogar direto para a explicação na documentação.</p>
<p><strong>Configuration >> Portlists</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/ports.png" alt="" width="1106" height="392" class="alignnone size-full wp-image-7567" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/ports.png 1106w, https://blog.remontti.com.br/wp-content/uploads/2023/06/ports-300x106.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/ports-1024x363.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/ports-768x272.png 768w" sizes="auto, (max-width: 1106px) 100vw, 1106px" /><br />
Você ira encontrar já 3 padrões exemplo o All IANA assigned TCP and UDP, que contem um total de 11.318 portas sendo 5.836/TCP e 5482/UDP.</p>
<p>Para criar clique no ícone de &#8220;<em>New Port List</em>&#8221;<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/ports_add.png" alt="" width="375" height="151" class="alignnone size-full wp-image-7568" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/ports_add.png 375w, https://blog.remontti.com.br/wp-content/uploads/2023/06/ports_add-300x121.png 300w" sizes="auto, (max-width: 375px) 100vw, 375px" /></p>
<p>Exemplo:<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/ports_add_web_tcp.png" alt="" width="573" height="266" class="alignnone size-full wp-image-7570" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/ports_add_web_tcp.png 573w, https://blog.remontti.com.br/wp-content/uploads/2023/06/ports_add_web_tcp-300x139.png 300w" sizes="auto, (max-width: 573px) 100vw, 573px" /></p>
<p>Outro exemplo de TCP e UDP:<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/ports_tcp_udp.png" alt="" width="567" height="266" class="alignnone size-full wp-image-7571" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/ports_tcp_udp.png 567w, https://blog.remontti.com.br/wp-content/uploads/2023/06/ports_tcp_udp-300x141.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/ports_tcp_udp-520x245.png 520w" sizes="auto, (max-width: 567px) 100vw, 567px" /></p>
<p>Para iniciar um scan, menu: <strong>Scans >> Tasks</strong>, em seguida <em>New Task</em><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/task.png" alt="" width="362" height="149" class="alignnone size-full wp-image-7572" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/task.png 362w, https://blog.remontti.com.br/wp-content/uploads/2023/06/task-300x123.png 300w" sizes="auto, (max-width: 362px) 100vw, 362px" /></p>
<p>Defina um nome (pelo menos)<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/task-1.png" alt="" width="831" height="561" class="alignnone size-full wp-image-7576" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/task-1.png 831w, https://blog.remontti.com.br/wp-content/uploads/2023/06/task-1-300x203.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/task-1-768x518.png 768w" sizes="auto, (max-width: 831px) 100vw, 831px" /></p>
<p>Vamos informar nossos hosts (Prefixos) e informar qual portas vamos varrer, clique em save.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/task-2.png" alt="" width="834" height="716" class="alignnone size-full wp-image-7575" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/task-2.png 834w, https://blog.remontti.com.br/wp-content/uploads/2023/06/task-2-300x258.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/task-2-768x659.png 768w" sizes="auto, (max-width: 834px) 100vw, 834px" /></p>
<p>Voltamos par atela anterior, é so clicar em save. Poré perceba que temos varias outras <a href="https://docs.greenbone.net/GSM-Manual/gos-22.04/en/scanning.html#managing-tasks" rel="noopener" target="_blank">possibilidades</a>.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/task-3.png" alt="" width="826" height="660" class="alignnone size-full wp-image-7574" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/task-3.png 826w, https://blog.remontti.com.br/wp-content/uploads/2023/06/task-3-300x240.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/task-3-768x614.png 768w" sizes="auto, (max-width: 826px) 100vw, 826px" /></p>
<p>Agora de um start e aguarde!<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/task-4.png" alt="" width="1109" height="549" class="alignnone size-full wp-image-7573" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/task-4.png 1109w, https://blog.remontti.com.br/wp-content/uploads/2023/06/task-4-300x149.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/task-4-1024x507.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/task-4-768x380.png 768w" sizes="auto, (max-width: 1109px) 100vw, 1109px" /></p>
<p>Agora é só &#8220;chorrar&#8221;&#8230;<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/scan.png" alt="" width="1505" height="816" class="alignnone size-full wp-image-7577" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/scan.png 1505w, https://blog.remontti.com.br/wp-content/uploads/2023/06/scan-300x163.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/scan-1024x555.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/scan-768x416.png 768w" sizes="auto, (max-width: 1505px) 100vw, 1505px" /></p>
<p>Vou deixar um vídeo do <a href="https://t.me/raphaelisp" rel="noopener" target="_blank">Raphael</a> explicando como utilizar também a ferramenta.<br />
<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/gA-J16tqHyE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></p>
<p>Gostou e quer me ajudar 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://greenbone.github.io/docs/latest/" rel="noopener" target="_blank">https://greenbone.github.io/docs/latest/</a></p>
<p>O post <a href="https://blog.remontti.com.br/7555">Guia de Instalação do Greenbone OpenVAS: Um Scanner de Vulnerabilidades Poderoso</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7555/feed</wfw:commentRss>
			<slash:comments>16</slash:comments>
		
		
			</item>
		<item>
		<title>Servidor WEB NGINX + PHP 8.2 + PostgreSQL +Let’s Encrypt  Debian 12 Bookworm (LNP)</title>
		<link>https://blog.remontti.com.br/7413</link>
					<comments>https://blog.remontti.com.br/7413#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 14 Jun 2023 17:32:09 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bookworm]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[Let’s Encrypt]]></category>
		<category><![CDATA[LNP]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[PHP 8.2]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[Servidor WEB]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7413</guid>

					<description><![CDATA[<p>Neste tutorial vamos configurar um servidor web com NGINX (lê-se “engine x”), o concorrente do Apache. NGINX é um servidor web (HTTP e IMAP/POP3/Proxy) rápido, leve e com inúmeras possibilidades de configuração para melhor&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7413">Servidor WEB NGINX + PHP 8.2 + PostgreSQL +Let’s Encrypt  Debian 12 Bookworm (LNP)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/lnp_debian_12-1.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-7423" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/lnp_debian_12-1.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lnp_debian_12-1-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lnp_debian_12-1-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>Neste tutorial vamos configurar um servidor web com NGINX (lê-se “engine x”), o concorrente do Apache. NGINX é um servidor web (HTTP e IMAP/POP3/Proxy) rápido, leve e com inúmeras possibilidades de configuração para melhor performance. O Apache, sem dúvidas, é o servidor web mais popular. No entanto, o NGINX a cada ano ganha mais popularidade e está sendo a preferência dos novos projetos. Também estarei instalando o banco de dados PostgreSQL e phpPgAdmin como gerenciador web. </p>
<p>Distribuição utilizada: <strong><a href="https://blog.remontti.com.br/7236" rel="noopener noreferrer" target="_blank">Debian 12 Bookworm / Instalação Limpa</a></strong></p>
<h3>NGINX 1.22</h3>
<p><a href="https://www.nginx.com" rel="noopener" target="_blank">https://www.nginx.com</a><br />
Vamos instalar-lo e remover a assinatura para que não vejam a versão do mesmo (Boas praticas)</p>
<pre class="remontti-code"># apt install nginx
# sed -i &#039;s/# server_tokens/server_tokens/&#039; /etc/nginx/nginx.conf
# systemctl restart nginx</pre>
<p>Acesse agora em seu navegador http://IP-SERVIDOR/<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx1.png" alt="" width="1100" height="310" class="alignnone size-full wp-image-5467" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx1.png 1100w, https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx1-300x85.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx1-1024x289.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx1-768x216.png 768w" sizes="auto, (max-width: 1100px) 100vw, 1100px" /><br />
Pronto nosso NGINX está rodando! </p>
<h3>PostgreSQL</h3>
<pre class="remontti-code"># apt install postgresql postgresql-contrib</pre>
<p>Torne-se o usuário postgres, para poder criar o banco de dados.</p>
<pre class="remontti-code"># su - postgres</pre>
<p>Execute para entrar no terminal de comandos do banco.</p>
<pre class="remontti-code">$ psql</pre>
<p>Para definir a senha do usuário postgres e instalar o adminpack.</p>
<pre class="remontti-code">postgres=# \password postgres
Digite nova senha para postgres: 
Digite-a novamente:
postgres=# CREATE EXTENSION adminpack;
CREATE EXTENSION
postgres=# \q 
$ exit</pre>
<p>Ajustes no pg_hba.conf, assim toda alteração será necessaria validação do postgres com a senha que acabou de definir.</p>
<pre class="remontti-code"># vim /etc/postgresql/15/main/pg_hba.conf</pre>
<p>Altere as seguintes linhas: </p>
<pre class="remontti-code">local   all             postgres                                peer
local   all             all                                     peer</pre>
<p>Para:</p>
<pre class="remontti-code">local   all             postgres                                md5
local   all             all                                     md5</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/04/postgres.png" alt="" width="1010" height="268" class="alignnone size-full wp-image-5501" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/postgres.png 1010w, https://blog.remontti.com.br/wp-content/uploads/2021/04/postgres-300x80.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/04/postgres-768x204.png 768w" sizes="auto, (max-width: 1010px) 100vw, 1010px" /><br />
Reinicie o postgres</p>
<pre class="remontti-code"># systemctl restart postgresql</pre>
<p>Volte para o postgres</p>
<pre class="remontti-code"># su - postgres</pre>
<p>Agora para toda ação será necessário autenticar.</p>
<pre class="remontti-code">$ psql 
Senha para usuário postgres: !!SUA_SENHA!!
psql (15.3 (Debian 15.3-0+deb12u1))
Type &quot;help&quot; for help.
postgres-# \q</pre>
<p>Para demonstração irei criar um banco/usuário teste, não esqueça de alterar a senha.</p>
<pre class="remontti-code">$ createuser --pwprompt teste
Digite a senha para a nova role: &lt;&lt; NOVA SENHA PARA O USUÁRIO TESTE
Digite-a novamente: &lt;&lt; REPITA
Senha: &lt;&lt; SENHA DO QUE SETOU ANTES  NO COMANDO &quot;\password postgres&quot;</pre>
<p>Agora crie o  banco e vincule ao usuário.</p>
<pre class="remontti-code">$ createdb -O teste meubd
Senha: &lt;&lt;&lt; SENHA DO POSTGRES </pre>
<p>Verifique se o mesmo foi criado.</p>
<pre class="remontti-code">$ psql -l 
Senha para usuário postgres: 
                               Lista dos bancos de dados
   Nome    |   Dono   | Codificação |   Collate   |    Ctype    | Privilégios de acesso 
-----------+----------+-------------+-------------+-------------+-----------------------
 meubd     | teste    | UTF8        | pt_BR.UTF-8 | pt_BR.UTF-8 | 
....
....</pre>
<p>Acessamos agora o bd teste.</p>
<pre class="remontti-code">$ psql -U teste -d meubd
Senha do usuário teste: 
psql (15.3 (Debian 15.3-0+deb12u1))
Digite &quot;help&quot; para ajuda.

meubd=&gt;</pre>
<p>Vamos fazer uma "brincadeira" só para testar, criaremos uma tabela e inseriremos dados nela.</p>
<pre class="remontti-code">meubd=&gt; CREATE TABLE doacao ( id int,nome text, valor text );
meubd=&gt; INSERT INTO doacao (id,nome,valor) values (1,&#039;Rudimar Remontti&#039;,&#039;R$ 5,00&#039;); 
meubd=&gt; SELECT * FROM doacao;

 id |       nome       |  valor  
----+------------------+---------
  1 | Rudimar Remontti | R$ 5,00

meubd=&gt; \q</pre>
<p>Se deseja remover o banco/usuário teste.</p>
<pre class="remontti-code">$ dropdb meubd
Senha: &lt;&lt; SENHA DO POSTGRES
$ dropuser teste
Senha: &lt;&lt; SENHA DO POSTGRES</pre>
<p>Volte para root</p>
<pre class="remontti-code">$ exit</pre>
<h3>PHP 8.2</h3>
<p>Incluirei algumas extensões do PHP que são normalmente utilizada também na instalação.</p>
<pre class="remontti-code">#  apt install --no-install-recommends \
 php php-{fpm,cli,mysql,pear,gd,gmp,bcmath,mbstring,curl,xml,zip,json,pgsql}</pre>
<p>Agora vamos fazer a "integração" do PHP com o NGINX. Moveremos o arquivo defaul.</p>
<pre class="remontti-code"># mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.original</pre>
<p>Crie um novo:</p>
<pre class="remontti-code"># vim /etc/nginx/sites-available/default</pre>
<p>Ajuste:</p>
<pre class="remontti-code">server {
    listen 80;
    listen [::]:80;

    root /var/www/html;
    index index.php index.html index.htm;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }
}</pre>
<p>Teste a configuração se não tem nada errado e restart os serviços:</p>
<pre class="remontti-code"># nginx -t
# systemctl restart nginx php8.2-fpm</pre>
<p>Vamos criar um arquivo em PHP para testa se nosso NGINX está interpretando o PHP.</p>
<pre class="remontti-code"># echo &#039;&lt;?php phpinfo();&#039; &gt;&gt; /var/www/html/teste.php</pre>
<p>Acesse em seu navegador <strong>http://IP-SERVIDOR/teste.php</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/debian12_php8.2.png" data-rel="lightbox-gallery-rynrIjJJ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/debian12_php8.2-300x292.png" alt="" width="300" height="292" class="alignnone size-medium wp-image-7417" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/debian12_php8.2-300x292.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/debian12_php8.2-768x748.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/06/debian12_php8.2.png 950w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Servidor WEB com PHP está funcionando! </p>
<p>Exemplo para multiplos domínios/subdomínios </p>
<pre class="remontti-code"># vim /etc/nginx/sites-available/sub1.conf</pre>
<p>Neste ex: vou representar o <em>sub1.remontti.com.br</em></p>
<pre class="remontti-code">server {
    listen 80;
    listen [::]:80;

    root /var/www/sub1;
    index index.php index.html index.htm;

    add_header Strict-Transport-Security &quot;max-age=31536000; includeSubDomains&quot; always;

    server_name sub1.remontti.com.br;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }
}</pre>
<pre class="remontti-code"># vim /etc/nginx/sites-available/sub2e3.conf</pre>
<p>Neste ex: vou representar o <em>sub2.remontti.com.br</em> e <em>sub3.remontti.com.br</em></p>
<pre class="remontti-code">server {
    listen 80;
    listen [::]:80;

    root /var/www/sub2e3;
    index index.php index.html index.htm;

    server_name sub2.remontti.com.br sub3.remontti.com.br;

    add_header Strict-Transport-Security &quot;max-age=31536000; includeSubDomains&quot; always;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }
}</pre>
<p>Link os arquivos no diretório "/etc/nginx/sites-available"  que será carregado as novas configurações </p>
<pre class="remontti-code"># ln -s /etc/nginx/sites-available/sub1.conf /etc/nginx/sites-enabled/
# ln -s /etc/nginx/sites-available/sub2e3.conf /etc/nginx/sites-enabled/</pre>
<p>Crie os diretórios referente a cada <strong>server_name</strong>.</p>
<pre class="remontti-code"># mkdir /var/www/sub1
# mkdir /var/www/sub2e3
# echo &#039;&lt;?php echo &quot;Olá mundo do sub1!&quot;; ?&gt;&#039; &gt;&gt; /var/www/sub1/index.php
# echo &#039;&lt;?php echo &quot;Olá mundo do sub2e3!&quot;; ?&gt;&#039; &gt;&gt; /var/www/sub2e3/index.php
</pre>
<p>Verifique se não tem nenhum erro e reinicie o serviço:</p>
<pre class="remontti-code"># nginx -t
# systemctl restart nginx</pre>
<h3>:: Let's Encrypt ::</h3>
<p>Criando certificado grátis para seus sub/domínios.</p>
<pre class="remontti-code"># apt install certbot python3-certbot-nginx</pre>
<p>Para gerar o certificado use o comando:</p>
<pre class="remontti-code"># certbot</pre>
<p>Não esqueça de colocar no seu cron para ele renovar o certificado, pois a cada 90 ele expira. Neste exemplo todo dia primeiro tento renovar.</p>
<pre class="remontti-code"># certbot -q renew</pre>
<p>Para testar acesse: <a href="https://www.cdn77.com/tls-test/" rel="noopener" target="_blank">https://www.cdn77.com/tls-test/</a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste.png" data-rel="lightbox-gallery-rynrIjJJ" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-300x182.png" alt="" width="300" height="182" class="alignnone size-medium wp-image-6158" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-300x182.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-1024x620.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-768x465.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste.png 1099w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Gostou?</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><br />
Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p><strong>Fontes:</strong> <a href="https://docs.nginx.com/" rel="noopener" target="_blank">https://docs.nginx.com/</a><br />
<a href="https://docs.nginx.com/nginx/admin-guide/web-server/web-server/" rel="noopener" target="_blank">https://docs.nginx.com/nginx/admin-guide/web-server/web-server/</a></p>
<p>O post <a href="https://blog.remontti.com.br/7413">Servidor WEB NGINX + PHP 8.2 + PostgreSQL +Let’s Encrypt  Debian 12 Bookworm (LNP)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7413/feed</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Servidor WEB NGINX + PHP 8.2 + MariaDB + phpMyAdmin + Let’s Encrypt Debian 12 Bookworm (LNMP)</title>
		<link>https://blog.remontti.com.br/7460</link>
					<comments>https://blog.remontti.com.br/7460#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 14 Jun 2023 15:17:45 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bookworm]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[Let’s Encrypt]]></category>
		<category><![CDATA[LNMP]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[Servidor WEB]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7460</guid>

					<description><![CDATA[<p>Neste tutorial vamos configurar um servidor web com NGINX (lê-se “engine x”), o concorrente do Apache. NGINX é um servidor web (HTTP e IMAP/POP3/Proxy) rápido, leve e com inúmeras possibilidades de configuração para melhor&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7460">Servidor WEB NGINX + PHP 8.2 + MariaDB + phpMyAdmin + Let’s Encrypt Debian 12 Bookworm (LNMP)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><center><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian12.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-7476" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian12.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian12-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian12-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></center></p>
<p>Neste tutorial vamos configurar um servidor web com NGINX (lê-se “engine x”), o concorrente do Apache. NGINX é um servidor web (HTTP e IMAP/POP3/Proxy) rápido, leve e com inúmeras possibilidades de configuração para melhor performance. O Apache, sem dúvidas, é o servidor web mais popular. No entanto, o NGINX a cada ano ganha mais popularidade e está sendo a preferência dos novos projetos.</p>
<p>Distribuição utilizada: <strong><a href="https://blog.remontti.com.br/7236" rel="noopener noreferrer" target="_blank">Debian 12 Stretch / Instalação Limpa</a></strong></p>
<h3>NGINX</h3>
<p><a href="https://www.nginx.com" rel="noopener" target="_blank">https://www.nginx.com</a><br />
Vamos instalar-lo e remover a assinatura para que não vejam a versão do mesmo (Boas praticas)</p>
<pre class="remontti-code"># apt install nginx
# sed -i &#039;s/# server_tokens/server_tokens/&#039; /etc/nginx/nginx.conf
# systemctl restart nginx</pre>
<p>Acesse agora em seu navegador http://IP-SERVIDOR/<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx1.png" alt="" width="1100" height="310" class="alignnone size-full wp-image-5467" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx1.png 1100w, https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx1-300x85.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx1-1024x289.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx1-768x216.png 768w" sizes="auto, (max-width: 1100px) 100vw, 1100px" /></p>
<p>Pronto nosso NGINX está rodando! </p>
<h3>MARIADB</h3>
<p>MariaDB para quem ainda não sabe é um fork do MySQL, criado pelo próprio fundador do projeto MySQL após sua aquisição pela Oracle.</p>
<pre class="remontti-code"># apt install mariadb-server mariadb-client</pre>
<p>Ao final do tutorial iremos colocar uma senha para o usuario root do mariadb. Não iremos fazer isso agora para não dar problema na instalação do phpmyadmin.</p>
<h3>PHP 8.2</h3>
<p>Incluirei algumas extensões do PHP que são normalmente utilizada também na instalação.</p>
<pre class="remontti-code"># apt install --no-install-recommends \
 php php-{fpm,cli,mysql,pear,gd,gmp,bcmath,mbstring,curl,xml,zip,json,pgsql}</pre>
<p>Agora vamos fazer a &#8220;integração&#8221; do PHP com o NGINX. Moveremos o arquivo defaul.</p>
<pre class="remontti-code"># mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.original</pre>
<p>Crie um novo:</p>
<pre class="remontti-code"># vim /etc/nginx/sites-available/default</pre>
<p>Ajuste:</p>
<pre class="remontti-code">server {
    listen 80;
    listen [::]:80;

    root /var/www/html;
    index index.php index.html index.htm;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }
}</pre>
<p>Teste a configuração se não tem nada errado e restart os serviços:</p>
<pre class="remontti-code"># nginx -t
# systemctl restart nginx php8.2-fpm</pre>
<p>Vamos criar um arquivo em PHP para testa se nosso NGINX está interpretando o PHP.</p>
<pre class="remontti-code"># echo &#039;&lt;?php phpinfo();&#039; &gt;&gt; /var/www/html/teste.php</pre>
<p>Acesse em seu navegador http://IP-SERVIDOR/teste.php<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/debian12_php8.2.png" alt="" width="950" height="925" class="alignnone size-full wp-image-7417" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/debian12_php8.2.png 950w, https://blog.remontti.com.br/wp-content/uploads/2023/06/debian12_php8.2-300x292.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/debian12_php8.2-768x748.png 768w" sizes="auto, (max-width: 950px) 100vw, 950px" /><br />
Servidor WEB com PHP está funcionando! </p>
<p>Exemplo para múltiplos domínios/subdomínios </p>
<pre class="remontti-code"># vim /etc/nginx/sites-available/sub1.conf</pre>
<p>Neste ex: vou representar o <em>sub1.remontti.com.br</em></p>
<pre class="remontti-code">server {
    listen 80;
    listen [::]:80;

    root /var/www/sub1;
    index index.php index.html index.htm;

    server_name sub1.remontti.com.br;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }
}</pre>
<pre class="remontti-code"># vim /etc/nginx/sites-available/sub2e3.conf</pre>
<p>Neste ex: vou representar o <em>sub2.remontti.com.br</em> e <em>sub3.remontti.com.br</em></p>
<pre class="remontti-code">server {
    listen 80;
    listen [::]:80;

    root /var/www/sub2e3;
    index index.php index.html index.htm;

    server_name sub2.remontti.com.br sub3.remontti.com.br;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }
}</pre>
<p>Link os arquivos no diretório &#8220;/etc/nginx/sites-available&#8221;  que será carregado as novas configurações </p>
<pre class="remontti-code"># ln -s /etc/nginx/sites-available/sub1.conf /etc/nginx/sites-enabled/
# ln -s /etc/nginx/sites-available/sub2e3.conf /etc/nginx/sites-enabled/</pre>
<p>Crie os diretórios referente a cada <strong>server_name</strong>.</p>
<pre class="remontti-code"># mkdir /var/www/sub1
# mkdir /var/www/sub2e3
# echo &#039;&lt;?php echo &quot;Olá mundo do sub1!&quot;; ?&gt;&#039; &gt;&gt; /var/www/sub1/index.php
# echo &#039;&lt;?php echo &quot;Olá mundo do sub2e3!&quot;; ?&gt;&#039; &gt;&gt; /var/www/sub2e3/index.php
</pre>
<p>Verifique se não tem nenhum erro e restart:</p>
<pre class="remontti-code"># nginx -t
# systemctl restart nginx</pre>
<h3>phpMyAdmin</h3>
<pre class="remontti-code"># apt install phpmyadmin -y </pre>
<p>Não selecione nenhum, apenas <strong>OK</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_debian12.png" alt="" width="1239" height="424" class="alignnone size-full wp-image-7467" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_debian12.png 1239w, https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_debian12-300x103.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_debian12-1024x350.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_debian12-768x263.png 768w" sizes="auto, (max-width: 1239px) 100vw, 1239px" /></p>
<p>Responda <strong>Sim</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_debian12_nginx.png" alt="" width="1249" height="370" class="alignnone size-full wp-image-7468" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_debian12_nginx.png 1249w, https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_debian12_nginx-300x89.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_debian12_nginx-1024x303.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_debian12_nginx-768x228.png 768w" sizes="auto, (max-width: 1249px) 100vw, 1249px" /></p>
<p>Irá solicitar a senha para a base de dados <strong>phpmyadmin</strong>, informe sua <strong>senha e repita</strong>. </p>
<pre class="remontti-code"># vim /etc/nginx/sites-available/default</pre>
<p>Adicione as linhas destacadas:</p>
<pre class="remontti-code">server {
    listen 80;
    listen [::]:80;

    root /var/www/html;
    index index.php index.html index.htm;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }

    location ^~ /phpmyadmin {
        root /usr/share;
        try_files $uri $uri/ =404;
        #allow  192.168.87.0/24;
        #allow  2001:0db8::/32;
        #deny   all;
        #error_page  403   http://www.remontti.com.br;
        location ~ .php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        }
    }

}</pre>
<p>Se deseja tonar o phpmyadmin acessivel apenas de alguns endereços IPs basta descomentar as linhas, e incluir seus prefixos. O error_page é para que quando a o acessante levar um proibido seja direcionado para um site.</p>
<pre class="remontti-code">allow  192.168.87.0/24;
allow  2001:0db8::/32;
deny   all;
error_page  403   http://www.remontti.com.br;</pre>
<p>Verifique se não tem nenhum erro e restart:</p>
<pre class="remontti-code"># nginx -t
# systemctl restart nginx</pre>
<p>Acesse agora <strong>http://SERVIDOR/phpmyadmin</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login.png" alt="" width="1523" height="556" class="alignnone size-full wp-image-7471" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login.png 1523w, https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login-300x110.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login-1024x374.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login-768x280.png 768w" sizes="auto, (max-width: 1523px) 100vw, 1523px" /></p>
<h4>Definindo senha para o root do mariaDB</h4>
<p>Por segurança vamos setar uma senha do usuario root do MariaDB</p>
<pre class="remontti-code"># mariadb -u root</pre>
<p>Para aumentar a seguraçã vamos definir uma senha para o usuário root do MariDB, não esqueça de alterar ALTERE_3ST4_SENHA pela sua senha. Dica acesse<a href="https://senhasegura.remontti.com.br/" rel="noopener" target="_blank"> https://senhasegura.remontti.com.br/</a> e gere uma!</p>
<pre class="remontti-code">USE mysql;
ALTER USER &#039;root&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;ALTERE_3ST4_SENHA&#039;;
FLUSH PRIVILEGES;
EXIT;
</pre>
<p>Apague seus rastros, em /root/.mysql_history temos um histórico com todos os comandos dado no terminal do MariaDB, então não é legal deixar lá em texto puro a senha que setamos!</p>
<pre class="remontti-code"># &gt; /root/.mysql_history</pre>
<p>Agora quando for acessar o mariadb será necessário informar a senha juntamente da opção <strong>-p</strong>.</p>
<pre class="remontti-code"># mariadb -u root -p</pre>
<pre class="remontti-code-plain">Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 46
Server version: 10.11.3-MariaDB-1 Debian 12

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the current input statement.

MariaDB [(none)]&gt; exit;
Bye
</pre>
<h3>Let&#8217;s Encrypt</h3>
<p>Criando certificado grátis para seus sub/domínios.</p>
<pre class="remontti-code"># apt install certbot python3-certbot-nginx</pre>
<p>Para gerar o certificado use o comando:</p>
<pre class="remontti-code"># certbot</pre>
<p>Não esqueça de colocar no seu cron para ele renovar o certificado, pois a cada 90 ele expira. Neste exemplo todo dia primeiro tento renovar.</p>
<pre class="remontti-code"># certbot -q renew</pre>
<p>Para testar acesse: <a href="https://www.cdn77.com/tls-test/" rel="noopener" target="_blank">https://www.cdn77.com/tls-test/</a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste.png" data-rel="lightbox-gallery-uKQj0P80" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-300x182.png" alt="" width="300" height="182" class="alignnone size-medium wp-image-6158" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-300x182.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-1024x620.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-768x465.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste.png 1099w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Gostou?</p>
<p>Gostou?</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><br />
Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p><strong>Fontes:</strong> <a href="https://docs.nginx.com/" rel="noopener" target="_blank">https://docs.nginx.com/</a><br />
<a href="https://docs.nginx.com/nginx/admin-guide/web-server/web-server/" rel="noopener" target="_blank">https://docs.nginx.com/nginx/admin-guide/web-server/web-server/</a></p>
<p>O post <a href="https://blog.remontti.com.br/7460">Servidor WEB NGINX + PHP 8.2 + MariaDB + phpMyAdmin + Let’s Encrypt Debian 12 Bookworm (LNMP)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7460/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Servidor WEB Apache2 + PHP 8.2 + MariaDB +Let’s Encrypt Debian 12 Bookworm (LAMP)</title>
		<link>https://blog.remontti.com.br/7496</link>
					<comments>https://blog.remontti.com.br/7496#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sun, 11 Jun 2023 16:40:46 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Administração de banco de dados.]]></category>
		<category><![CDATA[Ambiente de servidor]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[Autenticação de servidor]]></category>
		<category><![CDATA[bookworm]]></category>
		<category><![CDATA[Certificado SSL]]></category>
		<category><![CDATA[Configuração do Apache]]></category>
		<category><![CDATA[Configuração do servidor]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[Desenvolvimento web]]></category>
		<category><![CDATA[Gerenciamento de banco de dados]]></category>
		<category><![CDATA[Hospedagem web]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[Let’s Encrypt]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[PHP 8.2]]></category>
		<category><![CDATA[Proteção de dados]]></category>
		<category><![CDATA[Segurança na web]]></category>
		<category><![CDATA[Servidor WEB]]></category>
		<category><![CDATA[Versão do PHP]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7496</guid>

					<description><![CDATA[<p>Distribuição utilizada: &#8211; Debian 12 Bookworm / Instalação Limpa Acesse seu bash e vire root com o comando su &#8211; para evitar comandos &#8220;que não existem&#8221;, e antes de mais nada tenha seu repositório&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7496">Servidor WEB Apache2 + PHP 8.2 + MariaDB +Let’s Encrypt Debian 12 Bookworm (LAMP)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><center><a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12.jpg" data-rel="lightbox-gallery-89wjmcSr" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-7503" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></a></center></p>
<p>Distribuição utilizada:<br />
&#8211; <strong><a href="https://blog.remontti.com.br/7236" rel="noopener noreferrer" target="_blank">Debian 12 Bookworm / Instalação Limpa</a></strong></p>
<p>Acesse seu bash e vire root com o comando su &#8211; para evitar comandos &#8220;que não existem&#8221;, e antes de mais nada tenha seu repositório atualizado.</p>
<pre class="remontti-code"># su -
# apt update
# apt upgrade</pre>
<h3>:: Instalação do Apache2 ::</h3>
<pre class="remontti-code"># apt install apache2 apache2-utils -y</pre>
<p>Após a instação, habilitamos o <strong>mod_rewrite</strong> do Apache que é muito utilizado. Este é um módulo que utiliza um mecanismo baseado em regras de reescrita. (phpipa, wordpress todos usam), e o <strong>mod_headers</strong> Este módulo fornece diretivas para controlar e modificar os cabeçalhos de solicitação e resposta HTTP. Comando para habilita-lo:</p>
<pre class="remontti-code"># a2enmod rewrite ; a2enmod headers</pre>
<p>A página que vimos ao abri o ip do nosso servidor no navegador fica no diretório /var/www/html, isso está sendo informado no arquivo default do apache que fica em /etc/apache2/sites-enabled/000-default.conf, e para que nosso mod_rewrite e headers funcione corretamente será necessário adicionar alguma linhas.<br />
O HTTP Strict Transport Security ou HSTS (RFC 6797) é um novo padrão de segurança SSL aprovado recentemente pelo IETF. Ele traz diversas melhorias para o SSL como forçar a utilização do HTTPS impedindo que sites sejam acessados usando o protocolo HTTP ou que partes do código de um site que está usando HTTPS seja executado em servidores usando o HTTP entre outras.</p>
<pre class="remontti-code"># vim /etc/apache2/sites-enabled/000-default.conf</pre>
<p>Adicione abaixo de &#8220;DocumentRoot /var/www/html&#8221; o seguinte:</p>
<pre class="remontti-code">
	Header always set Strict-Transport-Security &quot;max-age=63072000; includeSubDomains&quot;

	&lt;Directory /var/www/html/&gt;
    		Options FollowSymLinks
    		AllowOverride All
	&lt;/Directory&gt;</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/10/apache_HSTS.png" data-rel="lightbox-gallery-89wjmcSr" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/apache_HSTS-300x281.png" alt="" width="300" height="281" class="alignnone size-medium wp-image-6154" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/apache_HSTS-300x281.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/apache_HSTS-768x720.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/10/apache_HSTS.png 1024w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Para você aprender mais como o apache funciona recomendo: <strong><a href="https://blog.remontti.com.br/3464" rel="noopener" target="_blank">Como ter diversos sub/domínios no mesmo servidor</a></strong></p>
<p>Por segurança remova a assinatura do apache e reinicie o apache2 para que tenha efeito as nossas alterações.</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
# systemctl restart apache2</pre>
<p><strong>http://[SERVER_IP]</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/10/apache2.png" data-rel="lightbox-gallery-89wjmcSr" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/apache2-150x150.png" alt="" width="150" height="150" class="alignnone size-thumbnail wp-image-5897" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/apache2-150x150.png 150w, https://blog.remontti.com.br/wp-content/uploads/2021/10/apache2-80x80.png 80w, https://blog.remontti.com.br/wp-content/uploads/2021/10/apache2-320x320.png 320w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a></p>
<h3>:: Instalação do PHP 8.2 ::</h3>
<p>Para instalação do PHP vou incluir algumas extensões que são as mais utilizada, mas seu preferir você pode optar em não instalar, as necessárias são libapache2-mod-php php php-mysql php-cli.</p>
<pre class="remontti-code"># apt install libapache2-mod-php php php-mysql php-cli php-pear php-gmp php-gd php-bcmath php-mbstring php-curl php-xml php-zip -y</pre>
<p>É necessário reiniciar o apache para que o php tenha efeito.</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>Consultado informações de versão:</p>
<pre class="remontti-code"># php --version</pre>
<pre class="remontti-code-plain">
PHP 8.2.7 (cli) (built: Jun  9 2023 19:37:27) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies
</pre>
<p>Você pode criar um arquivo php com a função <a href="https://php.net/manual/pt_BR/function.phpinfo.php" rel="noopener noreferrer" target="_blank">phpinfo()</a> para mostrar todas as informações.</p>
<pre class="remontti-code"># echo &#039;&lt;?php phpinfo(); ?&gt;&#039; &gt; /var/www/html/phpinfo.php</pre>
<p><strong>http://[SERVER_IP]/phpinfo.php</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/debian12_php8.2.png" data-rel="lightbox-gallery-89wjmcSr" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/debian12_php8.2-300x292.png" alt="" width="300" height="292" class="alignnone size-medium wp-image-7417" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/debian12_php8.2-300x292.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/debian12_php8.2-768x748.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/06/debian12_php8.2.png 950w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<h3>:: Instalação do MariaDB 10.11 + phpMyAdmin 5 ::</h3>
<pre class="remontti-code"># apt install mariadb-server mariadb-client phpmyadmin</pre>
<p>Por padrão o pacote MaraiDB no Debian usa unix_socket para autenticar o login do usuário, o que basicamente significa que você pode usar o nome de usuário e a senha do sistema operacional para efetuar login no console do MariaDB. Assim, você pode logar diretamente sem fornecer a senha root do MariaDB. Mais a frente vou ensinar como definir uma senha, não farei agora pois se você alterar nesse momento ao instalar o phpMyAdmin terá um erro.</p>
<p>Selecione <strong>Apache2</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_1.png" data-rel="lightbox-gallery-89wjmcSr" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_1.png" alt="" width="1256" height="408" class="alignnone size-full wp-image-7499" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_1.png 1256w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_1-300x97.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_1-1024x333.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_1-768x249.png 768w" sizes="auto, (max-width: 1256px) 100vw, 1256px" /></a></p>
<p>Responda <strong>Sim</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_2.png" data-rel="lightbox-gallery-89wjmcSr" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_2.png" alt="" width="1257" height="513" class="alignnone size-full wp-image-7500" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_2.png 1257w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_2-300x122.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_2-1024x418.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_2-768x313.png 768w" sizes="auto, (max-width: 1257px) 100vw, 1257px" /></a></p>
<p><strong>Informe a senha</strong> para o banco de dados do phpmyadmin. <a href="http://senhasegura.remontti.com.br/" rel="noopener" target="_blank">http://senhasegura.remontti.com.br/</a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_3.png" data-rel="lightbox-gallery-89wjmcSr" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_3.png" alt="" width="1261" height="410" class="alignnone size-full wp-image-7501" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_3.png 1261w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_3-300x98.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_3-1024x333.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_3-768x250.png 768w" sizes="auto, (max-width: 1261px) 100vw, 1261px" /></a></p>
<p>Repita a senha<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_4.png" data-rel="lightbox-gallery-89wjmcSr" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_4.png" alt="" width="1264" height="437" class="alignnone size-full wp-image-7502" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_4.png 1264w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_4-300x104.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_4-1024x354.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/lamp_debian_12_4-768x266.png 768w" sizes="auto, (max-width: 1264px) 100vw, 1264px" /></a></p>
<p>Para acessar o phpmyadmin:<strong>http://[SERVER_IP]/phpmyadmin/</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login.png" data-rel="lightbox-gallery-89wjmcSr" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login.png" alt="" width="1523" height="556" class="alignnone size-full wp-image-7471" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login.png 1523w, https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login-300x110.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login-1024x374.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/06/phpmyadmin_login-768x280.png 768w" sizes="auto, (max-width: 1523px) 100vw, 1523px" /></a></p>
<p>Por segurança eu sempre fecho o acesso ao phpmyadmin para os IPs da administração, assim evito que uma possível vulnerabilidade venha me afetar. Para isso edite:</p>
<pre class="remontti-code"># vim /etc/phpmyadmin/apache.conf</pre>
<p>Se deseja deixar o atalho para o phpmyadmin restrito apenas aos seus IP de gerencia faça da seguinte forma. Lembre-se de alterar os IPs 200.200.200.0/26 2001:db8:cafe:d0ce::/64 para os seus.</p>
<pre class="remontti-code"># phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

&lt;Directory /usr/share/phpmyadmin&gt;
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php

    # Restrito aos IPs
    AllowOverride All
    Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8:cafe:d0ce::/64

    # limit libapache2-mod-php to files and directories necessary by pma
    &lt;IfModule mod_php7.c&gt;
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/usr/share/doc/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/:/usr/share/javascript/
    &lt;/IfModule&gt;

    # PHP 8+
    &lt;IfModule mod_php.c&gt;
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/usr/share/doc/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/:/usr/share/javascript/
    &lt;/IfModule&gt;

&lt;/Directory&gt;

# Disallow web access to directories that don&#039;t need it
&lt;Directory /usr/share/phpmyadmin/templates&gt;
    Require all denied
&lt;/Directory&gt;
&lt;Directory /usr/share/phpmyadmin/libraries&gt;
    Require all denied
&lt;/Directory&gt;</pre>
<p>Reinicie o Apache.</p>
<pre class="remontti-code"> systemctl restart apache2</pre>
<h4>:: Definindo senha para o root do mariaDB ::</h4>
<p>Para aumentar a seguraçã vamos definir uma senha para o usuário root do MariDB, não esqueça de alterar <strong>ALTERE_3ST4_SENHA</strong> pela sua senha.</p>
<pre class="remontti-code"># mariadb -u root</pre>
<pre class="remontti-code">USE mysql;
ALTER USER &#039;root&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;ALTERE_3ST4_SENHA&#039;;
FLUSH PRIVILEGES;
EXIT;</pre>
<p>Apague seus rastros, em /root/.mysql_history temos um histórico com todos os comandos dado no terminal do MariaDB, então não é legal deixar lá em texto puro a senha que setamos!</p>
<pre class="remontti-code"># &gt; /root/.mysql_history</pre>
<h3>:: Let&#8217;s Encrypt ::</h3>
<p>Criando certificado grátis para seus sub/domínios.</p>
<pre class="remontti-code"># apt install certbot python3-certbot-apache</pre>
<p>Para gerar o certificado use o comando:</p>
<pre class="remontti-code"># certbot</pre>
<p>Não esqueça de colocar no seu cron para ele renovar o certificado, pois a cada 90 ele expira. Neste exemplo todo dia primeiro tento renovar.</p>
<pre class="remontti-code"># certbot -q renew</pre>
<p>Para testar acesse: <a href="https://www.cdn77.com/tls-test/" rel="noopener" target="_blank">https://www.cdn77.com/tls-test/</a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste.png" data-rel="lightbox-gallery-89wjmcSr" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-300x182.png" alt="" width="300" height="182" class="alignnone size-medium wp-image-6158" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-300x182.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-1024x620.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste-768x465.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/10/tls_teste.png 1099w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Gostou?</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/7496">Servidor WEB Apache2 + PHP 8.2 + MariaDB +Let’s Encrypt Debian 12 Bookworm (LAMP)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7496/feed</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
			</item>
		<item>
		<title>Fortalecendo a Resiliência da Rede: Detecção de Ataques DDoS com FastNetMon, FRRouting, Grafana e Implementação em Debian 12 com Huawei &#038; RouterOS</title>
		<link>https://blog.remontti.com.br/7322</link>
					<comments>https://blog.remontti.com.br/7322#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 31 May 2023 20:38:50 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[alertas]]></category>
		<category><![CDATA[Análise de Tráfego]]></category>
		<category><![CDATA[Ataque]]></category>
		<category><![CDATA[Código Aberto]]></category>
		<category><![CDATA[Comunidade.]]></category>
		<category><![CDATA[Configuração]]></category>
		<category><![CDATA[ddos]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[Defesa]]></category>
		<category><![CDATA[Detecção]]></category>
		<category><![CDATA[detecção de ataques DDoS]]></category>
		<category><![CDATA[fastnetmon]]></category>
		<category><![CDATA[Firewalls]]></category>
		<category><![CDATA[frrouting]]></category>
		<category><![CDATA[Geração de Relatórios]]></category>
		<category><![CDATA[grafana]]></category>
		<category><![CDATA[Infraestrutura de Rede]]></category>
		<category><![CDATA[integração]]></category>
		<category><![CDATA[Melhores Práticas]]></category>
		<category><![CDATA[mitigação]]></category>
		<category><![CDATA[monitoramento]]></category>
		<category><![CDATA[Monitoramento em Tempo Real]]></category>
		<category><![CDATA[NE-Huawei]]></category>
		<category><![CDATA[notificações]]></category>
		<category><![CDATA[Políticas]]></category>
		<category><![CDATA[proteção]]></category>
		<category><![CDATA[resiliência da rede]]></category>
		<category><![CDATA[Roteadores]]></category>
		<category><![CDATA[routeros]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Tráfego]]></category>
		<category><![CDATA[tutorial]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7322</guid>

					<description><![CDATA[<p>Este tutorial combina e aprimora dois tutoriais anteriores do blog sobre fastnetmon, incorporando melhorias e ideias compartilhadas pela comunidade ao longo do tempo. Espero que aprecie! Vamos aprender como identificar os ataques Dos/DDoS e&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7322">Fortalecendo a Resiliência da Rede: Detecção de Ataques DDoS com FastNetMon, FRRouting, Grafana e Implementação em Debian 12 com Huawei &#038; RouterOS</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><center><a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/fastnetmon.jpg" data-rel="lightbox-gallery-P2Y9a3r7" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/fastnetmon.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-7359" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/fastnetmon.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2023/05/fastnetmon-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/fastnetmon-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></a></center></p>
<p><strong><em>Este tutorial combina e aprimora dois tutoriais anteriores do blog sobre fastnetmon, incorporando melhorias e ideias compartilhadas pela comunidade ao longo do tempo. Espero que aprecie!</em></strong></p>
<p>Vamos aprender como identificar os ataques Dos/DDoS e anunciar os prefixo atacados (ou atacantes) <strong>de seu AS</strong> em envia-los para uma blackhole, e repassar os mesmo para sua operadora. (Acordo)</p>
<p>Vamos utilizar o <a href="https://github.com/pavel-odintsov/fastnetmon/" rel="noopener noreferrer" target="_blank"><strong>FastNetMon</strong></a> (<strong>Community Edition</strong>) que é um analisador de carga DoS/DDoS de alto desempenho, construído sobre vários mecanismos de captura de pacotes (NetFlow, IPFIX, sFlow, AF_PACKET, SnabbSwitch, netmap, PF_RING, PCAP). </p>
<p>Farei a instalação no <a href="https://blog.remontti.com.br/7236" rel="noopener" target="_blank"><strong>Debian 12 (Instalação Limpa)</strong></a>. O hardware utilizado por ser bem generoso, 4CPU (se for usar o influx/grafana recomendo 8CPU) e 4GB de memoria. </p>
<p>Adicione <strong>contrib non-free</strong> ao repositório.</p>
<pre class="remontti-code"># vim /etc/apt/sources.list</pre>
<p>Irá ficar assim:</p>
<pre class="remontti-code-plain">deb http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free

deb http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free
deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free

deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware contrib non-free
deb-src http://deb.debian.org/debian/ bookworm-updates main non-free-firmware contrib non-free</pre>
<p>Atualize agora o repositório, e os pacotes. </p>
<pre class="remontti-code"># apt update ; apt upgrade -y
# apt install firmware-linux firmware-linux-free firmware-linux-nonfree</pre>
<p>Instale também alguns pacotes que iremos utilizar mais a frente.</p>
<pre class="remontti-code"># apt install wget tcpdump net-tools zip curl -y</pre>
<p><strong>Cenário fictício de exemplo:</strong><br />
Seu AS: 260072 <em>(Madruga Telecom)</em><br />
Operadora AS: 71 <em>(BrUxa71 Telecom)</em><br />
10.52.52.1/24 &#8211; Huawei/RouterOS<br />
10.52.52.2/24 &#8211; Servidor</p>
<h3>Configurando a interface de Rede</h3>
<p>Antes de iniciar a instalação do seu do seu servidor em meu exemplo estou usando o IP 10.52.52.2/30, porém eu NUNCA faria um NAT no roteador de borda então porque utilizar o IP privado? Simples por que ele não é acessível logo não pode ser atacado, mas por outro lado se ele não tiver internet você não poderá fazer a instalação e ele não poderá te notificar pelo telegram. Solução que eu gosto muito de aplicar em servidores é a seguinte (falo muito de como configurar interface de redes <a href="https://blog.remontti.com.br/5848" rel="noopener" target="_blank">nesse tutorial</a>, recomendo uma leitura). </p>
<p>Vamos supor que seu prefixo seja 72.72.72.0/22 e você vai alocar o ip 72.72.72.255<strong>/32</strong> para ser o IP de &#8220;loopback&#8221;. <em>Dica que esse IP não seja próximo a do prefixo público que utiliza em seus servidores</em>. Irei também configurar um IPv6 roteador da mesma forma para que ele tenha uma conectividade IPv6 qual o telegram pode se beneficiar para enviar um alerta por exemplo.</p>
<pre class="remontti-code"># vim /etc/network/interfaces</pre>
<pre class="remontti-code-plain">allow-hotplug enp0s3
iface enp0s3 inet static
    address 72.72.72.255/32

iface enp0s3 inet static
    address 10.52.52.2/24
    post-up /usr/sbin/ip route add default via 10.52.52.1 src 72.72.72.255

iface enp0s3 inet6 static
    pre-up modprobe ipv6
    address 2804:1234:bebe:caff::f0da/128

iface enp0s3 inet6 static
    pre-up modprobe ipv6
    address fd00:cafe::2/64
    post-up ip -6 route add default via fd00:cafe::1 src 2804:1234:bebe:caff:1:f0da:2:ff1f
</pre>
<p>Perceba que nós estaremos conversando com nosso roteador de borda pelo prefixo privado 10.100.0.0/30 porém todo o pacote de origem do servidor sai pelo o IP público. Caso este ip seja atacado o mesmo poderá cair em blackhole que o nosso servidor ainda terá comunicação com a borda. </p>
<p>Mas para que seu IP publico tenha rota será necessário criar um rota em seu roteador de borda apontando o IP público para o privado.</p>
<pre class="remontti-code">
RouterOS# /ip   address add interface=ether1 address=10.52.52.1/24
RouterOS# /ipv6 address add interface=ether1 address=fd00:cafe::1/64 advertise=no 
RouterOS# /ip   route add dst-address=72.72.72.255/32 gateway=10.52.52.2
RouterOS# /ipv6 route add dst-address=2804:1234:bebe:caff:1:f0da:2:ff1f/128 gateway=fd00:cafe::1
</pre>
<pre class="remontti-code">
&lt;HUAWEI&gt; system-view
[~HUAWEI] interface 25GE0/1/36
[*HUAWEI] description INTERFACE_SERVIDOR
[*HUAWEI] undo shutdown
[*HUAWEI] ipv6 enable
[*HUAWEI] ip address 10.52.52.1 255.255.255.0
[*HUAWEI] ipv6 address FD00:CAFE::1/64
[*HUAWEI] quit
[*HUAWEI] ip route-static 72.72.72.255 255.255.255.255 10.52.52.2 description FASTNETMON
[*HUAWEI] ipv6 route-static 2804:1234:bebe:caff:1:f0da:2:ff1f 128 2001:FD00:CAFE::1 description FASTNETMON
[*HUAWEI] commit
</pre>
<p>É claro que neste caso ficará sem internet, mas podemos aplicar um firewall para enviar que ele fique respondendo, apenas para deixar ele &#8220;escondidinho&#8221;. E para isso vamos usar o nftables (Que já vem instalado por padrão no Debian 11 substituindo o iptables)<br />
Habilite o mesmo para iniciar com o sistema:</p>
<pre class="remontti-code"># systemctl enable nftables</pre>
<p>Vamos montar nosso firewall de forma que apenas conexoes que forem abertas pelo servidor seja respondidas.</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<pre class="remontti-code-plain">#!/usr/sbin/nft -f

flush ruleset

# IP SERVIDOR
define IPV4_SERV = { 72.72.72.255 }
define IPV6_SERV = { 2804:1234:bebe:caff:1:f0da:2:ff1f }

# Portas aberta para ADM (vou deixar só SSH e a do Grafana)
define PORTS_ACCEP_ADM = { 22, 3000 }

table inet filter {

    set ACESSO_TOTAL4 {
        type ipv4_addr
        flags interval
        # Lista dos IPv4 com permissão
        elements = {
            127.0.0.0/8,
            192.168.0.0/16,
            172.16.0.0/12,
            10.0.0.0/8,
            100.64.0.0/10,
            72.72.72.0/24
        }
    }
    set ACESSO_TOTAL6 {
        type ipv6_addr
        flags interval
        # Lista dos IPv6 com permissão
        elements = {
            ::1,
            2804:1234:bebe::/48
        }
    }

    chain input {
        type filter hook input priority 0;

        # Aceita ICMP apenas das origens com permissão
        ip saddr @ACESSO_TOTAL4 ip protocol icmp icmp type echo-request accept
        ip6 nexthdr icmpv6 ip6 saddr @ACESSO_TOTAL6 icmpv6 type echo-request accept

        # Permite acesso as portas vindo das origens com permissão
        ip  saddr @ACESSO_TOTAL4 tcp dport { $PORTS_ACCEP_ADM } counter accept
        ip6 saddr @ACESSO_TOTAL6 tcp dport { $PORTS_ACCEP_ADM } counter accept

        # Fecha todo resto
        ip  daddr { $IPV4_SERV } ct state related,established counter accept
        ip  daddr { $IPV4_SERV } counter drop
        ip6 daddr { $IPV6_SERV } ct state related,established counter accept
        ip6 daddr { $IPV6_SERV }  counter drop

        type filter hook input priority 0;
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}
</pre>
<p>Inicie o nftables</p>
<pre class="remontti-code"># systemctl enable nftables
# systemctl start nftables</pre>
<p>Você pode simplesmente rodar um scanner de porta no seu IP público bem como um ping, o mesmo não deve responde. </p>
<h3>Instalação FastNetMon (Edição da comunidade)</h3>
<p>FastNetMon se encontra no repositório do Debian 12</p>
<pre class="remontti-code"># apt search fastnetmon</pre>
<pre class="remontti-code-plain">Sorting... Pronto
Full Text Search... Pronto
fastnetmon/testing 1.2.4-2 amd64
  fast DDoS analyzer with sflow/netflow/mirror support (community edition)</pre>
<pre class="remontti-code"># apt install fastnetmon -y</pre>
<p>Adicione todos os prefixos do seu AS, são esses os IPs serão feito analise. Dica: se você for usar o grafana recomendo cadastras todos os prefixos /24 para poder visualizar o trafego de cada prefixo em especifico</p>
<pre class="remontti-code"># vim /etc/networks_list</pre>
<pre class="remontti-code-plain">72.72.72.0/24
72.72.73.0/24
72.72.74.0/24
72.72.75.0/24
</pre>
<p>Crie também o arquivo que irá conter a lista branca de IPs (Explico mais a frente)</p>
<pre class="remontti-code"># &gt; /etc/networks_whitelist</pre>
<p>As configurações do Fastnetmon ficam em <strong>/etc/fastnetmon.conf</strong>, vamos fazer alguns ajustes básicos:<br />
Vamos começar ativando o serviço de netflow. Utilizarei o comando <strong>sed</strong> que irá buscar no arquivo <strong>netflow = off</strong> e alterar para <strong>netflow = on</strong>, nos comandos seguintes farei o mesmo, se desejar acesse o arquivo e edite manualmente.</p>
<pre class="remontti-code"># sed -i &#039;s/netflow = off/netflow = on/&#039; /etc/fastnetmon.conf</pre>
<p><strong>Ajustes para Huawei</strong></p>
<pre class="remontti-code"># sed -i &#039;s/average_calculation_time = 5/average_calculation_time = 15/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/netflow_sampling_ratio = 1/netflow_sampling_ratio = 1024/&#039; /etc/fastnetmon.conf</pre>
<p><strong>Ajustes para Mikrotik</strong></p>
<pre class="remontti-code"># Não precisa alterar nada aqui</pre>
<p>Defina por quanto tempo em segundos um IP ficará em blackhole o padrão é 1900 seg. No comando estou alterando para 10min: </p>
<pre class="remontti-code"># sed -i &#039;s/ban_time = 1900/ban_time = 600/&#039; /etc/fastnetmon.conf</pre>
<p>Altera o top 7 para o top 10 ao usar o comando fastnetmon_client (Ao seu gosto)</p>
<pre class="remontti-code"># sed -i &#039;s/max_ips_in_list = 7/max_ips_in_list = 10/&#039; /etc/fastnetmon.conf</pre>
<p>Temos diferentes abordagens para detecção dos ataques: Pacotes por segundos, largura de banda e por fluxo (flows), protocolos, nessa parte irei habilitar todos filtros, mas cada caso é uma realidade.</p>
<pre class="remontti-code"># sed -i &#039;s/ban_for_flows = off/ban_for_flows = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_tcp_bandwidth = off/ban_for_tcp_bandwidth = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_udp_bandwidth = off/ban_for_udp_bandwidth = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_icmp_bandwidth = off/ban_for_icmp_bandwidth = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_tcp_pps = off/ban_for_tcp_pps = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_udp_pps = off/ban_for_udp_pps = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_icmp_pps = off/ban_for_icmp_pps = on/&#039; /etc/fastnetmon.conf</pre>
<p>Se desejar ter mais detalhes no log, aumenta de 20 para até 200 linhas de registro no log.</p>
<pre class="remontti-code"># sed -i &#039;s/ban_details_records_count = 20/ban_details_records_count = 200/&#039; /etc/fastnetmon.conf</pre>
<p>Como temos todas as detecções ativas, precisamos ajustar cada situação para sua realidade. Você precisa ter em mente qual é o maior tráfego que pode atingir por um IP da sua rede (seu maior plano) com base nisso tenha em mente que a cada 100MB gera em torno de 10.000 pps por segundo, <strong>isso não é regra</strong> mas pode ser uma base inicial. Vamos imaginar então que meu maior plano seja 900MB, farei uma ajuste no <strong>threshold_pps</strong> para 110.000 pps para não pegar alguma rajada inicial. <strong>Mas vale lembrar que inicialmente você precisa estudar sua rede e adaptar a sua realidade.</strong></p>
<pre class="remontti-code"># sed -i &#039;s/threshold_pps = 20000/threshold_pps = 110000/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/threshold_tcp_pps = 100000/threshold_tcp_pps = 90000/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/threshold_udp_pps = 100000/threshold_udp_pps = 90000/&#039; /etc/fastnetmon.conf</pre>
<p>Agora em <strong>threshold_mbps</strong> seria o maior tráfego que você irá permitir, eu normalmente não altero e deixo no padrão 1gb. E em <strong>threshold_flows</strong> o fluxos de limite qual também mantenho o mesmo valor 3500.</p>
<pre class="remontti-code"># sed -i &#039;s/threshold_mbps = 1000/threshold_mbps = 999/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/threshold_tcp_mbps = 100000/threshold_tcp_mbps = 900/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/threshold_udp_mbps = 100000/threshold_udp_mbps = 900/&#039; /etc/fastnetmon.conf</pre>
<p>Ajustes de ICMP</p>
<pre class="remontti-code"># sed -i &#039;s/threshold_icmp_mbps = 100000/threshold_icmp_mbps = 100/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/threshold_icmp_pps = 100000/threshold_icmp_pps = 10000/&#039; /etc/fastnetmon.conf</pre>
<p>O netflow ouve a porta padrão 2055 se desejar alterar basta alterar o valor de <strong>netflow_port</strong>. Irei alterar para 52055.</p>
<pre class="remontti-code"># sed -i &#039;s/netflow_port = 2055/netflow_port = 52055/&#039; /etc/fastnetmon.conf</pre>
<p>Ainda em /etc/fastnetmon.conf temos <strong>notify_script_path</strong> que sempre que o fastnetmon identificar um ataque irá executar o script <strong>/usr/local/bin/notify_about_attack.sh</strong>, identificando o IP da sua rede que está sofrendo <strong>(incoming)</strong> o ataque ou que está atacando <strong>(outgoing)</strong> alguém. <strong>Ele NÃO irá identificar os IPs de origem</strong>, pois em um ataque quase sempre as origens são alteradas por milhares de IPs aleatórios.  </p>
<p>Faça alguns ajustes nos parâmetros do kernel</p>
<pre class="remontti-code"># vim /etc/sysctl.conf</pre>
<p>Adicione ao final do arquivo, observe enp0s3 é o nome da sua interface de rede coloque o nome da sua, pode usar o comando ip addr para visualizar </p>
<pre class="remontti-code-plain">
net.ipv4.ip_forward = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.enp0s3.rp_filter = 0</pre>
<p>Carregue as alterações:</p>
<pre class="remontti-code"># sysctl -p</pre>
<p>Habilite e reinicie o fastnetmon para carregar as novas configurações.</p>
<pre class="remontti-code"># systemctl enable fastnetmon
# systemctl restart fastnetmon</pre>
<p>Verifique se a porta 52055/udp esta ouvindo:</p>
<pre class="remontti-code"># netstat -putan  | grep 52055</pre>
<pre class="remontti-code-plain">udp        0      0 0.0.0.0:52055           0.0.0.0:*                           2522/fastnetmon     </pre>
<p>Bom mas antes de criarmos nosso script notify_about_attack.sh, precisamos preparar algumas coisas, e antes de mais nada vamos configurar nosso Huawei para enviar os dados.</p>
<p><strong>Roteador RuterOS/Mikrotik:</strong><br />
Informe apenas suas interfaces de upstream (operadoras) ex: spf1,sfp1.100</p>
<pre class="remontti-code">
RouterOS# /ip traffic-flow set active-flow-timeout=5s cache-entries=1k inactive-flow-timeout=1s interfaces=spf1,sfp1.100
RouterOS# /ip traffic-flow target add dst-address=10.52.52.2 v9-template-refresh=5 v9-template-timeout=1s
</pre>
<p><strong>Roteador Huawei:</strong></p>
<pre class="remontti-code">&lt;HUAWEI&gt; system-view
[~HUAWEI] ip netstream export version ipfix peer-as bgp-nexthop ttl
[*HUAWEI] ip netstream export template sequence-number fixed
[*HUAWEI] ip netstream export index-switch 32
[*HUAWEI] ip netstream as-mode 32
[*HUAWEI] ip netstream timeout active 1
[*HUAWEI] ip netstream timeout inactive 15
[*HUAWEI] ip netstream export template timeout-rate 1
[*HUAWEI] ip netstream export template option sampler
[*HUAWEI] ip netstream export template option application-label
[*HUAWEI] ip netstream sampler fix-packets 1024 inbound
[*HUAWEI] ip netstream sampler fix-packets 1024 outbound
[*HUAWEI] ip netstream export source 10.52.52.1
[*HUAWEI] ip netstream export host 10.52.52.2 52055</pre>
<p>slot 0 NE8000F1A / slot 10 ou 9 NE8000 M8 / slot 3 NE40</p>
<pre class="remontti-code">[*HUAWEI] slot &lt;0-10&gt;
[*HUAWEI] ip netstream sampler to slot self
[*HUAWEI]  ipv6 netstream sampler to slot self</pre>
<p>Será necessário adicionar em todas suas interfaces de Uplink: </p>
<pre class="remontti-code-plain"> ip netstream inbound
 ip netstream outbound</pre>
<p>Exemplo:</p>
<pre class="remontti-code">
interface 40GE0/1/49.71
 vlan-type dot1q 71
 description BruxaDo71Telecom
 ip address 71.71.71.2 255.255.255.252
 statistic enable
 ip netstream inbound
 ip netstream outbound
</pre>
<p>Com o tcpdump vamos monitorar a interface para ver o que esta chegando na porta.</p>
<pre class="remontti-code"># tcpdump -i enp0s3 -n udp port 52055 -T cnfp -c 10</pre>
<p>Se seu NE estiver mandado os pacotes você terá um resultado como:</p>
<pre class="remontti-code-plain">tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens192, link-type EN10MB (Ethernet), capture size 262144 bytes
14:25:19.601113 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.608068 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.668054 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.691123 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.768055 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.781129 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.831133 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.858054 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.941124 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
14:25:19.958060 IP 10.52.52.1.40000 &gt; 10.52.52.2.52055: NetFlow v9
10 packets captured
10 packets received by filter
0 packets dropped by kernel</pre>
<p>Agora com o comando: </p>
<pre class="remontti-code"># fastnetmon_client</pre>
<p>Iremos visualizar os TOP IPs</p>
<pre class="remontti-code-plain">FastNetMon 1.1.3 master git- Pavel Odintsov: stableit.ru
IPs ordered by: packets
Incoming traffic       724347 pps   6998 mbps    161 flows
72.72.72.238            51973 pps    569 mbps      0 flows  *banned*
72.72.72.112            14390 pps    154 mbps      0 flows
72.72.72.93             14000 pps    150 mbps      0 flows
72.72.72.161            11705 pps    129 mbps      0 flows
72.72.72.118             8797 pps     86 mbps      0 flows
72.72.72.43              7602 pps     84 mbps      0 flows
72.72.72.111             6669 pps     64 mbps      0 flows

Outgoing traffic       291008 pps    705 mbps    101 flows
72.72.72.238            18009 pps     14 mbps      0 flows  *banned*
72.72.72.112             7929 pps      5 mbps      0 flows
72.72.72.93              7110 pps     10 mbps      0 flows
72.72.72.14              4910 pps     40 mbps      0 flows
72.72.72.43              4887 pps      2 mbps      0 flows
72.72.72.161             4537 pps      2 mbps      0 flows
72.72.72.111             3933 pps     14 mbps      0 flows

Internal traffic             0 pps      0 mbps

Other traffic              420 pps      0 mbps

Screen updated in:              0 sec 331 microseconds
Traffic calculated in:          0 sec 854 microseconds
Total amount of IPv6 packets related to our own network: 0
Not processed packets: 0 pps 

Subnet load:
72.72.72.0/22      pps in: 256000   out: 52000    mbps in: 9630  out: 1077
100.100.0.6/32     pps in: 0        out: 0        mbps in: 0     out: 0
</pre>
<p>Perceba que o IP <strong>72.72.72.238</strong> foi banido, pois o mesmo excedeu os pps de 50.000, no entanto este é um dos IPs que então em meu CGNAT, e vai ser natural este ter um comportamento diferente. Para que o <strong>fastnetmon ignore o mesmo</strong> você pode cria uma <strong>lista branca</strong>. Não se preocupe se isso acontecer com você o fastnetmon não ira fazer nenhuma ação, pois não configuramos nada ainda.<br />
Para criar a lista branca <strong>networks_whitelist</strong> com os IPs ou prefixo que deseja ignorar.</p>
<pre class="remontti-code"># vim /etc/networks_whitelist</pre>
<p>Exemplo</p>
<pre class="remontti-code-plain">72.72.72.224/28
72.72.73.224/28</pre>
<p>Reinicie para carregar as novas configurações.</p>
<pre class="remontti-code"># systemctl restart fastnetmon</pre>
<h3>Bot Telegram</h3>
<p>Para receber notificações pelo Telegram juntamente com o arquivo de log, vai ser necessário criar um bot do telegram para o uso do mesmo. Se você não sabe como criar um Bot para telegram basta você falar com o <a href="https://telegram.me/BotFather" rel="noopener" target="_blank">@BotFather</a> e enviar para ele <strong>/newbot</strong>, ele irá pedir qual nome você gostaria de dar a seu bot, e em seguida ira gera um token que vamos precisar a seguir. </p>
<p>Para o Telegram vamos usar um scriptzinho que criei.</p>
<pre class="remontti-code"># cd /tmp/
# wget https://github.com/remontti/TelegramCMD/archive/master.zip
# unzip /tmp/master.zip
# chmod a+x /tmp/TelegramCMD-master/telegram
# mv /tmp/TelegramCMD-master/telegram* /usr/local/bin/
# ln -s /usr/local/bin/telegram /bin/telegram</pre>
<p>Edite o token.conf e altere para o seu TOKEN.</p>
<pre class="remontti-code"># vim /usr/local/bin/telegram.conf/token.conf</pre>
<pre class="remontti-code">######################################
# Telegram bot                       #
# Create a new bot with @BotFather   #
# get TOKEN                          #
######################################

TOKEN=&quot;123456789:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF&quot;</pre>
<p>Esse script você pode usar para diversas coisas, ele será capaz de zipar um diretorio e lhe enviar o arquivo bem como enviar apenas uma mensagem. Como usar? É importante você saber que o IDs de grupos tem um &#8220;-&#8221; no inicio do ID, já usuários não. Para descobrir o ID do seu usuário fale com o bot <a href="https://telegram.me/myidbot" rel="noopener" target="_blank"><strong>@myidbot</strong></a> e envie para ele <strong>/getid</strong>, para saber de um grupo adicione <strong>@myidbot</strong> ao seu grupo e envie <strong>/getgroupid@myidbot</strong>. Realize um teste com um dos comandos: (Não esqueça de alterar pelo seu ID)</p>
<pre class="remontti-code-plain">Uso: telegram [Opções]
  -m: Para enviar uma mensagem
     ex: telegram -m &quot;ID Chat&quot; &quot;Meu assunto&quot; &quot;Minha mensagem...&quot;
     ex: telegram -m &quot;-123456789&quot; &quot;Notificação&quot; &quot;Mensagem para um grupo ID&quot;
     ex: telegram -m &quot;123456789&quot; &quot;Notificação&quot; &quot;Mensagem para direta/privado&quot;

  -f: Para enviar um arquivo
     ex: telegram -f &quot;ID Chat&quot; &quot;/diretorio/arquivo&quot; &quot;nome do arquivo zip&quot; &quot;Comentário&quot;
     ex: telegram -f &quot;12345689&quot; /var/log/syslog syslog &quot;Logs do sistema para user privado&quot;
     ex: telegram -f &quot;-12345689&quot; /var/log/syslog syslog &quot;Logs do sistema para um grupo&quot;

  -t: Para enviar um arquivo sem compactar
     ex: telegram -f &quot;ID Chat&quot; &quot;/diretorio/arquivo.txt&quot; &quot;Mensagem&quot;
     ex: telegram -f &quot;-12345689&quot; /var/log/fastnetmon.log &quot;Logs do sistema&quot;</pre>
<h3>FRR</h3>
<p>Vamos realizar a instalação do <a href="http://frrouting.org/" rel="noopener" target="_blank">FRRouting</a> (FRR) para fechar sessão BGP entre o roteador de borda e servidor.</p>
<pre class="remontti-code"># apt install frr frr-doc</pre>
<p>Ative o modulo BGP</p>
<pre class="remontti-code"># sed -i &#039;s/bgpd=no/bgpd=yes/&#039; /etc/frr/daemons</pre>
<p>Reinicie o FRR</p>
<pre class="remontti-code"># systemctl restart frr</pre>
<p>Entre no shell VTY do FRR.</p>
<pre class="remontti-code"># vtysh</pre>
<p>Rode o comando: `show running-config`</p>
<pre class="remontti-code-plain">Hello, this is FRRouting (version 8.4.2).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

fastnetmon#  show running-config 
Building configuration...

Current configuration:
!
frr version 8.4.2
frr defaults traditional
hostname fastnetmon
log syslog informational
no ipv6 forwarding
service integrated-vtysh-config
!
end
</pre>
<p>Agora entre no modo de configuração, e vamos preparar nosso peer com o router de borda. No exemplo está praticamente auto explicativo, vamos fechar o peer e <strong>deixar</strong> ser anunciado <strong>apenas nossos prefixos</strong> e aplicaremos a community <strong>65001:666</strong> para prefixos <strong>/32</strong> e <strong>65001:777</strong> para prefixos <strong>/24</strong></p>
<pre class="remontti-code">configure terminal
!
ip prefix-list FASTNETMON_EXPORT_32 seq 5 permit 72.72.72.0/22 le 32
!
ip prefix-list FASTNETMON_EXPORT_24 seq 5 permit 72.72.72.0/22 le 24
!
route-map MARK_FASTNETMON_IMPORT deny 10
exit
!
route-map MARK_FASTNETMON_EXPORT permit 10
 match ip address prefix-list FASTNETMON_EXPORT_24
 set community 65001:777
exit
! 
route-map MARK_FASTNETMON_EXPORT permit 20
 match ip address prefix-list FASTNETMON_EXPORT_32
 set community 65001:666
exit

!
router bgp 260072
 bgp router-id 10.52.52.2
 neighbor 10.52.52.1 remote-as 260072
 neighbor 10.52.52.1 description &quot;BORDA&quot;
 !
 address-family ipv4 unicast
  neighbor 10.52.52.1 route-map MARK_FASTNETMON_IMPORT in
  neighbor 10.52.52.1 route-map MARK_FASTNETMON_EXPORT out
 exit-address-family
exit
!
end
write memory
exit</pre>
<h4>Configuração RouterOS/Mikrotik </h4>
<p>Crie um filtro de entrada que todas as rotas /32 e /24 aprendida do fastnetmon seja setadas como blackhole ou como prefixo para mitigação, e não ensine nada para ele.</p>
<pre class="remontti-code">/routing filter
add action=accept chain=FASTNETMON_IMPORT_IPV4 prefix-length=32 \
 set-bgp-communities=65444:666 set-distance=1 set-type=blackhole
add action=accept chain=FASTNETMON_IMPORT_IPV4 prefix-length=24 \
 set-bgp-communities=65444:777 set-distance=1 set-type=blackhole
add action=discard chain=FASTNETMON_IMPORT_IPV4
add action=discard chain=FASTNETMON_EXPORT_IPV4</pre>
<p>Atenção para a instance que deve estar selecionada corretamente (use a mesma que você usa com sua operadora).</p>
<pre class="remontti-code">/routing bgp peer add name=FASTNETMON remote-as=260072 \
 in-filter=FASTNETMON_IMPORT_IPV4 out-filter=FASTNETMON_EXPORT_IPV4 \
 remote-address=10.52.52.2 update-source=10.52.52.1</pre>
<p>Exemplo de configuração para filtro para operadora</p>
<pre class="remontti-code">/routing filter
add action=accept bgp-communities=65444:666 \
 chain=OPERADORA_IPv4_EXPORT prefix-length=32 set-bgp-communities=71:666
add action=accept chain=OPERADORA_IPv4_EXPORT \
 prefix=72.72.72.0/22 prefix-length=22-24 set-bgp-communities=&quot;&quot;
add action=discard chain=OPERADORA_IPv4_EXPORT</pre>
<p>Exemplo de configuração para filtro para mitigação</p>
<pre class="remontti-code">/routing filter
add action=accept bgp-communities=65444:777 \
 chain=MITIGACAO_IPv4_EXPORT prefix=72.72.72.0/22 \
 prefix-length=24 set-bgp-communities=19000:666
add action=discard chain=MITIGACAO_IPv4_EXPORT</pre>
<h4>Configurações do Huawei</h4>
<pre class="remontti-code">&lt;HUAWEI&gt; system-view
Enter system view, return user view with return command.</pre>
<p>Crie uma rota estática de Blackhole</p>
<pre class="remontti-code">[~HUAWEI] ip route-static 192.0.2.1 255.255.255.255 NULL0 description BLACKHOLE</pre>
<p>Crie um filtro que irá aceitar qualquer rota /32</p>
<pre class="remontti-code">[*HUAWEI] ip ip-prefix  ACCEP_PREFIX_MASK32_FASTNETMON_IPV4 index 10 permit 0.0.0.0 0 greater-equal 32</pre>
<p>Crie um filtro que irá aceitar as rota /24 de seu prefixo</p>
<pre class="remontti-code">[*HUAWEI] ip ip-prefix  ACCEP_PREFIX_MASK24_FASTNETMON_IPV4 index 10 permit 72.72.72.0 22 greater-equal 24</pre>
<p>Crie filtro se desejar rejeitar algum IP ou prefixo atacado atacado, caso você deixar o fastnetmon anúnciar seu NE pode rejeitar (Ex IP Servidores ou CGNAT)</p>
<pre class="remontti-code">[*HUAWEI] ip ip-prefix  IGNORE_PREFIX_FASTNETMON_IPV4 index 10 permit 72.72.72.224 28 greater-equal 28 less-equal 32
[*HUAWEI] ip ip-prefix  IGNORE_PREFIX_FASTNETMON_IPV4 index 20 permit 72.72.73.224 28 greater-equal 28 less-equal 32</pre>
<p>Crie um filtro para nossas community  65001:666 65001:777</p>
<pre class="remontti-code">[*HUAWEI] ip community-filter basic COMM_FASTNETMON_BLACKHOLE_32 index 10 permit 65001:666
[*HUAWEI] ip community-filter basic COMM_FASTNETMON_BLACKHOLE_24 index 10 permit 65001:777</pre>
<p>Defina community para usar nos RP das operadoras</p>
<pre class="remontti-code">[*HUAWEI] ip community-filter basic COMM_BLACKHOLE_32 index 10 permit 65444:666
[*HUAWEI] ip community-filter basic COMM_BLACKHOLE_24 index 10 permit 65444:777</pre>
<p>Vamos montar agora nosso route policy de import (rotas que iremos receber). A 1ª é ignorar os prefixos <strong>IGNORE_PREFIX_FASTNETMON_IPV4</strong></p>
<pre class="remontti-code">[*HUAWEI] route-policy FASTNETMON_IMPORT_IPV4 deny node 1000
[*HUAWEI]  if-match ip-prefix IGNORE_PREFIX_FASTNETMON_IPV4</pre>
<p>A 2º é o que vir marcado do fastnetmon com 65001:666 (COMM_FASTNETMON_BLACKHOLE_32) jogar para blackhole e aplicar uma community nova <strong>65444:666</strong>, como no exemplo aqui meu AS é de 32bits vou usar um AS privado, mas onde seu AS é de 16bits o mais comunity de se encontrar é AS:666. Assim se você for trânsito de outro AS você pode montar em suas route policy para aceitar prefixos do AS dele com /32 marcados com AS:666 e jogar para blackhole também fica dica!</p>
<pre class="remontti-code">[*HUAWEI] route-policy FASTNETMON_IMPORT_IPV4 permit node 1010
[*HUAWEI]  if-match community-filter COMM_FASTNETMON_BLACKHOLE_32
[*HUAWEI]  apply local-preference 999
[*HUAWEI]  apply ip-address next-hop 192.0.2.1
[*HUAWEI]  apply community 65444:666
[*HUAWEI]  if-match ip-prefix ACCEP_PREFIX_MASK32_FASTNETMON_IPV4</pre>
<p>Vamos preparar também para receber os prefixos /24 caso for anunciar para um mitigação por exemplo.</p>
<pre class="remontti-code">
[*HUAWEI] route-policy FASTNETMON_IMPORT_IPV4 permit node 1020
[*HUAWEI]  if-match community-filter COMM_FASTNETMON_BLACKHOLE_24
[*HUAWEI]  apply local-preference 999
[*HUAWEI]  apply ip-address next-hop 192.0.2.1
[*HUAWEI]  apply community 65444:777
[*HUAWEI]  if-match ip-prefix ACCEP_PREFIX_MASK24_FASTNETMON_IPV4</pre>
<p>E a 3ª ignoramos o resto como boas praticas.</p>
<pre class="remontti-code">[*HUAWEI] route-policy FASTNETMON_IMPORT_IPV4 deny node 9999</pre>
<p>Para as route policy de export (Rotas que o NE irá ensinar) colocarei apenas um Deny pois ele não precisa ensinar nada.</p>
<pre class="remontti-code">[*HUAWEI] route-policy FASTNETMON_EXPORT_IPV4 deny node 9999
[*HUAWEI] commit</pre>
<p>Vamos ao peer</p>
<pre class="remontti-code">[~HUAWEI] bgp 260072
[~HUAWEI] undo peer 10.52.52.2
[*HUAWEI]  peer 10.52.52.2 as-number 260072
[*HUAWEI]  peer 10.52.52.2 description BORDA_VS_FASTNETMON_IPV4
[*HUAWEI]  peer 10.52.52.2 timer connect-retry 1
[*HUAWEI]  peer 10.52.52.2 connect-interface 10.52.52.1
[*HUAWEI]  peer 10.52.52.2 timer keepalive 10 hold 30 
           y
[*HUAWEI]  ipv4-family unicast
[*HUAWEI]   peer 10.52.52.2 enable
            y
[*HUAWEI]   peer 10.52.52.2 public-as-only
[*HUAWEI]   peer 10.52.52.2 route-policy FASTNETMON_IMPORT_IPV4 import
[*HUAWEI]   peer 10.52.52.2 route-policy FASTNETMON_EXPORT_IPV4 export
[*HUAWEI]   peer 10.52.52.2 next-hop-local
[*HUAWEI]   peer 10.52.52.2 advertise-community
[*HUAWEI]   peer 10.52.52.2 advertise-ext-community
[*HUAWEI] commit
[~HUAWEI] run save </pre>
<p>Em caso de alguma <strong>emergência</strong>, para <strong>baixar</strong> a sessão use:</p>
<pre class="remontti-code">[~HUAWEI] bgp 260072
[*HUAWEI] peer 10.52.52.2 ignore
[*HUAWEI] commit</pre>
<p>Para <strong>subir</strong> novamente:</p>
<pre class="remontti-code">[~HUAWEI] bgp 260072
[*HUAWEI] undo peer 10.52.52.2 ignore
[*HUAWEI] commit</pre>
<p>Verifique se sua sessão subiu:</p>
<pre class="remontti-code">[*HUAWEI] display bgp peer | include 10.52.52.2</pre>
<pre class="remontti-code-plain"> BGP local router ID : x.x.x.x
 Local AS number : 260072
 Total number of peers : 13                 Peers in established state : 13

  Peer                             V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State  PrefRcv
  10.52.52.2                       4       260072   897801  1088107     0 2496h26m Established        0</pre>
<p>No FRR use `show bgp summary`</p>
<pre class="remontti-code"># vtysh</pre>
<pre class="remontti-code-plain"># show bgp summary
IPv4 Unicast Summary:
BGP router identifier 10.52.52.2, local AS number 260072 vrf-id 0
BGP table version 0
RIB entries 0, using 0 bytes of memory
Peers 1, using 21 KiB of memory

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt
10.52.52.1      4     260072         5         5        0    0    0 00:02:52            0        0

Total number of neighbors 1
# exit</pre>
<p>Para repassar os prefixos marcados como blackhole para sua operadora você precisará saber qual é a community que a mesma utiliza e se ela lhe oferece esse recurso, em seguida você irá adicionar a route policy da sua operadora uma nova regra:</p>
<p>No exemplo tudo que recebemos do fastnetmon passamos a aplicar a community 65444:666, logo tudo que for marcado com a mesma iremos repassar para operadora, com o community da operadora.</p>
<pre class="remontti-code">[~HUAWEI] route-policy UPSTREAM_OP_BRUXADO71_EXPORT_IPV4 permit node 2070
[*HUAWEI]  if-match community-filter COMM_BLACKHOLE_32
[*HUAWEI]  apply community 71:666</pre>
<p>Agora tudo que marcamos com community 65444:777 enviamos para mitigraçação</p>
<pre class="remontti-code">[*HUAWEI] route-policy UPSTREAM_MITIGAAI_EXPORT_IPV4 permit node 2070
[*HUAWEI]  if-match community-filter COMM_BLACKHOLE_24
[*HUAWEI]  apply community 1000:9999</pre>
<p>Pronto agora que já temos nosso peer Up entre router e servidor, nosso Bot mandando mensagem, iremos criar o script que será executado sempre que um ataque for identificado <strong>BAN</strong> ou <strong>UNBAN</strong>. Irei criar um diretório /var/log/fastnetmon_attacks/ataques qual irá ficar os ataques finalizados.</p>
<pre class="remontti-code"># mkdir /var/log/fastnetmon_attacks/ataques -p
# vim /usr/local/bin/notify_about_attack.sh</pre>
<p>Altere <strong>ID_CHAT=&#8217;-1000000000000&#8242;</strong> pelo ID do seu usuário ou grupo.<br />
Para anunciar os prefixos /24 do IP atacado altere <strong>ANUNCIAR_24</strong> para <strong>sim</strong><br />
Se não quiser receber o arquivo de log altere <strong>ARQUIVO_DE_LOG</strong> para <strong>nao</strong><br />
Dei uma encrementada para identificar a categoria do IP, que iremos ver em seguido o script que ira identificar, em <strong>IDENT_CATEGORIA</strong> vai poder classificar exemplo se um ip é de CGNAT, servidor&#8230; </p>
<pre class="remontti-code">#!/usr/bin/env bash
#
# Este script receberá os seguintes parâmetros:
# $1 IP do cliente
# $2 INCOMING -&gt; Vindo de fora da rede | OUTGOING -&gt; Saindo da sua rede
# $3 Pacotes por seguncoes
# $4 Ação (ban ou unban)
#
#--------------------------------------------------------------------------------
# Defina o ID do Chat ou Grupo  do Telegram (Grupos sempre começam com &quot;-&quot; )
ID_CHAT=&#039;-1000000000000&#039;
#
# Deseja anunciar prefixos /24? (sim/nao)
ANUNCIAR_24=&#039;nao&#039;
#
# Deseja enviar arquivo de log compactado para o telegram? (sim/nao)
ARQUIVO_DE_LOG=&#039;sim&#039;
#
# Deseja identificar a categoria do endereço atacado (sim/nao)
# script python /opt/rr_fastnetmon/prefixos.txt
IDENT_CATEGORIA=&#039;sim&#039;
#
# Seu ASN
ASN=260072
#--------------------------------------------------------------------------------
#
# Pegando prefixo 24
ip32=$1
prefixo24=&quot;${ip32%.*}.0/24&quot;
#
quebralinha=&quot;
&quot;
#
if [ &quot;$2&quot; = &quot;incoming&quot; ]; then
  TIPO=&quot;Sendo atacado&quot;
else
  TIPO=&quot;Realizando um ataque&quot;
fi
#
if [ &quot;$IDENT_CATEGORIA&quot; = &quot;sim&quot; ]; then
  CATEGORIA=$(/opt/rr_fastnetmon/categoria_ip.py $1)
else
  CATEGORIA=&quot;&quot;
fi
#
# Desbanindo um IP
if [ &quot;$4&quot; = &quot;unban&quot; ]; then
  # Remove IP do anuncio para o FRR
  if [ $ANUNCIAR_24 = &quot;sim&quot; ]; then
    /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;&lt;b&gt;(UNBAN) Anúncios removido&lt;/b&gt;&quot; &quot;&lt;code&gt; Blackhole: $1/32$quebralinha Prefixo: $prefixo24&lt;/code&gt;&quot;
    vtysh --command &quot;configure terminal
    no ip route $1/32 lo
    no ip route $prefixo24 lo
    router bgp $ASN
     address-family ipv4 unicast
      no network $1/32
      no network $prefixo24
    &quot;
  else
    /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;&lt;b&gt;(UNBAN) Anúncio removido&lt;/b&gt;&quot; &quot;&lt;code&gt; Blackhole: $1/32$quebralinha&lt;/code&gt;&quot;
    vtysh --command &quot;configure terminal
    no ip route $1/32 lo
    router bgp $ASN
     address-family ipv4 unicast
      no network $1/32
    &quot;
  fi
  # Movemos os logs para pasta ataques pois não queremos mais receber elas.
  mv /var/log/fastnetmon_attacks/$1* /var/log/fastnetmon_attacks/ataques
  exit 0
fi
#
# Banindo um IP
if [ &quot;$4&quot; = &quot;ban&quot; ]; then
  cp /var/log/fastnetmon_attacks/$1* /var/log/fastnetmon_attacks/$1.log.txt &amp;&gt;/dev/null
  # Anuncia IP ao FRR
  if [ $ANUNCIAR_24 = &quot;sim&quot; ]; then
    /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;&lt;b&gt;(BAN) $TIPO&lt;/b&gt; [ $3 pps ]&quot; &quot;Anunciando$quebralinha&lt;code&gt; Blackhole: $1/32$quebralinha Prefixo: $prefixo24&lt;/code&gt;$quebralinha &lt;i&gt;$CATEGORIA&lt;/i&gt;&quot;
    vtysh --command &quot;configure terminal
    ip route $1/32 lo
    ip route $prefixo24 lo
    router bgp $ASN
     address-family ipv4 unicast
      network $1/32
      network $prefixo24
    &quot;
  else
    /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;&lt;b&gt;(BAN) $TIPO&lt;/b&gt; [ $3 pps ]&quot; &quot;Anunciando$quebralinha&lt;code&gt; Blackhole: $1/32&lt;/code&gt;$quebralinha &lt;i&gt;$CATEGORIA&lt;/i&gt;&quot;
    vtysh --command &quot;configure terminal
    ip route $1/32 lo
    router bgp $ASN
     address-family ipv4 unicast
      network $1/32
    &quot;
  fi
  # Envio de log
  if [ $ARQUIVO_DE_LOG = &quot;sim&quot; ]; then
    /usr/local/bin/telegram -t &quot;$ID_CHAT&quot; /var/log/fastnetmon_attacks/$1.log.txt &quot;Logs do ataque&quot;
  fi
  sleep 2
  rm /var/log/fastnetmon_attacks/$1.log.txt &amp;&gt;/dev/null
  exit 0
fi
#
if [ &quot;$4&quot; == &quot;attack_details&quot; ]; then
  # Null
  exit 0
fi
</pre>
<p>De permissão para execução</p>
<pre class="remontti-code"># chmod a+x /usr/local/bin/notify_about_attack.sh</pre>
<p>Crie um diretório em /opt/rr_fastnetmon onde iremos colocar nossos scripts complementares</p>
<pre class="remontti-code"># mkdir /opt/rr_fastnetmon</pre>
<p>Crie o arquivo categoria_ip.py que utiliza python3 (Não se preocupe em instalar o python)</p>
<pre class="remontti-code"># vim /opt/rr_fastnetmon/categoria_ip.py</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain">
#!/usr/bin/env python3

import sys
import ipaddress

if len(sys.argv) != 2:
    print(&quot;Uso: categoria_ip.py &lt;endereço IP&gt;&quot;)
    sys.exit(1)

ip = sys.argv[1]

# Converter o endereço IP fornecido em um objeto ipaddress.IPv4Address
endereco_ip = ipaddress.IPv4Address(ip)

# Procurar a categoria correspondente ao endereço IP no arquivo prefixos.txt
categoria = None

with open(&quot;/opt/rr_fastnetmon/prefixos.txt&quot;) as arquivo:
    for linha in arquivo:
        prefixo, cat = linha.strip().split(&quot; &quot;)
        rede = ipaddress.IPv4Network(prefixo)
        if endereco_ip in rede:
            categoria = cat
            break

if categoria is None:
    print(&quot;Categoria não encontrada para o endereço IP&quot;)
else:
    print(&quot;Categoria:&quot;, categoria)


</pre>
<pre class="remontti-code"># chmod +x /opt/rr_fastnetmon/categoria_ip.py</pre>
<p>Agora crie um arquivo prefixos.txt nele você pode classificar seus IPs assim no alarme ira lhe ajudar (ou você pode invetar algo novo). Coloque sempre os mais especificos primeiro caso você não queira declarar todos os prefixos.</p>
<pre class="remontti-code"># vim /opt/rr_fastnetmon/prefixos.txt</pre>
<p>Exemplo:</p>
<pre class="remontti-code-plain">
72.72.72.0/26 Servidor
72.72.72.128/26 CGNAT
72.72.73.0/24 Cliente_Dedicado
72.72.72.0/22 Clientes_Dinamico
</pre>
<p>Teste o script executando como no exemplo:</p>
<pre class="remontti-code"># /opt/rr_fastnetmon/categoria_ip.py 72.72.72.20
Categoria: Servidor

# /opt/rr_fastnetmon/categoria_ip.py 72.72.72.140
Categoria: CGNAT

# /opt/rr_fastnetmon/categoria_ip.py 72.72.73.100
Categoria: Cliente_Dedicado

# /opt/rr_fastnetmon/categoria_ip.py 72.72.72.80
Categoria: Clientes_Dinamico

# /opt/rr_fastnetmon/categoria_ip.py 72.72.75.9
Categoria: Clientes_Dinamico</pre>
<p>Exemplo de alarme no telegram<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/telegram.jpg" data-rel="lightbox-gallery-P2Y9a3r7" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/telegram.jpg" alt="" width="356" height="742" class="alignnone size-full wp-image-7368" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/telegram.jpg 356w, https://blog.remontti.com.br/wp-content/uploads/2023/05/telegram-144x300.jpg 144w" sizes="auto, (max-width: 356px) 100vw, 356px" /></a></p>
<p>Restarte o fastnetmon</p>
<pre class="remontti-code"># systemctl restart fastnetmon</pre>
<p>Se quiser fazer um teste manual simulando um anuncio de um IP (Cuidado se estiver anunciando prefixo) exemplo: 72.72.73.255/32</p>
<pre class="remontti-code"> # /usr/local/bin/notify_about_attack.sh 72.72.73.255 incoming 9996 ban</pre>
<p>Verificando se esta enviando:</p>
<pre class="remontti-code"># vtysh --command &quot; show ip bgp neighbors 10.52.52.1 advertised-routes&quot;</pre>
<pre class="remontti-code-plain">BGP table version is 3, local router ID is 10.52.52.2, vrf id 0
Default local pref 100, local AS 260072
Status codes:  s suppressed, d damped, h history, * valid, &gt; best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop&#039;s vrf id, &lt; announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

   Network          Next Hop            Metric LocPrf Weight Path
*&gt; 72.72.73.255/32  0.0.0.0                  0         32768 i

Total number of prefixes 1</pre>
<p>Para remover:</p>
<pre class="remontti-code"> # /usr/local/bin/notify_about_attack.sh 72.72.73.255 incoming 9996 unban</pre>
<p>Finalizamos a primeira parte sem fazer nenhum estrago ao servidor (CPU) <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
<p>Seria interessante fazer alguns testes de ataques (coisa pequena) mas com características reais de dentro da sua rede e de fora, escolha uma IP que não esteja em uso para tal! Para realizar esse ataque user o a ferramenta criada pelo ekovegeance: <a href="https://github.com/ekovegeance/DDOS" rel="noopener noreferrer" target="_blank">https://github.com/ekovegeance/DDOS</a> Cuidado você pode criar um alto uso de Hardware na sua rede!!!</p>
<p>Em um servidor/desktop linux vai precisar ter instalado os pacotes bash sudo curl netcat hping3 openssl stunnel nmap whois dnsutils.<br />
<a href="https://github.com/ekovegeance/DDOS/archive/v1.2.4.zip">Baixe os arquivos</a>, extraia entre em sua pasta e execute o arquivo ddos.</p>
<pre class="remontti-code">$ wget https://github.com/ekovegeance/DDOS/archive/v1.2.4.zip
$ unzip v1.2.4.zip 
$ cd DDOS-1.2.4/
$ ./ddos</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos.png" data-rel="lightbox-gallery-P2Y9a3r7" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos.png" alt="" width="676" height="881" class="alignnone size-full wp-image-3988" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos.png 676w, https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos-230x300.png 230w" sizes="auto, (max-width: 676px) 100vw, 676px" /></a></p>
<h3>Gráficos Grafana</h3>
<p>Habilite o graphite no fastnetmon</p>
<pre class="remontti-code"># sed -i &#039;s/graphite = off/graphite = on/&#039; /etc/fastnetmon.conf</pre>
<p>Vamos instalar o <strong>influxdb</strong> para ser a base de dados</p>
<pre class="remontti-code"># apt install gnupg2 -y
# cd /tmp
# wget -q https://repos.influxdata.com/influxdata-archive_compat.key
# echo &#039;393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key&#039; \
  | sha256sum -c &amp;&amp; cat influxdata-archive_compat.key \
  | gpg --dearmor \
  | tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg &gt; /dev/null
# echo &#039;deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main&#039;\
  | tee /etc/apt/sources.list.d/influxdata.list
# apt update
# apt install influxdb -y</pre>
<p>Crie uma cópia do arquivo de configuração, e edite o mesmo</p>
<pre class="remontti-code"># cp /etc/influxdb/influxdb.conf /etc/influxdb/influxdb.conf.orig
# vim /etc/influxdb/influxdb.conf</pre>
<p>Localize [[graphite]] e insira a baixo as seguintes linhas:</p>
<pre class="remontti-code-plain">
[[graphite]]
  enabled = true
  bind-address = &quot;:2003&quot;
  protocol = &quot;tcp&quot;
  consistency-level = &quot;one&quot;
  separator = &quot;.&quot;
  templates = [
    &quot;fastnetmon.hosts.* app.measurement.cidr.direction.function.resource&quot;,
    &quot;fastnetmon.networks.* app.measurement.cidr.direction.resource&quot;,
    &quot;fastnetmon.total.* app.measurement.direction.resource&quot;
  ]</pre>
<p>Reinicie o influxdb</p>
<pre class="remontti-code"># systemctl restart influxdb</pre>
<p>Em seguida o fastnetmon</p>
<pre class="remontti-code"># systemctl restart fastnetmon</pre>
<p>Agora vamos acessar o o influxdb para ver se o banco e verificar se o graphite foi criado.</p>
<pre class="remontti-code"># influx</pre>
<pre class="remontti-code-plain">Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10</pre>
<pre class="remontti-code">&gt; SHOW databases</pre>
<pre class="remontti-code-plain">name: databases
name
----
_internal
graphite</pre>
<pre class="remontti-code">&gt; USE graphite</pre>
<pre class="remontti-code-plain">Using database graphite</pre>
<pre class="remontti-code">&gt; SHOW MEASUREMENTS</pre>
<pre class="remontti-code-plain">name: measurements
name
----
hosts
networks
total</pre>
<p>Se você tem pouco disco e deseja não salvar por tanto tempo, você pode ajustar o tempo de retenção dos dados, no comando estarei informando 90 dias (padrão é infinito) com métrica de tráfego para 7 dias (padrão ja é 7 dias), será necessário apagar o banco e recria-lo.</p>
<pre class="remontti-code">&gt; SHOW RETENTION POLICIES ON graphite</pre>
<pre class="remontti-code-plain">name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true</pre>
<p>Vamos remover o banco, criar novamente com os tempos desejados</p>
<pre class="remontti-code">&gt; DROP DATABASE graphite
&gt; CREATE DATABASE graphite WITH DURATION 90d SHARD DURATION 7d
&gt; SHOW RETENTION POLICIES ON graphite</pre>
<pre class="remontti-code-plain">name    duration  shardGroupDuration replicaN default
----    --------- ------------------ -------- -------
autogen 2160h0m0s 168h0m0s           1        true</pre>
<pre class="remontti-code">&gt; exit</pre>
<p>Reinicie os serviços novamente</p>
<pre class="remontti-code"># systemctl restart influxdb fastnetmon</pre>
<p>Você pode optar pelo modo bruto e remover com script.</p>
<pre class="remontti-code"># vim /root/limpa_graphite.sh</pre>
<p>Ajuste o número de dias que deseja que fique salvo apenas.</p>
<pre class="remontti-code">
#!/bin/bash

# Manter por quantos dias?
DIAS=&quot;7&quot;

# Define o banco de dados
DATABASE=&quot;graphite&quot;

# Define os comandos
COMMANDS=(&quot;DELETE FROM hosts WHERE time &lt; now() - ${DIAS}d&quot; &quot;DELETE FROM networks WHERE time &lt; now() - ${DIAS}d&quot; &quot;DELETE FROM total WHERE time &lt; now() - ${DIAS}d&quot;)

# Executa cada comando
for cmd in &quot;${COMMANDS[@]}&quot;; do
    echo &quot;Executing: $cmd&quot;
    influx -database &quot;$DATABASE&quot; -execute &quot;$cmd&quot;
done

echo &quot;Todos os comandos executados com sucesso&quot;
</pre>
<p>De permissão e execute, se desejar pode adicionar ao cron:</p>
<pre class="remontti-code"># chmod +x /root/limpa_graphite.sh
# /root/limpa_graphite.sh</pre>
<h4>Grafana</h3>
<p>Adicione o repositório do grafana e instale-o</p>
<pre class="remontti-code"># wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
# echo &quot;deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main&quot; | tee -a /etc/apt/sources.list.d/grafana.list
# apt update; apt install grafana -y</pre>
<p>Habilite serviço para inicialização e inicie o mesmo</p>
<pre class="remontti-code"># systemctl enable grafana-server
# systemctl start grafana-server</pre>
<p>Acesse em seu navegador <strong>http://ip_privado:3000</strong> e entre com <strong>usuário e senha admin</strong> em seguida defina uma nova senha. Atualmente o grafana esta na versão 9.5.x caso você instale uma versão superior no futuro os passos não devem mudarem muito de locais.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_1.png" data-rel="lightbox-gallery-P2Y9a3r7" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_1.png" alt="" width="1453" height="777" class="alignnone size-full wp-image-7334" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_1.png 1453w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_1-300x160.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_1-1024x548.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_1-768x411.png 768w" sizes="auto, (max-width: 1453px) 100vw, 1453px" /></a></p>
<p>No menu vá em  <strong>Connections</strong>, clique em <strong>Connect data</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a2.png" data-rel="lightbox-gallery-P2Y9a3r7" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a2.png" alt="" width="1445" height="728" class="alignnone size-full wp-image-7338" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a2.png 1445w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a2-300x151.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a2-1024x516.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a2-768x387.png 768w" sizes="auto, (max-width: 1445px) 100vw, 1445px" /></a><br />
Localize influxDB e clique nele<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a3.png" data-rel="lightbox-gallery-P2Y9a3r7" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a3.png" alt="" width="1445" height="530" class="alignnone size-full wp-image-7339" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a3.png 1445w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a3-300x110.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a3-1024x376.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_a3-768x282.png 768w" sizes="auto, (max-width: 1445px) 100vw, 1445px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_aa3.png" data-rel="lightbox-gallery-P2Y9a3r7" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_aa3.png" alt="" width="1451" height="583" class="alignnone size-full wp-image-7340" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_aa3.png 1451w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_aa3-300x121.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_aa3-1024x411.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_aa3-768x309.png 768w" sizes="auto, (max-width: 1451px) 100vw, 1451px" /></a></p>
<p>Preencha apenas:<br />
URL:<strong> http://localhost:8086</strong><br />
Database: <strong>graphite</strong><br />
E clique em <strong>Save & test</strong>, você deve ter a resposta <strong>atasource is working. 3 measurements found</strong>.<br />
Mas antes de sair anote o uid que esta na <strong>URL</strong> no meu caso: <strong>da56a879-9ae6-42ca-aeb5-236e8b439be4</strong>, vamos precisar dele para facilitar ao importar as dashs.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_6.png" data-rel="lightbox-gallery-P2Y9a3r7" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_6.png" alt="" width="1428" height="878" class="alignnone size-full wp-image-7341" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_6.png 1428w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_6-300x184.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_6-1024x630.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_6-768x472.png 768w" sizes="auto, (max-width: 1428px) 100vw, 1428px" /></a></p>
<p>Faça <a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/Fastnetmon-Grafana.zip"><strong>download aqui</strong></a> das Dashs e importe.<br />
- Fastnetmon - Home<br />
- Fastnetmon - Painel Geral<br />
- Fastnetmon - Top PPs<br />
- Fastnetmon - Top Prefixos<br />
- Fastnetmon - Top Hosts MBs<br />
- Fastnetmon - Top Tráfego saída<br />
- Fastnetmon - Tráfego por Prefixo<br />
- Fastnetmon - Tráfego por endereço IPv4</p>
<p>Extraia o arquivo zip e abra em um editor de texto os arquivos .json localize <strong>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</strong> e substitua pelo seu <strong>uid</strong>, assim lhe poupará de fazer ajustes manuais.<br />
Se seu desktop é um linux use o comando sed e faça em um unico comando:<br />
`sed -i 's/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/da56a879-9ae6-42ca-aeb5-236e8b439be4/' *.json`<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_7a.png" data-rel="lightbox-gallery-P2Y9a3r7" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_7a.png" alt="" width="1272" height="578" class="alignnone size-full wp-image-7343" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_7a.png 1272w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_7a-300x136.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_7a-1024x465.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_7a-768x349.png 768w" sizes="auto, (max-width: 1272px) 100vw, 1272px" /></a></p>
<p>Volte para o menu <strong>e clique em Dashboards</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_4.png" data-rel="lightbox-gallery-P2Y9a3r7" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_4.png" alt="" width="1440" height="479" class="alignnone size-full wp-image-7336" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_4.png 1440w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_4-300x100.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_4-1024x341.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_4-768x255.png 768w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></a><br />
Importe uma a um das Dashs.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_5.png" data-rel="lightbox-gallery-P2Y9a3r7" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_5.png" alt="" width="1444" height="580" class="alignnone size-full wp-image-7337" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_5.png 1444w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_5-300x120.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_5-1024x411.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/grafana_fastnetmon_5-768x308.png 768w" sizes="auto, (max-width: 1444px) 100vw, 1444px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral.png" data-rel="lightbox-gallery-P2Y9a3r7" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral.png" alt="" width="2560" height="947" class="alignnone size-full wp-image-7374" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral.png 2560w, https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral-300x111.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral-1024x379.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral-768x284.png 768w, https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral-1536x568.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2023/05/painel-geral-2048x758.png 2048w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /></a></p>
<p>Gostou? Se sentindo mais seguro agora? É consultor e ganha $ com isso!?</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>Fontes:<br />
<a href="https://fastnetmon.com/install/" rel="noopener" target="_blank">https://fastnetmon.com/install/</a><br />
<a href="https://docs.frrouting.org/en/latest/bgp.html" rel="noopener" target="_blank">https://docs.frrouting.org/en/latest/bgp.html</a><br />
<a href="https://deb.frrouting.org/" rel="noopener" target="_blank">https://deb.frrouting.org/</a><br />
<a href="https://fastnetmon.com/docs/influxdb_integration/" rel="noopener" target="_blank">https://fastnetmon.com/docs/influxdb_integration/</a><br />
<a href="https://grafana.com/docs/grafana/latest/installation/debian/" rel="noopener" target="_blank">https://grafana.com/docs/grafana/latest/installation/debian/</a></p>
<p>O post <a href="https://blog.remontti.com.br/7322">Fortalecendo a Resiliência da Rede: Detecção de Ataques DDoS com FastNetMon, FRRouting, Grafana e Implementação em Debian 12 com Huawei &#038; RouterOS</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7322/feed</wfw:commentRss>
			<slash:comments>24</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação do Debian 12 Bookworm limpa passo-a-passo</title>
		<link>https://blog.remontti.com.br/7236</link>
					<comments>https://blog.remontti.com.br/7236#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 18 Apr 2023 20:35:43 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bookworm]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[passo a passo]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7236</guid>

					<description><![CDATA[<p>Neste tutorial vamos aprender de forma simples fazer a instalação da distribuição Linux Debian 12 bookworm. Primeiramente iremos precisar baixar imagem ISO do Debian, eu particularmente utilizo a ISO netinst, que durante a instalação&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7236">Instalação do Debian 12 Bookworm limpa passo-a-passo</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-7281" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>Neste tutorial vamos aprender de forma simples fazer a instalação da distribuição Linux <a href="https://www.debian.org/releases/bookworm/releasenotes" rel="noopener" target="_blank">Debian 12 bookworm</a>. </p>
<p>Primeiramente iremos precisar baixar imagem ISO do Debian, eu particularmente utilizo a ISO netinst, que durante a instalação já faz a instalação dos pacotes mais recentes usando a internet, então é lógico que vamos precisar uma conexão com a internet durante a instalação.</p>
<p>Outro motivo para utilizar a versão netinst é que não irei instalar nenhum pacote pois a ideia aqui é fazer uma instalação limpa! E assim instalamos os pacotes que realmente ira precisar (nada de perfumarias).</p>
<p>O repositório do debian 12 conta com uma novidade, que é o <strong><a href="https://www.debian.org/vote/2022/vote_003" rel="noopener" target="_blank">non-free-firmware</a></strong>. A maior parte dos pacotes de firmware não-livre foi movida de <strong>non-free</strong> para <strong>non-free-firmware</strong> em preparação para o lançamento do Debian 12. Essa separação limpa torna possível construir imagens de instalação oficiais com pacotes de main e de non-free-firmware, sem contrib nem non-free. Essa mudança é muito legal, pois muitos não conheciam a versão non-free dos debians anterioes e tinha uma dificuldade enorme quando sempre precisa por exemplo instalar o drive de uma placa de rede.</p>
<p><strong><a href="https://wiki.debian.org/SourcesList" rel="noopener" target="_blank">https://wiki.debian.org/SourcesList</a></strong></p>
<p><strong>main</strong> Consiste em pacotes compatíveis com DFSG <em>(Debian Free Software Guidelines)</em>, que não dependem de software fora desta área para operar.<strong> Estes são os únicos pacotes considerados parte da distribuição Debian</strong>.</p>
<p><strong>contrib</strong> &#8211; Contêm software compatível com DFSG, mas não possuem dependências no principal (possivelmente empacotados para o Debian em não-livre).</p>
<p><strong>non-free</strong> Contém software que não está em conformidade com a DFSG, Exemplo drives proprietários, como o nome já diz não gratuitos. </p>
<p><strong>non-free-firmware</strong> Contém pacotes de firmware não livres em nossa mídia oficial (imagens do instalador). Os binários de firmware incluídos normalmente serão ativados por padrão quando o sistema determinar que eles são necessários, mas, sempre que possível, incluiremos maneiras para os usuários desativarem isso na inicialização.</p>
<p>Um grande passo também é que contamos agora com o <a href="https://diolinux.com.br/sistemas-operacionais/linux/kernel-61.html" rel="noopener" target="_blank">Kernel 6.1</a>.<br />
Leia mais aqui: <a href="https://www.debian.org/releases/bookworm/amd64/release-notes/ch-whats-new.pt-br.html" rel="noopener" target="_blank"><strong>Quais as novidades no Debian 12</strong></a></p>
<h3>Download</h3>
<p>&#8211; <strong><a href="https://cdimage.debian.org/mirror/cdimage/archive/12.12.0/amd64/iso-cd/debian-12.12.0-amd64-netinst.iso" rel="noopener" target="_blank">Debian 12 Bookworm (amd64)</a></strong><br />
&#8211; <strong><a href="https://cdimage.debian.org/mirror/cdimage/archive/12.12.0-live/amd64/iso-hybrid/" rel="noopener" target="_blank">Debian 12 Live Desktop (amd64)</a></strong></p>
<h3>Boot</h3>
<p>Para montar seu pendrive bootavél eu particularmente gosto do <strong><a href="https://www.ventoy.net/en/download.html" rel="noopener" target="_blank">Ventoy</a></strong> , mas use o da sua preferencia, como <a href="https://rufus.ie/pt_BR/" rel="noopener" target="_blank">Rufus</a>, <a href="https://unetbootin.github.io/" rel="noopener" target="_blank">UNetbootin</a>, <a href="https://www.balena.io/etcher/" rel="noopener" target="_blank">Balena etcher</a>&#8230; </p>
<h3>Instalação</h3>
<p>Iniciando o boot da sua iso.</p>
<p>Selecione: <strong>Graphical Install</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install.png" alt="" width="640" height="480" class="alignnone size-full wp-image-7238" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install.png 640w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-300x225.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p><strong>Portuguese (Brazil) – Portugues do Brasil</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-1.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-1.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7239" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-1.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-1-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-1-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Brasil</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-2.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-2.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7240" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-2.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-2-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-2-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Português Brasileiro</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-3.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-3.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7241" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-3.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-3-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-3-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Neste momento ele irá identificar sua conexão de rede, e receber seus IP automaticamente via DHCP.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-4.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-4.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7242" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-4.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-4-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-4-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>No entanto se sua rede não estiver configurada para entregar IP automaticamente, ira apresentar uma mensagem dizendo que a configuração falhou:<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-6-a.png" alt="" width="808" height="127" class="alignnone size-full wp-image-5803" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-6-a.png 808w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-6-a-300x47.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-6-a-768x121.png 768w" sizes="auto, (max-width: 808px) 100vw, 808px" /></p>
<p>No entanto se você recebeu o IP automaticamente irá cair na tela de configuração do “Nome de Máquia:” então clique em <strong>Voltar</strong>.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7243" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Configurar a rede manualmente</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-6.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-6.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7244" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-6.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-6-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-6-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Informe <strong>IP/PREFIX</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-7.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-7.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7245" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-7.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-7-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-7-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Gateway</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-8.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-8.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7246" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-8.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-8-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-8-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Servidores DNS</strong> (Separa por espaço para mais de um, máximo 3)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-9-1.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-9-1.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7248" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-9-1.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-9-1-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-9-1-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>E agora voltamos a tela de <strong>Nome de Máquia</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7243" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-5-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Informe seu domínio se possuir, ou deixe em branco (Se você tiver o DNS reverso configurado ele já trará seu domínio)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-10.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-10.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7249" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-10.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-10-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-10-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Defina <strong>Senha de root (administrador)</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-11.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-11.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7250" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-11.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-11-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-11-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Informe seu <strong>Nome completo</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-12.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-12.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7251" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-12.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-12-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-12-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Defina um <strong>nome de usuário</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-13.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-13.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7252" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-13.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-13-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-13-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Defina a <strong>senha deste usuário</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-14.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-14.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7253" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-14.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-14-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-14-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Selecione <strong>seu estado</strong> para a escolha do <strong>fuso horário</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-15.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-15.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7254" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-15.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-15-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-15-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Chegamos ao particionamento. Aqui vamos ter várias polemicas! Para mim é interessante particionar quando você sabe realmente o que está fazendo, exemplo possuir mais de um disco, ou porejetar que uma partição não destrua o sistema.<br />
Em VMs sempre instalo da forma automatica, não tem o porque está particionando uma máquina virtual (a não ser mais uma vez que você saiba o que quer), ou até mesmo estar fazendo algum tipo de RAID via software (Sou fã do RAID 10 espelhamento e performasse, mas quase sempre faremos isso lá na controladora, mas nada impede de fazer via software se seu servidor não possui uma controladora). Bom poderia falar um tempão aqui, mas em 90% o metodo &#8220;automático&#8221; resolve nossos problemas, então bora! </p>
<p>Selecione <strong>Assistido – usar o disco inteiro</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-16.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-16.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7255" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-16.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-16-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-16-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Selecione o Disco</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-18.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5820" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-18.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-18-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-18-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecione “<strong>Todos os arquivos em uma partição (para iniciantes)</strong>”, se você selecionar alguma das outras opções é muito importante que você realmente saiba oq está fazendo!<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-18.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-18.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7257" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-18.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-18-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-18-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Finalizar o particionamento e escrever as mudanças no disco</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-19.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-19.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7258" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-19.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-19-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-19-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Sim</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-20.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-20.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7259" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-20.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-20-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-20-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Aguarde instalar o sistema básico&#8230;<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-21.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-21.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7260" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-21.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-21-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-21-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Não</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-22.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-22.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7261" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-22.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-22-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-22-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Brasil</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-23.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-23.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7262" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-23.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-23-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-23-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Eu gosto do <strong>deb.debian.org</strong> (mas pode selecionar outro se desejar)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-24.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-24.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7263" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-24.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-24-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-24-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Deixe em branco</strong>. <em>Acredito que ninguém mais use proxy, mas se for seu caso informe seu usuário e senha da conexão HTTP.</em><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-25.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-25.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7264" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-25.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-25-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-25-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Aguarde enquanto os espelhos (repositórios são lidos) é <strong>fundamental ter internet</strong>, caso contrário irá apresentar erro, e prosseguir a instalação vai deixar seu sistema praticamente &#8220;quebrado&#8221;.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-26.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-26.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7265" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-26.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-26-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-26-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>Sim</strong>. É sempre importante ajudar a comunidade a saber quais pacotes estão sendo instalado, isso vai ajudar os desenvolvedores a serem visto pela comunidade Debian e quem sabe aquele pacote legal que você precisa compilar na próxima versão já esteja disponível via repositório.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-27.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-27.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7266" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-27.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-27-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-27-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><strong>ESSE É A PARTE MAIS IMPORTANTE PARA A INSTALAÇÃO LIMPA.</strong><br />
Pois não vamos instalar nenhum pacote, e sim apenas o sistema base. O único pacote que é bem provável que você irá precisar é do SSH para fazer o acesso a sua máquina.<br />
Essa instalação é recomendada para servidores! Agora se você está fazendo essa instalação com intuito de usar alguma interface gráfica faça sua escolha e prossiga.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-28.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-28.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7267" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-28.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-28-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-28-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-29.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-29.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7268" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-29.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-29-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-29-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Grub: <strong>Sim</strong> Se não fica sem dar boot.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-30.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-30.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7269" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-30.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-30-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-30-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Seleciona o disco qual sera configurado o GRUB (Sem ele o sistema não inicia! Normalmente /dev/sda)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-31.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-31.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7270" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-31.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-31-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-31-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Aguarde a finalização<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-32.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-32.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7271" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-32.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-32-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-32-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Continuar para reiniciar<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-33.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-33.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7272" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-33.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-33-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-33-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Iremos ver nossa tela do GRUB (Aqui você pode selecionar um kernel anteiro instalado caso o atual apresentar algum problema&#8230;, entre recuperar até mesmo a senha de root)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-34.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-34.png" alt="" width="640" height="480" class="alignnone size-full wp-image-7273" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-34.png 640w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-34-300x225.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></a></p>
<p>E por fim chegamos a tela de login. Nesta tela você pode logar com usuário root diretamente.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-35.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-35.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7274" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-35.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-35-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-35-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>Faça um SSH para o IP do seu servidor, se você não sabe qual o IP basta na tela anterior logar e digitar o comando: </p>
<pre class="remontti-code">ip -c address</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-36.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-36.png" alt="" width="800" height="600" class="alignnone size-full wp-image-7275" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-36.png 800w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-36-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian_12_install-36-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></p>
<p>No meu caso meu ip é o 172.18.18.18, irei logar com o usuário remontti (que criei na instalação) e não com root, por padrão de segurança o SSH vem com a opção que não permite que você logue com usuário root, então use o usuário &#8220;comum&#8221; da sua instalação para logar. OBS: Não seja <del datetime="2023-04-18T16:55:06+00:00">ignorante</del> de ir trocar as configurações do SSH e permitir o root logar<em> (Isso me deixa P, tem várias formas de você contornar!)</em><br />
Então do meu PC acesso e em seguida viro root com <strong>su-</strong> exemplo:</p>
<pre class="remontti-code"> ssh 172.18.18.18 -p 22</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/ssh_debian_12.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/ssh_debian_12.png" alt="" width="1102" height="496" class="alignnone size-full wp-image-7276" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/ssh_debian_12.png 1102w, https://blog.remontti.com.br/wp-content/uploads/2023/04/ssh_debian_12-300x135.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/ssh_debian_12-1024x461.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/04/ssh_debian_12-768x346.png 768w" sizes="auto, (max-width: 1102px) 100vw, 1102px" /></a></p>
<p>Se desejar configurar o <a href="https://wiki.debian.org/SourcesList" rel="noopener" target="_blank">repositório non-free e contrib</a>, para isso basta editar o arquivo /etc/apt/sources.list <strong>(Recomendo)</strong></p>
<pre class="remontti-code"># nano /etc/apt/sources.list</pre>
<p>Agora adicione ao final de cada repositório> <strong>contrib non-free</strong> como na imagem:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12_repo.png" data-rel="lightbox-gallery-fPGUteGx" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12_repo.png" alt="" width="1480" height="581" class="alignnone size-full wp-image-7277" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12_repo.png 1480w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12_repo-300x118.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12_repo-1024x402.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/04/debian12_repo-768x301.png 768w" sizes="auto, (max-width: 1480px) 100vw, 1480px" /></a><br />
Saia usando CRTL + X, em seguida atualize as informações do repositório com o comando:</p>
<pre class="remontti-code"># apt update</pre>
<p>Para atualizar (se disponível) os pacotes use:</p>
<pre class="remontti-code"># apt upgrade</pre>
<p>Ao usar o repositório non-free sempre recomendo a instalação dos pacotes: firmware-linux* para reconhecer o máximo dos drives. </p>
<pre class="remontti-code"># apt install firmware-linux firmware-linux-free firmware-linux-nonfree</pre>
<p>Reinicie seu servidor para carregar os novos módulos do kernel</p>
<pre class="remontti-code"># reboot</pre>
<p>Agora que acabou de instalar seu debian que tal dar uma &#8220;tunada&#8221; no bixinho? Então leia: <strong><a href="https://blog.remontti.com.br/5867" rel="noopener" target="_blank">Como melhorar a produtividade no seu Debian após instalação</a></strong></p>
<p>Para ver se seu Debian inicializou sem nenhum erro utilize o comando:</p>
<pre class="remontti-code"># journalctl -b -p err</pre>
<p>Muitos logs foram movidos para o o journal no Debian 12.</p>
<p>Curtiu o conteúdo? Quer me ajudar 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>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/7236">Instalação do Debian 12 Bookworm limpa passo-a-passo</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7236/feed</wfw:commentRss>
			<slash:comments>22</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação do Nginx Proxy Manager</title>
		<link>https://blog.remontti.com.br/6561</link>
					<comments>https://blog.remontti.com.br/6561#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sat, 18 Jun 2022 19:07:54 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[administração web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[autenticação HTTP]]></category>
		<category><![CDATA[cgnat]]></category>
		<category><![CDATA[configuração de rede]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[Debian 12 Bookworm]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[Docker Compose]]></category>
		<category><![CDATA[gerenciamento de certificados]]></category>
		<category><![CDATA[instalação de software]]></category>
		<category><![CDATA[letsencrypt]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[Nginx Proxy Manager]]></category>
		<category><![CDATA[otimização de servidor]]></category>
		<category><![CDATA[proxy reverso]]></category>
		<category><![CDATA[proxy-cache]]></category>
		<category><![CDATA[segurança de aplicação]]></category>
		<category><![CDATA[SSL grátis]]></category>
		<category><![CDATA[tutorial de tecnologia]]></category>
		<category><![CDATA[webserver]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6561</guid>

					<description><![CDATA[<p>O que é o Nginx Proxy Manager? É um sistema que possui uma interface web limpa, eficiente e fácil de configurar, sem precisar saber muito sobre Nginx ou Letsencrypt. Característica &#8211; Interface de administração&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6561">Instalação do Nginx Proxy Manager</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_cover.png" alt="" width="720" height="340" class="alignnone size-full wp-image-6588" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_cover.png 720w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_cover-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_cover-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>O que é o <a href="https://nginxproxymanager.com/guide/#project-goal"><strong>Nginx Proxy Manager</strong></a>?<br />
É um sistema que possui uma interface web limpa, eficiente e fácil de configurar, sem precisar saber muito sobre Nginx ou Letsencrypt.</p>
<p><b>Característica</b><br />
 &#8211; Interface de administração bonita e segura baseada<br />
 &#8211; Crie facilmente domínios de encaminhamento, redirecionamentos, streams e hosts 404 sem saber nada sobre Nginx<br />
 &#8211; SSL grátis usando Let&#8217;s Encrypt ou forneça seus próprios certificados SSL personalizados<br />
 &#8211; Listas de acesso e autenticação HTTP básica para seus hosts<br />
 &#8211; Configuração avançada do Nginx disponível para superusuários<br />
 &#8211; Gerenciamento de usuários, permissões e log de auditoria</p>
<p><strong>Distribuição testadas:</strong><br />
<a href="https://blog.remontti.com.br/7236" rel="noopener" target="_blank">Debian 12 Bookworm</a><br />
<a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank"><del datetime="2024-08-23T13:04:44+00:00">Debian 11 Bullseye</del></a></p>
<p><a href="https://blog.remontti.com.br/5867" rel="noopener" target="_blank">Como melhorar a produtividade no seu Debian após instalação</a> (Recomendado)</p>
<p><strong>Porta Utilizadas</strong><br />
81  &#8211; Porta de administração do Nginx Proxy Manager<br />
80  &#8211; Porta HTTP pública<br />
443 &#8211; Porta HTTP pública</p>
<h4>Configurações de interface de Rede</h4>
<p>Para a configuração da interface de rede vou usar uma configuração <strong>Pointopoint</strong> (Ponto a ponto) assim utilizando de apenas um endereço IP público, você pode (deve) <a href="https://blog.remontti.com.br/5848" rel="noopener" target="_blank">ler este tutorial</a> para conhecer varias possibilidades de configuração de rede pensa em como economizar endereços IPs.</p>
<pre class="remontti-code"># vim /etc/network/interfaces</pre>
<p>No meu exemplo vamos pesar que esse servidor esteja conectado ao RouterOS/Mikrotik ether2 e meu endereço de IP publico será o <em>200.200.200.255</em></p>
<pre class="remontti-code-plain">allow-hotplug enp0s3
iface enp0s3 inet static
        address 200.200.200.255
        pointopoint 192.168.171.171
        netmask 255.255.255.255
        gateway 192.168.171.171
</pre>
<p>Agora no seu RouterOS vamos criar nosso Pointopoint gatewai 192.168.171.171 tendo como network o endereço IP público.</p>
<pre class="remontti-code-plain">RouterOS# /ip address
RouterOS# add address=192.168.171.171 comment=Pointopoint interface=ether2 network=200.200.200.255</pre>
<p>Se você não tem IP publico para colocar em seu servidor, então fixe um endereço IP Privado e redirecione as potas 80,81 e 443 para ele, utilizando seu IP público que está em seu router. Exemplo:</p>
<pre class="remontti-code-plain">allow-hotplug enp0s3
iface enp0s3 inet static
        address 10.10.10.2/24
        gateway 10.10.10.1</pre>
<p>E é clario se você conter endereço IPv6, não deixe de configurar sua placa! Exemplo:</p>
<pre class="remontti-code-plain">iface enp0s3 inet6 static
        pre-up modprobe ipv6
        address 2804:bebe:cafe::2
        netmask 64
        gateway 2804:bebe:cafe::1</pre>
<h4>Instalação Docker</h4>
<p>Iremos instalar os pacotes necessários, bem como adicionar o repositório oficial do Docker</p>
<pre class="remontti-code"># apt install ca-certificates curl gnupg2 apt-transport-https lsb-release
# curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
# echo &quot;deb https://download.docker.com/linux/debian $(lsb_release -cs) stable&quot; &gt; /etc/apt/sources.list.d/docker.list</pre>
<p>Atualize o repositório e instale-o</p>
<pre class="remontti-code"># apt update
# apt install docker-ce docker-ce-cli containerd.io</pre>
<h4>Instalação Docker Compose</h4>
<p>Vamos fazer download do Docker Compose, e adicionar aos binários do nosso servidor como um executável. </p>
<pre class="remontti-code"># curl -L &quot;https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose</pre>
<p>Versão baixada foi a 2.24.5, mas você pode consultar uma mais recente em: <a href="https://github.com/docker/compose/releases/" rel="noopener" target="_blank">https://github.com/docker/compose/releases/</a>, para verificar qual versão instalado use:</p>
<pre class="remontti-code"># docker-compose --version</pre>
<pre class="remontti-code-plain">Docker Compose version v2.24.5</pre>
<h4>Instação Nginx Proxy Manager</h4>
<p>Crie os diretórios quais ficarão todas as configurações:</p>
<pre class="remontti-code"># mkdir /etc/nginx-proxy
# mkdir /etc/nginx-proxy/{data,letsencrypt}</pre>
<p>Crie seu arquivo de composição do Docker com as configuração, para realizar a instalação dos containers do Nginx Proxy Manager e MariaDB com o Docker Compose. (Ajustes as senhas)</p>
<pre class="remontti-code"># vim /etc/nginx-proxy/docker-compose.yml</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain">version: &quot;3&quot;
services:
  app:
    image: &#039;jc21/nginx-proxy-manager:latest&#039;
    restart: unless-stopped
    ports:
      # These ports are in format &lt;host-port&gt;:&lt;container-port&gt;
      - &#039;80:80&#039;       # Porta HTTP pública
      - &#039;443:443&#039;     # Porta HTTPS pública
      - &#039;81:81&#039; # Porta de administracao do Nginx Proxy
      # Adicione qualquer outra porta Stream que você queira expor, ex
      # - &#039;21:21&#039; # FTP
    environment:
      DB_MYSQL_HOST: &quot;db&quot;
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: &quot;nginxproxy&quot;
      DB_MYSQL_PASSWORD: &quot;S3NHA_NGINX_PR0XY&quot;
      DB_MYSQL_NAME: &quot;nginxproxy&quot;
      # Remova o comentário se você não tem o IPv6 em seu host
      # DISABLE_IPV6: &#039;true&#039;
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db

  db:
    image: &#039;jc21/mariadb-aria:latest&#039;
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: &#039;S3NHA_D3_R00T&#039;
      MYSQL_DATABASE: &#039;nginxproxy&#039;
      MYSQL_USER: &#039;nginxproxy&#039;
      MYSQL_PASSWORD: &#039;S3NHA_NGINX_PR0XY&#039;
    volumes:
      - ./mysql:/var/lib/mysql</pre>
<p>Execute o comando Docker Compose</p>
<pre class="remontti-code"># cd /etc/nginx-proxy
# docker-compose up -d</pre>
<p>Aguarde finalizar&#8230; em seguida visualize se os containers que foram criados</p>
<pre class="remontti-code"># docker ps -a</pre>
<pre class="remontti-code-plain">
CONTAINER ID   IMAGE                             COMMAND             CREATED          STATUS         PORTS                                                                                  NAMES
6b796a07af22   jc21/nginx-proxy-manager:latest   &quot;/init&quot;             9 seconds ago    Up 7 seconds   0.0.0.0:80-81-&gt;80-81/tcp, :::80-81-&gt;80-81/tcp, 0.0.0.0:443-&gt;443/tcp, :::443-&gt;443/tcp   nginx-proxy-app-1
4c93d3b8a544   jc21/mariadb-aria:latest          &quot;/scripts/run.sh&quot;   13 seconds ago   Up 8 seconds   3306/tcp                                                                               nginx-proxy-db-1
</pre>
<p>Abra em navegador <strong>http://IP_SERVIDOR/</strong> se tudo ocorreu bem você verá:<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_1.png" alt="" width="1274" height="666" class="alignnone size-full wp-image-6566" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_1.png 1274w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_1-300x157.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_1-1024x535.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_1-768x401.png 768w" sizes="auto, (max-width: 1274px) 100vw, 1274px" /></p>
<p>Agora abra na porta 81 <strong>http://IP_SERVIDOR:81/</strong> e entre com:</p>
<pre class="remontti-code-plain">Email: admin@example.com 
Password: changeme</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_2a.png" alt="" width="1255" height="661" class="alignnone size-full wp-image-6576" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_2a.png 1255w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_2a-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_2a-1024x539.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_2a-768x405.png 768w" sizes="auto, (max-width: 1255px) 100vw, 1255px" /><br />
Ao entrar pela primeira vez um formulário com informações será exibido para você alterar seus dados, <strong>altere seus e-mail e senha</strong>.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_3_a.png" alt="" width="1257" height="664" class="alignnone size-full wp-image-6575" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_3_a.png 1257w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_3_a-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_3_a-1024x541.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_3_a-768x406.png 768w" sizes="auto, (max-width: 1257px) 100vw, 1257px" /></p>
<h4>Configurações de DNS Autoritativa</h4>
<p>Para que possamos encaminhar os acessos iremos necessitar configurar um subdomínios para cada situação em nosso servidor <a href="https://blog.remontti.com.br/5958" rel="noopener" target="_blank">DNS autoritativo</a>. </p>
<p>Vamos criar um cenário fictício para ilustrar melhor. Temos 1 clientes recebendo IPs privados da classe de um CGNAT, e o mesmo solicita um redirecionamento de portas para seu DVR. O cliente recebe o endereço IP privado 100.64.0.71 (Fixado) seu DVR esta na porta 80 na rede local 192.168.0.7. Para cada situação irei criar um novo subdomínio, exemplo &#8220;dvrudi&#8221; no servidor DNS autoritativo apontando para o IP Público do seu servidor Nginx Proxy, assim eu acesso <em>&#8220;dvrudi.remontti.com.br&#8221;</em>. Agora ao acessar o roteato e criar o redirecionamento provavelmente não iremos poder usar a porta 80, pois ela já é a porta de acesso do roteador 100.64.0.71, e é bem possível que você tenha fechado ela em seu firewall também para se proteger de ataques, neste caso use outra porta exemplos 60080 para fazer o direcionamento para a porta 80 do DVR, o cliente nem precisa saber desta porta 60080 ela é a penas a porta de entrada do Nginx Proxy. Agora volte ao Admin do NPM, no menu <strong>Hosts</strong> >> <strong>Proxy Hosts</strong> >> <strong>Add Proxy Host</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_4_a.png" alt="" width="1256" height="593" class="alignnone size-full wp-image-6571" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_4_a.png 1256w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_4_a-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_4_a-1024x483.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_4_a-768x363.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_4_a-520x245.png 520w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_4_a-720x340.png 720w" sizes="auto, (max-width: 1256px) 100vw, 1256px" /></p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_6.png" alt="" width="1257" height="449" class="alignnone size-full wp-image-6577" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_6.png 1257w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_6-300x107.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_6-1024x366.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_6-768x274.png 768w" sizes="auto, (max-width: 1257px) 100vw, 1257px" /></p>
<p>Se desejar pode ativar certificado grátis com Lets Encrypt.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_5_a.png" alt="" width="1253" height="595" class="alignnone size-full wp-image-6572" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_5_a.png 1253w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_5_a-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_5_a-1024x486.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager_5_a-768x365.png 768w" sizes="auto, (max-width: 1253px) 100vw, 1253px" /></p>
<p>Agora ao acessar <em>&#8220;dvrudi.remontti.com.br&#8221;</em> ele estará acessando diretamente o DVR. #clientefeliz</p>
<p>Legal não? Agora você pode ter um painel administrativo para redirecionamento de serviços web, no exemplo sitei o caso de CGNAT, mas você pode usar para qualquer outra situação, bem como até apontar para um subdiretório, e restringir o acesso do mesmo, sabe esses ERP <del datetime="2022-06-18T18:45:32+00:00">porco</del> que você acessar com /admin, daria para restringir. Bom o painel do NPM é bem intuitivo, para quem já conhece o Nginx sabe das suas enumeras possibilidades vai achar um doce.</p>
<h4>Atualizando do NPM</h4>
<pre class="remontti-code"># cd /etc/nginx-proxy/
# docker-compose down
# docker-compose pull
# docker-compose up -d</pre>
<p><strong>Gostou? Se quiser apoiar o blog e fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/nginx_proxy_manager.png" alt="" width="261" height="90" class="alignnone size-full wp-image-6583" /><br />
<strong>Fonte: </strong><br />
<a href="https://nginxproxymanager.com/guide/" rel="noopener" target="_blank">https://nginxproxymanager.com/guide/</a><br />
<a href="https://github.com/NginxProxyManager/nginx-proxy-manager" rel="noopener" target="_blank">https://github.com/NginxProxyManager/nginx-proxy-manager</a></p>
<p>O post <a href="https://blog.remontti.com.br/6561">Instalação do Nginx Proxy Manager</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6561/feed</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação do SpeedTest (OoklaServer) no Debian 11/12 gerenciado pelo systemd</title>
		<link>https://blog.remontti.com.br/6051</link>
					<comments>https://blog.remontti.com.br/6051#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 05 Nov 2021 21:38:17 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[banda]]></category>
		<category><![CDATA[bookworm]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[Debian 12 Bookworm]]></category>
		<category><![CDATA[debina 11]]></category>
		<category><![CDATA[medidor]]></category>
		<category><![CDATA[ooklaserver]]></category>
		<category><![CDATA[speedtest]]></category>
		<category><![CDATA[testador]]></category>
		<category><![CDATA[teste]]></category>
		<category><![CDATA[velocidade]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6051</guid>

					<description><![CDATA[<p>Neste tutorial iremos aprender a instalar o SpeedTest Server, porém vamos gerenciar o serviço dele pelo systemd, o que eu acho que já deveriam ter feito, ou a ookla já poderia disponibilizar isso via&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6051">Instalação do SpeedTest (OoklaServer) no Debian 11/12 gerenciado pelo systemd</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/11/speedtest_debian_11.png" alt="" width="750" height="375" class="alignnone size-full wp-image-6064" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/11/speedtest_debian_11.png 750w, https://blog.remontti.com.br/wp-content/uploads/2021/11/speedtest_debian_11-300x150.png 300w" sizes="auto, (max-width: 750px) 100vw, 750px" /><br />
Neste tutorial iremos aprender a instalar o <em><a href="http://speedtest.net" rel="noopener" target="_blank">SpeedTest</a></em> Server, porém vamos gerenciar o serviço dele pelo systemd, o que eu acho que já deveriam ter feito, ou a ookla já poderia disponibilizar isso via repositório. #FicaDicaOokla </p>
<h4>Leia</h4>
<p>&#8211; <strong><a href="https://support.ookla.com/hc/en-us/articles/234578628-Speedtest-Server-Requirements" rel="noopener" target="_blank">Requisitos do hardware do servidor Speedtest</a></strong>.<br />
&#8211; <strong><a href="https://support.ookla.com/hc/en-us/articles/360060609971-Speedtest-Server-Network-Acceptance-Policy" rel="noopener" target="_blank">Política de aceitação do servidor Speedtest</a></strong><br />
&#8211; <a href="https://support.ookla.com/hc/en-us/categories/204419868-Speedtest-Servers" rel="noopener" target="_blank"><strong>Toda Documentação</strong></a>.</p>
<h4>Configuração do DNS</h4>
<p>No exemplo vou usar o subdomínio teste, no domínio remontti.com.br `teste.remontti.com.br`, logo é necessário configurar seu subdomínio &#8220;<strong>teste</strong>&#8221; <a href="https://blog.remontti.com.br/5958" rel="noopener noreferrer" target="_blank">em seu DNS Server</a>, <font color="red"><strong>NÃO USE subdomínio chamado speedtest</strong></font> pois você terá possivelmente seu pedido negado. Exemplo de entradas no DNS para IPv4 (A) e IPv6 (AAAA)</p>
<pre class="remontti-code-plain">[...]

teste       A       192.168.0.2
            AAAA    2001:db8:bebe:cafe::2

[...]</pre>
<h4>Distribuição testadas</h4>
<p><a href="https://blog.remontti.com.br/7236" rel="noopener" target="_blank"><strong>Debian 12 Bookworm</strong></a><br />
<a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank"><strong>Debian 11 Bullseye</strong></a></p>
<p><strong>Pacotes necessários, não esqueça de virar root de forma correta `su -`</strong></p>
<pre class="remontti-code"># su -
# apt install vim wget unzip net-tools psmisc</pre>
<p>Faça alguns ajustes de kernel para melhorar a performace do servidor:</p>
<pre class="remontti-code"># vim /etc/sysctl.conf</pre>
<p>Adicione ao final:</p>
<pre class="remontti-code-plain">
# Kernel deve tentar manter o máximo possível de dados em memória principal 
vm.swappiness = 5

# Evitar que o sistema fique sobrecarregado com muitos dados sujos na memória.
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5

# Aumentar o número máximo de conexões simultâneas
net.core.somaxconn = 65535

# Aumentar o tamanho máximo do buffer de recepção e transmissão de rede
net.ipv4.tcp_mem = 4096 87380 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# Melhorar o desempenho da conexão e a evitar congestionamentos
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_moderate_rcvbuf = 1
net.ipv4.tcp_timestamps = 1

# Reduzir o tempo limite de conexão TCP
net.ipv4.tcp_fin_timeout = 15

# Ativar o escalonamento de fila de recepção de pacotes de rede
net.core.netdev_max_backlog = 8192

# Aumentar o número máximo de portas locais que podem ser usadas
net.ipv4.ip_local_port_range = 1024 65535

# Define o controle de saída de pacotes como &quot;fq&quot; para melhorar a distribuição de dados.
net.core.default_qdisc=fq

# Ativa o algoritmo BBR para melhorar a velocidade e evitar congestionamento de rede.
net.ipv4.tcp_congestion_control=bbr

</pre>
<p>Carregue para o kernel as novas alterações</p>
<pre class="remontti-code"># sysctl -p</pre>
<p>Módulos do kernel</p>
<pre class="remontti-code"># modprobe -a tcp_illinois
# echo &quot;tcp_illinois&quot; &gt;&gt; /etc/modules</pre>
<p>TCP Illinois é um algoritmo de controle de congestionamento que utiliza uma combinação de técnicas de controle de congestionamento baseadas em perda e atraso para melhorar o desempenho em redes de alta perda. Ele foi projetado para funcionar bem em ambientes móveis sem fio, onde a perda de pacotes é frequentemente causada por condições de RF em mudança.</p>
<pre class="remontti-code"># modprobe -a tcp_westwood
# echo &quot;tcp_westwood&quot; &gt;&gt; /etc/modules</pre>
<p>TCP Westwood é um algoritmo de controle de congestionamento que utiliza medidas de janela e de banda para detectar congestionamentos em vez de depender da detecção de perda de pacotes, que pode ser menos confiável em ambientes sem fio. Ele foi projetado especificamente para ambientes móveis sem fio e pode ser uma boa opção para melhorar o desempenho em redes sem fio com alta variação de taxa de perda de pacotes.</p>
<pre class="remontti-code"># modprobe -a tcp_htcp
# echo &quot;tcp_htcp&quot; &gt;&gt; /etc/modules</pre>
<p>O TCP-HTCP (Highspeed TCP for large congestion windows) é um algoritmo de controle de congestionamento do protocolo TCP que foi projetado para melhorar o desempenho em conexões de alta velocidade com janelas de congestionamento grandes.</p>
<p>Vamos criar o diretório <strong>/usr/local/src/ooklaserver</strong> onde ira ficarnossa aplicação OoklaServer.</p>
<pre class="remontti-code"># mkdir /usr/local/src/ooklaserver</pre>
<p>Vamos baixar nosso script de instalação em /usr/local/src/ooklaserver e executar a instalação.</p>
<pre class="remontti-code"># cd /usr/local/src/ooklaserver
# wget https://install.speedtest.net/ooklaserver/ooklaserver.sh
# chmod +x ooklaserver.sh
# ./ooklaserver.sh install</pre>
<p><em>Please confirm (y/n) ></em> <strong>y</strong></p>
<pre class="remontti-code-plain">
Server Platform is linux-x86_64-static-musl
This will install the Ookla server for linux-x86_64-static-musl to the current folder. Please confirm (y/n) &gt; y
Checking Directory Structure
Downloading Server Files
--2024-11-12 16:55:44--  https://install.speedtest.net/ooklaserver/stable/OoklaServer-linux-x86_64-static-musl.tgz
Resolvendo install.speedtest.net (install.speedtest.net)... 2a04:4e42::731, 2a04:4e42:200::731, 2a04:4e42:400::731, ...
Conectando-se a install.speedtest.net (install.speedtest.net)|2a04:4e42::731|:443... conectado.
A requisição HTTP foi enviada, aguardando resposta... 200 OK
Tamanho: 4638658 (4,4M) [application/gzip]
Salvando em: “OoklaServer-linux-x86_64-static-musl.tgz”

OoklaServer-linux-x86_64-static-mus 100%[================================================================&gt;]   4,42M  21,9MB/s    em 0,2s    

2024-11-12 16:55:46 (21,9 MB/s) - “OoklaServer-linux-x86_64-static-musl.tgz” salvo [4638658/4638658]

Extracting Server Files
OoklaServer
OoklaServer.properties.default
Stopping OoklaServer Daemon (5419)
Starting OoklaServer
Daemon Started (5464)
NOTE:

We strongly recommend following instructions at

   https://support.ookla.com/hc/en-us/articles/234578588-Linux-Startup-Script-Options

to ensure your daemon starts automatically when the system reboots

</pre>
<p>Neste momento o servidor ookla já iniciou, acesse em seu navegado <strong>http://sub.dominio:8080</strong> e verifique se o mesmo esta rodando> <strong>OoklaServer &#8211; It worked!</strong></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-it-worked.png" data-rel="lightbox-gallery-RUukcDaI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-it-worked-300x202.png" alt="" width="300" height="202" class="alignnone size-medium wp-image-3221" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-it-worked-300x202.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-it-worked-768x518.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-it-worked.png 829w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Pare o serviço ooklaserver</p>
<pre class="remontti-code"># ./ooklaserver.sh stop</pre>
<p>Ou (se seu tempo é curto)</p>
<pre class="remontti-code"># killall -9 OoklaServer</pre>
<pre class="remontti-code-plain">Stopping OoklaServer Daemon (715) . . . . . . . . . . . . . . . . . . . .
Additional OoklaServer processes running; stopping
Stopping OoklaServer Daemon (715) . . . . . . . . . . . . . . . . . . . .
Stopping OoklaServer Daemon (858) .
Stopping OoklaServer Daemon (859) .
Stopping OoklaServer Daemon (879) . . . . . . . . . . . . . . . .
Lingering OoklaServer processes running; killing (715
964
965)</pre>
<p>Edite o arquivo de configuração OoklaServer</p>
<pre class="remontti-code"># vim /usr/local/src/ooklaserver/OoklaServer.properties</pre>
<p>A partir de 2023 IPv6 virou obrigatório, descomente (remova o # da frente) a linha a baixo deixando <strong>true</strong>.</p>
<pre class="remontti-code-plain">OoklaServer.useIPv6 = true</pre>
<p>Descomente a linha e inclua todos seus subidominios para seu domínio ex `*.remontti.com.br`</p>
<pre class="remontti-code-plain">OoklaServer.allowedDomains = *.ookla.com, *.speedtest.net, *.remontti.com.br</pre>
<p>Ativa o filtro que bloqueia agentes de usuário conhecidos como indesejados, ajudando a reduzir tráfego de fontes não oficiais.</p>
<pre class="remontti-code-plain">OoklaServer.userAgentFilterEnabled = true</pre>
<p>Define o número máximo de conexões simultâneas permitidas por endereço IP; o padrão é 50.</p>
<pre class="remontti-code-plain">OoklaServer.ipTracking.maxConnPerIp = 5</pre>
<p>Estabelece o número máximo de conexões permitidas por IP dentro de cada intervalo de tempo (bucket); o padrão é 10.</p>
<pre class="remontti-code-plain">OoklaServer.ipTracking.maxConnPerBucketPerIp = 10</pre>
<p>Define a capacidade máxima do pool de threads de trabalho; o padrão é 30.000.</p>
<pre class="remontti-code-plain">OoklaServer.workerThreadPool.capacity = 30000</pre>
<p>Especifica o tamanho máximo de quadro (frame) aceito em conexões WebSocket, em bytes; o padrão é 5 MB (5.242.880 bytes).</p>
<pre class="remontti-code-plain">OoklaServer.websocket.frameSizeLimitBytes = 5242880</pre>
<p>Define o tempo máximo, em minutos, para manter estatísticas de IPs inativos após a última conexão registrada; o padrão é 35 minutos.</p>
<pre class="remontti-code-plain">OoklaServer.ipTracking.maxIdleAgeMinutes = 35</pre>
<p>Se você desejar visualizar os logs descomente em &#8220;# Log to files&#8221;. Um arquivo em <strong>/usr/local/src/ooklaserver/ooklaserver.log</strong> será criado.</p>
<pre class="remontti-code-plain"># Log to files
#
logging.loggers.app.name = Application
logging.loggers.app.channel.class = FileChannel
logging.loggers.app.channel.pattern = %Y-%m-%d %H:%M:%S [%P - %I] [%p] %t
logging.loggers.app.channel.path = ${application.dir}/ooklaserver.log
logging.loggers.app.level = information</pre>
<p>Sobreecreva OoklaServer.properties.default com o OoklaServer.properties, para em futuras atualizações (Ocorre automaticamente) ele use como base as suas configurações.</p>
<pre class="remontti-code"># cp /usr/local/src/ooklaserver/OoklaServer.properties /usr/local/src/ooklaserver/OoklaServer.properties.default</pre>
<p>Para que o Ooklaserver seja tratado como um serviço vamos configurar-lo no systemd.</p>
<pre class="remontti-code"># vim /lib/systemd/system/ooklaserver.service</pre>
<pre class="remontti-code-plain">[Unit]
Description=OoklaServer-SpeedTest 
After=network.target

[Service]
User=root
Group=root
Type=simple
RemainAfterExit=yes

WorkingDirectory=/usr/local/src/ooklaserver
ExecStart=/usr/local/src/ooklaserver/ooklaserver.sh start
ExecReload=/usr/local/src/ooklaserver/ooklaserver.sh restart
#ExecStop=/usr/local/src/ooklaserver/ooklaserver.sh stop
ExecStop=/usr/bin/killall -9 OoklaServer

TimeoutStartSec=60
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target
Alias=speedtest.service
</pre>
<p>Recarrege o daemon</p>
<pre class="remontti-code"># systemctl daemon-reload</pre>
<p>Verifique o status, nosso serviço ira estar <strong>disabled</strong></p>
<pre class="remontti-code"># systemctl status ooklaserver</pre>
<pre class="remontti-code-plain">● ooklaserver.service - OoklaServer-SpeedTest
     Loaded: loaded (/lib/systemd/system/ooklaserver.service; disabled; vendor preset: enabled)
     Active: inactive (dead)</pre>
<p>Vamos deixa-lo enable para subir com o boot do sistema.</p>
<pre class="remontti-code"># systemctl enable ooklaserver</pre>
<pre class="remontti-code-plain">Created symlink /etc/systemd/system/speedtest.service → /lib/systemd/system/ooklaserver.service.
Created symlink /etc/systemd/system/multi-user.target.wants/ooklaserver.service → /lib/systemd/system/ooklaserver.service.</pre>
<p>Verifique se ficou <strong>enabled</strong></p>
<pre class="remontti-code">#  systemctl status ooklaserver</pre>
<pre class="remontti-code-plain">● ooklaserver.service - OoklaServer-SpeedTest
     Loaded: loaded (/lib/systemd/system/ooklaserver.service; enabled; vendor preset: enabled)
     Active: inactive (dead)</pre>
<p>Inicie o serviço e verifique seu status se o mesmo ficou <strong>active</strong>.</p>
<pre class="remontti-code"># systemctl start ooklaserver
# systemctl status ooklaserver</pre>
<pre class="remontti-code-plain">● ooklaserver.service - OoklaServer-SpeedTest
     Loaded: loaded (/lib/systemd/system/ooklaserver.service; enabled; vendor preset: enabled)
     Active: active (exited) since Fri 2021-11-05 15:31:58 -03; 1s ago
    Process: 2408 ExecStart=/usr/local/src/ooklaserver/ooklaserver.sh start (code=exited, status=0/SUCCESS)
   Main PID: 2408 (code=exited, status=0/SUCCESS)
      Tasks: 47 (limit: 2312)
     Memory: 10.5M
        CPU: 185ms
     CGroup: /system.slice/ooklaserver.service
             ├─2416 ./OoklaServer --daemon --pidfile=/usr/local/src/ooklaserver/OoklaServer.pid
             └─2420 /usr/local/src/ooklaserver/OoklaServer --ward --parent-pidfile=OoklaServer.pid --server-id=d907db80a&gt;

nov 05 15:31:58 deb11 systemd[1]: Started OoklaServer-SpeedTest.
nov 05 15:31:59 deb11 ooklaserver.sh[2408]: Starting OoklaServer
nov 05 15:31:59 deb11 ooklaserver.sh[2408]: Daemon Started (2416)</pre>
<p>Se desejar reinicie o servidor para ver se o serviço ooklaserver carregou no boot!</p>
<pre class="remontti-code"># reboot</pre>
<p>Ao voltar verifique se o mesmo iniciou.</p>
<pre class="remontti-code"># systemctl status ooklaserver</pre>
<pre class="remontti-code-plain">● ooklaserver.service - OoklaServer-SpeedTest
     Loaded: loaded (/lib/systemd/system/ooklaserver.service; enabled; vendor preset: enabled)
     Active: active (exited) since Fri 2021-11-05 15:34:19 -03; 22s ago
    Process: 332 ExecStart=/usr/local/src/ooklaserver/ooklaserver.sh start (code=exited, status=0/SUCCESS)
   Main PID: 332 (code=exited, status=0/SUCCESS)
      Tasks: 50 (limit: 2312)
     Memory: 18.3M
        CPU: 157ms
     CGroup: /system.slice/ooklaserver.service
             ├─390 ./OoklaServer --daemon --pidfile=/usr/local/src/ooklaserver/OoklaServer.pid
             └─404 /usr/local/src/ooklaserver/OoklaServer --ward --parent-pidfile=OoklaServer.pid --server-id=da57142421&gt;

nov 05 15:34:19 deb11 systemd[1]: Started OoklaServer-SpeedTest.
nov 05 15:34:20 deb11 ooklaserver.sh[332]: Starting OoklaServer
nov 05 15:34:20 deb11 ooklaserver.sh[332]: Daemon Started (390)</pre>
<p>Certifique-se acessando em seu navegador <strong>http://sub.dominio:8080</strong>.</p>
<p>O serviço ooklaserver tem um alias com o nome <strong>speedtest</strong>, então se quiser usar `systemctl status speedtest` também funiona. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<pre class="remontti-code"># systemctl status speedtest</pre>
<p>Para verificar a versão use:</p>
<pre class="remontti-code">#  /usr/local/src/ooklaserver/OoklaServer -v</pre>
<p>Se você realizar o teste agora <a href="https://www.ookla.com/pt/host-tester" rel="noopener" target="_blank">https://www.ookla.com/pt/host-tester</a> você encontrará <strong>1 erros</strong>:<br />
É que você não tem certificado válido, a OoklaServer fala que você pode usar o certifica automatico que ela ira gerar, ao fazer o registro. <em>Nota: Este processo automatizado só começa depois que o servidor foi registrado e revisado por Ookla </em>. Você pode <a href="https://support.ookla.com/hc/en-us/articles/360001087752-How-do-I-enable-HTTPS-TLS-support-" rel="noopener" target="_blank">ler aqui mais sobre</a>.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/11/speedtest_erro_certificado.png" alt="" width="1030" height="770" class="alignnone size-full wp-image-6054" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/11/speedtest_erro_certificado.png 1030w, https://blog.remontti.com.br/wp-content/uploads/2021/11/speedtest_erro_certificado-300x224.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/11/speedtest_erro_certificado-1024x766.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/11/speedtest_erro_certificado-768x574.png 768w" sizes="auto, (max-width: 1030px) 100vw, 1030px" /></p>
<h4>Solução para o certificado</h4>
<p>Vamos instalar o <a href="https://certbot.eff.org/" rel="noopener" target="_blank"><strong>Certbot</strong></a>, que irá gerar os certificados com o  Let’s Encrypt.</p>
<pre class="remontti-code"># apt install certbot</pre>
<p>Geramos o certificado para teste.remontti.com.br, lembrando que seu servidor DNS deve estar apontando para o IP Publivo do seu servidor para poder gerar o certificado sem erro.</p>
<pre class="remontti-code"># certbot certonly --standalone</pre>
<p><strong>Reponda</strong>: email (null@remontti.com.br), Y, N, Seu Domínio</p>
<pre class="remontti-code-plain">Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices)
 (Enter &#039;c&#039; to cancel): null@remontti.com.br                            &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y                                                           &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let&#039;s Encrypt project and the non-profit organization that
develops Certbot? We&#039;d like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N                                                           &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
Account registered.
Please enter in your domain name(s) (comma and/or space separated)  (Enter &#039;c&#039;
to cancel): teste.remontti.com.br                                       &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
Requesting a certificate for teste.remontti.com.br
Performing the following challenges:
http-01 challenge for teste.remontti.com.br
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/teste.remontti.com.br/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/teste.remontti.com.br/privkey.pem
   Your certificate will expire on 2022-02-03. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again. To non-interactively renew *all* of your
   certificates, run &quot;certbot renew&quot;
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let&#039;s Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le</pre>
<p>Os arquivos do certificado foram criados em <strong>/etc/letsencrypt/live/SUB.DOMINIO.XXX.XX/</strong> com validade de <strong>90 dias</strong>.</p>
<p>Edite o arquivo de configuração OoklaServer, para usar o nosso certificado gerado.</p>
<pre class="remontti-code"># vim /usr/local/src/ooklaserver/OoklaServer.properties</pre>
<p>Localize <strong>openSSL.server.certificateFile</strong> e <strong>openSSL.server.privateKeyFile</strong></p>
<pre class="remontti-code-plain"># openSSL.server.certificateFile = cert.pem
# openSSL.server.privateKeyFile = key.pem</pre>
<p>Descomente as linhas e e adicione o caminho para os seus.</p>
<pre class="remontti-code-plain">openSSL.server.certificateFile = /etc/letsencrypt/live/SUB.DOMINIO.XXX.XX/fullchain.pem
openSSL.server.privateKeyFile = /etc/letsencrypt/live/SUB.DOMINIO.XXX.XX/privkey.pem</pre>
<p>Sobreecreva OoklaServer.properties.default com o OoklaServer.properties novamente para em futuras atualizações.</p>
<pre class="remontti-code"># cp /usr/local/src/ooklaserver/OoklaServer.properties /usr/local/src/ooklaserver/OoklaServer.properties.default</pre>
<p>Reinicie o OoklaServer. (Pode levar ate 2min, tenha paciência)</p>
<pre class="remontti-code"># systemctl  restart ooklaserver.service</pre>
<p>Agora acesse com HTTPS em seu navegador: <strong>https://sub.dominio:8080</strong>, e o certificado agora deve ser válido.</p>
<p>Realizando os testes novamente em <a href="https://www.ookla.com/pt/host-tester" rel="noopener" target="_blank">https://www.ookla.com/pt/host-tester</a>, o erro de certificado estará resolvido.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/11/speedtest_sem_erro_certificado.png" alt="" width="1070" height="781" class="alignnone size-full wp-image-6057" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/11/speedtest_sem_erro_certificado.png 1070w, https://blog.remontti.com.br/wp-content/uploads/2021/11/speedtest_sem_erro_certificado-300x219.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/11/speedtest_sem_erro_certificado-1024x747.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/11/speedtest_sem_erro_certificado-768x561.png 768w" sizes="auto, (max-width: 1070px) 100vw, 1070px" /></p>
<p>Mais ao final deixarei um script para renovação automática do certificado, pois o mesmo é valido apenas por 90 dias.</p>
<h4>Cadastro Ookla</h4>
<p>Hora de criar sua conta no ookla.com e fazer a solicitação para virar um host! <a href="https://account.ookla.com/register/servers" rel="noopener" target="_blank">https://account.ookla.com/register/servers</a>, se você já tem acesse: <a href="https://account.ookla.com/servers/create" rel="noopener" target="_blank">https://account.ookla.com/servers/create</a><br />
Com sua conta criada e validada no e-mail de verificação logue: <a href="https://account.ookla.com/" rel="noopener" target="_blank">https://account.ookla.com/</a>, clique em <strong>Go To Servers</strong>, e aceite os Termos. <strong>Add Server</strong> preencha com os seus dados e do servidor.</p>
<p>Agora basta aguardar, pode levar alguns dias para aprovação, você receberá um e-mail lhe avisado (se não for aprovado eles lhe dirão porque). Boa sorte!</p>
<h4>Renovar o certificado automaticamente</h4>
<p>Para evitar que o certificado expire faremos um script colocando o certbot para renovar uma vez ao mês pelo cron do servidor.</p>
<pre class="remontti-code"># vim /usr/local/src/ooklaserver/renova-certificado</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain">#!/bin/bash
# Renova o certificado
/usr/bin/certbot renew -q
# Aguarda o certificado renovar
sleep 30
# Reinicie o OoklaServer
/usr/bin/systemctl restart ooklaserver
</pre>
<p>De permissão para execução e adicione ao cron, para que ele rode o script toda a meia noite do dia 1º de cada mês.</p>
<pre class="remontti-code"># chmod +x /usr/local/src/ooklaserver/renova-certificado
# echo &#039;00 00   1 * *   root    /usr/local/src/ooklaserver/renova-certificado&#039; &gt;&gt; /etc/crontab</pre>
<p>Verifique se a última linha está nosso script.</p>
<pre class="remontti-code"># cat /etc/crontab</pre>
<pre class="remontti-code-plain"># /etc/crontab: system-wide crontab
# Unlike any other crontab you don&#039;t have to run the `crontab&#039;
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )
#
00 00   1 * *   root    /usr/local/src/ooklaserver/renova-certificado</pre>
<p>Reinici o cron para ele carregar a nova rotina.</p>
<pre class="remontti-code"># systemctl restart cron</pre>
<p>Se o certificado por venturar expirar e o script não renovar, basta você rodar na mão:</p>
<pre class="remontti-code"># certbot renew 
# systemctl restart ooklaserver</pre>
<h5>Parabéns seu servidor está pronto!</h5>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/11/rick-and-morthy-dance.gif" alt="" width="220" height="422" class="alignnone size-full wp-image-6062" /></p>
<h2>Atualização</h2>
<p>Para verificar a versão atual, execute o comando:</p>
<pre class="remontti-code"># /usr/local/src/ooklaserver/OoklaServer -v</pre>
<p>Hoje, dia 12/11/2024, a versão em uso é:<br />
<strong><em>2.11.1.2 2024-02-13.1456.91c4f93</em></strong></p>
<p>Para realizar a atualização, acesse o diretório e interrompa o serviço.</p>
<pre class="remontti-code"># cd /usr/local/src/ooklaserver
# ./ooklaserver.sh stop</pre>
<p>Remova o script de instalação e faça o download novamente:</p>
<pre class="remontti-code"># rm ooklaserver.sh
# wget https://install.speedtest.net/ooklaserver/ooklaserver.sh</pre>
<p>Dê permissão de execução e execute a instalação:</p>
<pre class="remontti-code"># chmod a+x ooklaserver.sh
# ./ooklaserver.sh install</pre>
<p>Pare novamente o serviço e inicie-o pelo systemd:</p>
<pre class="remontti-code"># ./ooklaserver.sh stop
# systemctl restart ooklaserver</pre>
<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><br />
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>O post <a href="https://blog.remontti.com.br/6051">Instalação do SpeedTest (OoklaServer) no Debian 11/12 gerenciado pelo systemd</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6051/feed</wfw:commentRss>
			<slash:comments>52</slash:comments>
		
		
			</item>
		<item>
		<title>Servidor DNS Bind9 &#8211; Recursivo + Autoritativo DNSSEC + Reverso + RPZ + Fail2ban + nftables + Zabbix no Debian 11/12</title>
		<link>https://blog.remontti.com.br/5958</link>
					<comments>https://blog.remontti.com.br/5958#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 26 Oct 2021 21:28:21 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Autoritativo]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[bind9]]></category>
		<category><![CDATA[bookworm]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[Debian 12]]></category>
		<category><![CDATA[Debian 12 Bookworm]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[Reverso]]></category>
		<category><![CDATA[rpz]]></category>
		<category><![CDATA[zabbix]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5958</guid>

					<description><![CDATA[<p>BIND (Berkeley Internet Name Domain ou, como chamado previamente, Berkeley Internet Name Daemon) é o servidor para o protocolo DNS mais utilizado na Internet, especialmente em sistemas do tipo Unix, onde ele pode ser&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5958">Servidor DNS Bind9 &#8211; Recursivo + Autoritativo DNSSEC + Reverso + RPZ + Fail2ban + nftables + Zabbix no Debian 11/12</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p> <img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/bind9.16_debian_11_bullseye.png" alt="" width="750" height="375" class="alignnone size-full wp-image-5980" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/bind9.16_debian_11_bullseye.png 750w, https://blog.remontti.com.br/wp-content/uploads/2021/10/bind9.16_debian_11_bullseye-300x150.png 300w" sizes="auto, (max-width: 750px) 100vw, 750px" /><br />
<a href="https://pt.wikipedia.org/wiki/BIND" rel="noopener noreferrer" target="_blank">BIND</a> (Berkeley Internet Name Domain ou, como chamado previamente, Berkeley Internet Name Daemon) é o servidor para o protocolo DNS mais utilizado na Internet, especialmente em sistemas do tipo Unix, onde ele pode ser considerado um padrão de fato.</p>
<p>Ante de iniciar a instalação é preciso saber como funciona um DNS:</p>
<p><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/ACGuo26MswI" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/epWv0-eqRMw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p><strong>DNS Recursivo</strong><br />
O DNS recursivo é responsável pela resolução de nomes, começando sempre com consultas recursivas nos servidores raízes. Para melhorar a eficiência, reduzir o tráfego DNS na Internet e aumentar o desempenho em aplicativos de usuário final, utilizamos o cache de DNS, armazenando resultados das consulta DNS por um período de tempo determinado na configuração (tempo de vida determinado pelo autoritativo do domínio consultado).</p>
<p><strong>DNS Autoritativo</strong><br />
É o serviço DNS que possui autoridade sob um domínio. Assim, como o servidor ns1.remontti.com.br é o DNS autoritativo de meu domínio remontti.com.br, é ele que sempre vai responder qualquer subdomínio ou “hosts” (por exemplo: blog.remontti.com.br).<br />
É nesse servidor que você vai apontar nas configurações de um domínio registrado no registro.br, por exemplo.</p>
<p><strong>DNS Reverso</strong><br />
DNS atua resolvendo o nome do domínio/subdomínio para um endereço IP correspondente. Já o DNS Reverso, como o próprio nome diz, resolve o endereço IP para o nome de domínio associado ao host. Ou seja, quando temos disponível o endereço IP de um host e não sabemos o endereço do domínio (nome dado à máquina ou outro equipamento que acesse uma rede), tentamos resolver o endereço IP através do DNS reverso que procura qual nome de domínio está associado aquele endereço.<br />
Os servidores que utilizam o DNS Reverso conseguem verificar a autenticidade de endereços, verificando se o endereço IP atual corresponde ao endereço IP informado pelo servidor DNS.<br />
Isto evita que alguém utilize um domínio que não lhe pertence para enviar spam, por exemplo (por isso que ele é importante para servidores de e-mail).</p>
<p><strong>Correção dos dados de geolocalização</strong><br />
É muito importante que sua geolocalização estaja correta no maxmind.com, verifique alguns de de seus IPs.<br />
<a href="https://www.maxmind.com/en/geoip-demo" rel="noopener" target="_blank">https://www.maxmind.com/en/geoip-demo </a></p>
<p><strong>Para correção temos dois formulários.</strong><br />
<em>Correct a GeoIP Location</em><br />
<a href="https://support.maxmind.com/geoip-data-correction-request/correct-a-geoip-location/" rel="noopener" target="_blank">https://support.maxmind.com/geoip-data-correction-request/correct-a-geoip-location/ </a><br />
<em>Correct a GeoIP ISP or Organization</em><br />
<a href="https://support.maxmind.com/geoip-data-correction-request/correct-a-geoip-isp-or-organization/" rel="noopener" target="_blank">https://support.maxmind.com/geoip-data-correction-request/correct-a-geoip-isp-or-organization/ </a></p>
<h2>Instalação do Debian</h2>
<p><strong>Requesitos:</strong><br />
<strong><a href="https://blog.remontti.com.br/7236" rel="noopener noreferrer" target="_blank">Debian 12 Bookworm &#8211; Instalação Limpa</a></strong> (Recomendado)<br />
<strong><a href="https://blog.remontti.com.br/5792" rel="noopener noreferrer" target="_blank">Debian 11 Bullseye &#8211; Instalação Limpa</a></strong></p>
<p><strong>Leitura obrigatória:</strong><br />
<a href="https://blog.remontti.com.br/5848" rel="noopener" target="_blank"><strong>Configurando interface de rede no Debian</strong></a><br />
<a href="https://blog.remontti.com.br/5867" rel="noopener" target="_blank"><strong>Como melhorar a produtividade no seu Debian após instalação</strong></a></p>
<p>Vire root com o comando correto!</p>
<pre class="remontti-code"># su - </pre>
<p>No <strong>Debian 12 o rsyslog foi abandonado</strong> como sistema de logs e esta usando systemd-journald. Como o bind salva alguns logs em arquivo e o fail2ban lê os mesmo vamos precisar dele, para isso instale o mesmo:</p>
<pre class="remontti-code"># apt install rsyslog</pre>
<h2>Instalação fail2ban e nftables (Master/Slave)</h2>
<p><strong>Fail2Ban</strong> é uma estrutura de software de prevenção de intrusões que protege os servidores contra ataques de força bruta. Ele opera monitorando arquivos de logs, sendo o mais comum seu uso para bloquear endereços IPs que podem pertencer à hosts que estão tentando violar a segurança do seu servidor.<br />
<strong>nftables</strong> é um firewall baseado no iptables que agora no Debian 11 já vem instalado por padrão subistituindo o antigo iptables.</p>
<pre class="remontti-code"># apt install fail2ban</pre>
<p>Entendo o funcionamento do fail2ban:</p>
<pre class="remontti-code"># fail2ban-client status</pre>
<p>Por padrão o filtro de SSH já vem habilitado, então seu SSH (porta 22) já está &#8220;protegida&#8221;, se alguém errar a senha por 5 vezes terá seu IP bloqueado por 10 minutos.</p>
<pre class="remontti-code-plain">Status
|- Number of jail:      1
`- Jail list:   sshd</pre>
<p>Para alterar esses padrões de tempo e número de tentativas edite: (este arquivo é muito bem comentado o que cada variável faz!)</p>
<pre class="remontti-code"># vim /etc/fail2ban/jail.conf</pre>
<p>Localize as linhas, e ajuste de acordo com suas necessidades</p>
<pre class="remontti-code">bantime  = 10m
findtime  = 10m
maxretry = 5</pre>
<p>Se desejar desativar o filtro de SSH </p>
<pre class="remontti-code"># vim /etc/fail2ban/jail.d/defaults-debian.conf</pre>
<p>Altere para <strong>false</strong></p>
<pre class="remontti-code-plain">[sshd]
enabled = false</pre>
<p>Porém como eu sempre altero a porta do SSH de todo o servidor bem como tempo para digitar a senha, é natural que o fail2ban não ira poteger caso você tenha alterado a mesma. Inclusive recomendo você adotar essa boa pratica.</p>
<pre class="remontti-code"># vim /etc/ssh/sshd_config</pre>
<p>Em <strong>Port</strong> defina a nova porta, e <strong>LoginGraceTime</strong> defina o tempo em segundos para digitar a senha, e nunca seja ignorante de permitir o acesso root direto no SSH em <strong>PermitRootLogin</strong>, a não ser que tenha uma forte motivo para isso (Me conte nos comentários, até hoje não tive motivo para tal!)</p>
<pre class="remontti-code-plain">Port 60002
LoginGraceTime 10
#PermitRootLogin prohibit-password # Nao seja burro de colocar um yes aqui!</pre>
<p>Com a porta alterada do SSH (como no exemplo 60002) vamos ajusta no fail2ban para proteger essa nova porta</p>
<pre class="remontti-code"># vim /etc/fail2ban/jail.conf</pre>
<p>Localize e adicione 60002:</p>
<pre class="remontti-code-plain">[sshd]
Port = ssh,60002</pre>
<p>Por padrão de segurança do fail2ban usa o iptables e faz o bloquei apenas da porta do serviço que esta sofrendo o &#8220;ataque&#8221;, vamos subistituir o iptables pelo <strong>nftables</strong> ou por <strong>route</strong>. Vou deixar os dois modelos a baixo de exemplo. </p>
<p><strong>nftables:</strong> Em vez de usar o filtro multiport, vou setar allports e modificá-lo para que tentativas de violação crie uma regra de firewall de drop e não reject definitivamente o IP e não apenas fechando a porta do serviço. Para isso edite:</p>
<pre class="remontti-code"># vim /etc/fail2ban/jail.conf</pre>
<p>Localize <strong>banaction</strong> e <strong>banaction_allports</strong> e altere para <strong>nftables-allports</strong>:</p>
<pre class="remontti-code-plain">banaction = nftables-allports
banaction_allports = nftables-allports</pre>
<p>Para bloquear tudo e não apenas a porta do serviço atacada:</p>
<pre class="remontti-code"># vim /etc/fail2ban/action.d/nftables.conf</pre>
<p>Localize <strong>rule_match-allports</strong> e remova o <strong>meta l4proto \{ <protocol> \}</strong> ficando: </p>
<pre class="remontti-code-plain">rule_match-allports =</pre>
<p>Ainda no altere o <strong>blocktype</strong> de <strong>reject</strong> para <strong>drop</strong></p>
<pre class="remontti-code-plain">blocktype = drop</pre>
<p>Habilite o nftblaes para o boot do sistema, em seguida reinicie os serviços </p>
<pre class="remontti-code"># systemctl enable nftables
# systemctl restart nftables fail2ban</pre>
<p>Verifique se mesmo estão rodando sem nenhum erro:</p>
<pre class="remontti-code"># systemctl status nftables fail2ban</pre>
<p><strong>route:</strong> Com o método route iremos em vezes de criar uma regra de firewall para o IP que esta &#8220;atacando&#8221; vamos coloca-lo em blackhole, assim se você possuir algum roteamento já poderá exportar o IP para sua borda para matar lá já (gosto + dessa).</p>
<pre class="remontti-code"># vim /etc/fail2ban/jail.conf</pre>
<p>Localize <strong>banaction</strong> e <strong>banaction_allports</strong> e altere para <strong>route</strong>:</p>
<pre class="remontti-code-plain">banaction = route
banaction_allports = route</pre>
<p>Vamos ajustar agora para ação ser blackhole</p>
<pre class="remontti-code"># vim /etc/fail2ban/action.d/route.conf</pre>
<p>Em blocktype altere para blackhole</p>
<pre class="remontti-code-plain">blocktype = blackhole</pre>
<pre class="remontti-code"># systemctl restart fail2ban</pre>
<p>Se tiver acesso a outro servidor externo tente fazer uma conexão SSH, e erre varias vezes a senha para ser bloqueado, assim você pode validar seu fail2ban.</p>
<p>Para visualizar seu firewall <strong>nftables</strong> use o comando:</p>
<pre class="remontti-code"># nft list ruleset</pre>
<p>Ou se usou <strong>route</strong> para mostra a tabela de rotas: </p>
<pre class="remontti-code"># ip route list
# ip -6 route list</pre>
<p><strong>Alguns comandos úteis do fail2ban</strong><br />
Visulizar os filtros</p>
<pre class="remontti-code"># fail2ban-client status</pre>
<p>Visualizar detalhe de um filtro</p>
<pre class="remontti-code"># fail2ban-client status NOME_FILTRO
# fail2ban-client status sshd</pre>
<p>Remover um IP de um determinado filtro</p>
<pre class="remontti-code"># fail2ban-client set sshd unbanip IPADDRESS
# fail2ban-client set sshd unbanip 200.200.200.200</pre>
<p>Exemplo de script para remover todos os IPs banidos uma a um.</p>
<pre class="remontti-code-plain">#!/bin/bash
BANIDOS=`fail2ban-client status bind9 | grep &quot;Banned IP list&quot; | awk &#039;{$1=$2=$3=$4=$5=&quot;&quot;; print $0}&#039;`
IPS=$(echo $BANIDOS | tr &quot; &quot; &quot;\n&quot;)
for IP in $IPS
 do
  #echo &quot;Removendo: ${IP}&quot;
  fail2ban-client set bind9 unbanip ${IP} ;
  #ip route del ${IP}
done</pre>
<p>Se desejar adicionar algum prefixo a uma lista branca você pode editar: </p>
<pre class="remontti-code"># vim /etc/fail2ban/jail.conf</pre>
<p>Localize <strong>ignoreip</strong>, desomente a linha (remova o # da frete) e adicione os prefixo que deseja ignorar, para não cair bloqueio.</p>
<pre class="remontti-code-plain">ignoreip = 127.0.0.1/8 ::1 200.200.200.0/22 2000:2000::/32</pre>
<p>Reinicie o serviço</p>
<pre class="remontti-code"># systemctl restart fail2ban</pre>
<h2>Instalação do Bind9 (Master/Slave)</h2>
<p>Instalação dos pacotes</p>
<pre class="remontti-code"># apt install bind9 dnsutils</pre>
<p>Arquitetura de arquivos e diretórios do bind9 no Debian 11:</p>
<pre class="remontti-code-plain">/etc/bind/
├── bind.keys
├── db.0
├── db.127
├── db.255
├── db.empty
├── db.local
├── named.conf
├── named.conf.default-zones
├── named.conf.local
├── named.conf.options
├── rndc.key
└── zones.rfc1918
/usr/share/dns/
├── root.ds
├── root.hints
├── root.hints.sig
└── root.key
/var/cache/bind/
├── managed-keys.bind
└── managed-keys.bind.jnl</pre>
<h3>Configuração do Recursivo</h3>
<p>Alteramos o DNS do servidor fazendo com que ele consulte em si próprio, através dos IPs de loopback. Essa alteração deve ser feita no arquivo /etc/resolv.conf.</p>
<pre class="remontti-code"># echo &quot;nameserver 127.0.0.1&quot; &gt; /etc/resolv.conf
# echo &quot;nameserver ::1&quot; &gt;&gt; /etc/resolv.conf</pre>
<p>Para validar se seu servidor conseguer resolver nomes nele próprio, use o comando dig e host. Alguns comandos de Ex:</p>
<pre class="remontti-code"># dig @localhost google.com.br 
# dig @127.0.0.1 google.com.br 
# dig @::1 google.com.br +short
# host google.com.br</pre>
<p>Como identificar o problema com resoluções de nomes, famoso: <em>“Meu DNS não está resolvendo nomes!”</em>. Use o atributo +trace, assim o mesmo mostrará todo o caminho feito para a resolução, assim você ira identificar onde &#8220;parou&#8221; e não obteve a informação necessária. Ex:</p>
<pre class="remontti-code"># dig @localhost google.com.br +trace</pre>
<p>Observe as linhas em destaque.</p>
<pre class="remontti-code">; &lt;&lt;&gt;&gt; DiG 9.16.15-Debian &lt;&lt;&gt;&gt; @localhost google.com.br +trace
; (2 servers found)
;; global options: +cmd
.                       517911  IN      NS      b.root-servers.net.
.                       517911  IN      NS      c.root-servers.net.
.                       517911  IN      NS      m.root-servers.net.
.                       517911  IN      NS      a.root-servers.net.
.                       517911  IN      NS      l.root-servers.net.
.                       517911  IN      NS      k.root-servers.net.
.                       517911  IN      NS      e.root-servers.net.
.                       517911  IN      NS      i.root-servers.net.
.                       517911  IN      NS      d.root-servers.net.
.                       517911  IN      NS      f.root-servers.net.
.                       517911  IN      NS      g.root-servers.net.
.                       517911  IN      NS      h.root-servers.net.
.                       517911  IN      NS      j.root-servers.net.
.                       517911  IN      RRSIG   NS 8 0 518400 20211107...
;; Received 1137 bytes from ::1#53(localhost) in 0 ms

br.                     172800  IN      NS      f.dns.br.
br.                     172800  IN      NS      e.dns.br.
br.                     172800  IN      NS      b.dns.br.
br.                     172800  IN      NS      c.dns.br.
br.                     172800  IN      NS      d.dns.br.
br.                     172800  IN      NS      a.dns.br.
br.                     86400   IN      DS      2471 13 2 5E4F35...
br.                     86400   IN      RRSIG   DS 8 1 86400 202...
;; Received 741 bytes from 198.41.0.4#53(a.root-servers.net) in 140 ms

google.com.br.          3600    IN      NS      ns1.google.com.
google.com.br.          3600    IN      NS      ns2.google.com.
google.com.br.          3600    IN      NS      ns3.google.com.
google.com.br.          3600    IN      NS      ns4.google.com.
uh3thc9qu1qbt25pspmqnbuvm420ur2e.com.br. 900 IN NSEC3 1 1 10 A8A465B84D7...
uh3thc9qu1qbt25pspmqnbuvm420ur2e.com.br. 900 IN RRSIG NSEC3 13 3 900 202...
hekajlrgmga91msd4es7bmhol7dbtbbi.com.br. 900 IN NSEC3 1 1 10 A8A465B84D7...
hekajlrgmga91msd4es7bmhol7dbtbbi.com.br. 900 IN RRSIG NSEC3 13 3 900 202...
;; Received 507 bytes from 2001:12f8:a::10#53(c.dns.br) in 140 ms

google.com.br.          300     IN      A       142.250.219.195
;; Received 58 bytes from 2001:4860:4802:38::a#53(ns4.google.com) in 144 ms</pre>
<p>Primeiramente consultamos os root servers, que estão em nosso servidor essa info, logo perceba que ele fez a consulta dos root servers em localhost, em seguida um dos root servers falou para ele que é são os DNS responsáveis do <strong>.br</strong> e no exemplo ele escolheu o a.root-servers.net, que falou para ele quem são os DNS fo google, e o DNS do google, neste cado o c.dns.br falou qual é o IPv4 (A) do google.com.br = 42.250.219.195, o valor 300 é o tempo que seu servidor irá armazenar essa resposta em cache. Eu levaria muito tempo para explicar aqui, então quando tiver um curso meu de DNS não fique de fora <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>
<h4>Configurando Recursivo no DNS Master</h4>
<p>Nesse cenário vou usar os prefixos  45.80.48.0/22 e 2804:f123::/32 (desculpe caso seja de alguém)</p>
<p>Edite:</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<p>A explicação de todos os campos e variáveis estão nos comentários do arquivo:</p>
<pre class="remontti-code-plain">// ACL &quot;autorizados&quot; essa colocamos os IPs que são autorizados a fazer consultas recursivas neste servidor.
// Neste caso vou incluir os IPs que foram nos delegados bem como de localhost e todos IPs privados.
acl autorizados {
        127.0.0.1;
        ::1;
        192.168.0.0/16;
        172.16.0.0/12;
        100.64.0.0/10;
        10.0.0.0/8;
        2001:db8::/32; 
        fd00::/8; 
        fe80::/10; 
        fc00::/8;        
        45.80.48.0/22;
        2804:f123::/32;
}; 

options {
    // O diretório de trabalho do servidor
    // Quaisquer caminho não informado será tomado como padrão este diretório
    directory &quot;/var/cache/bind&quot;;
 
    //Suporte a DNSSEC
    dnssec-validation auto;
 
    // Conforme RFC1035
    // https://www.ietf.org/rfc/rfc1035.txt
    // Se o servidor deve responder negativamente (NXDOMAIN) para consultas de domínios que não existem.
    auth-nxdomain no;
 
    // Respondendo para IPv4 e IPv6
    // Porta 53 estará aberta para ambos v4 e v6 (pode ser informar apenas os IPs que ficarão ouvindo)
    // ex listen-on { 127.0.0.1; 45.80.48.2; }; 
    // ex listen-on-v6 { ::1; 2804:f123:bebe:cafe::2; };
    // ou any para todos os IPs das interfaces (recomendado, pricipalmente em anycast)
    listen-on { any; };
    listen-on-v6 { any; };
 
    // Serve como uma ferramenta de mitigação para o problema de ataques de amplificação de DNS
    // No momento, a implementação de RRL (Response Rate Limiting)é recomendada apenas para servidores autoritativos
    // Se seu servidor será apenas autoritativo descomente as linhas a baixo. (https://kb.isc.org/docs/aa-00994)
    //rate-limit {
    //    responses-per-second 15;
    //    window 5;
    //};
 
    // Informações adicionais em suas respostas DNS
    // Melhora o desempenho do servidor, reduzindo os volumes de dados de saída.
    // O padrão BIND é (no) não.
    minimal-responses yes;

    // Reduzir o tráfego da rede e aumentar o desempenho, o servidor armazena respostas negativas.
    // é usado para definir um tempo máximo de retenção para essas respostas no servidor. (segundos)
    // Determina por quanto tempo o servidor irá acreditar nas informações armazenadas em cache de 
    // respostas negativas (NXDOMAIN) antes de buscar novamente informações.
    max-ncache-ttl 300;

    // Desativar recursão. Por padrão já é yes.
    // recursion no;
 
    // Especifica quais hosts estão autorizados a fazer consultas
    // recursivas através deste servidor.
    // Aqui que você vai informar os IPs da sua rede que você irá permitir consultar os DNS.
    allow-recursion { autorizados; };
 
    // Endereço estão autorizados a emitir consultas ao cache local,
    // sem acesso ao cache local as consultas recursivas são inúteis.
    allow-query-cache { autorizados; };
 
    // Especifica quais hosts estão autorizados a “fazer perguntas” ao seu DNS. 
    // Se for apenas recursivo pode informa a ACL “autorizados” 
    // allow-query { autorizados; };
    allow-query { any; };
 
    // Especifica quais hosts estão autorizados a receber transferências de zona a partir do servidor.
    // Seu servidor Secundário, no nosso ex vou deixar então o ips dos dois servidores v4 e v6.
    allow-transfer {
        45.80.48.3;
        2804:f123:bebe:cafe::3;
    };
    also-notify {
        45.80.48.3;
        2804:f123:bebe:cafe::3;
    };
 
    // Esta opção faz com que o servidor slave ao fazer a transferência de zonas
    // mastes deste servidor no formato binário (raw) do arquivo ou texto (text)
    // text será legível por humanos, já raw formato é mais eficiente em termos de desempenho.
    // masterfile-format raw;
    masterfile-format text;

    // Para evitar que vase a versao do Bind, definimos um nome
    // Reza a lenda que deixar RR DNS Server seu servidor nunca sofrerá ataques.
    version &quot;RR DNS Server – Do good&quot;;

    // Define a quant. máxima de memória a ser usada para o cache do servidor (bytes ou porcentagem)
    // Por padrão no debian 10/bind9 ele reserva 90% da memoria física. Então não se apavore com log ex.:
    // Servidor com 2GB: none:106: &#039;max-cache-size 90%&#039; - setting to 1795MB (out of 1994MB)
    // Recomendo não alterar
    // max-cache-size 512M;
    // max-cache-size 50%;

    // Isso define o tempo mínimo para o qual o servidor armazena 
    // em cache as respostas positivas, em segundos.
    // Ex o tiktok.com manda tempo de ttl de 20 segundos, 
    // e você quer ignorar esse valor 20 e setar que o minimo seja 90.
    // que é o máximo permitido.
    min-cache-ttl 90;

    // Não recomendado alterar para menos que 24h.
    // Define o tempo máximo durante o qual o servidor armazena (informado pelo dono do domínio)
    // em cache as respostas positivas, em segundos. O max-cache-ttl padrão é 604800 (uma semana) 
    // max-cache-ttl 86400; // 24h 

};</pre>
<p><strong>Leitura recomendada: </strong><br />
<a href="https://bind9.readthedocs.io/en/latest/reference.html" rel="noopener" target="_blank">https://bind9.readthedocs.io/en/latest/reference.html</a><br />
<a href="https://downloads.isc.org/isc/bind9/9.11.24/doc/arm/Bv9ARM.ch06.html" rel="noopener" target="_blank">https://downloads.isc.org/isc/bind9/9.11.24/doc/arm/Bv9ARM.ch06.html </a></p>
<p>Para verificar se seu arquivo tem algum erro use o comando named-checkconf</p>
<pre class="remontti-code"># named-checkconf /etc/bind/named.conf.options</pre>
<p>Imprime todas as configurações</p>
<pre class="remontti-code"># named-checkconf -p</pre>
<p>Bem útil para você mandar suas conf quando esta com algum problema lá no grupo do telegram <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>Reinicie o bind9 para que as novas configurações sejam carregadas, e verifique se o serviço subiu sem erros.</p>
<pre class="remontti-code"># systemctl restart bind9
# systemctl status bind9</pre>
<pre class="remontti-code"># systemctl restart bind9
# systemctl status bind9</pre>
<h4>Configurando Recursivo (Slave)</h4>
<p>Não esqueça da parte do fail2ban e nftables.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<p>Já explicado no master, a diferença aqui aqui não temos os campos allow-transfer e also-notify, já que ele é o servidor secundário.</p>
<pre class="remontti-code-plain">acl autorizados {
        127.0.0.1;
        ::1;
        192.168.0.0/16;
        172.16.0.0/12;
        100.64.0.0/10;
        10.0.0.0/8;
        2001:db8::/32; 
        fd00::/8; 
        fe80::/10; 
        fc00::/8;        
        45.80.48.0/22;
        2804:f123::/32;
}; 

options {
    directory &quot;/var/cache/bind&quot;;
    dnssec-validation auto;
    auth-nxdomain no;
    listen-on { any; };
    listen-on-v6 { any; };
    minimal-responses yes;
    max-ncache-ttl 300;
    allow-recursion { autorizados; };
    allow-query-cache { autorizados; };
    //allow-query { autorizados; }; //Se apenas for recursivo
    allow-query { any; };
    allow-transfer { none; };
    masterfile-format text;
    version &quot;RR DNS Server&quot;;
};</pre>
<p>Reinicie o bind9 para que as novas configurações sejam lidas, e verifique se o serviço subiu sem erros.</p>
<pre class="remontti-code"># systemctl restart bind9
# systemctl status bind9</pre>
<h4>Colocando o fail2ban para protege seu DNS (Master/Slave)</h4>
<p>Ele irá ler os logs do bind com tentativas de consultas negadas (denied), para isso precisamos configurar nosso bind para gerar tal logs.Faça isso no Mastere Slave.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf</pre>
<p>Adicione logging { &#8230; }:</p>
<pre class="remontti-code-plain">// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

logging {
 
    channel security_file {
        file &quot;/var/log/named/security.log&quot; versions 3 size 30m;
        severity dynamic;
        print-time yes;
    };
 
    channel file_log {
        file &quot;/var/log/named/bind.log&quot; versions 3 size 1m;
        severity info;
        #severity debug 3;
        print-time yes;
        print-severity yes;
        print-category yes;
    };
 
    channel dnssec_log {
        file &quot;/var/log/named/dnssec.log&quot; versions 3 size 1m;
        severity warning;
        print-time yes;
    };
 
    category security { security_file; };
    category default { file_log; };
    category dnssec { dnssec_log; };
    category lame-servers { null; };
    category edns-disabled { null; };
    category resolver { null; };
    category unmatched { null; };
 
};

include &quot;/etc/bind/named.conf.options&quot;;
include &quot;/etc/bind/named.conf.local&quot;;
include &quot;/etc/bind/named.conf.default-zones&quot;;</pre>
<p>Crie o diretório onde o bind vai registrar seus logs e dê permissão para que ele possa gravar nesta pasta.</p>
<pre class="remontti-code"># mkdir /var/log/named/
# chown bind: /var/log/named/</pre>
<p>Reinicie o serviço</p>
<pre class="remontti-code"># systemctl restart bind9</pre>
<p>Iremos criar um filtro para ler os logs do bind</p>
<pre class="remontti-code"># vim /etc/fail2ban/filter.d/bind9.conf</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain"># Fail2Ban filter file for named (bind9).
# v9.18.x

# This filter blocks attacks against named (bind9) however it requires special
# configuration on bind.
#
# By default, logging is off with bind9 installation.
#
# You will need something like this in your named.conf to provide proper logging.
#
# logging {
#     channel security_file {
#         file &quot;/var/log/named/security.log&quot; versions 3 size 30m;
#         severity dynamic;
#         print-time yes;
#     };
#     category security {
#         security_file;
#     };
# };

[Definition]

# Daemon name
_daemon=named(?:-\w+)?

# Shortcuts for easier comprehension of the failregex

__pid_re=(?:\[\d+\])
__daemon_re=\(?%(_daemon)s(?:\(\S+\))?\)?:?
__daemon_combs_re=(?:%(__pid_re)s?:\s+%(__daemon_re)s|%(__daemon_re)s%(__pid_re)s?:)

_category = (?!error|info)[\w-]+
_category_re = (?:%(_category)s: )?

#       hostname       daemon_id         spaces
# this can be optional (for instance if we match named native log files)
__line_prefix=\s*(?:\S+ %(__daemon_combs_re)s\s+)?%(_category_re)s

prefregex = ^%(__line_prefix)s(?:(?:error|info):\s*)?client(?: @\S*)? &lt;HOST&gt;#\S+(?: \([\S.]+\))?: &lt;F-CONTENT&gt;.+&lt;/F-CONTENT&gt;\s(?:denied|denied \(allow-query-cache did not match\)|\(NOTAUTH\))\s*$

failregex = ^(?:view (?:internal|external): )?query(?: \(cache\))?
            ^zone transfer
            ^bad zone transfer request: &#039;\S+/IN&#039;: non-authoritative zone

ignoreregex =

# DEV Notes: Debian 12
# Author: Rudimar Remontti</pre>
<p>Ativamos o filtro que criamos, e definimos o tempo de banimento para 12h, se você desejar pode ajustar para mais ou menos se achar necessário. E “maxretry” que é a quantidade de tentativas usaremos 1, limitando a 1 tentativa (não recomendo alterar) apenas para já ser bloqueado.</p>
<pre class="remontti-code"># vim /etc/fail2ban/jail.d/bind9.conf</pre>
<pre class="remontti-code-plain">[bind9]
enabled  = true
port     = domain,953
protocol = tcp
logpath  = /var/log/named/security.log
bantime  = 12h
maxretry = 1</pre>
<p>Em seguida ativamos reinciamos os serviços.</p>
<pre class="remontti-code"># systemctl restart fail2ban
# systemctl status fail2ban</pre>
<p>Consulte se o filtro bind9 foi carregado</p>
<pre class="remontti-code"># fail2ban-client status</pre>
<pre class="remontti-code-plain">Status
|- Number of jail:      2
`- Jail list:   bind9, sshd</pre>
<p>Para validar realize um teste de um servidor externo <strong>não autorizado</strong> à resolver nomes em seu servidor com o comando dig, ex:</p>
<pre class="remontti-code"># dig @ip_so_seu_dns google.com.br</pre>
<p>Deixe rodando o comando para visualizar os logs.</p>
<pre class="remontti-code"># tail -f /var/log/named/security.log</pre>
<p>Log como ira aparecer, onde 192.168.254.198 é o IP que tentou resolver nomes e google.com.br foi o dóminio.</p>
<pre class="remontti-code-plain">25-Oct-2021 17:57:09.284 client @0x7f79e80104c8 192.168.254.198#63239 (google.com.br): query (cache) &#039;google.com.br/A/IN&#039; denied</pre>
<p>Verificando agora o fail2ban vamos encontrar o IP 192.168.254.198 em <strong>Banned IP list</strong>.</p>
<pre class="remontti-code"># fail2ban-client status bind9</pre>
<pre class="remontti-code-plain">Status for the jail: bind9
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     1
|  `- File list:        /var/log/named/security.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   192.168.254.198</pre>
<p>Verificando as regras do firewall nftables também iremos encontra-lo.</p>
<pre class="remontti-code"># nft list ruleset</pre>
<pre class="remontti-code-plain">table inet filter {
        chain input {
                type filter hook input priority filter; policy accept;
        }

        chain forward {
                type filter hook forward priority filter; policy accept;
        }

        chain output {
                type filter hook output priority filter; policy accept;
        }
}
table inet f2b-table {
        set addr-set-bind9 {
                type ipv4_addr
                elements = { 192.168.254.198 }
        }

        chain f2b-chain {
                type filter hook input priority filter - 1; policy accept;
                ip saddr @addr-set-bind9 drop
        }
}</pre>
<p>Para remover o IP basta:</p>
<pre class="remontti-code"># fail2ban-client set bind9 unbanip 192.168.254.198</pre>
<h4>Atualização dos Roots servers</h4>
<p>Não é comum os Roots Servers terem alguma alteração, mas é algo que ao logo desses anos vi acontecer já, então caso um dia precise atualiza-los. Primeiramente renomei o arquivo atual <strong>root.hints</strong></p>
<pre class="remontti-code"># mv /usr/share/dns/root.hints /usr/share/dns/root.hints.`date +%Y%m%d`</pre>
<p>Agora vamos baixar a versão mais recente.</p>
<pre class="remontti-code"># apt install wget 
# wget https://www.internic.net/domain/named.root -O /usr/share/dns/root.hints</pre>
<p>Para visualizar se tem alguma diferença entre os arquivos execute o comando:</p>
<pre class="remontti-code"># diff /usr/share/dns/root.hints /usr/share/dns/root.hints.`date +%Y%m%d`</pre>
<p>Perceba que o que mudou apenas foi a data em <strong>last update</strong>. Resto do arquivo continua igual.</p>
<pre class="remontti-code-plain">11,13c11,13
&lt; ;
&lt; ;       last update:     October 14, 2021
&lt; ;       related version of root zone:     2021101401
---
&gt; ; 
&gt; ;       last update:     January 11, 2021 
&gt; ;       related version of root zone:     2021011101</pre>
<h4>Desativar IPv6 do bind <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h4>
<p>Se por algum motivo precisar desabilitar faça:</p>
<pre class="remontti-code"># vim /etc/default/named</pre>
<pre class="remontti-code-plain">OPTIONS=&quot;-u bind&quot;</pre>
<p>Para</p>
<pre class="remontti-code-plain">OPTIONS=&quot;-4 -u bind&quot;</pre>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<pre class="remontti-code-plain">listen-on-v6 { any; };</pre>
<p>Para</p>
<pre class="remontti-code-plain">listen-on-v6 { none; };</pre>
<p>Reinicie o serviço</p>
<pre class="remontti-code"># systemctl restart bind</pre>
<h4>Configurando um proxy do DNS recursivo</h4>
<p>Está confiuração deixará de usar os Root Serves e irá fazer as consultar em outros servidores DNS, e armazenar no seu cache local.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<p>Adicione dentro de<strong> options { &#8230;.. } </strong></p>
<pre class="remontti-code-plain">  recursion yes;
  forwarders {
      8.8.8.8;
      1.1.1.1;
      1.0.0.1;
      8.8.4.4;
  };
  forward only;</pre>
<h4>Comando dig</h4>
<p>Algumas coisas que você precisa saber, ex:</p>
<pre class="remontti-code"># dig google.com.br @localhost</pre>
<pre class="remontti-code-plain">; &lt;&lt;&gt;&gt; DiG 9.16.15-Debian &lt;&lt;&gt;&gt; google.com.br @localhost
; &lt;&lt;&gt;&gt; DiG 9.16.15-Debian &lt;&lt;&gt;&gt; google.com.br @localhost
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 49083
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 595c2c7eb1d62205010000006177f1e2e08119b0ec4133aa (good)
;; QUESTION SECTION:
;google.com.br.                 IN      A

;; ANSWER SECTION:
google.com.br.          300     IN      A       172.217.173.67

;; AUTHORITY SECTION:
google.com.br.          3599    IN      NS      ns1.google.com.
google.com.br.          3599    IN      NS      ns4.google.com.
google.com.br.          3599    IN      NS      ns3.google.com.
google.com.br.          3599    IN      NS      ns2.google.com.

;; ADDITIONAL SECTION:
ns1.google.com.         172800  IN      AAAA    2001:4860:4802:32::a
ns2.google.com.         172800  IN      AAAA    2001:4860:4802:34::a
ns3.google.com.         172800  IN      AAAA    2001:4860:4802:36::a
ns4.google.com.         172800  IN      AAAA    2001:4860:4802:38::a
ns1.google.com.         172800  IN      A       216.239.32.10
ns2.google.com.         172800  IN      A       216.239.34.10
ns3.google.com.         172800  IN      A       216.239.36.10
ns4.google.com.         172800  IN      A       216.239.38.10

;; Query time: 1560 msec
;; SERVER: ::1#53(::1)
;; WHEN: ter out 26 09:17:38 -03 2021
;; MSG SIZE  rcvd: 344
</pre>
<p>O resultado retornará algumas seções, porém como configuramos no named.conf.options <strong>minimal-responses yes</strong>, iremos ter apenas 3. Isso deixa seu DNS mais otimizado, além do mais <strong>yes</strong> é o padrão agora na versão 9.16 do bind, caso queira testar experimente setar em: <strong>no</strong>.</p>
<pre class="remontti-code-plain">; &lt;&lt;&gt;&gt; DiG 9.16.15-Debian &lt;&lt;&gt;&gt; google.com.br @localhost
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 13858
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 38763b6c79757a2a010000006177f255c6a6a6d3e4833e77 (good)
;; QUESTION SECTION:
;google.com.br.                 IN      A

;; ANSWER SECTION:
google.com.br.          300     IN      A       172.217.173.67

;; Query time: 1524 msec
;; SERVER: ::1#53(::1)
;; WHEN: ter out 26 09:19:33 -03 2021
;; MSG SIZE  rcvd: 86</pre>
<p><strong>HEADER</strong>: Ela contém diversas informações a respeito da consulta. </p>
<pre class="remontti-code-plain">;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 49083
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9</pre>
<p>- <strong>status</strong> indica o tratamento de erro nas consultas, sendo eles:<br />
-- <strong>NOERROR</strong>: Nenhum erro encontrado, ou seja, sucesso.<br />
-- <strong>SERVFAIL</strong>: Houve algum problema com o servidor, que não conseguiu processar a query.<br />
-- <strong>NXDOMAIN</strong>: Significa que o domínio pesquisado não existe.<br />
-- <strong>REFUSED</strong>: O servidor rejeitou a solicitação.<br />
-<strong>flags:</strong> indicador das opções de recursividade e de autoridade, em resumo este conjunto de “letrinhas” (aa, rd, ra, etc), indica o estado ligado/desligado <a href="https://www.ietf.org/rfc/rfc1035.txt" rel="noopener" target="_blank">RFC1035</a><br />
-- <strong>qr</strong>: se a mensagem é uma query (0) ou uma resposta (1). Como estamos avaliando somente as respostas, este bit sempre estará ligado (consequentemente, sempre veremos a string “qr” no campo “flags“).<br />
-- <strong>aa</strong>: que o servidor que respondeu à solicitação é autoritativo do domínio.<br />
-- <strong>rd</strong>: que a query é recursiva, que as requisições devem ser encaminhadas a outros servidores até que o servidor autoritativo seja encontrado.<br />
-- <strong>ra</strong>: que o servidor que respondeu à requisição suporta consultas recursivas.<br />
-- <strong>tc</strong>: que a mensagem de resposta está truncada.<br />
-- <strong>z</strong>: reservado para uso futuro.<br />
- <strong>contadores</strong>: na mesma linha das flags, econtramos quantos resultados vieram nas sessões.</p>
<pre class="remontti-code-plain">QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9</pre>
<p><strong>QUESTION </strong><br />
Replica a query que foi enviada para consulta, por padão quando não passa A = IPv4</p>
<pre class="remontti-code-plain">;; QUESTION SECTION:
;google.com.br.                 IN      A</pre>
<p>Outros exemplos:</p>
<pre class="remontti-code"># dig AAAA google.com.br @localhost
# dig MX google.com.br @localhost
# dig NS google.com.br @localhost
# dig TXT google.com.br @localhost
# dig ANY google.com.br @localhost</pre>
<p><strong>ANSWER </strong><br />
Contém a resposta para a consulta que foi enviada.</p>
<pre class="remontti-code-plain">;; ANSWER SECTION:
google.com.br.          86400   IN      CAA     0 issue &quot;pki.goog&quot;
google.com.br.          60      IN      SOA     ns1.google.com. dns-admin.google.com. 405356128 900 900 1800 60
google.com.br.          300     IN      AAAA    2800:3f0:4001:819::2003
google.com.br.          300     IN      A       172.217.173.67
google.com.br.          300     IN      MX      0 smtp.google.com.
google.com.br.          300     IN      TXT     &quot;v=spf1 -all&quot;
google.com.br.          2774    IN      NS      ns4.google.com.
google.com.br.          2774    IN      NS      ns2.google.com.
google.com.br.          2774    IN      NS      ns1.google.com.
google.com.br.          2774    IN      NS      ns3.google.com.</pre>
<p><strong>AUTHORITY</strong><br />
Servidores que respondem com “autoridade” pelo domínio (os NS)</p>
<pre class="remontti-code-plain">;; AUTHORITY SECTION:
google.com.br.          3599    IN      NS      ns1.google.com.
google.com.br.          3599    IN      NS      ns4.google.com.
google.com.br.          3599    IN      NS      ns3.google.com.
google.com.br.          3599    IN      NS      ns2.google.com.</pre>
<p><strong>ADDITIONAL</strong><br />
Informações auxiliares ou adicionais à pesquisa, no exemplo IPs dos servidores DNS</p>
<pre class="remontti-code-plain">;; ADDITIONAL SECTION:
ns1.google.com.         172800  IN      AAAA    2001:4860:4802:32::a
ns2.google.com.         172800  IN      AAAA    2001:4860:4802:34::a
ns3.google.com.         172800  IN      AAAA    2001:4860:4802:36::a
ns4.google.com.         172800  IN      AAAA    2001:4860:4802:38::a
ns1.google.com.         172800  IN      A       216.239.32.10
ns2.google.com.         172800  IN      A       216.239.34.10
ns3.google.com.         172800  IN      A       216.239.36.10
ns4.google.com.         172800  IN      A       216.239.38.10</pre>
<p>E na ultima sessão entrosamos podemos dizer mais 4 sub sessões:</p>
<pre class="remontti-code-plain">;; Query time: 1560 msec
;; SERVER: ::1#53(::1)
;; WHEN: ter out 26 09:17:38 -03 2021
;; MSG SIZE  rcvd: 344</pre>
<p>- <strong>QUERY TIME</strong>: vai informar o tempo que levou para realizar a consulta solicitada, quando esse tempo retora 0 é porque a consulta ele pegou do cache.<br />
- <strong>SERVER</strong>: Qual servidor ele realizou a consulta<br />
- <strong>WHEN</strong>: dara e hora da consulta + UTC<br />
- <strong>MSG SIZE</strong>: tamanho do pacote</p>
<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Um pouquinho de dig para vocês!</p>
<p>Seu DNS recursivo já está pronto, se seu intuito é <strong>apenas um DNS recursivo</strong> pode pular a parte do autoritativo/reverso, e eu recomendo que você crie uma regra extra no seu nftables (firewall) para fechar a porta 53 externamente, então vou deixar um modelo dessa configuração:<br />
<strong>ISSO SÓ DEVER SER FEITO SE SEU DNS FOR APENAS RECURSIVO! </strong></p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<p>Em <strong>elements</strong>, altere para os seus IPs que terão permissão, o arquivo é quase que auto explicativo. Eu vou aproveitar e criar uma proteção para o SSH e o Zabbix agent </p>
<pre class="remontti-code-plain">#!/usr/sbin/nft -f
  
flush ruleset

table inet filter {

    set acesso-total4 {
        type ipv4_addr
        flags interval
        elements = { 200.200.200.0/26, 200.200.200.128/29 }
    }
    set acesso-total6 {
        type ipv6_addr
        flags interval
        elements = { 2001:db8:f0da::/48 }
    }
    set acesso-dns4 {
        flags interval
        type ipv4_addr
        elements = { 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, 200.200.200.0/22 }
    }
    set acesso-dns6 {
        flags interval
        type ipv6_addr
        elements = { ::1, 2001:db8::/32 }
    }
    chain input {
        type filter hook input priority 0;

        #ip saddr  @acesso-total4 accept
        #ip6 saddr @acesso-total6 accept

        # Permite acesso SSH na porta 22 (alterada para 60002), a 22 eu fecho só de sacanagem, para aparecer filtrada nos scanners
        ip saddr  @acesso-total4 tcp dport 22 counter accept
        ip6 saddr @acesso-total6 tcp dport 22 counter accept
        ip saddr  @acesso-total4 tcp dport 60002 counter accept
        ip6 saddr @acesso-total6 tcp dport 60002 counter accept
        tcp dport 22 counter drop
        tcp dport 60002 counter drop

        # Permite coleta de dados pelo Zabbix-Agent na porta 10050
        ip saddr  @acesso-total4 tcp dport 10050 counter accept
        ip6 saddr @acesso-total6 tcp dport 10050 counter accept
        tcp dport 10050 counter drop   

        # Permite Acesso DNS na porta 53
        ip saddr  @acesso-dns4 udp dport 53 counter accept
        ip saddr  @acesso-dns4 tcp dport 53 counter accept
        ip6 saddr @acesso-dns6 udp dport 53 counter accept
        ip6 saddr @acesso-dns6 tcp dport 53 counter accept
        udp dport 53 counter drop
        tcp dport 53 counter drop

        type filter hook input priority 0;
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}</pre>
<p>Reinicie os serviços</p>
<pre class="remontti-code"># systemctl restart nftables fail2ban</pre>
<h2>Autoritativo</h2>
<p>Valorize os domínios.br registrados no https://registro.br/ o memos financia todo o projeto NIC.BR, que na internet brasileira tem uma papel fundament</p>
<h4>Configuração do Autoritativo (Master)</h4>
<p>Para ficar organizado criaremos alguns diretórios em /var/cache/bind/. Primeiramente a pasta <strong>master-aut</strong> que se é referencia onde vai ficar nossa configuração do DNS Master autoritativo, e dentro desta pasta uma com o nome do nosso domínio no exemplo <strong>remontti.net.br</strong>, assim se você tiver vários dominios criamos uma pasta para cada ficando bem organizado.</p>
<pre class="remontti-code"># mkdir /var/cache/bind/master-aut
# mkdir /var/cache/bind/master-aut/remontti.net.br</pre>
<p>Agora vamos criar um em <strong>/var/cache/bind/master-aut/remontti.net.br/</strong> para que conter toda a configuração do mesmo,  e para ficar objetivo adotei em usar o nome do próprio domínio.hosts ex: <strong>remontti.net.br.hosts</strong></p>
<pre class="remontti-code"># vim /var/cache/bind/master-aut/remontti.net.br/remontti.net.br.hosts</pre>
<p>É importante que o serial (<strong>2021102601</strong>) seja alterado toda vez que for o aruquivo sofrer qualquer alteração, assim o servidor slave saberá que precisa importar novamente as configurações. Ele segue o padrão <strong>[ano-mes-dia-sequencial]</strong> não que seja uma regra.</p>
<pre class="remontti-code-plain">$ORIGIN .
$TTL 86400 ; 1 day
remontti.net.br        IN SOA  ns1.remontti.net.br. hostmaster.remontti.net.br. (
                            2023020101 ; serial
                            14400      ; refresh (4 hours)
                            3600       ; retry (1 hour)
                            2419200    ; expire (4 weeks)
                            300        ; minimum (5 minutes)
                            )
 
                        NS      ns1.remontti.net.br.
                        NS      ns2.remontti.net.br.
 
                        A       45.80.48.4
                        AAAA    2804:f123:bebe:cafe::4

$ORIGIN remontti.net.br.
$TTL 10800   ; 3 hours
 
ns1                     A       45.80.48.2
                        AAAA    2804:f123:bebe:cafe::2
hostmaster              A       45.80.48.2
                        AAAA    2804:f123:bebe:cafe::2

ns2                     A       45.80.48.3
                        AAAA    2804:f123:bebe:cafe::3

www                     A       45.80.48.4
                        AAAA    2804:f123:bebe:cafe::4</pre>
<p>No exemplo estou confiurando apenas alguns subdomínos básicos, como ns1, ns2, www e apontando ele para seus respectivos endereços IPv4 e IPv6, os ipos mais comuns de registros:<br />
- <strong>A</strong>: Associa um nome a um endereço IPv4.<br />
- <strong>AAAA</strong>: Associa um nome a um endereço IPv6.<br />
- <strong>NS</strong>: Name Server. Define quais servidores são os servidores autoritativos do domínio<br />
- <strong>SOA</strong>: Start-Of-Authority. Detalhes da autoridade do domínio. Descreve o servidor que tem autoridade sobre a zona, além do contato técnico, número serial e outros campos.<br />
- <strong>MX</strong>: Mail eXchanger. Define os servidores de e-mail.<br />
- <strong>PTR</strong>: Pointer. Retorna o nome associado a um endereço IP. (reverso)<br />
- <strong>CNAME</strong>: Canonical NAME. Usados para criar apelidos para o domínio.<br />
- <strong>TXT</strong>: TeXT. Usados para descrições, comentários, observações de um domínio. Também usado para definir configurações de SPF.</p>
<p>Vamos criar um diretório para gerar nossas keys do DNSSEC.</p>
<pre class="remontti-code"># mkdir /var/cache/bind/master-aut/remontti.net.br/keys</pre>
<p>Entre no diretório: </p>
<pre class="remontti-code"># cd /var/cache/bind/master-aut/remontti.net.br/keys</pre>
<p>Agora vamos a criação das chaves:</p>
<pre class="remontti-code"># dnssec-keygen -a ECDSAP256SHA256 remontti.net.br</pre>
<pre class="remontti-code-plain">Generating key pair.
Kremontti.net.br.+007+29298</pre>
<pre class="remontti-code"># dnssec-keygen -a ECDSAP256SHA256 -f KSK remontti.net.br</pre>
<pre class="remontti-code-plain">Generating key pair.
Kremontti.net.br.+007+26883</pre>
<p>Os comandos acima irão gerar 4 arquivos com extensões .key e .private</p>
<pre class="remontti-code-plain">├── Kremontti.net.br.+007+26883.key
├── Kremontti.net.br.+007+26883.private
├── Kremontti.net.br.+007+29298.key
└── Kremontti.net.br.+007+29298.private</pre>
<p>Altere as permissões de diretórios/arquivos para que o bind consiga criar as assinaturas de forma automaticamente.</p>
<pre class="remontti-code"># chown bind: /var/cache/bind/master-aut/ -R</pre>
<p>Em <strong>/etc/bind/named.conf.local</strong> "chamaremos" a zona remontti.net.br</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<p>Adicione ao final do arquivo:</p>
<pre class="remontti-code-plain">zone &quot;remontti.net.br&quot; {
        type master;
        file &quot;/var/cache/bind/master-aut/remontti.net.br/remontti.net.br.hosts&quot;;
        key-directory &quot;/var/cache/bind/master-aut/remontti.net.br/keys/&quot;;
        dnssec-policy default;
        inline-signing yes;
        serial-update-method unixtime;
};</pre>
<p>Para facilitar farei um atalho da pasta /var/cache/bind/master-aut em /etc/bind/master-aut.</p>
<p>Se você é da turma do mimi você pode subistiruir `type master` por `type primary` e `type slave` por `type secondary` bem como nome das pastas. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<pre class="remontti-code"># ln -s /var/cache/bind/master-aut /etc/bind/master-aut</pre>
<p>Reinicie o serviço.</p>
<pre class="remontti-code"># systemctl restart bind9</pre>
<p>Certifique-se que o bind esta rodando sem erros</p>
<pre class="remontti-code"># systemctl status bind9</pre>
<p>Novos arquivos são gerados em /var/cache/bind/master-aut/remontti.net.br/ .jbk .signed .signed.jnl</p>
<pre class="remontti-code-plain">└── remontti.net.br
    ├── keys
    │   ├── Kremontti.net.br.+007+26883.key
    │   ├── Kremontti.net.br.+007+26883.private
    │   ├── Kremontti.net.br.+007+29298.key
    │   └── Kremontti.net.br.+007+29298.private
    ├── remontti.net.br.hosts
    ├── remontti.net.br.hosts.jbk
    ├── remontti.net.br.hosts.signed
    └── remontti.net.br.hosts.signed.jnl</pre>
<p>Precisaremos descobri nossa keytag e o digest que serão informados no registro.br, para isso rode o comando:</p>
<pre class="remontti-code"># (d=remontti.net.br; dig @127.0.0.1 +norecurse &quot;$d&quot;. DNSKEY | dnssec-dsfromkey -f - &quot;$d&quot; | head -1)</pre>
<pre class="remontti-code-plain">remontti.net.br. IN DS 26883 7 2 F8C2518674B22DB06B1EF38E030F9A238E4FA25D0E2FB80357496E92617FF841</pre>
<p>Sendo, <strong>keytag</strong>:<em>26883</em> e o <strong>digest</strong>: <em>F8C2518674B22DB06B1EF38E030F9A238E4FA25D0E2FB80357496E92617FF841</em></p>
<p>Possíveis bloqueios do fail2ban em caso de configuração errada, ao verificação de um domínios que seu servidor não é autoritativo, ou por um erro na configuração, a consulta será interpretada como recursiva, logo o IP de origem será bloqueado pelo fail2ban, e registrado no arquivo de logs /var/log/named/security.log.</p>
<p>Para evitar fail2ban bloquei seus IPs e pricnipalmente do registro.br, pois muitas pessoas acabam configurando errado seu DNS e na hora de verificar acabam sendo bloqueando. Para evitarmos isso vamos incluir seus IPs bem como os do registrobr na variável ignoreip do fail2ban:</p>
<pre class="remontti-code"># vim /etc/fail2ban/jail.conf</pre>
<p>Localize <strong>#ignoreip =</strong>, remova o comentário (#) e inclua os prefixo do registrobr <em>200.160.0.0/20 200.219.148.0/24 2001:12f8:6::/47 2001:12ff::/32</em> bem como altere <em>45.80.48.0/22 2804:f123::/32 </em>para IPs do seu AS</p>
<pre class="remontti-code-plain">ignoreip = 127.0.0.1/8 ::1 200.160.0.0/20 200.219.148.0/24 2001:12f8:6::/47 2001:12ff::/32 45.80.48.0/22 2804:f123::/32</pre>
<p>Reinicie o fail2ban</p>
<pre class="remontti-code"># systemctl restart fail2ban</pre>
<h4>Configuração do Autoritativo (Slave)</h4>
<p>A configuração do slave é bem simples, pois ele irá importar do master todas as configurações.<br />
Para organização vamos seguir o mesmo padrão de diretórios do master</p>
<pre class="remontti-code"># mkdir /var/cache/bind/slave-aut
# mkdir /var/cache/bind/slave-aut/remontti.net.br</pre>
<p>Informamos nossa zona do tipo slave e o IP do nosso servidor master.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<pre class="remontti-code-plain">zone &quot;remontti.net.br&quot; {
        type slave;
        file &quot;/var/cache/bind/slave-aut/remontti.net.br/remontti.net.br.hosts.signed&quot;;
        masters { 45.80.48.2; };
        allow-notify { 45.80.48.2; };
};</pre>
<p>Alteramos a permissão do diretório para que o bind consiga criar os arquivos.</p>
<pre class="remontti-code"># chown  bind: /var/cache/bind/slave-aut -R</pre>
<p>Mais uma vez farei uma atalho dentro de /etc/bind para facilitar.</p>
<pre class="remontti-code"># ln -s /var/cache/bind/slave-aut /etc/bind/slave-aut</pre>
<p>E reiniciamos o serviço</p>
<pre class="remontti-code"># systemctl restart bind9</pre>
<p>Agora ao verificar o diretório /var/cache/bind/slave-aut/remontti.net.br/ encontraremos nosso arquivo criado automaticamente importado do servidor master.</p>
<pre class="remontti-code"># ls -lhs /var/cache/bind/slave-aut/remontti.net.br</pre>
<h4>Validando seu autoritativo no registro.br</h4>
<p>Vamos verificar se o servidor responde pelo nosso domínio, acesse: <a href="https://registro.br/tecnologia/ferramentas/verificacao-de-dns/" rel="noopener" target="_blank">https://registro.br/tecnologia/ferramentas/verificacao-de-dns/ </a> e preecha o formulário com o seu domínio "remontti.net.br" e o IP do seu servidor e clique em pesquisar.<br />
<strong>RESULTADO</strong></p>
<pre class="remontti-code-plain">DOMÍNIO           : remontti.net.br
DNS               : 45.80.48.2
STATUS            : Autoridade sobre o domínio
VERSÃ             : O2021102601
TEMPO DE RESPOSTA : 19.422 ms</pre>
<p>Se seu servidor DNS estiver respondedo pelo domínio solicitado uma resposta de sucesso ira apacer: <strong>Autoridade sobre o domínio</strong>. Repita o mesmo no seu servidor Slave<br />
Agora vamos fazer o mesmo para validade nosso DNSSEC, acesse: <a href="https://registro.br/tecnologia/ferramentas/verificacao-de-ds/" rel="noopener" target="_blank">https://registro.br/tecnologia/ferramentas/verificacao-de-ds/</a> e preecha o formulário com o seu domínio "remontti.net.br" e o IP do seu servidor e clique em pesquisar.<br />
<strong>RECORDS DS DAS CHAVES ENCONTRADAS</strong></p>
<pre class="remontti-code-plain">KEY TAG	  ALGORITMO	        DIGEST DS
26883	  RSA-SHA-1-NSEC3	F8C2518674B22DB06B1EF38E030F9A238E4FA25D0E2FB80357496E92617FF841</pre>
<p>Se tudo estiver OK, ira receber o resultado da sua KEYTAG e DISGEST bem como encontrado anteriormente.</p>
<p>Seu domínio já está pronto para ser configurado no registro.br, para isso <a href="https://registro.br/login/" rel="noopener" target="_blank">acesse sua conta</a> clique sobre seu domínio e clique em: ALTERAR SERVIDORES DNS, e preecha o formulário, exemplo:<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/DNS.png" alt="" width="846" height="795" class="alignnone size-full wp-image-5971" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/DNS.png 846w, https://blog.remontti.com.br/wp-content/uploads/2021/10/DNS-300x282.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/DNS-768x722.png 768w" sizes="auto, (max-width: 846px) 100vw, 846px" /></p>
<h5>Posso ter mais de um autoritativo no mesmo servidor?</h5>
<p>Sim, inclusive o reverso é um autoritavio, vamos falar dele em seguida. Não existe um limite, o limite é seu hardware.<br />
Veja mais um exemplo para um segundo domínio:</p>
<pre class="remontti-code"># mkdir /var/cache/bind/master-aut/cursodns.com.br
# vim /var/cache/bind/master-aut/cursodns.com.br/cursodns.com.br.hosts</pre>
<p>Adicione:</p>
<pre class="remontti-code-plain">$ORIGIN .
$TTL 86400 ; 1 day
cursodns.com.br           IN SOA  ns1.cursodns.com.br. hostmaster.cursodns.com.br. (
                            2023020101 ; serial
                            14400      ; refresh (4 hours)
                            3600       ; retry   (1 hour)
                            2419200    ; expire  (4 weeks)
                            300        ; minimum (5 minutes)
                            )
 
                        NS      ns1.cursodns.com.br.
                        NS      ns2.cursodns.com.br.
 
                        A       45.80.48.4
                        AAAA    2804:f123:bebe:cafe::4
                        MX      10 mail.cursodns.com.br.
                        TXT     &quot;v=spf1 a mx -all&quot;
                        SPF     &quot;v=spf1 a mx -all&quot;

$ORIGIN cursodns.com.br.
_dmarc                  TXT &quot;v=DMARC1; p=none&quot;
_domainkey              TXT &quot;t=y; o=~;&quot;

$ORIGIN _domainkey.cursodns.com.br.
mail                    TXT &quot;v=DKIM1; k=rsa; p=6B4EDqoi5l64qyxnenKx56IOIjPAnj350mq&quot;

$ORIGIN cursodns.com.br.
$TTL 10800   ; 3 hours
 
ns1                     A       45.80.48.2
                        AAAA    2804:f123:bebe:cafe::2
hostmaster              A       45.80.48.2
                        AAAA    2804:f123:bebe:cafe::2

ns2                     A       45.80.48.3
                        AAAA    2804:f123:bebe:cafe::3

www                     A       45.80.48.4
                        AAAA    2804:f123:bebe:cafe::4
ftp                     A       45.80.48.4
                        AAAA    2804:f123:bebe:cafe::4
imap                    A       45.80.48.4
                        AAAA    2804:f123:bebe:cafe::4
pop                     A       45.80.48.4
                        AAAA    2804:f123:bebe:cafe::4
smtp                    A       45.80.48.4
                        AAAA    2804:f123:bebe:cafe::4
mail                    A       45.80.48.4
                        AAAA    2804:f123:bebe:cafe::4</pre>
<p>Vamos criar um diretório para gerar nossas keys do DNSSEC.</p>
<pre class="remontti-code"># mkdir /var/cache/bind/master-aut/cursodns.com.br/keys</pre>
<p>Entre no diretório: </p>
<pre class="remontti-code"># cd /var/cache/bind/master-aut/cursodns.com.br/keys</pre>
<p>Agora vamos a criação das chaves:</p>
<pre class="remontti-code"># dnssec-keygen -a ECDSAP256SHA256 cursodns.com.br</pre>
<pre class="remontti-code-plain">Generating key pair.
Kcursodns.com.br.+007+00558</pre>
<pre class="remontti-code"># dnssec-keygen -a ECDSAP256SHA256 -f KSK cursodns.com.br</pre>
<pre class="remontti-code-plain">Generating key pair.
Kcursodns.com.br.+007+46491
</pre>
<p>Altere as permissões de diretórios/arquivos para que o bind consiga criar as assinaturas de forma automaticamente.</p>
<pre class="remontti-code"># chown bind: /var/cache/bind/master-aut/ -R</pre>
<p>Adicione a zona cursodns.com.br em named.conf.local</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<p>Adicione ao final do arquivo:</p>
<pre class="remontti-code-plain">zone &quot;cursodns.com.br&quot; {
        type master;
        file &quot;/var/cache/bind/master-aut/cursodns.com.br/cursodns.com.br.hosts&quot;;
        key-directory &quot;/var/cache/bind/master-aut/cursodns.com.br/keys/&quot;;
        dnssec-policy default;
        inline-signing yes;
        serial-update-method unixtime;
};</pre>
<p>Se desejar validar seu arquivo antes de reiniciar o serviço:</p>
<pre class="remontti-code"># cd /var/cache/bind/master-aut/
# named-checkzone cursodns.com.br cursodns.com.br.hosts</pre>
<p>Tudo ok, altere as permissões para não ter erro, e reinicie o bind:</p>
<pre class="remontti-code"># chown  bind: /var/cache/bind/master-aut -R
# systemctl restart bind9</pre>
<p><strong>Para o Slave</strong></p>
<pre class="remontti-code"># mkdir /var/cache/bind/slave-aut/cursodns.com.br
# vim /etc/bind/named.conf.local</pre>
<pre class="remontti-code-plain">zone &quot;cursodns.com.br&quot; {
        type slave;
        file &quot;/var/cache/bind/slave-aut/cursodns.com.br/cursodns.com.br.hosts.signed&quot;;
        masters { 45.80.48.2; };
        allow-notify { 45.80.48.2; };
};</pre>
<pre class="remontti-code"># chown  bind: /var/cache/bind/slave-aut -R
# systemctl restart bind9</pre>
<p>Posso ter domínios "fakes"?<br />
Sim, basta criar uma zona. Mas juridicamente você pode ter dor de cabeça. Recomendo a leitura do <a href="https://blog.remontti.com.br/3692" rel="noopener" target="_blank">DNS Response Policy Zone (RPZ)</a> para que retornem resultados modificados em grande escala de uma foma mais eficaz. Alguns administradores podem usar o DNS RPZ para impedir acessos indesejados, normalmente é usado em empresas para bloquear por exemplo hosts infectados por malwares, sites pornográficos, entre outros casos, bloqueando a resolução de nomes. Segue um modelo simples e rápido para montar seu RPZ.</p>
<pre class="remontti-code"># vim /var/cache/bind/master-aut/cursodns.com.br/cursodns.com.br.hosts</pre>
<p>Adicione mais uma entrada em para um novo subdominio "umbrella" apontando para um servidor, esse pode está rodando um serviço web qual pode ter uma tela com um aviso.</p>
<pre class="remontti-code-plain">//...
umbrella                        A       45.80.48.5
                                AAAA    2804:f123:bebe:cafe::5
//...</pre>
<p>Adicione uma nova zona chamada <strong>rpz.zone</strong></p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<pre class="remontti-code-plain">zone &quot;rpz.zone&quot; {
    type master;
    file &quot;/var/cache/bind/rpz/db.rpz.zone&quot;;
    allow-query { none; };
};</pre>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<p>Dentro de options { ... } adcione: </p>
<pre class="remontti-code-plain">options {
//...
    response-policy {
      zone &quot;rpz.zone&quot; policy CNAME umbrella.cursodns.com.br;
    };
//...</pre>
<p>};<br />
Criaremos o diretório rpz, bem como o arquivos de hosts</p>
<pre class="remontti-code"># mkdir /var/cache/bind/rpz/
# ln -s /var/cache/bind/rpz/ /etc/bind/rpz
# vim /var/cache/bind/rpz/db.rpz.zone</pre>
<pre class="remontti-code-plain">$TTL 1H
@       IN      SOA LOCALHOST. umbrella.cursodns.com.br. (
                2023020101      ; Serial  
                1h              ; Refresh
                15m             ; Retry
                30d             ; Expire 
                2h              ; Negative Cache TTL
        )
        NS  umbrella.cursodns.com.br.
 
xvideos.com     IN CNAME .
*.xvideos       IN CNAME .
redtube.com     IN CNAME .
*.redtube.com   IN CNAME .
pornhub.com     IN CNAME .
*.pornhub.com   IN CNAME .</pre>
<p>Sendo que para cada dominio que você deseja apontar para resolver o mesmo IP do nosso umbrella.cursodns.com.br siga este padrão:</p>
<pre class="remontti-code-plain">
domino.com     IN CNAME .
*.domino.com       IN CNAME .</pre>
<p>Assim qualquer subidominio (*).domino.com seja traduzido sempre para o mesmo IP.</p>
<p>Altere as permissões e reinicie o serviço</p>
<pre class="remontti-code"># chown bind: /var/cache/bind/rpz/ -R
# systemctl restart bind9</pre>
<p>Agora faça um teste para ver o que seu servidor ira traduzir:</p>
<pre class="remontti-code"># dig xvideos.com @localhost</pre>
<pre class="remontti-code-plain">; &lt;&lt;&gt;&gt; DiG 9.16.15-Debian &lt;&lt;&gt;&gt; xvideos.com @localhost
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 1040
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: a060f744b32f2a4f01000000617842817ffcfff0a6b99fff (good)
;; QUESTION SECTION:
;xvideos.com.                   IN      A

;; ANSWER SECTION:
xvideos.com.            5       IN      CNAME   umbrella.cursodns.com.br.
umbrella.cursodns.com.br. 10800 IN      A       45.80.48.5

;; ADDITIONAL SECTION:
rpz.zone.               1       IN      SOA     LOCALHOST. umbrella.cursodns.com.br. 2020062400 3600 900 2592000 7200

;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: ter out 26 15:01:37 -03 2021
;; MSG SIZE  rcvd: 175</pre>
<pre class="remontti-code"># dig qqrcoisa.xvideos.com @localhost
# dig pornhub.com @localhost
# dig www.pornhub.com @localhost
# dig redtube.com @localhost</pre>
<pre class="remontti-code-plain"></pre>
<p>Uma boa list de hosts você <a href="https://github.com/StevenBlack/hosts" rel="noopener" target="_blank">pode encontrar aqui</a>.<br />
<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;" /> Não esquece de mandar meu presente de natal!</p>
<h3>Reverso DNS Master - Para prefixos maiores ou igual a /24.</h3>
<p>Obs: Para fazer a Delegações de DNS reverso do seu bloco, é importante que você já tenha configurado no registro.br seu DNS autoritativo.</p>
<p>Para ficar organizado criaremos a pasta <strong>master-rev</strong> para salvar todos nossos arquivos</p>
<pre class="remontti-code"># mkdir /var/cache/bind/master-rev</pre>
<p>Para nosso cenários vou usar os prefixos 45.80.48.0/22 e 2804:f123::/32. O bloco 45.80.48.0/22 será necessário quebrar em 4 arquivos uma para cada prefixo /24 qual teremos nossos 1024 nome de hosts (IPs). </p>
<p>Lembra que anteriormente comentei que o reverso não passa de um domínio autoritativo? Então é isso mesmo, a forma de configuração é a mesma, porem já temos o nosso domínios para IPv4<strong> x.x.x.in-addr.arpa</strong> e <strong>x.x.x.x.x.x.x.x.ip6.arpa</strong> para IPv6.</p>
<p>Primeiro arquivo /24 farei com o nome de <strong>45.80.48.rev</strong>, poderia ser qualquer nome, mas assim fica bem sugestivo.</p>
<pre class="remontti-code"># vim /var/cache/bind/master-rev/45.80.48.rev</pre>
<p>Preste atenção em 48.80.45.in-addr.arpa. essa linha ela deve ser alterada com o inverso do seu IP, de trás para frente.<br />
Outra coisa importante é o serial (2021102601) ele está presente em todos os arquivos e deve ser alterado toda vez que for alterado. Ele segue o padrão [ano-mes-dia-sequencial]. É fundamental altera-lo para que o servidor slave copie sempre que tiver uma alteração.</p>
<p>Neste arquivo darei nomes personalizados apenas para o <strong>ns1 e ns2</strong> o resto usarei o GENERATE para gerar de forma automatica todos os mais de mil nomes, sengindo o padrão <strong>45-80-50-x.remontti.net.br.</strong></p>
<pre class="remontti-code-plain">$ORIGIN .
$TTL 86400      ; 1 day
48.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                    2023020101 ; serial
                    14400      ; refresh (4 hours)
                    3600       ; retry (1 hour)
                    2419200    ; expire (4 weeks)
                    300        ; minimum (5 minutes)
                    )
                NS      ns1.remontti.net.br.
                NS      ns2.remontti.net.br.

$ORIGIN 48.80.45.in-addr.arpa.
2         PTR     ns1.remontti.net.br.
3         PTR     ns2.remontti.net.br.

$ORIGIN 48.80.45.in-addr.arpa.
$GENERATE 0-1     $  PTR  45-80-48-$.remontti.net.br.
$GENERATE 4-255   $  PTR  45-80-48-$.remontti.net.br.</pre>
<p>Proximo /24</p>
<pre class="remontti-code"># vim /var/cache/bind/master-rev/45.80.49.rev</pre>
<pre class="remontti-code-plain">$ORIGIN .
$TTL 86400      ; 1 day
49.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                    2023020101 ; serial
                    14400      ; refresh (4 hours)
                    3600       ; retry (1 hour)
                    2419200    ; expire (4 weeks)
                    300        ; minimum (5 minutes)
                    )
                NS      ns1.remontti.net.br.
                NS      ns2.remontti.net.br.

$ORIGIN 49.80.45.in-addr.arpa.
$GENERATE 0-255 $ PTR 45-80-49-$.remontti.net.br.</pre>
<pre class="remontti-code"># vim /var/cache/bind/master-rev/45.80.50.rev</pre>
<pre class="remontti-code-plain">$ORIGIN .
$TTL 86400      ; 1 day
50.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                    2023020101 ; serial
                    14400      ; refresh (4 hours)
                    3600       ; retry (1 hour)
                    2419200    ; expire (4 weeks)
                    300        ; minimum (5 minutes)
                    )
                NS      ns1.remontti.net.br.
                NS      ns2.remontti.net.br.

$ORIGIN 50.80.45.in-addr.arpa.
$GENERATE 0-255 $ PTR 45-80-50-$.remontti.net.br.</pre>
<pre class="remontti-code"># vim /var/cache/bind/master-rev/45.80.51.rev</pre>
<pre class="remontti-code-plain">$ORIGIN .
$TTL 86400      ; 1 day
51.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                    2023020101 ; serial
                    14400      ; refresh (4 hours)
                    3600       ; retry (1 hour)
                    2419200    ; expire (4 weeks)
                    300        ; minimum (5 minutes)
                    )
                NS      ns1.remontti.net.br.
                NS      ns2.remontti.net.br.

$ORIGIN 51.80.45.in-addr.arpa.
$GENERATE 0-255 $ PTR 45-80-51-$.remontti.net.br.</pre>
<pre class="remontti-code"># vim /var/cache/bind/master-rev/2804.f123.rev</pre>
<p>Antenção no<strong> 3.2.1.f.4.0.8.2.ip6.arpa </strong> o site <a href="http://rdns6.com/hostRecord" rel="noopener" target="_blank">http://rdns6.com/hostRecord </a>pode ser bem útil para gerar seus PTRs.</p>
<pre class="remontti-code-plain">$ORIGIN .
$TTL 3600       ; 1 hour
3.2.1.f.4.0.8.2.ip6.arpa IN SOA ns1.remontti.net.br.3.2.1.f.4.0.8.2.ip6.arpa. hostmaster.remontti.net.br.3.2.1.f.4.0.8.2.ip6.arpa. (
                    2023020101 ; serial
                    14400      ; refresh (4 hours)
                    3600       ; retry (1 hour)
                    2419200    ; expire (4 weeks)
                    300        ; minimum (5 minutes)
                    )
            NS      ns1.remontti.net.br.
            NS      ns2.remontti.net.br.

2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.e.f.a.c.e.b.e.b.3.2.1.f.4.0.8.2.ip6.arpa.   PTR     ns1.remontti.net.br.
3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.e.f.a.c.e.b.e.b.3.2.1.f.4.0.8.2.ip6.arpa.   PTR     ns2.remontti.net.br.</pre>
<p>Ajustamos as permissões: </p>
<pre class="remontti-code"># chown bind: /var/cache/bind/master-rev/ -R</pre>
<p>Criamos uma atalho para facilitar:</p>
<pre class="remontti-code"># ln -s /var/cache/bind/master-rev/ /etc/bind/master-rev</pre>
<p>Agora nós precisamos informar nossas zonas reversas no named.conf.local, como estamos configurando nosso servidor master essas zonas serão do tipo (type) master. </p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<p>Adicione ao final do arquivo:</p>
<pre class="remontti-code-plain">zone &quot;48.80.45.in-addr.arpa&quot; {
        type master;
        file &quot;/var/cache/bind/master-rev/45.80.48.rev&quot;;
};
 
zone &quot;49.80.45.in-addr.arpa&quot; {
        type master;
        file &quot;/var/cache/bind/master-rev/45.80.49.rev&quot;;
};
 
zone &quot;50.80.45.in-addr.arpa&quot; {
        type master;
        file &quot;/var/cache/bind/master-rev/45.80.50.rev&quot;;
};
 
zone &quot;51.80.45.in-addr.arpa&quot; {
        type master;
        file &quot;/var/cache/bind/master-rev/45.80.51.rev&quot;;
};

zone &quot;3.2.1.f.4.0.8.2.ip6.arpa&quot; {
        type master;
        file &quot;/var/cache/bind/master-rev/2804.f123.rev&quot;;
};</pre>
<p>Reinicie o serviço e verifique se o mesmo subiu sem erros.</p>
<pre class="remontti-code"># systemctl restart bind9
# systemctl status bind9</pre>
<p>Checando se nosso IP reverso está resolvendo os nomes setados, com o comando `dig -x IP @localhost +short`</p>
<pre class="remontti-code"># dig -x 45.80.48.0 @localhost +short
45-80-48-0.remontti.net.br.

# dig -x 45.80.48.255 @localhost +short
45-80-48-255.remontti.net.br.

# dig -x 45.80.48.2 @localhost +short
ns1.remontti.net.br.

# dig -x 45.80.48.3 @localhost +short
ns2.remontti.net.br.

# dig -x 45.80.49.0 @localhost +short
45-80-49-0.remontti.net.br.

# dig -x 45.80.49.255 @localhost +short
45-80-49-255.remontti.net.br.

# dig -x 45.80.50.0 @localhost +short
45-80-50-0.remontti.net.br.

# dig -x 45.80.50.255 @localhost +short
45-80-50-255.remontti.net.br.
 
# dig -x 45.80.51.0 @localhost +short
45-80-51-0.remontti.net.br.

# dig -x 45.80.51.255 @localhost +short
45-80-51-255.remontti.net.br.

# dig -x 2804:f123:bebe:cafe::2 @localhost +short
ns1.remontti.net.br.

# dig -x 2804:f123:bebe:cafe::3 @localhost +short
ns2.remontti.net.br.</pre>
<p>Como criamos nomes aos 1024 hosts/IPs (<em>x-x-x-x.remontti.net.br</em>) será necessário apontar cada nome desses no arquivo de autoritativo do domínio <em>remontti.net.br</em> para cada nome um IP. Para isso vamos voltar as configurações do domínio autoritativo que já configurado. Lembre-se de alterar o serial! </p>
<pre class="remontti-code"># host 45-80-50-0.remontti.net.br.</pre>
<p>Host 45-80-50-0.remontti.net.br. not found: 3(NXDOMAIN)<br />
Só para relembrar: <strong>NXDOMAIN</strong>: Significa que o domínio pesquisado não existe.</p>
<p>Para resolver isso então vamos criar todos nosso nomes.<br />
vamos adicionar ao final do arquivo /var/cache/bind/master-aut/remontti.net.br/remontti.net.br.hosts</p>
<pre class="remontti-code-plain">$ORIGIN remontti.net.br.
$GENERATE 0-1    45-80-48-$   A   45.80.48.$
$GENERATE 4-255  45-80-48-$   A   45.80.48.$
$GENERATE 0-255  45-80-49-$   A   45.80.49.$
$GENERATE 0-255  45-80-50-$   A   45.80.50.$
$GENERATE 0-255  45-80-51-$   A   45.80.51.$</pre>
<pre class="remontti-code"># vim /var/cache/bind/master-aut/remontti.net.br/remontti.net.br.hosts</pre>
<p>Ficando:</p>
<pre class="remontti-code-plain">$ORIGIN .
$TTL 86400 ; 1 day
remontti.net.br        IN SOA  ns1.remontti.net.br. hostmaster.remontti.net.br. (
                            2023020101 ; serial
                            14400      ; refresh (4 hours)
                            3600       ; retry (1 hour)
                            2419200    ; expire (4 weeks)
                            300        ; minimum (5 minutes)
                            )
 
                        NS      ns1.remontti.net.br.
                        NS      ns2.remontti.net.br.
 
                        A       45.80.48.4
                        AAAA    2804:f123:bebe:cafe::4

$ORIGIN remontti.net.br.
$TTL 10800   ; 3 hours
 
ns1                     A       45.80.48.2
                        AAAA    2804:f123:bebe:cafe::2
hostmaster              A       45.80.48.2
                        AAAA    2804:f123:bebe:cafe::2
ns2                     A       45.80.48.3
                        AAAA    2804:f123:bebe:cafe::3
www                     A       45.80.48.4
                        AAAA    2804:f123:bebe:cafe::4

$ORIGIN remontti.net.br.
$GENERATE 0-1    45-80-48-$   A   45.80.48.$
$GENERATE 4-255  45-80-48-$   A   45.80.48.$
$GENERATE 0-255  45-80-49-$   A   45.80.49.$
$GENERATE 0-255  45-80-50-$   A   45.80.50.$
$GENERATE 0-255  45-80-51-$   A   45.80.51.$</pre>
<p>Autoritativo ajustado, reinicie o serviço e verifique se o mesmo subiu sem erros.</p>
<pre class="remontti-code"># systemctl restart bind9
# systemctl status bind9</pre>
<p>Agora ao consultar nosso nomes temos uma resposta dizendo qual nosso endereço ip</p>
<pre class="remontti-code"># host 45-80-48-0.remontti.net.br.
45-80-48-0.remontti.net.br has address 45.80.48.0
 
# host 45-80-49-0.remontti.net.br.
45-80-49-0.remontti.net.br has address 45.80.49.0

# host 45-80-50-0.remontti.net.br.
45-80-50-0.remontti.net.br has address 45.80.50.0

# host 45-80-51-0.remontti.net.br.
45-80-51-0.remontti.net.br has address 45.80.51.0

# host ns1.remontti.net.br.
ns1.remontti.net.br has address 45.80.48.2
ns1.remontti.net.br has IPv6 address 2804:f123:bebe:cafe::2

# host ns2.remontti.net.br.
ns2.remontti.net.br has address 45.80.48.3
ns2.remontti.net.br has IPv6 address 2804:f123:bebe:cafe::3</pre>
<h5>Para o servidor Slave</h5>
<p>Crie o diretório onde irão ficar os arquivos e dê permissão</p>
<pre class="remontti-code"># mkdir /var/cache/bind/slave-rev
# chown bind: /var/cache/bind/slave-rev -R</pre>
<p>Em seguiga crie as zonas no arquivo named.conf.local, que serão do tipo (slave) e apontaremos o IP do DNS Master para que o servidor slave faça a transferência.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<p>Adicione ao final:</p>
<pre class="remontti-code-plain">zone &quot;48.80.45.in-addr.arpa&quot; {
        type slave;
        file &quot;/var/cache/bind/slave-rev/45.80.48.rev&quot;;
        masters { 45.80.48.2; };
        allow-notify { 45.80.48.2; };
};
 
zone &quot;49.80.45.in-addr.arpa&quot; {
        type slave;
        file &quot;/var/cache/bind/slave-rev/45.80.49.rev&quot;;
        masters { 45.80.48.2; };
        allow-notify { 45.80.48.2; };
};
 
zone &quot;50.80.45.in-addr.arpa&quot; {
        type slave;
        file &quot;/var/cache/bind/slave-rev/45.80.50.rev&quot;;
        masters { 45.80.48.2; };
        allow-notify { 45.80.48.2; };
};
 
zone &quot;51.80.45.in-addr.arpa&quot; {
        type slave;
        file &quot;/var/cache/bind/slave-rev/45.80.51.rev&quot;;
        masters { 45.80.48.2; };
        allow-notify { 45.80.48.2; };
};

zone &quot;3.2.1.f.4.0.8.2.ip6.arpa&quot; {
        type slave;
        file &quot;/var/cache/bind/slave-rev/2804.f123.rev&quot;;
        masters { 45.80.48.2; };
        allow-notify { 45.80.48.2; };
};</pre>
<p>Crio o atalho, reinico o serviço e verifico se o mesmo subiu sem erros, em seguida olho se os arquivos foram criando nas pasta.</p>
<pre class="remontti-code"># ln -s /var/cache/bind/slave-rev /etc/bind/slave-rev
# systemctl restart bind9
# systemctl status bind9
# ls -lh /var/cache/bind/slave-rev/ </pre>
<p><strong>Validando seu reverso no registro.br</strong> <a href="https://registro.br/tecnologia/ferramentas/verificacao-de-dns/" rel="noopener" target="_blank">https://registro.br/tecnologia/ferramentas/verificacao-de-dns/ </a><br />
Vamos verificar pelos domínos .arpa</p>
<pre class="remontti-code-plain">48.80.45.in-addr.arpa
49.80.45.in-addr.arpa
50.80.45.in-addr.arpa
51.80.45.in-addr.arpa
3.2.1.f.4.0.8.2.ip6.arpa</pre>
<p><strong>RESULTADOS</strong></p>
<pre class="remontti-code-plain">DOMÍNIO            : 48.80.45.in-addr.arpa
DNS                : 45.80.48.2
STATUS             : Autoridade sobre o domínio
VERSÃ              : O2021102602
TEMPO DE RESPOSTA  : 23.990 ms

DOMÍNIO            : 49.80.45.in-addr.arpa
DNS                : 45.80.48.2
STATUS             : Autoridade sobre o domínio
VERSÃ              : O2021102602
TEMPO DE RESPOSTA  : 23.990 ms

DOMÍNIO            : 50.80.45.in-addr.arpa
DNS                : 45.80.48.2
STATUS             : Autoridade sobre o domínio
VERSÃ              : O2021102602
TEMPO DE RESPOSTA  : 23.990 ms

DOMÍNIO            : 51.80.45.in-addr.arpa
DNS                : 45.80.48.2
STATUS             : Autoridade sobre o domínio
VERSÃ              : O2021102602
TEMPO DE RESPOSTA  : 23.990 ms

DOMÍNIO            : 3.2.1.f.4.0.8.2.ip6.arpa
DNS                : 45.80.48.2
STATUS             : Autoridade sobre o domínio
VERSÃ              : O2021102602
TEMPO DE RESPOSTA  : 23.990 ms</pre>
<p>Se tudo estiver certo você terá <strong>Autoridade sobre o domínio</strong>, repita o mesmo no seu para o IP do servidor Slave.</p>
<p>Seu reverso está pronto para ser configurado no registro.br, <a href="https://registro.br/login/" rel="noopener" target="_blank">acesse sua conta</a> clique em <strong>NUMERAÇÃO</strong> em seguira sobre seu prefixo exemplo <strong>45.80.48.0/22</strong>, clique no "quadro azul" e clique em <strong>Configurar DNS</strong>, preencha o formulário <strong>Delegação DNS - 45.80.48.0/22</strong>  informado o <strong>Servidor 1</strong>: ns1.remontti.net.br e <strong>Servidor 2</strong>: ns2.remontti.net.br. Lembrando que o DNS do autoritativo "remontti.net.br" deve estar com os subdominios ns1 e ns2 apontando para o IP do seu servidor DNS, e o mesmo já deve ter propagado, se você tem acabou de alterar os DNS do remontti.net.br aguarde um tempo (até 24h) para fazer a configuração do reverso.</p>
<p><strong>Dúvida frequente:</strong><br />
- <em>Posso ter reversos de diferentes blocos usando o mesmo domínio autoritativo?</em><br />
Sim, como também pode para outros domínios, inclusive mesclados. </p>
<p>- É possível configurar o DNSSEC para os reversos? Sim basta seguir o mesmo padrão que usamos no exemplo com nosso propío domínio, lembrado que "não existe reverso" tudo é um dominio autoritativo que já existe chamado de xxxxxxxx.in-addr.arpa e xxxxxxx.ip6.arpa, para configurar no registro br é muito simples, basta você realizar a configuração do DNSSEC em cima de cada /24 seu e ir no painel do registro e clicar em DNSSEC e salvar, ele ira identificar sua configuração. </p>
<p>Um ótimo site para verificar seu DNSSEC é o <a href="https://dnsviz.net/" rel="noopener" target="_blank">https://dnsviz.net/</a></p>
<h4>Como configurar o reverso para prefixos menores que /24</h4>
<p>Vamos supor que você dono de um /22  e vai repassar um prefixo /28 para um provedor sem AS ou uma empresa que é seu cliente, e o mesmo deseja ter seu reverso respondendo em seus servidores DNS (<a href="https://datatracker.ietf.org/doc/html/rfc2317" rel="noopener" target="_blank">RFC2317</a>).</p>
<p>Primeiramente faça a delegação no registro.br do /28 para o CNPJ/Domínios do de seu cliente, <a href="https://registro.br/login/" rel="noopener" target="_blank">acesse sua conta</a> clique em <strong>NUMERAÇÃO</strong> em seguira sobre seu prefixo exemplo <strong>45.80.48.0/22</strong>, clique no "quadro azul" e clique em <strong>Expandir</strong> até chegar no prefixo /28, clieque sobre o quadro do prefixo desejado e em seguida em <strong>Configurar designação</strong> e preecha o formulário com o CNPJ/Domínios do seu cliente, se o mesmo não possuir solicite que faça seu cadastro.</p>
<p>Se ficar em dúvidas recomendo que assista: https://www.youtube.com/watch?v=VIa1dHtmQ4U DNS Reverso (~20min fala sobre isso)<br />
No exemplo vamos supor que o bloco seja o 45.80.49.64/28, como o mesmo fica no arquivo 45.80.49.rev vamos edita-lo.</p>
<pre class="remontti-code"># vim /var/cache/bind/master-rev/45.80.49.rev</pre>
<p>Iremos quebrar nosso GENERETE para pular os IPs finais 64 a 79, e vamos apontar ele para os DNS do cliente, logo é claro que ele precisa ter um domínio já configurado, e nesse DNS ele apontar exemplo ns1 e ns2 para o IP do servidor que ele estará fazendo a configuração. Explico já já como faz o lado dele.</p>
<pre class="remontti-code-plain">$ORIGIN .
$TTL 86400      ; 1 day
51.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                    2023020101 ; serial
                    14400      ; refresh (4 hours)
                    3600       ; retry (1 hour)
                    2419200    ; expire (4 weeks)
                    300        ; minimum (5 minutes)
                    )
                NS      ns1.remontti.net.br.
                NS      ns2.remontti.net.br.

$ORIGIN 49.80.45.in-addr.arpa.
$GENERATE 0-63 $ PTR 45-80-51-$.remontti.net.br.

; Cliente delegado
;  &lt;&lt;64-79&gt;&gt; /28
; Aponte para os DNS do Servidor do José 
64/28     NS     ns1.provedordojose.com.br. 
64/28     NS     ns2.provedordojose.com.br. 
; 
64      CNAME    64.45/28.49.80.45.in-addr.arpa. 
65      CNAME    65.45/28.49.80.45.in-addr.arpa. 
66      CNAME    66.45/28.49.80.45.in-addr.arpa. 
67      CNAME    67.45/28.49.80.45.in-addr.arpa. 
68      CNAME    68.45/28.49.80.45.in-addr.arpa. 
69      CNAME    69.45/28.49.80.45.in-addr.arpa. 
70      CNAME    70.45/28.49.80.45.in-addr.arpa. 
71      CNAME    71.45/28.49.80.45.in-addr.arpa. 
72      CNAME    72.45/28.49.80.45.in-addr.arpa. 
73      CNAME    73.45/28.49.80.45.in-addr.arpa. 
74      CNAME    74.45/28.49.80.45.in-addr.arpa. 
75      CNAME    75.45/28.49.80.45.in-addr.arpa. 
76      CNAME    76.45/28.49.80.45.in-addr.arpa. 
77      CNAME    77.45/28.49.80.45.in-addr.arpa. 
78      CNAME    78.45/28.49.80.45.in-addr.arpa. 
79      CNAME    79.45/28.49.80.45.in-addr.arpa.

$ORIGIN 51.80.45.in-addr.arpa.
$GENERATE 80-255 $ PTR 45-80-51-$.remontti.net.br.</pre>
<p>Reinicie o serviço e verifique o mesmo</p>
<pre class="remontti-code"># systemctl restart bind9
# systemctl status bind9</pre>
<h5>Lado do "provedor do Jose"</h5>
<p>Como estamos falando de um outro provedor, é quase certo que ele fará seu DNS: Recursivo, autoritativo e reverso. Então faça a instalação do bind e todos os procedimentos das configurações de recursivo e autoritativo sobre o domínio “provedordojose.com.br”, porém a configuração do reverso irá mudar um pouco, ficando:</p>
<p><strong>Autoritativo</strong></p>
<pre class="remontti-code"># vim /var/cache/bind/master-aut/provedordojose.com/provedordojose.com.br.hosts</pre>
<pre class="remontti-code-plain">$ORIGIN .
$TTL 86400 ; 1 day
provedordojose.com.br        IN SOA  ns1.provedordojose.com.br. hostmaster.provedordojose.com.br. (
                            2023020101 ; serial
                            14400      ; refresh (4 hours)
                            3600       ; retry (1 hour)
                            2419200    ; expire (4 weeks)
                            300        ; minimum (5 minutes)
                            )

                        NS      ns1.provedordojose.com.br.
                        NS      ns2.provedordojose.com.br.

                        A       45.80.49.67

$ORIGIN provedordojose.com.br.
$TTL 10800   ; 3 hours

ns1                     A       45.80.49.66
hostmaster              A       45.80.49.66

ns2                     A       45.80.49.67

www                     A       45.80.49.67

$ORIGIN provedordojose.com.br.
$GENERATE 64-65  45-80-49-$    A   45.80.49.$

$ORIGIN provedordojose.com.br.
$GENERATE 68-79  45-80-49-$    A   45.80.49.$</pre>
<p><strong>Reverso</strong></p>
<pre class="remontti-code"># vim /var/cache/bind/master-rev/45.80.49.64-79.rev</pre>
<pre class="remontti-code-plain">$TTL 1h
@               IN      SOA     ns1.provedordojose.com.br. root.provedordojose.com.br. (
                    2020050101 ; serial
                    10800      ; refresh (3 hours)
                    3600       ; retry (1 hour)
                    2419200    ; expire (4 weeks)
                    300        ; minimum (5 minutes)
                    )

        IN      NS      ns1.provedordojose.com.br.
        IN      NS      ns2.provedordojose.com.br.

$ORIGIN 64/28.49.80.45.in-addr.arpa.
64      IN      PTR     45-80-49-64.provedordojose.com.br.
65      IN      PTR     45-80-49-65.provedordojose.com.br.
66      IN      PTR     ns1.provedordojose.com.br.
67      IN      PTR     ns2.provedordojose.com.br.
68      IN      PTR     45-80-49-68.provedordojose.com.br.
69      IN      PTR     45-80-49-69.provedordojose.com.br.
70      IN      PTR     45-80-49-70.provedordojose.com.br.
71      IN      PTR     45-80-49-71.provedordojose.com.br.
72      IN      PTR     45-80-49-72.provedordojose.com.br.
73      IN      PTR     45-80-49-73.provedordojose.com.br.
74      IN      PTR     45-80-49-74.provedordojose.com.br.
75      IN      PTR     45-80-49-75.provedordojose.com.br.
76      IN      PTR     45-80-49-76.provedordojose.com.br.
77      IN      PTR     45-80-49-77.provedordojose.com.br.
78      IN      PTR     45-80-49-78.provedordojose.com.br.
79      IN      PTR     45-80-49-79.provedordojose.com.br.</pre>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<pre class="remontti-code-plain">zone &quot;provedordojose.com.br&quot; {
        type master;
        file &quot;/var/cache/bind/master-aut/provedordojose.com.br/provedordojose.com.br.hosts&quot;;
        key-directory &quot;/var/cache/bind/master-aut/rprovedordojose.com.br/keys/&quot;;
        dnssec-policy default;
        inline-signing yes;
        serial-update-method unixtime;
};

zone &quot;64/28.49.80.45.in-addr.arpa&quot; {
        type master;
        file &quot;/var/cache/bind/master-rev/45.80.49.64-79.rev&quot;;
};</pre>
<p>Reinicie o serviço</p>
<pre class="remontti-code"># systemctl restart bind9
# systemctl status bind9</pre>
<h5>Situação de reverso para cliente final sem ele ter servidor de DNS</h5>
<p>Meu cliente quer que eu aponto os nomes dos IPs reverso para o seu domínio, posso?<br />
Sim, pode! Em muitos casos de clientes corporativos que tem seu próprio servidor de e-mail é possível que o mesmo peça para fazer isso. Ex:</p>
<pre class="remontti-code"># vim /var/cache/bind/master-rev/45.80.49.rev</pre>
<pre class="remontti-code-plain">$ORIGIN .
$TTL 86400      ; 1 day
49.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                    2023020101 ; serial
                    14400      ; refresh (4 hours)
                    3600       ; retry (1 hour)
                    2419200    ; expire (4 weeks)
                    300        ; minimum (5 minutes)
                    )
                NS      ns1.remontti.net.br.
                NS      ns2.remontti.net.br.

$ORIGIN 49.80.45.in-addr.arpa.
$GENERATE 0-63 $ PTR 45-80-49-$.remontti.net.br.

$ORIGIN 49.80.45.in-addr.arpa.
64      PTR     45-80-49-64.provedordojose.com.br.
65      PTR     45-80-49-65.provedordojose.com.br.
66      PTR     ns1.provedordojose.com.br.
67      PTR     ns2.provedordojose.com.br.
68      PTR     mail.provedordojose.com.br.
69      PTR     45-80-49-69.provedordojose.com.br.
70      PTR     45-80-49-70.provedordojose.com.br.
71      PTR     45-80-49-71.provedordojose.com.br.
72      PTR     45-80-49-72.provedordojose.com.br.
73      PTR     45-80-49-73.provedordojose.com.br.
74      PTR     45-80-49-74.provedordojose.com.br.
75      PTR     45-80-49-75.provedordojose.com.br.
76      PTR     45-80-49-76.provedordojose.com.br.
77      PTR     45-80-49-77.provedordojose.com.br.
78      PTR     45-80-49-78.provedordojose.com.br.
79      PTR     45-80-49-79.provedordojose.com.br.

$ORIGIN 49.80.45.in-addr.arpa.
$GENERATE 80-199 $ PTR 45-80-49-$.remontti.net.br.

$ORIGIN 49.80.45.in-addr.arpa.
200     PTR     mail.empresa.com.br.
201     PTR     mail.minhaempresa.com.br.
202     PTR     mail.algumaempresa.com.br.
203     PTR     www.algumchato.com.br.
204     PTR     maischatoainda.com.br.

$ORIGIN 49.80.45.in-addr.arpa.
$GENERATE 205-255 $ PTR 45-80-49-$.remontti.net.br.</pre>
<p>Reinicie os serviços</p>
<pre class="remontti-code"># systemctl restart bind9
# systemctl status bind9</pre>
<h3>Mais um pouco de DNS!</h3>
<p><strong>Posso configurar DNS reverso de IPs privados?</strong><br />
Sim pode, ajustes no named.conf.default-zones e zones.rfc1918<br />
Remova as linhas dos IPs privados que deseja configurar.</p>
<p><strong>Posso configurar DNS reverso de outro AS?</strong><br />
Sim. Basta configurar! (Conheço provedores pequenos que ambos tem 1 servidor DNS cada e um é o backup do outro)</p>
<h4>Estatísticas do DNS</h4>
<p><strong>Estatística web/http</strong> (statistics-channels)<br />
Para ativar edite o /etc/bind/named.conf</p>
<pre class="remontti-code"># vim /etc/bind/named.conf</pre>
<p>Adicione antes dos <em>include</em>, sendo que 45.80.48.2 é o IP público do DNS e 45.80.48.100 e 45.80.48.101 (Só aceita /32) são os IPs que poderão acessar no navegaro a porta  58053 para visualizar as informações. Porém perceba que também deixou um inet só para o IP de loopback (127.0.0.1 ) a ideiá aqui é que só o zabbix-agente acesse, eu particularmente não deixou o outro inet sendo ouvido, se deseja comente ele com <strong>//</strong> </p>
<pre class="remontti-code-plain">statistics-channels {
       inet 127.0.0.1  port 58053 allow { 127.0.0.1; ::1; };
       inet 45.80.48.2  port 58053 allow { 45.80.48.100; 45.80.48.101; };
};</pre>
<p>Para surtir efeito reinicie o serviço </p>
<pre class="remontti-code"># systemctl restart bind9</pre>
<p>Agora acesse <strong>http://IP_DNS:58053/</strong></p>
<p>Usaremos a seguir este método para coletar informações para o zabbix. </p>
<p>Outra forma é as<strong> estatística em arquivo </strong>(statistics-file), você pode definir um local especifico para gerar seu arquivo com as estatística, caso não especificado o mesmo é gerado em /var/cache/bind/named.stats</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<p>Adicione dentro de options { … }</p>
<pre class="remontti-code-plain">options {
//…
//…
    statistics-file &quot;/var/log/named/named.stats&quot;;
//…
//…
};</pre>
<p>Como sempre, em toda alteração reiniciamos o serviço</p>
<pre class="remontti-code"># systemctl restart bind9</pre>
<p>Porém para gere o arquivo de estatísticas é necessário o comando, e toda vez que deseja atualizar precisa executar o comando.</p>
<pre class="remontti-code"># rndc stats</pre>
<p>Exibe os dados do arquivo</p>
<pre class="remontti-code"># cat /var/log/named/named.stats
ou
# cat /var/cache/bind/named.stats</pre>
<p>Caso queira ver oque esta em cache pode usar o comando:</p>
<pre class="remontti-code"># rndc dumpdb -cache</pre>
<p>Ira gerar um arquivo named_dump.db em /var/cache/bind/</p>
<pre class="remontti-code"># cat /var/cache/bind/ | more
# cat /var/cache/bind/ | grep google</pre>
<h4>Criando Backup</h4>
<p>Basta salvar os diretórios  /etc/bind/* /var/cache/bind/* /usr/share/dns/* Gerar um arquivo de backup </p>
<pre class="remontti-code"># tar -czpf ns1.tar.gz /etc/bind/* /var/cache/bind/* /usr/share/dns/*</pre>
<p>Extrair arquivo de backup </p>
<pre class="remontti-code"># tar vxf ns1.tar.gz</pre>
<p>Recomendo a leitura do tutorial: <strong><a href="https://blog.remontti.com.br/4791" rel="noopener" target="_blank">Criando backups de forma simples e enviando para o Telegram ou servidor via SSH</a></strong></p>
<h3>Coletando dados dos bind e fail2ban para Zabbix 6 LTS</h3>
<p>Se você ainda não tem um zabbix server aqui tem um belo tutorial:<br />
<strong><a href="https://blog.remontti.com.br/6350" rel="noopener" target="_blank">Instalação do Zabbix 6 LTS + NGINX + PostgreSQL + Debian 11</a></strong><br />
<strong><a href="https://blog.remontti.com.br/6370" rel="noopener" target="_blank">Instalação do Grafana no Debian 11 Bullseye</a></strong></p>
<p>No nosso servidor DNS vamos precisar apenas do zabbix-agent, vamos adiciona o repositório do zabbix LTS para Debian 11 e em seguina intala-lo.</p>
<pre class="remontti-code"># cd /tmp
# apt install wget
# cd /tmp/
# wget https://repo.zabbix.com/zabbix/6.0/debian/pool/main/z/zabbix-release/zabbix-release_6.0-5+debian12_all.deb
# apt install ./zabbix-release_6.0-5+debian12_all.deb
# apt update; apt upgrade -y
# apt install zabbix-agent
# systemctl enable zabbix-agent</pre>
<p>Em seguida vamos precisar informar o IP do zabbix server:</p>
<pre class="remontti-code"># vim /etc/zabbix/zabbix_agentd.conf</pre>
<p>Localize e altere: </p>
<pre class="remontti-code-plain">Server=45.80.48.10 #IP Zabbix Server
ServerActive=45.80.48.10 #IP Zabbix Server
Hostname=ns1 #Nome exato cadastrado no Zabbix server</pre>
<p>Reinicie o serviço do zabbix agent</p>
<pre class="remontti-code"># systemctl restart zabbix-agent</pre>
<p>Não esqueça de ajustar statistics-channels named.conf:</p>
<pre class="remontti-code-plain">statistics-channels {
  inet 127.0.0.1 port 58053 allow { 127.0.0.1; };
};</pre>
<p>Vou usar o projeto <a href="https://github.com/remontti/Zabbix-Bind9-Statistics-Collection" rel="noopener" target="_blank"><strong>Zabbix-Bind9-Statistics-Collection</strong></a> compartilhado no meu gituhub</p>
<p>Copie o userparameter_rr_bind.conf no diretório (/etc/zabbix/zabbix_agentd.d) de inclusão dos agentes do Zabbix.</p>
<pre class="remontti-code"># cd /etc/zabbix/zabbix_agentd.d/
# wget https://raw.githubusercontent.com/remontti/Zabbix-Bind9-Statistics-Collection/master/userparameter_rr_bind.conf</pre>
<p>Copie o script bind-stats-rr.py para dentro de /etc/zabbix/script/ e ajustaremos os poderes e permissões.</p>
<pre class="remontti-code"># mkdir /etc/zabbix/script
# cd /etc/zabbix/script
# wget https://raw.githubusercontent.com/remontti/Zabbix-Bind9-Statistics-Collection/master/bind-stats-rr.py
# chmod a+x /etc/zabbix/script/bind-stats-rr.py
# chown zabbix: /etc/zabbix/script/ -R
# systemctl restart zabbix-agent</pre>
<p>Você pode receber estatísticas por zona (que serão descobertas automaticamente) adicionando a seguinte cláusula a cada definição de zona no seu named.conf.local: <strong>zone-statistics yes;</strong> Ex.: </p>
<pre class="remontti-code-plain">zone &quot;remontti.net.br&quot; {
        type master;
        file &quot;/var/cache/bind/master-aut/remontti.net.br/remontti.net.br.hosts&quot;;
        key-directory &quot;/var/cache/bind/master-aut/remontti.net.br/keys/&quot;;
        dnssec-policy default;
        inline-signing yes;
        serial-update-method unixtime;
        zone-statistics yes;
};

zone &quot;48.80.45.in-addr.arpa&quot; {
        type master;
        file &quot;/var/cache/bind/master-rev/45.80.48.rev&quot;;
        zone-statistics yes;
};

zone &quot;49.80.45.in-addr.arpa&quot; {
        type master;
        file &quot;/var/cache/bind/master-rev/45.80.49.rev&quot;;
        zone-statistics yes;
};

zone &quot;50.80.45.in-addr.arpa&quot; {
        type master;
        file &quot;/var/cache/bind/master-rev/45.80.50.rev&quot;;
        zone-statistics yes;
};

zone &quot;51.80.45.in-addr.arpa&quot; {
        type master;
        file &quot;/var/cache/bind/master-rev/45.80.51.rev&quot;;
        zone-statistics yes;
};

zone &quot;3.2.1.f.4.0.8.2.ip6.arpa&quot; {
        type master;
        file &quot;/var/cache/bind/master-rev/2804.f123.rev&quot;;
        zone-statistics yes;
};</pre>
<p>Não esqueça de restartar o serviço se editar o named.local.conf `systemctl restart zabbix-agent`</p>
<p>Baixe o arquivo <strong><a href="https://raw.githubusercontent.com/remontti/Zabbix-Bind9-Statistics-Collection/master/RR%20Bind9.xml" rel="noopener" target="_blank">RR Bind9.xml</a></strong> para seu computador e importe o mesmo para o seu Zabbix Server.<br />
Vamos ter 3 novos templates: </p>
<pre class="remontti-code-plain">- RR Servico Bind9 ==&gt; Irá verificar se os serviço esta UP
- RR Servico Bind9 - Estatisticas ==&gt; Diversas informações
- RR Servico Bind9 - Valida arquivos - Deb11 ==&gt; Notificará sempre que um arquivo named.conf* for modificado</pre>
<h4>Coletando dados das prisões do Fail2ban</h4>
<p>Projeto <a href="https://github.com/remontti/zabbix-fail2ban-discovery" rel="noopener" target="_blank"><strong>zabbix-fail2ban-discovery</strong></a> </p>
<p>Faça o download do arquivo userparameter_fail2ban.conf para o diretório /etc/zabbix/zabbix_agentd.d/</p>
<pre class="remontti-code"># cd /etc/zabbix/zabbix_agentd.d/
# wget https://raw.githubusercontent.com/remontti/zabbix-fail2ban-discovery/master/userparameter_fail2ban.conf</pre>
<p>O Fail2ban funciona apenas com root por padrão. Precisaremos conceder permissão ao Zabbix para acessar o Fail2ban. Não é uma boa ideia conceder permissão de root ao Zabbix em termos de segurança. Em vez disso, permitiremos que o usuário do Zabbix use esse soquete. O agente Zabbix é executado sob o usuário zabbix. Primeiro, precisamos criar um novo grupo chamado fail2ban. Todos os usuários pertencentes a este grupo poderão acessar o Fail2ban.</p>
<p>Criar um grupo:</p>
<pre class="remontti-code"># addgroup --group fail2ban</pre>
<p>Adicionar o usuário zabbix existente ao grupo fail2ban:</p>
<pre class="remontti-code"># usermod -a -G fail2ban zabbix</pre>
<p>Em seguida, devemos alterar o proprietário do grupo do soquete de root para fail2ban:</p>
<pre class="remontti-code"># chown root:fail2ban /var/run/fail2ban/fail2ban.sock</pre>
<p>Por fim, ajuste as permissões no soquete para que os membros do grupo possam acessá-lo:</p>
<pre class="remontti-code"># chmod g+rwx /var/run/fail2ban/fail2ban.sock</pre>
<p>Agora podemos testar que o agente Zabbix pode chamar Fail2ban:</p>
<pre class="remontti-code"># su - zabbix --shell=/bin/bash -c &#039;fail2ban-client status sshd&#039;</pre>
<pre class="remontti-code-plain">Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:</pre>
<p>As instruções de instalação abrangem a alteração das permissões do soquete fail2ban para acesso como um usuário não root; no entanto, essas alterações são perdidas na próxima vez que o soquete é criado.</p>
<p>Para tornar as alterações permanentes em um sistema em que o fail2ban é gerenciado pelo systemd, adicione o seguinte ao arquivo de substituição de serviço fail2ban</p>
<pre class="remontti-code"># systemctl edit fail2ban</pre>
<p>Adicione: </p>
<pre class="remontti-code-plain">[Service]
ExecStartPost=/bin/sh -c &quot;while ! [ -S /run/fail2ban/fail2ban.sock ]; do sleep 1; done&quot;
ExecStartPost=/bin/chgrp fail2ban /run/fail2ban/fail2ban.sock
ExecStartPost=/bin/chmod g+w /run/fail2ban/fail2ban.sock
Restart Zabbix Agent</pre>
<p>Reinicie os serviços </p>
<pre class="remontti-code"># systemctl daemon-reload
# systemctl restart zabbix-agent fail2ban </pre>
<p>Consulte  se o grupo é o fail2ban</p>
<pre class="remontti-code"># ls -lh /var/run/fail2ban/fail2ban.sock</pre>
<pre class="remontti-code-plain">srwxrwx--- 1 root fail2ban 0 jun 18 11:47 /var/run/fail2ban/fail2ban.sock</pre>
<p>Faça download do template <strong><a href="https://raw.githubusercontent.com/remontti/zabbix-fail2ban-discovery/master/RR%20Servico%20Fail2ban%20-%20Monitor%20Filtros.xml" rel="noopener" target="_blank">RR Servico Fail2ban - Monitor Filtros</a></strong> e importe para o Zabbix Server.</p>
<p>Por hoje é "só" pessoal!<br />
Espero ter colaborado com uma pequena parcela em seu conhecimento.<br />
<font color="red">Esse tutorial levei <strong>dois dias</strong> escrevendo então conto com sua ajuda para poder manter o blog!</font></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><br />
Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p><strong>Recomendado: </strong><br />
<a href="https://www.isc.org/download/" rel="noopener" target="_blank">https://www.isc.org/download/ </a><br />
<a href="https://downloads.isc.org/isc/bind9/9.16.15/doc/arm/Bv9ARM.pdf" rel="noopener" target="_blank">https://downloads.isc.org/isc/bind9/9.16.15/doc/arm/Bv9ARM.pdf</a><br />
<strong>Extensão para navegador:</strong><br />
<a href="https://chrome.google.com/webstore/detail/ipvfoo/ecanpcehffngcegjmadlcijfolapggal" rel="noopener" target="_blank">https://chrome.google.com/webstore/detail/ipvfoo/ecanpcehffngcegjmadlcijfolapggal</a><br />
<a href="https://addons.mozilla.org/en-US/firefox/addon/ipvfoo-pmarks/" rel="noopener" target="_blank">https://addons.mozilla.org/en-US/firefox/addon/ipvfoo-pmarks/</a></p>
<p><strong>Ferramentas web: </strong><br />
<a href="https://dnschecker.org/" rel="noopener" target="_blank">https://dnschecker.org/</a><br />
<a href="https://zonemaster.net/" rel="noopener" target="_blank">https://zonemaster.net/</a></p>
<p>O post <a href="https://blog.remontti.com.br/5958">Servidor DNS Bind9 &#8211; Recursivo + Autoritativo DNSSEC + Reverso + RPZ + Fail2ban + nftables + Zabbix no Debian 11/12</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5958/feed</wfw:commentRss>
			<slash:comments>59</slash:comments>
		
		
			</item>
	</channel>
</rss>
