<?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 Bullseye - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/bullseye/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/bullseye</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Tue, 24 Mar 2026 13:00:23 +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 Bullseye - Remontti</title>
	<link>https://blog.remontti.com.br/tag/bullseye</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Servidor de virtualização Web com Debian 11 bullseye + Virtualbox 7.0</title>
		<link>https://blog.remontti.com.br/7142</link>
					<comments>https://blog.remontti.com.br/7142#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 07 Feb 2023 16:21:03 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[debina bullseye]]></category>
		<category><![CDATA[hypervisor]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[phpvirtualbox7]]></category>
		<category><![CDATA[vbox]]></category>
		<category><![CDATA[Virtual]]></category>
		<category><![CDATA[virtualbo7]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualização]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=7142</guid>

					<description><![CDATA[<p>Com VirtualBox é possível executar diversos sistemas operacionais (Windows, Linux, UNIX, BSD) simultaneamente no mesmo hardware, que são chamados de máquinas virtuais. Uma das características é o mascaramento dos recursos físicos (incluindo processadores, quantidade&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/7142">Servidor de virtualização Web com Debian 11 bullseye + Virtualbox 7.0</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><div id="attachment_7150" style="width: 730px" class="wp-caption alignnone"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-7150" src="https://blog.remontti.com.br/wp-content/uploads/2023/02/phpvirtualbox7.0.jpg" alt="" width="720" height="340" class="size-full wp-image-7150" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/02/phpvirtualbox7.0.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2023/02/phpvirtualbox7.0-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2023/02/phpvirtualbox7.0-520x245.jpg 520w" sizes="(max-width: 720px) 100vw, 720px" /><p id="caption-attachment-7150" class="wp-caption-text">CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 82</p></div><br />
Com VirtualBox é possível executar diversos sistemas operacionais (Windows, Linux, UNIX, BSD) simultaneamente no mesmo hardware, que são chamados de máquinas virtuais. Uma das características é o mascaramento dos recursos físicos (incluindo processadores, quantidade de memória, interfaces de rede), o que permite diminuir a administração de drivers nas máquinas virtuais, e transferir uma máquina virtual entre servidores físicos diferentes.</p>
<p>Existem várias ferramentas de virtualização disponíveis.</p>
<p><strong>Microsoft Virtual Server 2005 R2</strong> &#8211; disponível para plataforma x86 e x86_64 bits. Suporte: Somente Windows.<br />
<strong>Qemu</strong> &#8211; ferramenta de virtualização de código aberto disponível para windows, mac e Linux.<br />
<strong>Vmware </strong>&#8211; Disponível para Windows e Linux.<br />
<strong>VirtualBox </strong>&#8211; Aplicativo de código aberto disponível para Windows, Mac, Linux e Solaris.<br />
<strong>Xen </strong>&#8211; Suporta Windows, bem como distribuições Linux.</p>
<p>O <strong>VirtualBox </strong> inicialmente foi lançado sob licença proprietária, mas mais tarde (2007) a Oracle Corporation começou a lançá-lo sob GNU General Public License. Escrito completamente em C, C ++ e Assembly Language está disponível para Windows, OS X, Linux e Solaris.</p>
<p>Recomendo já baixar a ISO nonfree: <a href="https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/" target="_blank" rel="noopener noreferrer">https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/</a></p>
<h3>Requerimentos</h3>
<p>Debian 11 (Bullseye) 64 bits <strong><a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank">instalação mínima</a></strong> pronta</p>
<p>Acesse seu servidor e vire root.</p>
<pre class="remontti-code"># su - </pre>
<p>Certifique-se que seu repositório esteja usando os repositórios <strong>nonfree e contrib</strong>.</p>
<pre class="remontti-code"># vim /etc/apt/sources.list</pre>
<p>Ao final de cada linha verifique se consta:  <strong>nonfree e contrib</strong>, se não tiver adicione, ficando assim:</p>
<pre class="remontti-code">deb http://deb.debian.org/debian/ bullseye main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye main contrib non-free

deb http://security.debian.org/debian-security bullseye/updates main contrib non-free
deb-src http://security.debian.org/debian-security bullseye/updates main contrib non-free

# bullseye-updates, previously known as &#039;volatile&#039;
deb http://deb.debian.org/debian/ bullseye-updates main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye-updates main contrib non-free</pre>
<p>Atualize o repositório</p>
<pre class="remontti-code"># apt update
# apt install firmware-linux firmware-linux-free firmware-linux-nonfree</pre>
<p>Vamos fazer uns ajustes nas parametrizações do kernel para otimizar algumas coisas.</p>
<pre class="remontti-code"># echo &quot;vm.swappiness=10&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;vm.vfs_cache_pressure=50&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;vm.dirty_background_ratio = 5&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;vm.max_map_count=262144&quot; &gt;&gt; /etc/sysctl.d/70-vbox.conf
# echo &quot;fs.file-max=3263776&quot; &gt;&gt; /etc/sysctl.d/70-vbox.conf
# echo &quot;fs.aio-max-nr=3263776&quot; &gt;&gt; /etc/sysctl.d/70-vbox.conf

# cat &lt;&lt;EOF &gt;/etc/sysctl.d/60-net.conf
net.core.netdev_max_backlog=4096
net.core.rmem_default=262144
net.core.rmem_max=67108864
net.ipv4.udp_rmem_min=131072
net.ipv4.udp_mem=2097152 4194304 8388608
net.core.default_qdisc = fq
net.core.somaxconn = 16384
EOF</pre>
<p>Se desejar que seu servidor tenha os nomes de interfaces como: eth0 eth1&#8230; wlan0 wlan1&#8230; faça um ajuste no grub:<br />
OBS: Será necessário que você <a href="https://blog.remontti.com.br/5848" rel="noopener" target="_blank">reconfigure a placa de rede</a> (/etc/network/interfaces) </p>
<pre class="remontti-code"># vim /etc/default/grub</pre>
<p>Ajuste GRUB_CMDLINE_LINUX_DEFAULT</p>
<pre class="remontti-code-plain">GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet net.ifnames=0 biosdevname=0&quot;</pre>
<pre class="remontti-code"># update-grub</pre>
<p>Adicione o repositório do <a href="https://www.virtualbox.org/" target="_blank" rel="noopener noreferrer">virtualbox</a></p>
<pre class="remontti-code"># apt install wget vim apt-transport-https gnupg
# echo &#039;deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian bullseye contrib&#039; &gt; /etc/apt/sources.list.d/virtualbox.list
# wget -O- https://www.virtualbox.org/download/oracle_vbox_2016.asc | gpg --dearmor --yes --output /usr/share/keyrings/oracle-virtualbox-2016.gpg</pre>
<p>Reinicia a máquina para carregar os novos módulos do kernel.</p>
<pre class="remontti-code"># apt update
# apt install virtualbox-7.0
# reboot</pre>
<p>Acesse seu servidor novamente e vire root.</p>
<pre class="remontti-code"># su - </pre>
<p>Faça download dos pacotes extras:</p>
<pre class="remontti-code"># cd /tmp/ 
# wget https://download.virtualbox.org/virtualbox/7.0.8/Oracle_VM_VirtualBox_Extension_Pack-7.0.8.vbox-extpack</pre>
<p>Caso esteja atualizando remova as versões mais antigas:</p>
<pre class="remontti-code"># VBoxManage extpack uninstall &quot;Oracle VM VirtualBox Extension Pack&quot;</pre>
<p>Instale os pacotes extras</p>
<pre class="remontti-code"># VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-7.0.8.vbox-extpack</pre>
<p>Responta Yes <strong>(y)</strong></p>
<p>Vamos executá-lo como o nosso usuário <strong>vbox</strong>, porque ele não precisa acessar o resto do seu sistema.</p>
<pre class="remontti-code"># useradd -d /home/vbox -m -g vboxusers -s /bin/bash vbox</pre>
<p>Defina uma senha para seu usuario vbox</p>
<pre class="remontti-code"># passwd vbox</pre>
<p>Diga ao seu sistema qual usuário vai executar o VirtualBox.</p>
<pre class="remontti-code"># echo &#039;VBOXWEB_USER=vbox&#039; &gt; /etc/default/virtualbox 
# echo &#039;VBOXWEB_HOST=127.0.0.1&#039; &gt;&gt; /etc/default/virtualbox</pre>
<p>Faça com que o vboxweb-service inicie no boot. Como dito acima nosso usuário não precisa ter acesso total ao sistema. Adicione no /etc/rc.local o comando para iniciar junto com o boot.</p>
<pre class="remontti-code"># vim /etc/rc.local</pre>
<p>Adicione</p>
<pre class="remontti-code">#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will &quot;exit 0&quot; on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#
# Solução para inicialização automatica:
# use o comando la listar as VMs criadas
# su - vbox --shell=/bin/bash -c &#039;VBoxManage list vms&#039;
# Colete as ID
# &quot;Debian&quot; {d288884d-a3d4-4903-b84e-5c6039af13b5}
# Pegue o &quot;ID&quot; da VM e use o Comando a baixo descomentando a linha:
#
# Adicione um sleep para aguardar 30seg para dar tempo do modulo do kernel ter tempo de iniciar
# sleep 30
# su - vbox --shell=/bin/bash -c &#039;VBoxHeadless -s d288884d-a3d4-4903-b84e-5c6039af13b5 &amp;&#039;
#
#
exit 0</pre>
<p>Alterare as permissões:</p>
<pre class="remontti-code"># chmod +x /etc/rc.local
# ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service</pre>
<p>Vamos instalar o serviço web + php</p>
<p>Será necessário PHP8, Para isso adicione ao repositório:</p>
<pre class="remontti-code"># wget -qO - https://packages.sury.org/php/apt.gpg | apt-key add -
# echo &quot;deb https://packages.sury.org/php/ bullseye main&quot; | tee /etc/apt/sources.list.d/sury-php.list
# apt update</pre>
<p>Instale o Apache+PHP</p>
<pre class="remontti-code"># apt install apache2 libapache2-mod-php\
 php-cli php-bcmath php-gmp php-mbstring php-zip php-curl\
 php php-common php-soap php-gd unzip php-pear php-xml php-soap</pre>
<p>Por segurança recomendo remover a assinatura do servidor, para isso:</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>Vamos também configurar nosso <a href="https://blog.remontti.com.br/3464" rel="noopener noreferrer" target="_blank">domínio virtual</a> para acessar o servidor via domínio (ex vbox.remontti.com.br) e restringir ele apenas para nossos IP de gerencia. </p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/000-default.conf</pre>
<p>Faça as devidas alterações, não esqueça de alterar em <strong>Require ip</strong> para os IPs que você vai autorizar as conexões.</p>
<pre class="remontti-code">&lt;virtualhost *:80&gt;
        Protocols h2 http/1.1
        ServerName vm.remontti.com.br
        ServerAdmin noc@remontti.com.br
        ErrorDocument 403 http://www.remontti.com.br/
 
        DocumentRoot /var/www/html
 
        &lt;Directory /var/www/html/&gt;
                Options FollowSymLinks
                AllowOverride All
                Require ip 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 250.0.0.0/22 2000:000::/32
        &lt;/Directory&gt;
 
        LogLevel warn 
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
&lt;/virtualhost&gt;</pre>
<p>Habilite os módulos</p>
<pre class="remontti-code"># a2enmod http2
# systemctl restart apache2</pre>
<h3>phpVirtualbox</h3>
<p>O phpVirtualbox oficial até a data desta publicação (abril/2022) a versão 5.2, porém ela já não é mais instalável no Debian 11, então iremos utilizar um <a href="https://github.com/phpvirtualbox/phpvirtualbox/network/members" rel="noopener" target="_blank">fork</a> compatível com o phpVirtualbox 7.0</p>
<p>Vamos configurar o projeto <a href="https://github.com/BartekSz95/phpvirtualbox/releases/" target="_blank" rel="noopener noreferrer">phpvirtualbox</a> by <a href="https://github.com/BartekSz95/phpvirtualbox" rel="noopener" target="_blank">Bartek Sz.</a>, dentro do diretório padrão do apache.</p>
<pre class="remontti-code"># cd /var/www/
# mv /var/www/html/ /var/www/html_old
# wget https://github.com/BartekSz95/phpvirtualbox/archive/main.zip -O phpvirtualbox.zip
# apt install zip unzip
# unzip phpvirtualbox.zip
# mv phpvirtualbox-main html
# rm phpvirtualbox.zip
# chown vbox:vboxusers html  -R
# cd /var/www/html/
# cp config.php-example config.php
# vim config.php</pre>
<pre class="remontti-code"> // ... //
var $username = &#039;vbox&#039;;
var $password = &#039;pass&#039;;
// ... //
var $language = &#039;pt_br&#039;;
var $vrdeports = &#039;9000-9100&#039;;
var $vrdeaddress = &#039;0.0.0.0&#039;;
// ... //
var $enableAdvancedConfig = true; </pre>
<p>É altamente recomendado que você tenha um firewall em cima da range de portas 9000 a 9100, pois é onde será possível fazer acesso remoto, e recomendo que depois da instalação sempre desative o acesso remoto a VM, segue um exemplo de firewall com nftables que já é o padrão no Debian 11 substituindo o antigo iptables, no exemplo já irei proteger também a porta do SSH, lembre-se de deixar seus IPs na ACL de permissões.</p>
<pre class="remontti-code"># systemctl enable nftables</pre>
<p>Modelo fechando as portas do SSH [22] e a range de acesso remoto [9000-9100], você pode personalizar de acordo com sua instalação.</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<pre class="remontti-code">#!/usr/sbin/nft -f
  
flush ruleset

table inet filter {
    # IPv4 que terao acesso 
    set acesso-total4 {
        type ipv4_addr
        flags interval
        elements = { 200.200.200.16/28, 200.200.200.0/28}
    }
    # IPv6 que terao acesso 
    set acesso-total6 {
        type ipv6_addr
        flags interval
        elements = { 2804:1234:bebe::48, 2804:4321:bebe::/48  }
    }
    chain input {
        type filter hook input priority 0;

        # Permite acesso SSH na porta 22
        ip saddr  @acesso-total4 tcp dport 22 counter accept
        ip6 saddr @acesso-total6 tcp dport 22 counter accept
        tcp dport 22 counter drop

        # Permite acesso tela remota portas padões Vbox
        ip saddr  @acesso-total4 tcp dport { 9000-9100 } counter accept
        ip6 saddr @acesso-total6 tcp dport { 9000-9100 } counter accept
        tcp dport { 9000-9100 } counter drop
        
        type filter hook input priority 0;
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}</pre>
<p>Reinicie o nftables e verifique se o mesmo foi carregado:</p>
<pre class="remontti-code"># systemctl restart nftables
# nft list ruleset</pre>
<p>Adicione o usuario vbox ao grupo, inicialize o servi web service e reinicie a máquina. </p>
<pre class="remontti-code"># usermod -a -G vboxusers vbox
# su - vbox --shell=/bin/bash -c &#039;vboxwebsrv &amp;&#039;
# reboot</pre>
<p>Agora acesse:<br />
<strong>https://DOMINIO/</strong><br />
<strong>Usuário:</strong> admin<br />
<strong>Senha: </strong>admin</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2023/02/vbox-web7.png" data-rel="lightbox-gallery-9qIaSYmq" data-rl_title="" data-rl_caption="" title=""><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2023/02/vbox-web7.png" alt="" width="1123" height="557" class="alignnone size-full wp-image-7146" srcset="https://blog.remontti.com.br/wp-content/uploads/2023/02/vbox-web7.png 1123w, https://blog.remontti.com.br/wp-content/uploads/2023/02/vbox-web7-300x149.png 300w, https://blog.remontti.com.br/wp-content/uploads/2023/02/vbox-web7-1024x508.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2023/02/vbox-web7-768x381.png 768w" sizes="(max-width: 1123px) 100vw, 1123px" /></a></p>
<p><strong>Não esqueça de alterar a senha do usuário admin!</strong></p>
<p>O mais legal que você está usando quase nada do hardware da máquina para &#8220;subir&#8221; seu sistema de virtualização.</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/10/htop.png" data-rel="lightbox-gallery-9qIaSYmq" data-rl_title="" data-rl_caption="" title=""><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/10/htop-1024x539.png" alt="" width="1024" height="539" class="alignnone size-large wp-image-3675" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/10/htop-1024x539.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/10/htop-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/10/htop-768x404.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/10/htop.png 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Virtulabox peca em não dar uma solução para inicialização automática, mas é muito fácil fazer isso incluindo no rc.local. Use o comando:</p>
<pre class="remontti-code">#  su - vbox --shell=/bin/bash -c &#039;VBoxManage list vms&#039;</pre>
<p>Vai ser listado os ID das suas VMs. Ex:<br />
<em>&#8220;DNS-SERVER&#8221; {d288884d-a3d4-4903-b84e-5c6039af13b5}<br />
&#8220;ZABBIX-SERVER&#8221; {a2893475-atd4-4973-b81e-6039af13bss5}</em></p>
<p>Agora que você ja tem as IDs adicione em <strong>/etc/rc.local:</strong> da seguinte forma, alterando pelas suas ID.</p>
<pre class="remontti-code">sleep 30 #  sleep para aguardar 30seg para dar tempo do modulo do kernel ter tempo de iniciar
su - vbox --shell=/bin/bash -c &#039;VBoxHeadless -s d288884d-a3d4-4903-b84e-5c6039af13b5 &amp;&#039;
su - vbox --shell=/bin/bash -c &#039;VBoxHeadless -s a2893475-atd4-4973-b81e-6039af13bss5 &amp;&#039;</pre>
<p>Agora quando o servidor reiniciar suas VMs vão iniciar automaticamente, (Não esqueça de quando for desligar o servidor fazer o processo de desligamento de cada VM)</p>
<p>Uma das vantagens deste servidor é que é o virtualbox é muito simples!!! Dentro de /home/vbox/ vão estar suas imagens sendo muito facil de fazer uma copia e migrada para algum outro servidor em caso de &#8220;pau&#8221;. É claro tenha sempre redundância de hardware em seu servidor, faça sempre pelo menos um RAID1 (espelhamento de disco) eu gosto de fazer RAID10 com pelo menos 5 SSDs, onde 1 dos SSDs eu instalo o sistema e os outros 4 (ou 6 ou 8 &#8230;) somo ex 2 (RAID0) e espelho nos outros 2 (RAID1) logo temos o RAID10.</p>
<p><strong>Acesso remoto</strong><br />
No windows você pode usar o famoso <strong>mstsc</strong> e informar seu IP:PORTA, no linux tem um pacote chamado <strong>vinagre</strong> basta instala-lo.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote.png" alt="" width="1173" height="495" class="alignnone size-full wp-image-5460" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote.png 1173w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-300x127.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-1024x432.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-768x324.png 768w" sizes="auto, (max-width: 1173px) 100vw, 1173px" /><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-a.png" alt="" width="1308" height="704" class="alignnone size-full wp-image-5461" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-a.png 1308w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-a-300x161.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-a-1024x551.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-a-768x413.png 768w" sizes="auto, (max-width: 1308px) 100vw, 1308px" /></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>BÔNUS COMANDOS TERMINAL</p>
<pre class="remontti-code">
# Listar todos os tipos de sistemas operacionais 
VBoxManage list ostypes

# Criar uma VM
VBoxManage createvm --name &quot;Debian&quot; --ostype Debian_64 --register

# Definir memória (RAM) e CPUs**:
VBoxManage modifyvm &quot;Debian&quot; --memory 2048
VBoxManage modifyvm &quot;Debian&quot; --cpus 4
VBoxManage modifyvm &quot;Debian&quot; --memory 2048 --cpus 4

# Criar um disco rígido virtual (VDI) de 80GB com controladora NVMe
# Primeiro, crie o disco:
VBoxManage createmedium disk --filename ~/VirtualBox\ VMs/Debian/DebianDisk.vdi --size 81920 --format VDI
# Em seguida, crie o controlador NVMe e anexe o disco a ele:
VBoxManage storagectl &quot;Debian&quot; --name &quot;SATAController&quot; --add sata --controller IntelAhci --portcount 1 --bootable on
VBoxManage storageattach &quot;Debian&quot; --storagectl &quot;SATAController&quot; --port 0 --device 0 --type hdd --medium ~/VirtualBox\ VMs/Debian/DebianDisk.vdi

# Configurar a placa de rede em modo bridge, utilizando eth0
VBoxManage modifyvm &quot;Debian&quot; --nic1 bridged --bridgeadapter1 eth0

# Adicionando mais interfaces
VBoxManage modifyvm &quot;Debian&quot; --nic2 bridged
VBoxManage modifyvm &quot;Debian&quot; --bridgeadapter2 eth0

# Desligar o áudio:
VBoxManage modifyvm &quot;Debian&quot; --audio none

# Define momoria de video:
VBoxManage modifyvm &quot;Debian&quot; --vram 16

# Alterar a controladora gráfica
VBoxManage modifyvm &quot;Debian&quot; --graphicscontroller vmsvga

# Listar VMS
VBoxManage list vms
&quot;Debian&quot; {941d837d-b357-4d19-bd06-b4a7750e321b}

# Iniciar VM
VBoxHeadless --startvm &quot;Debian&quot;
VBoxHeadless --startvm 9bee8518-37ab-492f-b8c5-4989e87bed9b

# Desligar VM
VBoxManage controlvm &quot;Debian&quot; acpipowerbutton
VBoxManage controlvm &quot;Debian&quot; poweroff

# Lista VMs ligadas
VBoxManage list runningvms

# Tirar um snapshot: 
VBoxManage snapshot &quot;Debian&quot; take &quot;nome_snap&quot;
VBoxManage snapshot &quot;Debian&quot; take `date +&#039;%Y-%m-%d_%H-%M-%S&#039;`

# Listar snapshots: 
VBoxManage snapshot &quot;Debian&quot; list
VBoxManage snapshot &quot;941d837d-b357-4d19-bd06-b4a7750e321b&quot; list 
   Name: 2024-02-14_09-54-25 (UUID: 23c1301a-7017-4763-aded-44516d9668b0)
      Name: 2024-02-14_09-54-59 (UUID: 70fc34e7-54dc-493f-af15-6b0858c1dadb)
         Name: 2024-02-14_09-55-09 (UUID: 19cf9f02-dc46-45fb-b22a-c133cfea9f78) *

# Restaurar um snapshot: 
VBoxManage snapshot &quot;Debian&quot; restore &quot;nome_snap&quot;
VBoxManage snapshot &quot;Debian&quot; restore &quot;2024-02-14_09-54-25&quot;

# Deletar um snapshot: 
VBoxManage snapshot &quot;Debian&quot; delete &quot;nome_snap&quot;
VBoxManage snapshot &quot;Debian&quot; delete &quot;2024-02-14_09-54-59&quot;

# Recuperando uma VM pelos arquivos (incluído os SNAPS, estrutura completa)
VBoxManage registervm ~/VirtualBox\ VMs/Debian.vbox

# Exportando (OVA)
VBoxManage export &quot;Debian_12&quot; -o /caminho/Debian_12.ova

# Mais comandos

# Exemplo bridged
VBoxManage modifyvm &quot;RouterOS&quot; --nic5 bridged
VBoxManage modifyvm &quot;RouterOS&quot; --bridgeadapter5 eth0

# Exemplo intnet
VBoxManage modifyvm &quot;RouterOS&quot; --nic5 intnet
VBoxManage modifyvm &quot;RouterOS&quot; --intnet5 &quot;switch_lab&quot;
VBoxManage modifyvm &quot;RouterOS&quot; --cableconnected5 on

# Modo Promíscuo
# deny: Não permite que a interface de rede opere em modo promíscuo.
# allow-vms: Permite que a interface de rede comunique com outras máquinas virtuais.
# allow-all: Permite que a interface de rede comunique com todas as máquinas virtuais e com 
VBoxManage modifyvm &quot;RouterOS&quot; --nicpromisc5 allow-all

# Definir o tipo de placa de rede para o quinto adaptador 
# Am79C970A: AMD PCNet PCI II (Am79C970A);
#  Am79C973: AMD PCNet FAST III (Am79C973, a opção padrão);
#   82540EM: Intel PRO/1000 MT Desktop (82540EM);
#   82543GC: Intel PRO/1000 T Server (82543GC);
#   82545EM: Intel PRO/1000 MT Server (82545EM);
#    virtio: Paravirtualized network adapter (virtio-net).

VBoxManage modifyvm &quot;RouterOS&quot; --nictype5 82543GC

# Definir um endereço MAC específico para o quinto adaptador
VBoxManage modifyvm &quot;RouterOS&quot; --macaddress5 0800000000A4

# Ver informações da VM por comando
VBoxManage showvminfo &quot;RouterOS&quot;
VBoxManage showvminfo &quot;RouterOS&quot; | grep &quot;NIC&quot; 

# Para adaptadores adicionais, substitua --nic5 por --nic6, --nic7, ou --nic8, conforme necessário. 

# Precisa mais que 8? Ativa 36 slot para interfaces.
VBoxManage modifyvm &quot;RouterOS&quot; --chipset ich9 --ioapic on

VBoxManage modifyvm &quot;RouterOS&quot; --nic9 intnet
VBoxManage modifyvm &quot;RouterOS&quot; --intnet9 &quot;switch_amarelo&quot;
VBoxManage modifyvm &quot;RouterOS&quot; --cableconnected9 on
VBoxManage modifyvm &quot;RouterOS&quot; --nictype9 82543GC
VBoxManage modifyvm &quot;RouterOS&quot; --macaddress9 0800000000B1

# Definir uma mac aleatório
VBoxManage modifyvm &quot;RouterOS&quot; --macaddress1 auto
VBoxManage modifyvm &quot;RouterOS&quot; --macaddress2 auto
VBoxManage modifyvm &quot;RouterOS&quot; --macaddress3 auto
</pre>
<p>O post <a href="https://blog.remontti.com.br/7142">Servidor de virtualização Web com Debian 11 bullseye + Virtualbox 7.0</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/7142/feed</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
		<item>
		<title>Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados MariaDB/MySQL com Debian 11 Bullseye</title>
		<link>https://blog.remontti.com.br/6975</link>
					<comments>https://blog.remontti.com.br/6975#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 07 Dec 2022 18:47:28 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[certificado]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debina bullseye]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[ftp ftp]]></category>
		<category><![CDATA[ftpd]]></category>
		<category><![CDATA[guro seguro]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[pure-ftpd]]></category>
		<category><![CDATA[ssl ssl]]></category>
		<category><![CDATA[tls tls]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6975</guid>

					<description><![CDATA[<p>Neste tutorial vamos montar um servidor FTP utilizando o PureFTPd com usuários no banco de dados Mysql ao invés de usar usuários do sistema, vamos ainda poder configurar quotas e limites de upload e download. Requisito: Debian 11&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6975">Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados MariaDB/MySQL com Debian 11 Bullseye</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: left;">Neste tutorial vamos montar um servidor FTP utilizando o PureFTPd com usuários no banco de dados Mysql ao invés de usar usuários do sistema, vamos ainda poder configurar quotas e limites de upload e download.</p>
<p><span id="more-6975"></span><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd.jpg" alt="" width="1000" height="474" class="alignnone size-full wp-image-6981" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd.jpg 1000w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-768x364.jpg 768w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-520x245.jpg 520w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-720x340.jpg 720w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></p>
<p><strong>Requisito:</strong><br />
<a href="https://blog.remontti.com.br/5792" rel="noopener noreferrer" target="_blank">Debian 11 Instalação Limpa</a></p>
<p>Vire root de maneira correta no Debian 11!</p>
<pre class="remontti-code"># su -</pre>
<h3>Instalação do banco de dados MariaDB</h3>
<pre class="remontti-code"># apt install mariadb-server mariadb-client </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.</p>
<p><strong>Definindo senha para o root do mariaDB</strong><br />
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>Instalação do Pure FTP</h3>
<pre class="remontti-code"># apt install pure-ftpd-mysql</pre>
<p>Agora criaremos nosso grupo FTP (<em>grupoftp</em>) e usuário (<em>pureftpd</em>) para que nosso usuários virtuais sejam mapeados.</p>
<pre class="remontti-code"># groupadd -g 2001 ftpgroup
# useradd -u 2001 -s /bin/false -d /bin/null -c &quot;pureftpd user&quot; -g ftpgroup ftpuser</pre>
<pre class="remontti-code"># vim /etc/default/pure-ftpd-common</pre>
<p>altere</p>
<pre class="remontti-code">UPLOADUID=
UPLOADGID=</pre>
<p>para </p>
<pre class="remontti-code">UPLOADUID=2001
UPLOADGID=2001</pre>
<p>Próximo passo criar a nossa base de dados, onde ficaram armazenado as informações dos nossos usuários.</p>
<pre class="remontti-code"># mariadb -u root -p</pre>
<p>Entre com a senha de root criada anteriormente.  Não esqueça de alterar senha <strong>(SENHA_FTP_USER)</strong>.</p>
<pre class="remontti-code">CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO &#039;pureftpd&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SENHA_FTP_USER&#039;;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO &#039;pureftpd&#039;@&#039;localhost.localdomain&#039; IDENTIFIED BY &#039;SENHA_FTP_USER&#039;;
FLUSH PRIVILEGES;
</pre>
<p>Crie a tabela</p>
<pre class="remontti-code">USE pureftpd;

CREATE TABLE ftpd (
User varchar(16) NOT NULL default &#039;&#039;,
status enum(&#039;0&#039;,&#039;1&#039;) NOT NULL default &#039;0&#039;,
Password varchar(64) NOT NULL default &#039;&#039;,
Uid varchar(11) NOT NULL default &#039;-1&#039;,
Gid varchar(11) NOT NULL default &#039;-1&#039;,
Dir varchar(128) NOT NULL default &#039;&#039;,
ULBandwidth smallint(5) NOT NULL default &#039;0&#039;,
DLBandwidth smallint(5) NOT NULL default &#039;0&#039;,
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default &#039;*&#039;,
QuotaSize smallint(5) NOT NULL default &#039;0&#039;,
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
);

EXIT;
</pre>
<p>Salve o arquivo original /etc/pure-ftpd/db/mysql.conf e crie um novo com novas configurações, mais uma vez preste atenção a senha [SENHA_FTP_USER].</p>
<pre class="remontti-code"># mv /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
# vim /etc/pure-ftpd/db/mysql.conf</pre>
<p>Adicione:</p>
<pre class="remontti-code">MYSQLSocket /var/run/mysqld/mysqld.sock
MYSQLUser pureftpd
MYSQLPassword SENHA_FTP_USER
MYSQLDatabase pureftpd
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User=&quot;\L&quot; AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MYSQLGetUID SELECT Uid FROM ftpd WHERE User=&quot;\L&quot; AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MYSQLGetGID SELECT Gid FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MYSQLGetDir SELECT Dir FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)</pre>
<p>Esteja certo que você mudou o campo MYSQLPassword &#8216;SENHA_FTP_USER&#8217;</p>
<p>A configuração <strong>ChrootEveryone</strong> fará com que o PureFTPd faça chroot em todos os usuários virtuais em seu diretório pessoal, para que ele não consiga procurar diretórios e arquivos fora do diretório pessoal. A linha <strong>CreateHomeDir</strong> fará com que o PureFTPd crie o diretório inicial de um usuário quando o usuário efetuar login e o diretório inicial ainda não existir.</p>
<pre class="remontti-code"># echo yes &gt; /etc/pure-ftpd/conf/ChrootEveryone
# echo yes &gt; /etc/pure-ftpd/conf/CreateHomeDir
# echo 1 &gt; /etc/pure-ftpd/conf/TLS
# echo HIGH &gt; /etc/pure-ftpd/conf/TLSCipherSuite</pre>
<p>Gere os certificados.</p>
<pre class="remontti-code"># openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048
# openssl req -x509 -nodes -newkey rsa:2048 -sha256 -keyout \
  /etc/ssl/private/pure-ftpd.pem \
  -out /etc/ssl/private/pure-ftpd.pem
# chmod 600 /etc/ssl/private/*.pem</pre>
<p>Vamos criar agora um usuário, Qual ficará dentro do diretório <strong>/var/pure-ftpd/ </strong> onde vou deixar todos meus usuários criado, porém você pode escolher qualquer diretório, usarei a pasta /var/ pois seria o &#8220;lugar correto&#8221;.</p>
<p>Entre no mariadb com seu usuario pureftpd e senha para fazer a criação do usuário ftp, no meu ex vou criar o usuário chamado remontti.</p>
<pre class="remontti-code"># mysql -u pureftpd -p</pre>
<pre class="remontti-code">USE pureftpd;

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) 
VALUES (&#039;remontti&#039;, &#039;1&#039;, MD5(&#039;SUA_SENHA&#039;), &#039;2001&#039;, &#039;2001&#039;, &#039;/var/pure-ftpd/remontti&#039;, &#039;100&#039;, &#039;100&#039;, &#039;&#039;, &#039;*&#039;, &#039;50&#039;, &#039;0&#039;);

SELECT * FROM ftpd;
EXIT;</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb.png" data-rel="lightbox-gallery-9egLW3Qg" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb.png" alt="" width="2076" height="896" class="alignnone size-full wp-image-6984" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb.png 2076w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb-300x129.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb-1024x442.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb-768x331.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb-1536x663.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2022/12/pure-ftpd-mysql-mariadb-2048x884.png 2048w" sizes="auto, (max-width: 2076px) 100vw, 2076px" /></a><br />
Limpe o histórico do mariadb. Não queremos ninguém vendo o q digitamos lá <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"># &gt; /root/.mysql_history</pre>
<p>Ao fazer login o diretório /var/pure-ftpd/USUARIO será criado automaticamente.</p>
<p>Restarte o serviço e verifique o status do mesmo</p>
<pre class="remontti-code"># systemctl restart pure-ftpd-mysql
# systemctl status pure-ftpd-mysql</pre>
<p>Sempre que você queira criar um novo usuário, você tem que criar uma entrada na tabela ftpd.<br />
Explicando a estrutura da tabela:</p>
<p><strong>User:</strong> Seu usuário (ex. como no nosso usuário acima: teste).<br />
<strong>Status: </strong>0 ou 1. 0 deixará sua conta inativa, e o usuário não pode logar.<br />
<strong>Password:</strong> A senha do usuário. A senha está encriptada com MD5.<br />
<strong>UID:</strong> O userid do usuário ftp que você criou (ex: 2001)<br />
<strong>GID: </strong>O groupid do grupo ftp que você criou (ex: 2001).<br />
<strong>Dir:</strong> Diretório home do usuário (ex: /home/teste). Se não existir será criado quando logar pela primeira vez via FTP. O usuário será preso neste diretório home.<br />
<strong>ULBandwidth: </strong>Controle de Upload em KB/Sec. Use 0 para que seja ilimitado.<br />
<strong>DLBandwidth: </strong>Controle de Download em KB/sec. Use 0 para que seja ilimitado.<br />
<strong>Comment: </strong>Você pode inserir qualquer comentário (ex: Usuário da administração). Você deixa este campo limpo.<br />
<strong>Ipaccess: </strong>Você pode definir o ip que serão permitidos para conectar nesta conta FTP. Ou &#8216;*&#8217; para qualquer endereço IP.<br />
<strong>QuotaSize: </strong>Espaço de armazenamento em MB (não KB, como em ULBandwidth eDLBandwidth) Defina 0 como ilimitado.<br />
<strong>QuotaFiles:</strong> Número total de arquivos que este usuário poderá salvar. Defina 0 para ilimitado.</p>
<h3>Protegendo com Fail2ban</h3>
<pre class="remontti-code"># apt install fail2ban
# echo yes &gt; /etc/pure-ftpd/conf/DontResolve
# vim /etc/fail2ban/jail.d/defaults-debian.conf</pre>
<p>Adicione o filtro pure-ftpd.</p>
<pre class="remontti-code">[sshd]
enabled = true
[pure-ftpd]
enabled = true</pre>
<p>Restarte o fail2ban</p>
<pre class="remontti-code"># systemctl restart fail2ban</pre>
<p>Se você tiver interesse em ter uma interface web para gerenciamento recomendo:<br />
<a href="https://blog.remontti.com.br/5893" rel="noopener noreferrer" target="_blank">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin + Let’s Encrypt no Debian 11 bullseye “LAMP”</a></p>
<p>Gostou?</p>
<p>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!<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>Fonte:<a href="http://download.pureftpd.org/pub/pure-ftpd/doc/README.MySQL" rel="noopener noreferrer" target="_blank"> http://download.pureftpd.org/pub/pure-ftpd/doc/README.MySQL</a></p>
<p>O post <a href="https://blog.remontti.com.br/6975">Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados MariaDB/MySQL com Debian 11 Bullseye</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6975/feed</wfw:commentRss>
			<slash:comments>14</slash:comments>
		
		
			</item>
		<item>
		<title>Sistema de software de vigilância por vídeo de código aberto: ZoneMinder</title>
		<link>https://blog.remontti.com.br/6786</link>
					<comments>https://blog.remontti.com.br/6786#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Thu, 15 Sep 2022 19:14:51 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[cctv]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[vigilância]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6786</guid>

					<description><![CDATA[<p>ZoneMinder é um conjunto integrado de aplicativos que fornecem uma solução completa de vigilância que permite a captura, análise, gravação e monitoramento de qualquer CCTV ou câmeras de segurança conectadas a uma máquina baseada&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6786">Sistema de software de vigilância por vídeo de código aberto: ZoneMinder</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://zoneminder.com/" rel="noopener" target="_blank">ZoneMinder</a> é um conjunto integrado de aplicativos que fornecem uma solução completa de vigilância que permite a captura, análise, gravação e monitoramento de qualquer CCTV ou câmeras de segurança conectadas a uma máquina baseada em Linux. Ele foi projetado para ser executado em distribuições que suportam a interface Vídeo para Linux (V4L) e foi testado com câmeras de vídeo conectadas a placas BTTV, várias câmeras USB e também suporta a maioria das câmeras de rede IP.</p>
<p><strong>Distribuição utilizada neste tutorial:</strong><br />
Debian 11 (Bullseye) 64 bits <a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank">instalação mínima</a><br />
<a href="https://blog.remontti.com.br/5867" rel="noopener" target="_blank">Como melhorar a produtividade no seu Debian após instalação</a> (Recomendado)</p>
<p><strong>Atualize e instale os pacotes necessários</strong></p>
<pre class="remontti-code"># apt update -y 
# apt upgrade -y 
# apt install vim wget apache2 mariadb-server php libapache2-mod-php php-mysql lsb-release gnupg2 sudo -y</pre>
<p><strong>Adicione o repositório do Zoneminder</strong></p>
<pre class="remontti-code"># echo &quot;deb https://zmrepo.zoneminder.com/debian/release-1.36 &quot;`lsb_release -c -s`&quot;/&quot; &gt; /etc/apt/sources.list.d/zoneminder.list
# wget -O - https://zmrepo.zoneminder.com/debian/archive-keyring.gpg | apt-key add -
# apt update</pre>
<h4>Instalação</h4>
<pre class="remontti-code"># apt install zoneminder</pre>
<p>Ajustando o timezone do PHP</p>
<pre class="remontti-code"># sed -i &quot;s/;date.timezone =/date.timezone = $(sed &#039;s/\//\\\//&#039; /etc/timezone)/g&quot; /etc/php/7.4/apache2/php.ini</pre>
<p>Habilitaremos as configurações do zoneminder para o apache bem como ativar alguns mods. </p>
<pre class="remontti-code"># a2enconf zoneminder
# a2enmod rewrite headers expires cgi</pre>
<p>Reinicie o apache</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>Crie um banco de dados para o zoneminder</p>
<pre class="remontti-code"># mariadb -u root</pre>
<p>Altere ALTERE_3ST4_SENHA para sua senha.</p>
<pre class="remontti-code-plain">CREATE DATABASE zm;
GRANT ALL PRIVILEGES ON zm.* TO &#039;zm&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;ALTERE_3ST4_SENHA&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Altere em /etc/zm/zm.conf ZM_DB_USER e ZM_DB_PASS para os calores criados.</p>
<pre class="remontti-code"># vim /etc/zm/zm.conf</pre>
<pre class="remontti-code-plain">ZM_DB_USER=zm
ZM_DB_PASS=ALTERE_3ST4_SENHA</pre>
<p>Habilite o zoneminder para iniciar no boot e start o mesmo.</p>
<pre class="remontti-code"># systemctl enable zoneminder
# systemctl start zoneminder</pre>
<p>Por segurança recomendo definir uma senha para o root do mariaDB<br />
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.</p>
<pre class="remontti-code"># mariadb -u root</pre>
<pre class="remontti-code-plain">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!</p>
<pre class="remontti-code"># &gt; /root/.mysql_history</pre>
<p>Abra o Zoneminder em seu navegador acessando<strong> http://___IP___/zm </strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_start.png" data-rel="lightbox-gallery-863qmRH3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_start-300x206.png" alt="" width="300" height="206" class="alignnone size-medium wp-image-6792" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_start-300x206.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_start-1024x703.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_start-768x528.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_start-1536x1055.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_start.png 1680w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Clique em <strong>APPLY</strong></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_01.png" data-rel="lightbox-gallery-863qmRH3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_01-300x75.png" alt="" width="300" height="75" class="alignnone size-medium wp-image-6793" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_01-300x75.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_01-1024x255.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_01-768x191.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_01-1536x382.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_01.png 1680w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Para alterar para Portugues acesse o menu <strong>Options</strong> localize <strong>LANG_DEFAULT</strong> e altere para <strong>pt_br</strong> e clique em <strong>SAVE</strong>. Recarregue a pagina para atualiza.</p>
<p>Para mais ajuda acesse: <strong><a href="https://zoneminder.readthedocs.io/en/stable/userguide/index.html" rel="noopener" target="_blank">Guia do Usuário</a></strong></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_02.png" data-rel="lightbox-gallery-863qmRH3" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_02-300x120.png" alt="" width="300" height="120" class="alignnone size-medium wp-image-6801" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_02-300x120.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_02-1024x411.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_02-768x308.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_02-1536x617.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2022/09/zoneminder_debian_11_bullseye_02.png 1666w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>FONTES:<br />
<a href="https://zoneminder.readthedocs.org/" rel="noopener" target="_blank">https://zoneminder.readthedocs.org/</a><br />
<a href="https://wiki.zoneminder.com/Debian_11_Bullseye_with_Zoneminder_1.36.x" rel="noopener" target="_blank">https://wiki.zoneminder.com/Debian_11_Bullseye_with_Zoneminder_1.36.x</a><br />
<a href="https://github.com/ZoneMinder/ZoneMinder" rel="noopener" target="_blank">https://github.com/ZoneMinder/ZoneMinder</a><br />
RECOMENDADO:<br /><a href="https://github.com/pliablepixels/zmeventnotification" rel="noopener" target="_blank">https://github.com/pliablepixels/zmeventnotification</a><br /><a href="https://github.com/pliablepixels/zmMagik" rel="noopener" target="_blank">https://github.com/pliablepixels/zmMagik</a><br /><a href="https://github.com/manupap1/libzoneminder-plugin-openalpr" rel="noopener" target="_blank">https://github.com/manupap1/libzoneminder-plugin-openalpr</a></p>
<p>O post <a href="https://blog.remontti.com.br/6786">Sistema de software de vigilância por vídeo de código aberto: ZoneMinder</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6786/feed</wfw:commentRss>
			<slash:comments>19</slash:comments>
		
		
			</item>
		<item>
		<title>ONLYOFFICE Workspace &#8211; A suíte office mais completa e poderosa open source</title>
		<link>https://blog.remontti.com.br/6627</link>
					<comments>https://blog.remontti.com.br/6627#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Thu, 23 Jun 2022 23:31:27 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[ms office]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[onlyoffice]]></category>
		<category><![CDATA[suite]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6627</guid>

					<description><![CDATA[<p>ONLYOFFICE Workspace é um pacote de escritório completo multiplataforma gratuito para pessoas que buscam uma alternativa ao Microsoft Office. Você ira ter uma plataforma foda online! 🙂 Gerenciar todos os seus processos empresariais &#8211;&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6627">ONLYOFFICE Workspace &#8211; A suíte office mais completa e poderosa open source</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong><a href="https://www.onlyoffice.com/pt/workspace.aspx" rel="noopener" target="_blank">ONLYOFFICE Workspace</a></strong> é um pacote de escritório completo multiplataforma gratuito para pessoas que buscam uma alternativa ao Microsoft Office. Você ira ter uma plataforma <del datetime="2022-06-23T19:44:25+00:00">foda</del> online! <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><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian.png" alt="" width="1250" height="387" class="alignnone size-full wp-image-6642" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian.png 1250w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian-300x93.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian-1024x317.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian-768x238.png 768w" sizes="auto, (max-width: 1250px) 100vw, 1250px" /></p>
<p>Gerenciar todos os seus processos empresariais<br />
<strong>&#8211; Editor de documentos<br />
&#8211; Gerenciador de projetos.<br />
&#8211; Painel CRM<br />
&#8211; Cliente de e-mail<br />
&#8211; Lista de contatos<br />
&#8211; Agenda</strong></p>
<p>Neste tutorial irei ensinar instalar a versão Community <em>(faça você mesmo)</em>, existe <a href="https://www.onlyoffice.com/pt/download-workspace.aspx?from=workspace#workspace-community" rel="noopener" target="_blank">várias forma de instalação</a>, mas como somos os cara do Debian bora lá montar nosso servidor!</p>
<p><strong>Requisitos mínimos de sistema:</strong><br />
&#8211; CPU dual core 2 GHz<br />
&#8211; RAM 6 GB<br />
&#8211; 6 GB SWAP<br />
&#8211; HDD 40 GB<br />
&#8211; OS amd64</p>
<p><strong>Distribuição utilizada neste tutorial:</strong><br />
Debian 11 (Bullseye) 64 bits <a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank">instalação mínima</a><br />
<a href="https://blog.remontti.com.br/5867" rel="noopener" target="_blank">Como melhorar a produtividade no seu Debian após instalação</a> (Recomendado)</p>
<pre class="remontti-code"># apt install wget
# wget https://download.onlyoffice.com/install/workspace-install.sh</pre>
<p>Temos varias opções de instalação, execute o script com parâmetro <strong>-h</strong> para conhece-las.</p>
<pre class="remontti-code"># bash workspace-install.sh -h</pre>
<p>Vou deixar aqui duas opções que serão provavelmente a de sua escolha: </p>
<h3>Instale todos os componentes da solução:</h3>
<h5>Configurando um domínio para o serviço de e-mail</h5>
<p>No Debian necessitamos habilitar o <strong>vsyscall</strong> que vem desabilitado no kernel, o vsyscall é um mecanismo que é usado para acelerar certas chamadas de sistema e necessário para que ONLYOFFICE Mail funcione corretamente. OBS: Para instalação em contêiner do ONLYOFFICE.<br />
Para verificar se vsyscall esta ativo execute o comando:</p>
<pre class="remontti-code"># cat /proc/self/maps | egrep &#039;vdso|vsyscall&#039;</pre>
<p>Se o resultado for o a baixo será necessário ativar ele.</p>
<pre class="remontti-code-plain">7fffa9dd3000-7fffa9dd5000 r-xp 00000000 00:00 0             [vdso]</pre>
<pre class="remontti-code"># nano /etc/default/grub</pre>
<p>Altere:</p>
<pre class="remontti-code-plain">GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet&quot;</pre>
<p>Por:</p>
<pre class="remontti-code-plain">GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet vsyscall=emulate&quot;</pre>
<p>Atualize o grub e reinicie</p>
<pre class="remontti-code"># update-grub
# reboot</pre>
<p>Agora ao executar o comando, o retorno será:</p>
<pre class="remontti-code-plain"># cat /proc/self/maps | egrep &#039;vdso|vsyscall&#039;
7ffe7f381000-7ffe7f383000 r-xp 00000000 00:00 0                [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0        [vsyscall]</pre>
<p>Vamos a instalação, informando seu domínio utilizando o parâmetro -md. <em>(ou pule para o próximo comando para não instalar o servidor de e-mail)</em></p>
<pre class="remontti-code"># bash workspace-install.sh -md onlyoffice.remontti.com.br</pre>
<h5>Sem servidor de e-mail</h5>
<pre class="remontti-code"># bash workspace-install.sh -ims false</pre>
<p>Com sua escolha, agora ao executar o script será lhe solicitados o forma de instalação: <strong>Install with Docker [Y/N/C]?</strong><br />
&#8211; <strong>Y</strong> Irá instalar o Onlyoffice usando docker. (Recomendado)<br />
&#8211; <strong>N</strong> Irá instalar o Onlyoffice usando pacotes deb.<br />
&#8211; <strong>C</strong> Cancelar.</p>
<p>Irei utilizar <strong>opção recomendada</strong> pela Onlyoffice, com docker <strong>[Y]</strong>, se você é mais ninja e quer ter total gerencia de forma direta pode fazer a instalação pelos pacotes debian utilizando opção [N].</p>
<p>A instalação ira levar alguns minutos&#8230; (Depende do seu hardware e velocidade da conexão)</p>
<p>Ao finalizar podemos verificar quais as portas foram abertas com o comando:</p>
<pre class="remontti-code"># ss -putan | grep LIST</pre>
<pre class="remontti-code-plain">
tcp   LISTEN 0      4096           0.0.0.0:4190         0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=7370,fd=4))             
tcp   LISTEN 0      4096           0.0.0.0:993          0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=7417,fd=4))             
tcp   LISTEN 0      4096           0.0.0.0:995          0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=7393,fd=4))             
tcp   LISTEN 0      4096           0.0.0.0:5222         0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=15682,fd=4))            
tcp   LISTEN 0      4096           0.0.0.0:587          0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=7439,fd=4))             
tcp   LISTEN 0      4096           0.0.0.0:143          0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=7483,fd=4))             
tcp   LISTEN 0      4096           0.0.0.0:80           0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=15724,fd=4))            
tcp   LISTEN 0      4096           0.0.0.0:465          0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=7462,fd=4))             
tcp   LISTEN 0      128            0.0.0.0:22           0.0.0.0:*     users:((&quot;sshd&quot;,pid=407,fd=3))                      
tcp   LISTEN 0      4096           0.0.0.0:25           0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=7504,fd=4))             
tcp   LISTEN 0      4096           0.0.0.0:443          0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=15704,fd=4))            
tcp   LISTEN 0      4096              [::]:4190            [::]:*     users:((&quot;docker-proxy&quot;,pid=7380,fd=4))             
tcp   LISTEN 0      4096              [::]:993             [::]:*     users:((&quot;docker-proxy&quot;,pid=7425,fd=4))             
tcp   LISTEN 0      4096              [::]:995             [::]:*     users:((&quot;docker-proxy&quot;,pid=7401,fd=4))             
tcp   LISTEN 0      4096              [::]:5222            [::]:*     users:((&quot;docker-proxy&quot;,pid=15690,fd=4))            
tcp   LISTEN 0      4096              [::]:587             [::]:*     users:((&quot;docker-proxy&quot;,pid=7446,fd=4))             
tcp   LISTEN 0      4096              [::]:143             [::]:*     users:((&quot;docker-proxy&quot;,pid=7489,fd=4))             
tcp   LISTEN 0      4096              [::]:80              [::]:*     users:((&quot;docker-proxy&quot;,pid=15731,fd=4))            
tcp   LISTEN 0      4096              [::]:465             [::]:*     users:((&quot;docker-proxy&quot;,pid=7468,fd=4))             
tcp   LISTEN 0      128               [::]:22              [::]:*     users:((&quot;sshd&quot;,pid=407,fd=4))                      
tcp   LISTEN 0      4096              [::]:25              [::]:*     users:((&quot;docker-proxy&quot;,pid=7511,fd=4))             
tcp   LISTEN 0      4096              [::]:443             [::]:*     users:((&quot;docker-proxy&quot;,pid=15712,fd=4))</pre>
<p>Podemos verificas os containers dockers:</p>
<pre class="remontti-code"># docker ps -a -s</pre>
<pre class="remontti-code-plain">
CONTAINER ID   IMAGE             COMMAND                  PORTS                        SIZE

779b13c4376b   communityserver   &quot;/app/run-community-…&quot;   0.0.0.0:80-&gt;80/tcp,          76MB (virtual 4.54GB)
                                                          :::80-&gt;80/tcp, 
                                                          0.0.0.0:443-&gt;443/tcp, 
                                                          :::443-&gt;443/tcp, 
                                                          3306/tcp, 
                                                          5280/tcp, 
                                                          9865-9866/tcp, 
                                                          9871/tcp, 
                                                          9882/tcp, 
                                                          0.0.0.0:5222-&gt;5222/tcp, 
                                                          :::5222-&gt;5222/tcp, 
                                                          9888/tcp

6e408504e7b0   controlpanel      &quot;/var/www/onlyoffice…&quot;   80/tcp, 443/tcp              909kB (virtual 520MB)

3beaea4df31e   mailserver        &quot;/bin/sh -c &#039;export …&quot;   0.0.0.0:25-&gt;25/tcp,          3.3MB (virtual 1.9GB)
                                                          :::25-&gt;25/tcp, 
                                                          0.0.0.0:143-&gt;143/tcp, 
                                                          :::143-&gt;143/tcp, 
                                                          0.0.0.0:465-&gt;465/tcp, 
                                                          :::465-&gt;465/tcp, 
                                                          0.0.0.0:587-&gt;587/tcp, 
                                                          :::587-&gt;587/tcp, 
                                                          0.0.0.0:993-&gt;993/tcp, 
                                                          :::993-&gt;993/tcp, 
                                                          0.0.0.0:995-&gt;995/tcp, 
                                                          :::995-&gt;995/tcp, 
                                                          3306/tcp, 
                                                          0.0.0.0:4190-&gt;4190/tcp, 
                                                          :::4190-&gt;4190/tcp, 
                                                          8081/tcp
9cf6e70c156f   documentserver    &quot;/app/ds/run-documen…&quot;   80/tcp, 443/tcp              498MB (virtual 3.43GB

a33ae4057009   elasticsearch     &quot;/tini -- /usr/local…&quot;   9200/tcp, 9300/tcp           149kB (virtual 812MB)

ba2fd3132277   mysql             &quot;docker-entrypoint.s…&quot;   3306/tcp, 33060/tcp          6B (virtual 524MB)

</pre>
<p>Acesse seu domínio em seu navegado (ou endereço IP), ao acessar pela primeira vez será feito o cadastro do administrador.</p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_1.png" alt="" width="1235" height="675" class="alignnone size-full wp-image-6650" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_1.png 1235w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_1-300x164.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_1-1024x560.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_1-768x420.png 768w" sizes="auto, (max-width: 1235px) 100vw, 1235px" /></p>
<p>Plataforma instalada com sucesso!<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_2.png" alt="" width="1254" height="678" class="alignnone size-full wp-image-6649" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_2.png 1254w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_2-300x162.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_2-1024x554.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_2-768x415.png 768w" sizes="auto, (max-width: 1254px) 100vw, 1254px" /></p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_5.png" alt="" width="1681" height="987" class="alignnone size-full wp-image-6658" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_5.png 1681w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_5-300x176.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_5-1024x601.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_5-768x451.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_5-1536x902.png 1536w" sizes="auto, (max-width: 1681px) 100vw, 1681px" /></p>
<p>Para convidar outros usuários a plataforma basta acessar as <strong>Configurações</strong> e clicar em: <strong>Convidar usuário para o portal</strong>, e enviar o link para ele.</p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_6.png" alt="" width="1676" height="696" class="alignnone size-full wp-image-6660" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_6.png 1676w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_6-300x125.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_6-1024x425.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_6-768x319.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_6-1536x638.png 1536w" sizes="auto, (max-width: 1676px) 100vw, 1676px" /></p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_7.png" alt="" width="1277" height="625" class="alignnone size-full wp-image-6662" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_7.png 1277w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_7-300x147.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_7-1024x501.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_7-768x376.png 768w" sizes="auto, (max-width: 1277px) 100vw, 1277px" /></p>
<p>Um e-mail será enviado para você também de confirmação, e  após outro com algumas instruções.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_3.png" alt="" width="727" height="432" class="alignnone size-full wp-image-6654" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_3.png 727w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_3-300x178.png 300w" sizes="auto, (max-width: 727px) 100vw, 727px" /></p>
<p>As principais configurações são feitas em <strong>Control Panel</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_4.png" alt="" width="1161" height="952" class="alignnone size-full wp-image-6657" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_4.png 1161w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_4-300x246.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_4-1024x840.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_4-768x630.png 768w" sizes="auto, (max-width: 1161px) 100vw, 1161px" /></p>
<p>Que tal conectar ao &#8220;<a href="https://blog.remontti.com.br/3557" rel="noopener" target="_blank">nosso nextcloud</a>&#8220;?<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_8.png" alt="" width="1679" height="620" class="alignnone size-full wp-image-6665" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_8.png 1679w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_8-300x111.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_8-1024x378.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_8-768x284.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/onlyoffice_debian_11_8-1536x567.png 1536w" sizes="auto, (max-width: 1679px) 100vw, 1679px" /></p>
<p>Te muita coisa mas muita coisa, que se fosse escrever um tutorial levaria dias. A central de ajuda é muito completa, tem muito material na documentação, então não vou ficar criando novamente a roda <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>Meu objetivo era apresentar o projeto e realizar a instalação do mesmo. Espero que tenha gostado! </p>
<p>E não esqueça de realizar atualizações executando o script:</p>
<pre class="remontti-code"># bash workspace-install.sh -u true</pre>
<p><strong>Se quiser apoiar o blog e fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>Fonte:<br />
<a href="https://helpcenter.onlyoffice.com/administration/workspace.aspx" rel="noopener" target="_blank">https://helpcenter.onlyoffice.com</a></p>
<p>O post <a href="https://blog.remontti.com.br/6627">ONLYOFFICE Workspace &#8211; A suíte office mais completa e poderosa open source</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6627/feed</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Conheça o Cockpit, uma poderosa ferramenta para administração de servidores através do seu navegador.</title>
		<link>https://blog.remontti.com.br/6591</link>
					<comments>https://blog.remontti.com.br/6591#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sun, 19 Jun 2022 21:50:52 +0000</pubDate>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[cockpit]]></category>
		<category><![CDATA[containers]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[libvirt]]></category>
		<category><![CDATA[libvirt-bin]]></category>
		<category><![CDATA[podman]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualização]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6591</guid>

					<description><![CDATA[<p>Cockpit é uma interface de administração de servidor interativa. É fácil de usar e muito leve. O Cockpit interage diretamente com o sistema operacional a partir de uma sessão real do Linux em um&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6591">Conheça o Cockpit, uma poderosa ferramenta para administração de servidores através do seu navegador.</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/debian_cockpit_cover.png" alt="" width="720" height="340" class="alignnone size-full wp-image-6622" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_cover.png 720w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_cover-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_cover-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /><br />
Cockpit é uma interface de administração de servidor interativa. É fácil de usar e muito leve. O Cockpit interage diretamente com o sistema operacional a partir de uma sessão real do Linux em um navegador. Pode ser instalado em muitos sistemas operacionais Linux, incluindo Debian, Fedora e RHEL.</p>
<p>O Cockpit permite que os administradores de sistema executem facilmente tarefas como iniciar contêineres, virtualização, administração de armazenamento, configuração de rede, inspeção de logs e assim por diante.</p>
<p><strong>Distribuição utilizada neste tutorial:</strong><br />
Debian 11 (Bullseye) 64 bits <a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank">instalação mínima</a><br />
<a href="https://blog.remontti.com.br/5867" rel="noopener" target="_blank">Como melhorar a produtividade no seu Debian após instalação</a> (Recomendado)</p>
<h4>Ativando repositório Backports</h4>
<p>Usarei o repositório <a href="https://backports.debian.org/" rel="noopener" target="_blank">backports</a> para obter os pacotes mais recentes do Cockpit (tem mais recursos)</p>
<pre class="remontti-code"># . /etc/os-release 
# echo &quot;deb http://deb.debian.org/debian ${VERSION_CODENAME}-backports main&quot; &gt; /etc/apt/sources.list.d/backports.list
# apt update</pre>
<h4>Instalação Cockpit</h4>
<p>Iremos instalar o cockpit com algumas &#8220;extensões&#8221; básicas. </p>
<pre class="remontti-code"># apt install -t ${VERSION_CODENAME}-backports cockpit \
 cockpit-storaged cockpit-networkmanager cockpit-packagekit cockpit-doc lm-sensors </pre>
<p>Cockpit é executado utilizando a porta 9090, para verificar se a mesta esta aberta execute:</p>
<pre class="remontti-code"># ss -pnltu | grep 9090</pre>
<p>Abra em seu navegador <strong>http://HOST:9090/</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_login.png" alt="" width="1920" height="947" class="alignnone size-full wp-image-6593" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_login.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_login-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_login-1024x505.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_login-768x379.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_login-1536x758.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /><br />
Entre com usuário e senha do sistema operacional. Todos usuários irão logar, sistemas como Ubuntu você pode entrar com seu usuário comum e solicitar permissões, mas neste caso como é um debian entrarei diretamente com <strong>root</strong>.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_1.png" alt="" width="1920" height="885" class="alignnone size-full wp-image-6594" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_1.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_1-300x138.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_1-1024x472.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_1-768x354.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_1-1536x708.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_2.png" data-rel="lightbox-gallery-G4Dldn51" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_2.png" alt="" width="1911" height="729" class="alignnone size-full wp-image-6601" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_2.png 1911w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_2-300x114.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_2-1024x391.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_2-768x293.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_2-1536x586.png 1536w" sizes="auto, (max-width: 1911px) 100vw, 1911px" /></a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_3.png" data-rel="lightbox-gallery-G4Dldn51" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_3.png" alt="" width="1919" height="839" class="alignnone size-full wp-image-6600" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_3.png 1919w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_3-300x131.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_3-1024x448.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_3-768x336.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_3-1536x672.png 1536w" sizes="auto, (max-width: 1919px) 100vw, 1919px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_4.png" data-rel="lightbox-gallery-G4Dldn51" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_4.png" alt="" width="1920" height="1181" class="alignnone size-full wp-image-6599" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_4.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_4-300x185.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_4-1024x630.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_4-768x472.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_4-1536x945.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_5.png" data-rel="lightbox-gallery-G4Dldn51" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_5.png" alt="" width="1920" height="885" class="alignnone size-full wp-image-6598" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_5.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_5-300x138.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_5-1024x472.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_5-768x354.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_5-1536x708.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_6.png" data-rel="lightbox-gallery-G4Dldn51" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_6.png" alt="" width="1920" height="837" class="alignnone size-full wp-image-6597" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_6.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_6-300x131.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_6-1024x446.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_6-768x335.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_6-1536x670.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_7.png" data-rel="lightbox-gallery-G4Dldn51" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_7.png" alt="" width="1920" height="885" class="alignnone size-full wp-image-6596" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_7.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_7-300x138.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_7-1024x472.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_7-768x354.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_7-1536x708.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_8.png" data-rel="lightbox-gallery-G4Dldn51" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_8.png" alt="" width="1920" height="885" class="alignnone size-full wp-image-6595" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_8.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_8-300x138.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_8-1024x472.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_8-768x354.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_8-1536x708.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></a></p>
<p>Umas das coisar que não gosto que durante a instalação do cockpit ganhamos um brinde um serviço de e-mail exim4, como nõ tenho menos interesse em ter ele rodando irei desativa-lo. </p>
<pre class="remontti-code"># systemctl stop exim4 
# systemctl disable exim4</pre>
<h3>Gerenciando Máquinas virtuais</h3>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/06/Libvirt_logo.svg_.png" data-rel="lightbox-gallery-G4Dldn51" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/Libvirt_logo.svg_-300x134.png" alt="" width="300" height="134" class="alignnone size-medium wp-image-6605" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/Libvirt_logo.svg_-300x134.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/Libvirt_logo.svg_-1024x457.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/Libvirt_logo.svg_-768x343.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/Libvirt_logo.svg_.png 1200w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Que tal subir VMs sem um sistema como VMware, Proxmox, Xen, Virtualbox, entre outros?<br />
&#8211; <a href="https://libvirt.org/dbus.html" rel="noopener" target="_blank">libvirt-dbus</a> para enumerar máquinas, obter notificações de atualização de status e operações como iniciar/parar/excluir<br />
&#8211; <a href="https://manpages.org/virt-install" rel="noopener" target="_blank">virt-install</a> e <a href="https://manpages.org/virt-xml" rel="noopener" target="_blank">virt-xml</a> para criar e modificar definições de máquina; ambos fazem parte do projeto <a href="https://virt-manager.org/" rel="noopener" target="_blank">virt-manager</a><br />
Instale os pacotes:</p>
<pre class="remontti-code"># . /etc/os-release
# apt install -t ${VERSION_CODENAME}-backports cockpit-machines \
 libvirt-daemon-driver-storage-gluster libvirt-daemon-driver-storage-iscsi-direct \
 libvirt-daemon-driver-storage-rbd libvirt-daemon-driver-storage-zfs libvirt-login-shell</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_libvirt_1.png" data-rel="lightbox-gallery-G4Dldn51" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_libvirt_1.png" alt="" width="1920" height="885" class="alignnone size-full wp-image-6603" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_libvirt_1.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_libvirt_1-300x138.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_libvirt_1-1024x472.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_libvirt_1-768x354.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_libvirt_1-1536x708.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_libvirt_2.png" data-rel="lightbox-gallery-G4Dldn51" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_libvirt_2.png" alt="" width="1920" height="885" class="alignnone size-full wp-image-6604" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_libvirt_2.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_libvirt_2-300x138.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_libvirt_2-1024x472.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_libvirt_2-768x354.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_libvirt_2-1536x708.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/06/libvirt.png" data-rel="lightbox-gallery-G4Dldn51" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/libvirt.png" alt="" width="1680" height="1837" class="alignnone size-full wp-image-6624" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/libvirt.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2022/06/libvirt-274x300.png 274w, https://blog.remontti.com.br/wp-content/uploads/2022/06/libvirt-936x1024.png 936w, https://blog.remontti.com.br/wp-content/uploads/2022/06/libvirt-768x840.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/libvirt-1405x1536.png 1405w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p>A imagens (discos) das VMs ficam em <strong>/var/lib/libvirt/images</strong></p>
<h2>Gerenciando Containers</h2>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/podman_logo-300x77.png" alt="" width="300" height="77" class="alignnone size-medium wp-image-6609" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/podman_logo-300x77.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/podman_logo-768x197.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/podman_logo.png 867w" sizes="auto, (max-width: 300px) 100vw, 300px" /><br />
Ativa no Cockpit interface para containers <strong><a href="https://podman.io/" rel="noopener" target="_blank">Podman</a></strong> que é uma ferramenta multiplataforma de linha de comando, Open-Source que permite criar e gerenciar imagens de contêiner diretamente.</p>
<p>Um dos maiores diferenciais do Podman é que ele não precisa de um serviço (daemon-less) rodando em background para funcionar, e é totalmente Gratuito e Open-Source. É uma alternativa amigável para quem já esta acostumado com Docker, já que é baseado na CLI do Docker, tendo compatibilidade com as imagens Docker e suportando tambem Dockerfile’s e sendo possível ate rodar docker-compose.yml com podman-compose.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2022/06/docker_vs_podman.png" data-rel="lightbox-gallery-G4Dldn51" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/docker_vs_podman.png" alt="" width="567" height="347" class="alignnone size-full wp-image-6607" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/docker_vs_podman.png 567w, https://blog.remontti.com.br/wp-content/uploads/2022/06/docker_vs_podman-300x184.png 300w" sizes="auto, (max-width: 567px) 100vw, 567px" /></a><br />
Instale o pacote <a href="https://github.com/cockpit-project/cockpit-podman" rel="noopener" target="_blank"><strong>cockpit-podman</strong></a></p>
<pre class="remontti-code"># . /etc/os-release
# apt install -t ${VERSION_CODENAME}-backports cockpit-podman</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_1.png" data-rel="lightbox-gallery-G4Dldn51" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_1.png" alt="" width="1920" height="947" class="alignnone size-full wp-image-6618" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_1.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_1-300x148.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_1-1024x505.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_1-768x379.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_1-1536x758.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_2.png" data-rel="lightbox-gallery-G4Dldn51" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_2.png" alt="" width="1918" height="885" class="alignnone size-full wp-image-6617" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_2.png 1918w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_2-300x138.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_2-1024x472.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_2-768x354.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_2-1536x709.png 1536w" sizes="auto, (max-width: 1918px) 100vw, 1918px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_3.png" data-rel="lightbox-gallery-G4Dldn51" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_3.png" alt="" width="1920" height="920" class="alignnone size-full wp-image-6616" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_3.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_3-300x144.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_3-1024x491.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_3-768x368.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/06/debian_cockpit_podman_3-1536x736.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></a></p>
<p>Por segurança recomendo você aplicar um firewall com nftables (Já instalado no Debain 11) protegendo a porta 9090 apenas para sua rede local.</p>
<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><em>Fontes</em>:<br />
<a href="https://cockpit-project.org/" rel="noopener" target="_blank">https://cockpit-project.org/</a><br />
<a href="https://github.com/cockpit-project/cockpit" rel="noopener" target="_blank">https://github.com/cockpit-project/cockpit</a>https://github.com/cockpit-project/cockpit-machines<br />
<a href="https://github.com/cockpit-project/cockpit-podman" rel="noopener" target="_blank">https://github.com/cockpit-project/cockpit-podman</a></p>
<p>O post <a href="https://blog.remontti.com.br/6591">Conheça o Cockpit, uma poderosa ferramenta para administração de servidores através do seu navegador.</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6591/feed</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Servidor de virtualização super leve com Debian 11 bullseye + Virtualbox WEB</title>
		<link>https://blog.remontti.com.br/6471</link>
					<comments>https://blog.remontti.com.br/6471#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sat, 02 Apr 2022 15:40:01 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualização]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6471</guid>

					<description><![CDATA[<p>Com VirtualBox é possível executar diversos sistemas operacionais (Windows, Linux, UNIX, BSD) simultaneamente no mesmo hardware, que são chamados de máquinas virtuais. Uma das características é o mascaramento dos recursos físicos (incluindo processadores, quantidade&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6471">Servidor de virtualização super leve com Debian 11 bullseye + Virtualbox WEB</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/04/phpvirtualbox_6.1_debian11.png" alt="" width="720" height="340" class="alignnone size-full wp-image-6476" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/04/phpvirtualbox_6.1_debian11.png 720w, https://blog.remontti.com.br/wp-content/uploads/2022/04/phpvirtualbox_6.1_debian11-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/04/phpvirtualbox_6.1_debian11-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>Com VirtualBox é possível executar diversos sistemas operacionais (Windows, Linux, UNIX, BSD) simultaneamente no mesmo hardware, que são chamados de máquinas virtuais. Uma das características é o mascaramento dos recursos físicos (incluindo processadores, quantidade de memória, interfaces de rede), o que permite diminuir a administração de drivers nas máquinas virtuais, e transferir uma máquina virtual entre servidores físicos diferentes.</p>
<p>Existem várias ferramentas de virtualização disponíveis.</p>
<p><strong>Microsoft Virtual Server 2005 R2</strong> &#8211; disponível para plataforma x86 e x86_64 bits. Suporte: Somente Windows.<br />
<strong>Qemu</strong> &#8211; ferramenta de virtualização de código aberto disponível para windows, mac e Linux.<br />
<strong>Vmware </strong>&#8211; Disponível para Windows e Linux.<br />
<strong>VirtualBox </strong>&#8211; Aplicativo de código aberto disponível para Windows, Mac, Linux e Solaris.<br />
<strong>Xen </strong>&#8211; Suporta Windows, bem como distribuições Linux.</p>
<p>O <strong>VirtualBox </strong> inicialmente foi lançado sob licença proprietária, mas mais tarde (2007) a Oracle Corporation começou a lançá-lo sob GNU General Public License. Escrito completamente em C, C ++ e Assembly Language está disponível para Windows, OS X, Linux e Solaris.</p>
<p>Recomendo já baixar a ISO nonfree: <a href="https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/" target="_blank" rel="noopener noreferrer">https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/</a></p>
<h3>Requerimentos</h3>
<p>Debian 11 (Bullseye) 64 bits <strong><a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank">instalação mínima</a></strong> pronta</p>
<p>Adicione o repositório do <a href="https://www.virtualbox.org/" target="_blank" rel="noopener noreferrer">virtualbox</a><br />
Acesse seu servidor e vire root.</p>
<pre class="remontti-code"># su - </pre>
<pre class="remontti-code"># apt install wget vim apt-transport-https gnupg
# echo &#039;deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian bullseye contrib&#039; &gt; /etc/apt/sources.list.d/virtualbox.list
# wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | apt-key add -
# wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | apt-key add -</pre>
<p>Certifique-se que seu repositório esteja usando os repositórios <strong>nonfree e contrib</strong>.</p>
<pre class="remontti-code"># vim /etc/apt/sources.list</pre>
<p>Ao final de cada linha verifique se consta:  <strong>nonfree e contrib</strong>, se não tiver adicione, ficando assim:</p>
<pre class="remontti-code">deb http://deb.debian.org/debian/ bullseye main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye main contrib non-free

deb http://security.debian.org/debian-security bullseye/updates main contrib non-free
deb-src http://security.debian.org/debian-security bullseye/updates main contrib non-free

# bullseye-updates, previously known as &#039;volatile&#039;
deb http://deb.debian.org/debian/ bullseye-updates main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye-updates main contrib non-free</pre>
<p>Atualize o repositório</p>
<pre class="remontti-code"># apt update
# apt install firmware-linux firmware-linux-free firmware-linux-nonfree</pre>
<p>Vamos fazer uns ajustes nas parametrizações do kernel para otimizar algumas coisas.</p>
<pre class="remontti-code"># echo &quot;vm.swappiness=10&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;vm.vfs_cache_pressure=50&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;vm.dirty_background_ratio = 5&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;vm.max_map_count=262144&quot; &gt; /etc/sysctl.d/70-vbox.conf
# echo &quot;fs.file-max=3263776&quot; &gt; /etc/sysctl.d/70-vbox.conf
# echo &quot;fs.aio-max-nr=3263776&quot; &gt; /etc/sysctl.d/70-vbox.conf

# cat &lt;&lt;EOF &gt;/etc/sysctl.d/60-net.conf
net.core.netdev_max_backlog=4096
net.core.rmem_default=262144
net.core.rmem_max=67108864
net.ipv4.udp_rmem_min=131072
net.ipv4.udp_mem=2097152 4194304 8388608
net.core.default_qdisc = fq
net.core.somaxconn = 16384
EOF</pre>
<p>Reinicia a máquina para carregar os novos módulos do kernel.</p>
<pre class="remontti-code"># apt install virtualbox-6.1
# reboot</pre>
<p>Acesse seu servidor novamente e vire root.</p>
<pre class="remontti-code"># su - </pre>
<p>Faça download dos pacotes extras:</p>
<pre class="remontti-code"># cd /tmp/ 
# wget https://download.virtualbox.org/virtualbox/6.1.32/Oracle_VM_VirtualBox_Extension_Pack-6.1.32.vbox-extpack</pre>
<p>Instale os pacotes extras</p>
<pre class="remontti-code"># VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.1.32.vbox-extpack</pre>
<p>Responta Yes <strong>(y)</strong></p>
<p>Vamos executá-lo como o nosso usuário <strong>vbox</strong>, porque ele não precisa acessar o resto do seu sistema.</p>
<pre class="remontti-code"># useradd -d /home/vbox -m -g vboxusers -s /bin/bash vbox</pre>
<p>Defina uma senha para seu usuario vbox</p>
<pre class="remontti-code"># passwd vbox</pre>
<p>Diga ao seu sistema qual usuário vai executar o VirtualBox.</p>
<pre class="remontti-code"># echo &#039;VBOXWEB_USER=vbox&#039; &gt; /etc/default/virtualbox 
# echo &#039;VBOXWEB_HOST=127.0.0.1&#039; &gt;&gt; /etc/default/virtualbox</pre>
<p>Faça com que o vboxweb-service inicie no boot. Como dito acima nosso usuário não precisa ter acesso total ao sistema. Adicione no /etc/rc.local o comando para iniciar junto com o boot.</p>
<pre class="remontti-code"># vim /etc/rc.local</pre>
<p>Adicione</p>
<pre class="remontti-code">#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will &quot;exit 0&quot; on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#
# Solução para inicialização automatica:
# use o comando la listar as VMs criadas
# su - vbox --shell=/bin/bash -c &#039;VBoxManage list vms&#039;
# Colete as ID
# &quot;Debian&quot; {d288884d-a3d4-4903-b84e-5c6039af13b5}
# Pegue o &quot;ID&quot; da VM e use o Comando a baixo descomentando a linha:
#
# Adicione um sleep para aguardar 30seg para dar tempo do modulo do kernel ter tempo de iniciar
# sleep 30
# su - vbox --shell=/bin/bash -c &#039;VBoxHeadless -s d288884d-a3d4-4903-b84e-5c6039af13b5 &amp;&#039;
#
#
exit 0</pre>
<p>Alterare as permissões:</p>
<pre class="remontti-code"># chmod +x /etc/rc.local
# ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service</pre>
<p>Vamos instalar o serviço web + php</p>
<pre class="remontti-code"># apt install apache2 libapache2-mod-php\
 php-cli php-bcmath php-gmp php-mbstring php-zip php-curl\
 php php-common php-soap php-gd unzip php-pear php-mysql php-xml php-soap</pre>
<p>Por segurança recomendo remover a assinatura do servidor, para isso:</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>Vamos também configurar nosso <a href="https://blog.remontti.com.br/3464" rel="noopener noreferrer" target="_blank">domínio virtual</a> para acessar o servidor via domínio (ex vbox.remontti.com.br) e restringir ele apenas para nossos IP de gerencia. </p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/000-default.conf</pre>
<p>Faça as devidas alterações, não esqueça de alterar em <strong>Require ip</strong> para os IPs que você vai autorizar as conexões.</p>
<pre class="remontti-code">&lt;virtualhost *:80&gt;
        Protocols h2 http/1.1
        ServerName vm.remontti.com.br
        ServerAdmin noc@remontti.com.br
        ErrorDocument 403 http://www.remontti.com.br/
 
        DocumentRoot /var/www/html
 
        &lt;Directory /var/www/html/&gt;
                Options FollowSymLinks
                AllowOverride All
                Require ip 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 250.0.0.0/22 2000:000::/32
        &lt;/Directory&gt;
 
        LogLevel warn 
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
&lt;/virtualhost&gt;</pre>
<p>Habilite os módulos</p>
<pre class="remontti-code"># a2enmod http2
# systemctl restart apache2</pre>
<h3>phpVirtualbox</h3>
<p>O phpVirtualbox oficial até a data desta publicação (abril/2022) a versão 5.2, porém ela já não é mais instalável no Debian 11, então iremos utilizar um <a href="https://github.com/phpvirtualbox/phpvirtualbox/network/members" rel="noopener" target="_blank">fork</a> compatível com o phpVirtualbox 6.1.</p>
<p>Vamos configurar o projeto <a href="https://phpvirtualbox.github.io/" target="_blank" rel="noopener noreferrer">phpvirtualbox</a>, dentro do diretório padrão do apache.</p>
<pre class="remontti-code"># cd /var/www/
# mv /var/www/html/ /var/www/html_old
# wget https://github.com/remontti/phpvirtualbox-6.1/archive/refs/heads/develop.zip -O phpvirtualbox.zip
# apt install zip unzip
# unzip phpvirtualbox.zip
# mv phpvirtualbox-6.1-develop html
# rm phpvirtualbox.zip
# chown vbox:vboxusers html  -R
# cd /var/www/html/
# cp config.php-example config.php
# vim config.php</pre>
<pre class="remontti-code"> // ... //
var $username = &#039;vbox&#039;;
var $password = &#039;pass&#039;;
// ... //
var $language = &#039;pt_br&#039;;
var $vrdeports = &#039;9000-9100&#039;;
var $vrdeaddress = &#039;0.0.0.0&#039;;
// ... //
var $enableAdvancedConfig = true; </pre>
<p>É altamente recomendado que você tenha um firewall em cima da range de portas 9000 a 9100, pois é onde será possível fazer acesso remoto, e recomendo que depois da instalação sempre desative o acesso remoto a VM, segue um exemplo de firewall com nftables que já é o padrão no Debian 11 substituindo o antigo iptables, no exemplo já irei proteger também a porta do SSH, lembre-se de deixar seus IPs na ACL de permissões.</p>
<pre class="remontti-code"># systemctl enable nftables</pre>
<p>Modelo fechando as portas do SSH [22] e a range de acesso remoto [9000-9100], você pode personalizar de acordo com sua instalação.</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<pre class="remontti-code">#!/usr/sbin/nft -f
  
flush ruleset

table inet filter {
    # IPv4 que terao acesso 
    set acesso-total4 {
        type ipv4_addr
        flags interval
        elements = { 200.200.200.16/28, 200.200.200.0/28}
    }
    # IPv6 que terao acesso 
    set acesso-total6 {
        type ipv6_addr
        flags interval
        elements = { 2804:1234:bebe::48, 2804:4321:bebe::/48  }
    }
    chain input {
        type filter hook input priority 0;

        # Permite acesso SSH na porta 22
        ip saddr  @acesso-total4 tcp dport 22 counter accept
        ip6 saddr @acesso-total6 tcp dport 22 counter accept
        tcp dport 22 counter drop

        # Permite acesso tela remota portas padões Vbox
        ip saddr  @acesso-total4 tcp dport { 9000-9100 } counter accept
        ip6 saddr @acesso-total6 tcp dport { 9000-9100 } counter accept
        tcp dport { 9000-9100 } counter drop
        
        type filter hook input priority 0;
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}</pre>
<p>Reinicie o nftables e verifique se o mesmo foi carregado:</p>
<pre class="remontti-code"># systemctl restart nftables
# nft list ruleset</pre>
<p>Adicione o usuario vbox ao grupo, inicialize o servi web service e reinicie a máquina. </p>
<pre class="remontti-code"># usermod -a -G vboxusers vbox
# su - vbox --shell=/bin/bash -c &#039;vboxwebsrv &amp;&#039;
# reboot</pre>
<p>Agora acesse:<br />
<strong>https://DOMINIO/</strong><br />
<strong>Usuário:</strong> admin<br />
<strong>Senha: </strong>admin</p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/04/phpvirtualbox_6.1_debian_11_bullseye.png" alt="" width="1061" height="570" class="alignnone size-full wp-image-6474" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/04/phpvirtualbox_6.1_debian_11_bullseye.png 1061w, https://blog.remontti.com.br/wp-content/uploads/2022/04/phpvirtualbox_6.1_debian_11_bullseye-300x161.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/04/phpvirtualbox_6.1_debian_11_bullseye-1024x550.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/04/phpvirtualbox_6.1_debian_11_bullseye-768x413.png 768w" sizes="auto, (max-width: 1061px) 100vw, 1061px" /></p>
<p><strong>Não esqueça de alterar a senha do usuário admin!</strong></p>
<p>O mais legal que você está usando quase nada do hardware da máquina para &#8220;subir&#8221; seu sistema de virtualização.</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/10/htop.png" data-rel="lightbox-gallery-v1jF2Itf" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/10/htop-1024x539.png" alt="" width="1024" height="539" class="alignnone size-large wp-image-3675" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/10/htop-1024x539.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/10/htop-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/10/htop-768x404.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/10/htop.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Virtulabox peca em não dar uma solução para inicialização automática, mas é muito fácil fazer isso incluindo no rc.local. Use o comando:</p>
<pre class="remontti-code">#  su - vbox --shell=/bin/bash -c &#039;VBoxManage list vms&#039;</pre>
<p>Vai ser listado os ID das suas VMs. Ex:<br />
<em>&#8220;DNS-SERVER&#8221; {d288884d-a3d4-4903-b84e-5c6039af13b5}<br />
&#8220;ZABBIX-SERVER&#8221; {a2893475-atd4-4973-b81e-6039af13bss5}</em></p>
<p>Agora que você ja tem as IDs adicione em <strong>/etc/rc.local:</strong> da seguinte forma, alterando pelas suas ID.</p>
<pre class="remontti-code">sleep 30 #  sleep para aguardar 30seg para dar tempo do modulo do kernel ter tempo de iniciar
su - vbox --shell=/bin/bash -c &#039;VBoxHeadless -s d288884d-a3d4-4903-b84e-5c6039af13b5 &amp;&#039;
su - vbox --shell=/bin/bash -c &#039;VBoxHeadless -s a2893475-atd4-4973-b81e-6039af13bss5 &amp;&#039;</pre>
<p>Agora quando o servidor reiniciar suas VMs vão iniciar automaticamente, (Não esqueça de quando for desligar o servidor fazer o processo de desligamento de cada VM)</p>
<p>Uma das vantagens deste servidor é que é o virtualbox é muito simples!!! Dentro de /home/vbox/ vão estar suas imagens sendo muito facil de fazer uma copia e migrada para algum outro servidor em caso de &#8220;pau&#8221;. É claro tenha sempre redundância de hardware em seu servidor, faça sempre pelo menos um RAID1 (espelhamento de disco) eu gosto de fazer RAID10 com pelo menos 5 SSDs, onde 1 dos SSDs eu instalo o sistema e os outros 4 (ou 6 ou 8 &#8230;) somo ex 2 (RAID0) e espelho nos outros 2 (RAID1) logo temos o RAID10.</p>
<p><strong>Acesso remoto</strong><br />
No windows você pode usar o famoso <strong>mstsc</strong> e informar seu IP:PORTA, no linux tem um pacote chamado <strong>vinagre</strong> basta instala-lo.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote.png" alt="" width="1173" height="495" class="alignnone size-full wp-image-5460" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote.png 1173w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-300x127.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-1024x432.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-768x324.png 768w" sizes="auto, (max-width: 1173px) 100vw, 1173px" /><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-a.png" alt="" width="1308" height="704" class="alignnone size-full wp-image-5461" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-a.png 1308w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-a-300x161.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-a-1024x551.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/10/vbox-remote-a-768x413.png 768w" sizes="auto, (max-width: 1308px) 100vw, 1308px" /></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/6471">Servidor de virtualização super leve com Debian 11 bullseye + Virtualbox WEB</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6471/feed</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title>Como se proteger de ataques DDoS com FastNetMon de graça &#8211; Integração FRR vs NE-Huawei &#8211; Bonus Gráficos Grafana</title>
		<link>https://blog.remontti.com.br/6278</link>
					<comments>https://blog.remontti.com.br/6278#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 16 Feb 2022 20:00:18 +0000</pubDate>
				<category><![CDATA[Huawei]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[ataques]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[ccr]]></category>
		<category><![CDATA[ddos]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[dos]]></category>
		<category><![CDATA[fastnemon]]></category>
		<category><![CDATA[grafana]]></category>
		<category><![CDATA[influxdb]]></category>
		<category><![CDATA[mitigação]]></category>
		<category><![CDATA[ne8000]]></category>
		<category><![CDATA[ne8000f1a]]></category>
		<category><![CDATA[Netflow]]></category>
		<category><![CDATA[telegram]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6278</guid>

					<description><![CDATA[<p>Existe um tutorial mais atualizado acesse: Fortalecendo a Resiliência da Rede: Detecção de Ataques DDoS com FastNetMon, FRRouting, Grafana e Implementação em Debian 12 com Huawei &#038; RouterOS 👆 👆 👆 👆 👆 👆&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6278">Como se proteger de ataques DDoS com FastNetMon de graça &#8211; Integração FRR vs NE-Huawei &#8211; Bonus Gráficos Grafana</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2><font color="red">Existe um tutorial mais atualizado acesse:</font></h2>
<p><a href="https://blog.remontti.com.br/7322">Fortalecendo a Resiliência da Rede: Detecção de Ataques DDoS com FastNetMon, FRRouting, Grafana e Implementação em Debian 12 com Huawei &#038; RouterOS</a><br />
 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<pre class="remontti-code">#
#
#
#
#
#
#
#
</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_huawei-1.png" alt="" width="720" height="340" class="alignnone size-full wp-image-6341" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_huawei-1.png 720w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_huawei-1-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_huawei-1-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>Neste tutorial vamos aprender como identificar os ataques Dos/DDoS e anunciar os prefixo atacados (ou atacantes) <strong>de seu AS</strong> em envia-los para uma blackhole, e repassar os mesmo para sua operadora. (Acordo)</p>
<p>Vamos utilizar o <a href="https://github.com/pavel-odintsov/fastnetmon/" rel="noopener noreferrer" target="_blank"><strong>FastNetMon</strong></a> (<strong>Community Edition</strong>) que é um analisador de carga DoS/DDoS de alto desempenho, construído sobre vários mecanismos de captura de pacotes (NetFlow, IPFIX, sFlow, AF_PACKET, SnabbSwitch, netmap, PF_RING, PCAP). </p>
<p>Farei a instalação no <a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank"><strong>Debian 11 (Instalação Limpa)</strong></a>. O hardware utilizado por ser bem generoso, 1CPU e 1GB de memoria. </p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware.png" alt="" width="1212" height="383" class="alignnone size-full wp-image-6312" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware.png 1212w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware-300x95.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware-1024x324.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware-768x243.png 768w" sizes="auto, (max-width: 1212px) 100vw, 1212px" /><br />
Nesse gráfico podemos ver um servidor analisando 10GB via Netflow e quase nada sendo usado de recursos. Mais ao final irei configurar o Graphith para termos gráficos qual irá abusar mais do hardware, porém para muitos gráficos não são necessários, e sim algo que o proteja.  </p>
<p><strong>Cenário fictício de exemplo:</strong><br />
Seu AS: 260072 <em>(Madruga Telecom)</em><br />
Operadora AS: 71 <em>(BrUxa71 Telecom)</em><br />
10.100.0.1/30 &#8211; Huawei NE<br />
10.100.0.2/30 &#8211; Servidor</p>
<h3>Configurando a interface de Rede</h3>
<p>Antes de iniciar a instalação do seu do seu servidor em meu exemplo estou usando o IP 10.100.0.2/30, porém eu NUNCA faria um NAT no roteador de borda então porque utilizar o IP privado? Simples por que ele não é acessível logo não pode ser atacado, mas por outro lado se ele não tiver internet você não poderá fazer a instalação e ele não poderá te notificar pelo telegram. Solução que eu gosto muito de aplicar em servidores é a seguinte (falo muito de como configurar interface de redes <a href="https://blog.remontti.com.br/5848" rel="noopener" target="_blank">nesse tutorial</a>, recomendo uma leitura). </p>
<p>Vamos supor que seu prefixo seja 72.72.72.0/22 e você vai alocar o ip 72.72.72.255<strong>/32</strong> para ser o IP de &#8220;loopback&#8221;. <em>Dica que esse IP não seja próximo a do prefixo público que utiliza em seus servidores</em>.</p>
<pre class="remontti-code"># vim /etc/network/interfaces</pre>
<pre class="remontti-code-plain">allow-hotplug eno1
iface eno1 inet static
    address 72.72.72.255/32

iface enp0s3 inet static
    address 10.100.0.2/30
    post-up /usr/sbin/ip route add default via 10.100.0.1 src 72.72.72.255</pre>
<p>Perceba que nós estaremos conversando com nosso roteador de borda pelo prefixo privado 10.100.0.0/30 porém todo o pacote de origem do servidor sai pelo o IP público. Caso este ip seja atacado o mesmo poderá cair em blackhole que o nosso servidor ainda terá comunicação com a borda. </p>
<p>Mas para que seu IP publico tenha rota será necessário criar um rota em seu roteador de borda apontando o IP público para o privado.</p>
<pre class="remontti-code">&lt;NE-SEUMADRUGA&gt; system-view
Enter system view, return user view with return command.
[~NE-SEUMADRUGA] ip route-static 72.72.72.255 255.255.255.255 10.100.0.2 description FASTNETMON
[*NE-SEUMADRUGA] commit</pre>
<p>É claro que neste caso ficará sem internet, mas podemos aplicar um firewall para enviar que ele fique respondendo, apenas para deixar ele &#8220;escondidinho&#8221;. E para isso vamos usar o nftables (Que já vem instalado por padrão no Debian 11 substituindo o iptables)<br />
Habilite o mesmo para iniciar com o sistema:</p>
<pre class="remontti-code"># systemctl enable nftables</pre>
<p>Vamos montar nosso firewall de forma que apenas conexoes que forem abertas pelo servidor seja respondidas.</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<pre class="remontti-code-plain">#!/usr/sbin/nft -f

flush ruleset

table inet filter {

        chain input {
                type filter hook input priority 0;

                # Permite que apenas conexoes que foram aberta pelo servidor seja respondidas
                ip daddr 72.72.72.255 ct state related,established counter accept
                ip daddr 72.72.72.255 counter drop

        }
        chain forward {
                type filter hook forward priority 0;
        }
        chain output {
                type filter hook output priority 0;
        }
}</pre>
<p>Inicie o nftables</p>
<pre class="remontti-code"># systemctl start nftables</pre>
<p>Você pode simplesmente rodar um scanner de porta no seu IP público bem como um ping, o mesmo não deve responde. </p>
<h3>Instalação FastNetMon (Edição da comunidade)</h3>
<p>Para ver o comparativo da versão gratuita <a href="https://fastnetmon.com/compare-community-and-advanced/" rel="noopener" target="_blank">acesse aqui</a>. Já antemão o que não teremos suporte é ao IPv6 e alguns recursos extras.<br />
Conversando com <a href="https://www.linkedin.com/in/podintsov">Pavel Odintsov</a> entendeu que no Brasil os planos da versão paga ficam muito pesada para a grande maioria devido a alto do dólar, então ele criou um cupom com <strong>50%</strong> de desconto para os brasileiros. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
Segue os lins com o desconto:<br />
<a href="https://fastnetmon.chargebee.com/hosted_pages/plans/fastnetmon-10g?subscription[coupon]=BRAZIL_PROMO" rel="noopener" target="_blank">Licença 10Gb</a><br />
<a href="https://fastnetmon.chargebee.com/hosted_pages/plans/fastnetmon-40g?subscription[coupon]=BRAZIL_PROMO" rel="noopener" target="_blank">Licença 40GB</a><br />
<a href="https://fastnetmon.chargebee.com/hosted_pages/plans/fastnetmon-100g?subscription[coupon]=BRAZIL_PROMO" rel="noopener" target="_blank">Licença 100GB</a></p>
<p>Vamos a instalação <a href="https://fastnetmon.com/install/" rel="noopener" target="_blank">[Doc Oficial]</a></p>
<pre class="remontti-code"># apt install wget tcpdump net-tools zip curl
# cd /tmp/
# wget https://install.fastnetmon.com/installer -Oinstaller
# chmod +x installer
# ./installer -install_community_edition</pre>
<p>É necessário que vc informe seu e-mail durante a instalação. <em>(Para usar a Comunidade FastNetMon você deve fornecer seu e-mail corporativo válido e aceitar receber informações sobre nossa edição comercial e atualizações de segurança)</em></p>
<pre class="remontti-code-plain">18:13:33 Will log all installation process details into file: /tmp/fastnetmon_install_1170.log
18:13:33 Installer build git version is: b21331ee349eaf0bc2abc71a466802cd26ee2347 build time is: 2022-01-17T16:17:51
18:13:33 Install FastNetMon Community edition

We offer significantly improved FastNetMon Advanced edition: 
&lt;blockquote class=&quot;wp-embedded-content&quot; data-secret=&quot;ghCHMDUZME&quot;&gt;&lt;a href=&quot;https://fastnetmon.com/fastnetmon-advanced/&quot;&gt;FastNetMon Advanced&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe class=&quot;wp-embedded-content&quot; sandbox=&quot;allow-scripts&quot; security=&quot;restricted&quot; style=&quot;position: absolute; clip: rect(1px, 1px, 1px, 1px);&quot; title=&quot;&#8220;FastNetMon Advanced&#8221; &#8212; FastNetMon DDoS Detection Tool&quot; src=&quot;https://fastnetmon.com/fastnetmon-advanced/embed/#?secret=9HRlASbAu2#?secret=ghCHMDUZME&quot; data-secret=&quot;ghCHMDUZME&quot; width=&quot;500&quot; height=&quot;282&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;
You could order free one-month trial for Advanced edition here: 
&lt;blockquote class=&quot;wp-embedded-content&quot; data-secret=&quot;zdVTqp3qpj&quot;&gt;&lt;a href=&quot;https://fastnetmon.com/trial/&quot;&gt;Order trial&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe class=&quot;wp-embedded-content&quot; sandbox=&quot;allow-scripts&quot; security=&quot;restricted&quot; style=&quot;position: absolute; clip: rect(1px, 1px, 1px, 1px);&quot; title=&quot;&#8220;Order trial&#8221; &#8212; FastNetMon DDoS Detection Tool&quot; src=&quot;https://fastnetmon.com/trial/embed/#?secret=kKLHfdm2fM#?secret=zdVTqp3qpj&quot; data-secret=&quot;zdVTqp3qpj&quot; width=&quot;500&quot; height=&quot;282&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;

To use FastNetMon Community you must provide your valid corporate email and accept 
to receive information about our commercial edition and security updates.
You can find our privacy policy here https://fastnetmon.com/privacy-policy/

Provide your corporate email here, personal emails are not allowed: seu@email.com.br
18:13:41 Apply sysctl configuration changes
18:13:41 Disable rp_filter for all interfaces
18:13:41 Installing on Debian 11.2 platform
18:13:41 Download binary package
18:15:27 Successfully installed FastNetMon Community edition</pre>
<p>Adicione todos os prefixos do seu AS, são esses os IPs serão feito analise.</p>
<pre class="remontti-code"># vim /etc/networks_list</pre>
<p>Exemplo:</p>
<pre class="remontti-code">72.72.72.0/22</pre>
<p>Ajustando as configurações do /etc/fastnetmon.conf.<br />
Habilitamos o serviço de netflow: `netflow = off` para `netflow = on`</p>
<pre class="remontti-code"># sed -i &#039;s/netflow = off/netflow = on/&#039; /etc/fastnetmon.conf</pre>
<p>Ajustes de tempo</p>
<pre class="remontti-code"># sed -i &#039;s/average_calculation_time = 5/average_calculation_time = 15/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/average_calculation_time_for_subnets = 5/average_calculation_time_for_subnets = 15/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/netflow_sampling_ratio = 1/netflow_sampling_ratio = 1024/&#039; /etc/fastnetmon.conf</pre>
<p>Defina por quanto tempo em segundos um IP ficará em blackhole o padrão é 1900 seg. No comando estou alterando para 10min: </p>
<pre class="remontti-code"># sed -i &#039;s/ban_time = 1900/ban_time = 600/&#039; /etc/fastnetmon.conf</pre>
<p>Ative medidores de velocidade por sub-rede, para listar a velocidade da faixa em bps e pps para ambas as direções. (Parece que removeram na última versão)</p>
<pre class="remontti-code"># sed -i &#039;s/enable_subnet_counters = off/enable_subnet_counters = on/&#039; /etc/fastnetmon.conf</pre>
<p>Altera o top 7 para o top 10 ao usar o comando fastnetmon_client</p>
<pre class="remontti-code"># sed -i &#039;s/max_ips_in_list = 7/max_ips_in_list = 10/&#039; /etc/fastnetmon.conf</pre>
<p>Temos diferentes abordagens para detecção dos ataques: Pacotes por segundos, largura de banda e por fluxo (flows).</p>
<pre class="remontti-code-plain">ban_for_pps = on
ban_for_bandwidth = on
ban_for_flows = off

ban_for_tcp_bandwidth = off
ban_for_udp_bandwidth = off
ban_for_icmp_bandwidth = off

ban_for_tcp_pps = off
ban_for_udp_pps = off
ban_for_icmp_pps = off
</pre>
<p>Vamos ativar todos os filtros:</p>
<pre class="remontti-code"># sed -i &#039;s/ban_for_flows = off/ban_for_flows = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_tcp_bandwidth = off/ban_for_tcp_bandwidth = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_udp_bandwidth = off/ban_for_udp_bandwidth = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_icmp_bandwidth = off/ban_for_icmp_bandwidth = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_tcp_pps = off/ban_for_tcp_pps = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_udp_pps = off/ban_for_udp_pps = on/&#039; /etc/fastnetmon.conf
# sed -i &#039;s/ban_for_icmp_pps = off/ban_for_icmp_pps = on/&#039; /etc/fastnetmon.conf</pre>
<p>Como temos todas as detecções ativas, precisamos ajustar cada situação para sua realidade. Você precisa ter em mente qual é o maior tráfego que pode atingir por um IP da sua rede (seu maior plano) com base nisso tenha em mente que a cada 100MB gera em torno de 10.000 pps por segundo, <strong>isso não é regra</strong> mas pode ser uma base inicial. Vamos imaginar então que meu maior plano seja 900MB, farei uma ajuste no <strong>threshold_pps</strong> para 90.000 pps.</p>
<pre class="remontti-code"># sed -i &#039;s/threshold_pps = 20000/threshold_pps = 90000/&#039; /etc/fastnetmon.conf</pre>
<p>Agora em <strong>threshold_mbps</strong> seria o maior tráfego que você irá permitir, eu normalmente não altero e deixo no padrão 1gb. E em <strong>threshold_flows</strong> o fluxos de limite qual também mantenho o mesmo valor 3500.</p>
<pre class="remontti-code-plain">threshold_mbps = 1050
threshold_flows = 3500</pre>
<p>O netflow ouve a porta padrão 2055 se desejar alterar basta alterar o valor de <strong>netflow_port</strong>. Irei alterar para 52055.</p>
<pre class="remontti-code"># sed -i &#039;s/netflow_port = 2055/netflow_port = 52055/&#039; /etc/fastnetmon.conf</pre>
<p>Por o serviço ira ficar ouvindo em todos os endereços IPs do seu servidor (<strong>netflow_host = 0.0.0.0</strong>), logo o mais correto seria deixa-lo apenas para o IP privado.</p>
<pre class="remontti-code"># sed -i &#039;s/netflow_host = 0.0.0.0/netflow_host = 10.100.0.2/&#039; /etc/fastnetmon.conf</pre>
<p>Ainda em /etc/fastnetmon.conf temos <strong>notify_script_path</strong> que sempre que o fastnetmon identificar um ataque irá executar o script <strong>/usr/local/bin/notify_about_attack.sh</strong>, identificando o IP da sua rede que está sofrendo <strong>(incoming)</strong> o ataque ou que está atacando <strong>(outgoing)</strong> alguém. <strong>Ele NÃO irá identificar os IPs de origem</strong>, pois em um ataque quase sempre as origens são alteradas por milhares de IPs aleatórios.  </p>
<p>Habilite e reinicie o fastnetmon para carregar as novas configurações.</p>
<pre class="remontti-code"># systemctl enable fastnetmon
# systemctl restart fastnetmon</pre>
<p>Verifique se a porta 52055/udp esta ouvindo:</p>
<pre class="remontti-code"># netstat -putan  | grep 52055</pre>
<pre class="remontti-code-plain">udp        0      0 10.100.0.2:52055           0.0.0.0:*                           1599/fastnetmon </pre>
<p>Bom mas antes de criarmos nosso script notify_about_attack.sh, precisamos preparar algumas coisas, e antes de mais nada vamos configurar nosso Huawei para enviar os dados.</p>
<p>Acesse seu roteador Huawei:</p>
<pre class="remontti-code">&lt;NE-SEUMADRUGA&gt; system-view
[~NE-SEUMADRUGA] ip netstream export version ipfix peer-as bgp-nexthop ttl
[*NE-SEUMADRUGA] ip netstream export template sequence-number fixed
[*NE-SEUMADRUGA] ip netstream export index-switch 32
[*NE-SEUMADRUGA] ip netstream as-mode 32
[*NE-SEUMADRUGA] ip netstream timeout active 1
[*NE-SEUMADRUGA] ip netstream timeout inactive 15
[*NE-SEUMADRUGA] ip netstream export template timeout-rate 1
[*NE-SEUMADRUGA] ip netstream export template option sampler
[*NE-SEUMADRUGA] ip netstream export template option application-label
[*NE-SEUMADRUGA] ip netstream sampler fix-packets 1024 inbound
[*NE-SEUMADRUGA] ip netstream sampler fix-packets 1024 outbound
[*NE-SEUMADRUGA] ip netstream export source 10.100.0.1
[*NE-SEUMADRUGA] ip netstream export host 10.100.0.2 52055</pre>
<p>slot 0 NE8000F1A / slot 10 ou 9 NE8000 M8 / slot 3 NE40</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] slot &lt;0-10&gt;
[*NE-SEUMADRUGA] ip netstream sampler to slot self
[*NE-SEUMADRUGA]  ipv6 netstream sampler to slot self</pre>
<p>Será necessário adicionar em todas suas interfaces de Uplink: </p>
<pre class="remontti-code-plain"> ip netstream inbound
 ip netstream outbound</pre>
<p>Exemplo:</p>
<pre class="remontti-code">
interface 40GE0/1/49.71
 vlan-type dot1q 71
 description BruxaDo71Telecom
 ip address 71.71.71.2 255.255.255.252
 statistic enable
 ip netstream inbound
 ip netstream outbound
</pre>
<p>Com o tcpdump vamos monitorar a interface para ver o que esta chegando na porta.</p>
<pre class="remontti-code"># tcpdump -i ens192 -n udp port 52055 -T cnfp -c 10</pre>
<p>Se seu NE estiver mandado os pacotes você terá um resultado como:</p>
<pre class="remontti-code-plain">tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens192, link-type EN10MB (Ethernet), capture size 262144 bytes
14:25:19.601113 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.608068 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.668054 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.691123 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.768055 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.781129 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.831133 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.858054 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.941124 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
14:25:19.958060 IP 10.100.0.1.40000 &gt; 10.100.0.2.52055: NetFlow v9
10 packets captured
10 packets received by filter
0 packets dropped by kernel</pre>
<p>Agora com o comando: </p>
<pre class="remontti-code"># fastnetmon_client</pre>
<p>Iremos visualizar os TOP IPs</p>
<pre class="remontti-code-plain">FastNetMon 1.1.3 master git- Pavel Odintsov: stableit.ru
IPs ordered by: packets
Incoming traffic       724347 pps   6998 mbps    161 flows
72.72.72.238            51973 pps    569 mbps      0 flows  *banned*
72.72.72.112            14390 pps    154 mbps      0 flows
72.72.72.93             14000 pps    150 mbps      0 flows
72.72.72.161            11705 pps    129 mbps      0 flows
72.72.72.118             8797 pps     86 mbps      0 flows
72.72.72.43              7602 pps     84 mbps      0 flows
72.72.72.111             6669 pps     64 mbps      0 flows

Outgoing traffic       291008 pps    705 mbps    101 flows
72.72.72.238            18009 pps     14 mbps      0 flows  *banned*
72.72.72.112             7929 pps      5 mbps      0 flows
72.72.72.93              7110 pps     10 mbps      0 flows
72.72.72.14              4910 pps     40 mbps      0 flows
72.72.72.43              4887 pps      2 mbps      0 flows
72.72.72.161             4537 pps      2 mbps      0 flows
72.72.72.111             3933 pps     14 mbps      0 flows

Internal traffic             0 pps      0 mbps

Other traffic              420 pps      0 mbps

Screen updated in:              0 sec 331 microseconds
Traffic calculated in:          0 sec 854 microseconds
Total amount of IPv6 packets related to our own network: 0
Not processed packets: 0 pps 

Subnet load:
72.72.72.0/22      pps in: 256000   out: 52000    mbps in: 9630  out: 1077
100.100.0.6/32     pps in: 0        out: 0        mbps in: 0     out: 0
</pre>
<p>Perceba que o IP <strong>72.72.72.238</strong> foi banido, pois o mesmo excedeu os pps de 50.000, no entanto este é um dos IPs que então em meu CGNAT, e vai ser natural este ter um comportamento diferente. Para que o <strong>fastnetmon ignore o mesmo</strong> você pode cria uma <strong>lista branca</strong>. Não se preocupe se isso acontecer com você o fastnetmon não ira fazer nenhuma ação, pois não configuramos nada ainda.<br />
Para criar a lista branca <strong>networks_whitelist</strong> com os IPs ou prefixo que deseja ignorar.</p>
<pre class="remontti-code"># &gt; /etc/networks_whitelist
# vim /etc/networks_whitelist</pre>
<p>Exemplo</p>
<pre class="remontti-code-plain">72.72.72.224/28
72.72.73.224/28</pre>
<p>Reinicie para carregar as novas configurações.</p>
<pre class="remontti-code"># systemctl restart fastnetmon</pre>
<h3>Bot Telegram</h3>
<p>Para receber notificações pelo Telegram juntamente com o arquivo de log, vai ser necessário criar um bot do telegram para o uso do mesmo. Se você não sabe como criar um Bot para telegram basta você falar com o <a href="https://telegram.me/BotFather" rel="noopener" target="_blank">@BotFather</a> e enviar para ele <strong>/newbot</strong>, ele irá pedir qual nome você gostaria de dar a seu bot, e em seguida ira gera um token que vamos precisar a seguir. </p>
<p>Para o Telegram vamos usar um scriptzinho que criei.</p>
<pre class="remontti-code"># cd /tmp/
# wget https://github.com/remontti/TelegramCMD/archive/master.zip
# unzip /tmp/master.zip
# chmod a+x /tmp/TelegramCMD-master/telegram
# mv /tmp/TelegramCMD-master/telegram* /usr/local/bin/
# ln -s /usr/local/bin/telegram /bin/telegram</pre>
<p>Edite o token.conf e altere para o seu TOKEN.</p>
<pre class="remontti-code"># vim /usr/local/bin/telegram.conf/token.conf</pre>
<pre class="remontti-code">######################################
# Telegram bot                       #
# Create a new bot with @BotFather   #
# get TOKEN                          #
######################################

TOKEN=&quot;123456789:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF&quot;</pre>
<p>Esse script você pode usar para diversas coisas, ele será capaz de zipar um diretorio e lhe enviar o arquivo bem como enviar apenas uma mensagem. Como usar? É importante você saber que o IDs de grupos tem um &#8220;-&#8221; no inicio do ID, já usuários não. Para descobrir o ID do seu usuário fale com o bot <a href="https://telegram.me/myidbot" rel="noopener" target="_blank"><strong>@myidbot</strong></a> e envie para ele <strong>/getid</strong>, para saber de um grupo adicione <strong>@myidbot</strong> ao seu grupo e envie <strong>/getgroupid@myidbot</strong>. Realize um teste com um dos comandos: (Não esqueça de alterar pelo seu ID)</p>
<pre class="remontti-code-plain">Uso: telegram [Opções]
  -m: Para enviar uma mensagem
     ex: telegram -m &quot;ID Chat&quot; &quot;Meu assunto&quot; &quot;Minha mensagem...&quot;
     ex: telegram -m &quot;-123456789&quot; &quot;Notificação&quot; &quot;Mensagem para um grupo ID&quot;
     ex: telegram -m &quot;123456789&quot; &quot;Notificação&quot; &quot;Mensagem para direta/privado&quot;

  -f: Para enviar um arquivo
     ex: telegram -f &quot;ID Chat&quot; &quot;/diretorio/arquivo&quot; &quot;nome do arquivo zip&quot; &quot;Comentário&quot;
     ex: telegram -f &quot;12345689&quot; /var/log/syslog syslog &quot;Logs do sistema para user privado&quot;
     ex: telegram -f &quot;-12345689&quot; /var/log/syslog syslog &quot;Logs do sistema para um grupo&quot;</pre>
<h3>FRR</h3>
<p>Vamos realizar a instalação do <a href="http://frrouting.org/" rel="noopener" target="_blank">FRRouting</a> (FRR) para fechar sessão BGP entre o roteador de borda e servidor.</p>
<pre class="remontti-code">
# apt install curl apt-transport-https gnupg2 tree net-tools
# curl -s https://deb.frrouting.org/frr/keys.asc | apt-key add -
# echo deb https://deb.frrouting.org/frr bullseye frr-8 | tee -a /etc/apt/sources.list.d/frr.list
# apt update
# apt install frr frr-doc</pre>
<p>Parâmetros kernel</p>
<pre class="remontti-code"># echo &#039;net.ipv4.ip_forward = 1&#039; &gt;&gt; /etc/sysctl.conf
# echo &quot;net.ipv4.conf.all.rp_filter = 0&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;net.ipv4.conf.default.rp_filter = 0&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;net.ipv4.conf.lo.rp_filter = 0&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;net.ipv4.conf.`ip -br link |awk &#039;{print $1}&#039; |grep -v lo`.rp_filter = 0&quot; &gt;&gt; /etc/sysctl.conf
# sysctl -p</pre>
<p>Ative o modulo BGP</p>
<pre class="remontti-code"># sed -i &#039;s/bgpd=no/bgpd=yes/&#039; /etc/frr/daemons</pre>
<p>Reinicie o FRR</p>
<pre class="remontti-code"># systemctl restart frr</pre>
<p>Entre no shell VTY do FRR.</p>
<pre class="remontti-code"># vtysh</pre>
<p>Rode o comando: `show running-config`</p>
<pre class="remontti-code-plain">deb11# show running-config 
Building configuration...

Current configuration:
!
frr version 8.3.1
frr defaults traditional
hostname deb11
log syslog informational
no ip forwarding
no ipv6 forwarding
service integrated-vtysh-config
!
line vty
!
end</pre>
<p>Agora entre no modo de configuração, e vamos preparar nosso peer com o router de borda. No exemplo está praticamente auto explicativo, vamos fechar o peer e <strong>deixar</strong> ser anunciado <strong>apenas nossos prefixos</strong> e aplicaremos a <strong>community 65001:666</strong></p>
<pre class="remontti-code-plain">configure terminal
!
ip prefix-list FASTNETMON_EXPORT seq 5 permit 72.72.72.0/23 le 32
ip prefix-list FASTNETMON_EXPORT seq 10 permit 72.72.74.0/23 le 32
!
!
route-map MARK_FASTNETMON_IMPORT deny 10
!
route-map MARK_FASTNETMON_EXPORT permit 10
 match ip address prefix-list FASTNETMON_EXPORT
 set community 65001:666
!
router bgp 65001
 bgp router-id 10.100.0.2
 neighbor 10.100.0.1 remote-as 260072
 neighbor 10.100.0.1 description &quot;NE8K_BORDA&quot;
# neighbor 10.100.0.1 ebgp-multihop 255 # (Caso seja multihop)
 !
 address-family ipv4 unicast
  neighbor 10.100.0.1 route-map MARK_FASTNETMON_IMPORT in
  neighbor 10.100.0.1 route-map MARK_FASTNETMON_EXPORT out
 exit-address-family
!
line vty
!
end
write memory
exit</pre>
<p>Vamos ao <strong>Huawei</strong></p>
<pre class="remontti-code">&lt;NE-SEUMADRUGA&gt; system-view
Enter system view, return user view with return command.</pre>
<p>Crie uma rota estática de Blackhole</p>
<pre class="remontti-code">[~NE-SEUMADRUGA] ip route-static 192.0.2.1 255.255.255.255 NULL0 description BLACKHOLE</pre>
<p>Crie um filtro que irá aceitar qualquer rota /32</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] ip ip-prefix  ACCEP_PREFIX_MASK32_FASTNETMON_IPV4 index 10 permit 0.0.0.0 0 greater-equal 32</pre>
<p>Crie os prefixos publico para rejeitar e não cair em blackhole mesmo quando atacado, caso você deixar o fastnetmon anúnciar seu NE pode rejeitar (Ex IP Servidores ou CGNAT)</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] ip ip-prefix  IGNORE_PREFIX_FASTNETMON_IPV4 index 10 permit 72.72.72.224 28 greater-equal 28 less-equal 32
[*NE-SEUMADRUGA] ip ip-prefix  IGNORE_PREFIX_FASTNETMON_IPV4 index 20 permit 72.72.73.224 28 greater-equal 28 less-equal 32</pre>
<p>Crie um filtro para a community 65001:666</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] ip community-filter basic COMM_FASTNETMON_BLACKHOLE index 10 permit 65001:666</pre>
<p>Vamos montar agora nosso route policy de import (rotas que iremos receber). A 1ª é ignorar os prefixos <strong>IGNORE_PREFIX_FASTNETMON_IPV4</strong></p>
<pre class="remontti-code">[*NE-SEUMADRUGA] route-policy FASTNETMON_IMPORT_IPV4 deny node 1000
[*NE-SEUMADRUGA]  if-match ip-prefix IGNORE_PREFIX_FASTNETMON_IPV4</pre>
<p>A 2º é o que vir marcado do fastnetmon com 65001:666 (COMM_FASTNETMON_BLACKHOLE) jogar para blackhole e aplicar uma community nova <strong>65444:666</strong>, como no exemplo aqui meu AS é de 32bits vou usar um AS privado, mas onde seu AS é de 16bits o mais comum de se encontrar é AS:666. Assim se você for trânsito de outro AS você pode montar em suas route policy para aceitar prefixos do AS dele com /32 marcados com AS:666 e jogar para blackhole também fica dica!</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] route-policy FASTNETMON_IMPORT_IPV4 permit node 1010
[*NE-SEUMADRUGA]  if-match community-filter COMM_FASTNETMON_BLACKHOLE 
[*NE-SEUMADRUGA]  apply local-preference 999
[*NE-SEUMADRUGA]  apply ip-address next-hop 192.0.2.1
[*NE-SEUMADRUGA]  apply community 65444:666
[*NE-SEUMADRUGA]  if-match ip-prefix ACCEP_PREFIX_MASK32_FASTNETMON_IPV4</pre>
<p>E a 3ª ignoramos o resto como boas praticas.</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] route-policy FASTNETMON_IMPORT_IPV4 deny node 9999</pre>
<p>Para as route policy de export (Rotas que o NE irá ensinar) colocarei apenas um Deny pois ele não precisa ensinar nada.</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] route-policy FASTNETMON_EXPORT_IPV4 deny node 9999
[*NE-SEUMADRUGA] commit</pre>
<p>Vamos ao peer</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] bgp 260072
[~NE-SEUMADRUGA] undo peer 10.100.0.2
[*NE-SEUMADRUGA]  peer 10.100.0.2 as-number 65001
[*NE-SEUMADRUGA]  peer 10.100.0.2 description BORDA_VS_FASTNETMON_IPV4
[*NE-SEUMADRUGA]  peer 10.100.0.2 timer connect-retry 1
[*NE-SEUMADRUGA]  peer 10.100.0.2 connect-interface 10.100.0.1
[*NE-SEUMADRUGA]  peer 10.100.0.2 timer keepalive 10 hold 30 
[*NE-SEUMADRUGA]  ipv4-family unicast
[*NE-SEUMADRUGA]   peer 10.100.0.2 enable
[*NE-SEUMADRUGA]   peer 10.100.0.2 public-as-only
[*NE-SEUMADRUGA]   peer 10.100.0.2 route-policy FASTNETMON_IMPORT_IPV4 import
[*NE-SEUMADRUGA]   peer 10.100.0.2 route-policy FASTNETMON_EXPORT_IPV4 export
[*NE-SEUMADRUGA]   peer 10.100.0.2 next-hop-local
[*NE-SEUMADRUGA]   peer 10.100.0.2 advertise-community
[*NE-SEUMADRUGA]   peer 10.100.0.2 advertise-ext-community
[*NE-SEUMADRUGA] commit
[~NE-SEUMADRUGA] run save </pre>
<p>Em caso de alguma <strong>emergência</strong>, para <strong>baixar</strong> a sessão use:</p>
<pre class="remontti-code">[~NE-SEUMADRUGA] bgp 260072
[*NE-SEUMADRUGA] peer 10.100.0.2 ignore
[*NE-SEUMADRUGA] commit</pre>
<p>Para <strong>subir</strong> novamente:</p>
<pre class="remontti-code">[~NE-SEUMADRUGA] bgp 260072
[*NE-SEUMADRUGA] undo peer 10.100.0.2 ignore
[*NE-SEUMADRUGA] commit</pre>
<p>Verifique se sua sessão subiu:</p>
<pre class="remontti-code">[*NE-SEUMADRUGA] display bgp peer | include 10.100.0.2</pre>
<pre class="remontti-code-plain"> BGP local router ID : x.x.x.x
 Local AS number : 260072
 Total number of peers : 13                 Peers in established state : 13

  Peer                             V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State  PrefRcv
  10.100.0.2                       4       65001   897801  1088107     0 2496h26m Established        0</pre>
<p>No FRR use `show bgp summary`</p>
<pre class="remontti-code"># vtysh</pre>
<pre class="remontti-code-plain"># show bgp summary
IPv4 Unicast Summary:
BGP router identifier 10.100.0.2, local AS number 65001 vrf-id 0
BGP table version 0
RIB entries 0, using 0 bytes of memory
Peers 1, using 21 KiB of memory

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt
10.100.0.1      4     260072         5         5        0    0    0 00:02:52            0        0

Total number of neighbors 1
# exit</pre>
<p>Para repassar os prefixos marcados como blackhole para sua operadora você precisará saber qual é a community que a mesma utiliza e se ela lhe oferece esse recurso, em seguida você irá adiciar a route policy da sua operadora uma nova regra:</p>
<p>No exemplo tudo que recebemos do fastnetmon passamos a aplicar a community 65444:666, logo tudo que for marcado com a mesma irei repassar para operadora com a commnunity da operadora. Para isso crie então primeiro a community-filter de Blackhole sua.</p>
<pre class="remontti-code">[~NE-SEUMADRUGA] ip community-filter basic COMM_BLACKHOLE index 10 permit 65444:666</pre>
<p>Agora na route policy da operadora crie algo semelhante ao exemplo, sendo que a community de blackhole que sua operadora passou fosse &#8220;71:666&#8221;:</p>
<pre class="remontti-code">[~NE-SEUMADRUGA] route-policy UPSTREAM_OP_BRUXADO71_EXPORT_IPV4 permit node 2070
[~NE-SEUMADRUGA]  if-match community-filter COMM_BLACKHOLE
[~NE-SEUMADRUGA]  apply community 71:666</pre>
<p>Pronto agora que ja temos nosso peer Up entre router e servidor, nosso Bot mandando mensagem, iremos criar o script que será executado sempre que um ataque for identificado <strong>BAN</strong> ou <strong>UNBAN</strong>. Irei criar um diretório /var/log/fastnetmon_attacks/ataques qual irá ficar os ataques finalizados.</p>
<pre class="remontti-code"># mkdir /var/log/fastnetmon_attacks/ataques -p
# vim /usr/local/bin/notify_about_attack.sh</pre>
<p>Altere <strong>ID_CHAT=&#8217;-1000000000000&#8242;</strong> pelo ID do seu usuário ou grupo.</p>
<pre class="remontti-code">#!/usr/bin/env bash
  
# Este script receberá os seguintes parâmetros:
#  $1 IP do cliente
#  $2 INCOMING -&gt; Vindo de fora da rede | OUTGOING -&gt; Saindo da sua rede
#  $3 Pacotes por seguncoes
#  $4 Ação (ban ou unban)

# Defina o ID do Chat ou Grupo (Grupos sempre começam com &quot;-&quot; )
ID_CHAT=&#039;-1000000000000&#039;

if [ &quot;$2&quot; = &quot;incoming&quot; ]; then
  TIPO=&quot;Sendo atacado&quot;
else 
  TIPO=&quot;Realizando um ataque&quot;
fi

# Desbanindo um IP
if [ &quot;$4&quot; = &quot;unban&quot; ]; then
  /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;UNBAN IP: &lt;code&gt;$1&lt;/code&gt;&quot; &quot;&lt;code&gt;-&gt;&gt;&lt;/code&gt; Removido da blackhole&quot;
  # Remove IP do anuncio para o FRR
  vtysh --command &quot;configure terminal
  no ip route $1/32 lo
  router bgp 65001
   address-family ipv4 unicast
    no network $1/32
  &quot;
  # Movemos os logs para pasta ataques pois não queremos mais receber elas.
  mv /var/log/fastnetmon_attacks/$1* /var/log/fastnetmon_attacks/ataques
  exit 0
fi

# Banindo um IP
if [ &quot;$4&quot; = &quot;ban&quot; ]; then
  /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;BAN IP: &lt;code&gt;$1&lt;/code&gt; $TIPO &lt;b&gt;[$3 pps]&lt;/b&gt;&quot; &quot;&lt;code&gt;-&gt;&gt;&lt;/code&gt; Anunciado em blackhole&quot;
  /usr/local/bin/telegram -f &quot;$ID_CHAT&quot; /var/log/fastnetmon_attacks/$1* $1 &quot;Logs do ataque ao IP $1&quot;
  # Anuncia IP ao FRR
  vtysh --command &quot;configure terminal
  ip route $1/32 lo
  router bgp 65001
   address-family ipv4 unicast
    network $1/32
  &quot;
    exit 0
fi

if [ &quot;$4&quot; == &quot;attack_details&quot; ]; then
  #/usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;BAN&quot; &quot;&lt;code&gt;FastNetMon: IP $1 blocked because $2 attack with power $3 pps&lt;/code&gt;&quot;
  exit 0
fi</pre>
<p>De permissão para execução</p>
<pre class="remontti-code"># chmod a+x /usr/local/bin/notify_about_attack.sh</pre>
<p>Restarte o fastnetmon</p>
<pre class="remontti-code"># systemctl restart fastnetmon</pre>
<p>Se quiser fazer um teste manual anunciando um IP (um que não esteja em uso né!!! rsrsrs) exemplo: 72.72.73.255/32<br />
Adicionando:</p>
<pre class="remontti-code"># vtysh --command &quot;configure terminal
  ip route 72.72.73.255/32 lo
  router bgp 65001
   address-family ipv4 unicast
    network 72.72.73.255/32&quot;</pre>
<p>Verificando se esta enviando:</p>
<pre class="remontti-code"># vtysh --command &quot; show ip bgp neighbors 10.100.0.1 advertised-routes&quot;</pre>
<pre class="remontti-code-plain">BGP table version is 3, local router ID is 10.100.0.2, vrf id 0
Default local pref 100, local AS 65001
Status codes:  s suppressed, d damped, h history, * valid, &gt; best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop&#039;s vrf id, &lt; announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

   Network          Next Hop            Metric LocPrf Weight Path
*&gt; 72.72.73.255/32  0.0.0.0                  0         32768 i

Total number of prefixes 1</pre>
<p>Removendo:</p>
<pre class="remontti-code"># vtysh --command &quot;configure terminal
  no ip route 72.72.73.255/32 lo
  router bgp 65001
   address-family ipv4 unicast
    no network 72.72.73.255/32&quot;</pre>
<p>Finalizamos a primeira parte sem fazer nenhum estrago ao servidor (CPU) <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
<p>Seria interessante fazer alguns testes de ataques (coisa pequena) mas com características reais de dentro da sua rede e de fora, escolha uma IP que não esteja em uso para tal! Para realizar esse ataque user o a ferramenta criada pelo ekovegeance: <a href="https://github.com/ekovegeance/DDOS" rel="noopener noreferrer" target="_blank">https://github.com/ekovegeance/DDOS</a></p>
<p>Em um servidor/desktop linux vai precisar ter instalado os pacotes bash sudo curl netcat hping3 openssl stunnel nmap whois dnsutils.<br />
<a href="https://github.com/ekovegeance/DDOS/archive/v1.2.4.zip">Baixe os arquivos</a>, extraia entre em sua pasta e execute o arquivo ddos.</p>
<pre class="remontti-code">$ wget https://github.com/ekovegeance/DDOS/archive/v1.2.4.zip
$ unzip v1.2.4.zip 
$ cd DDOS-1.2.4/
$ ./ddos</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos.png" data-rel="lightbox-gallery-zBwaK9T0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos.png" alt="" width="676" height="881" class="alignnone size-full wp-image-3988" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos.png 676w, https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos-230x300.png 230w" sizes="auto, (max-width: 676px) 100vw, 676px" /></a></p>
<h3>Gráficos Grafana</h3>
<p>Habilite o graphite no fastnetmon</p>
<pre class="remontti-code"># sed -i &#039;s/graphite = off/graphite = on/&#039; /etc/fastnetmon.conf</pre>
<p>Vamos instalar o <strong>influxdb</strong> para ser a base de dados</p>
<pre class="remontti-code"># apt install lsb-release gnupg2 curl wget
# wget -q https://repos.influxdata.com/influxdata-archive_compat.key
# echo &#039;393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key&#039; \
  | sha256sum -c &amp;&amp; cat influxdata-archive_compat.key \
  | gpg --dearmor \
  | tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg &gt; /dev/null
# echo &#039;deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main&#039;\
  | tee /etc/apt/sources.list.d/influxdata.list
# apt update
# apt install influxdb</pre>
<p>Edite o influxdb.conf</p>
<pre class="remontti-code"># vim /etc/influxdb/influxdb.conf</pre>
<p>Localize [[graphite]] e abaixo adicione:</p>
<pre class="remontti-code-plain">[[graphite]]
  enabled = true
  bind-address = &quot;:2003&quot;
  protocol = &quot;tcp&quot;
  consistency-level = &quot;one&quot;
  separator = &quot;.&quot;
  batch-size = 5000 # will flush if this many points get buffered
  batch-timeout = &quot;1s&quot; # will flush at least this often even if we haven&#039;t hit buffer limit
  templates = [
    &quot;fastnetmon.hosts.* app.measurement.cidr.direction.function.resource&quot;,
    &quot;fastnetmon.networks.* app.measurement.cidr.direction.resource&quot;,
    &quot;fastnetmon.total.* app.measurement.direction.resource&quot;
  ]</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/influxdb_graphite.png" alt="" width="1038" height="639" class="alignnone size-full wp-image-6314" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/influxdb_graphite.png 1038w, https://blog.remontti.com.br/wp-content/uploads/2022/02/influxdb_graphite-300x185.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/influxdb_graphite-1024x630.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/influxdb_graphite-768x473.png 768w" sizes="auto, (max-width: 1038px) 100vw, 1038px" /></p>
<p>Reinicie o influxdb</p>
<pre class="remontti-code"># systemctl restart influxdb</pre>
<p>Em seguida o fastnetmon</p>
<pre class="remontti-code"># systemctl restart fastnetmon</pre>
<p>Agora vamos acessar o o influxdb para ver se o banco graphite foi criado.</p>
<pre class="remontti-code"># influx</pre>
<pre class="remontti-code-plain">Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10</pre>
<pre class="remontti-code">&gt; use graphite</pre>
<pre class="remontti-code-plain">Using database graphite</pre>
<pre class="remontti-code">&gt; show measurements</pre>
<pre class="remontti-code-plain">name: measurements
name
----
hosts
networks
total</pre>
<pre class="remontti-code">&gt; exit</pre>
<h4> Grafana</h3>
<p>Adicione o repositório do grafana e instale-o</p>
<pre class="remontti-code"># wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -
# echo &quot;deb https://packages.grafana.com/oss/deb stable main&quot; | tee -a /etc/apt/sources.list.d/grafana.list
# apt update; apt install grafana</pre>
<p>Habilite serviço para inicialização e inicie o mesmo</p>
<pre class="remontti-code"># systemctl enable grafana-server
# systemctl start grafana-server</pre>
<p>Acesse em seu navegador <strong>http://ip_privado:3000</strong> e entre com <strong>usuário e senha admin</strong> em seguida defina uma nova senha.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_01.png" alt="" width="1384" height="769" class="alignnone size-full wp-image-6318" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_01.png 1384w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_01-300x167.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_01-1024x569.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_01-768x427.png 768w" sizes="auto, (max-width: 1384px) 100vw, 1384px" /></p>
<p>No menu <strong>Configuration</strong> e vá em  <strong>Data sources</strong>, clique em <strong>Add data source</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_02.png" alt="" width="1113" height="564" class="alignnone size-full wp-image-6319" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_02.png 1113w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_02-300x152.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_02-1024x519.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_02-768x389.png 768w" sizes="auto, (max-width: 1113px) 100vw, 1113px" /></p>
<p>Localize influxDB e selecione<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_03.png" alt="" width="1370" height="366" class="alignnone size-full wp-image-6320" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_03.png 1370w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_03-300x80.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_03-1024x274.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_03-768x205.png 768w" sizes="auto, (max-width: 1370px) 100vw, 1370px" /></p>
<p>Preencha apenas:<br />
URL:<strong> http://localhost:8086</strong><br />
Database: <strong>graphite</strong><br />
E clique em <strong>Save &#038; test</strong>, você deve ter a resposta <strong>Data source is working</strong>.</p>
<p>Faça <strong><a href="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon-Dash.zip" rel="noopener" target="_blank">download aqui</a> </strong>das Dashs e importe.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_04.png" alt="" width="207" height="187" class="alignnone size-full wp-image-6321" /><br />
Não esqueça de definir o banco InfluxDB<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_05.png" alt="" width="859" height="590" class="alignnone size-full wp-image-6323" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_05.png 859w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_05-300x206.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/grafana_fastnetmon_05-768x527.png 768w" sizes="auto, (max-width: 859px) 100vw, 859px" /></p>
<p>Você pode pesquisar por mais dashs em: <a href="https://grafana.com/grafana/dashboards/?search=fastnetmon" rel="noopener" target="_blank">https://grafana.com/grafana/dashboards/?search=fastnetmon</a></p>
<p><strong>Fastnetmon</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon.png" alt="" width="1920" height="1480" class="alignnone size-full wp-image-6329" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon-300x231.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon-1024x789.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon-768x592.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon-1536x1184.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /><br />
<strong>Fastnetmon PAINEL GERAL</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_PAINEL_GERAL.png" alt="" width="1920" height="984" class="alignnone size-full wp-image-6328" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_PAINEL_GERAL.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_PAINEL_GERAL-300x154.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_PAINEL_GERAL-1024x525.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_PAINEL_GERAL-768x394.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_PAINEL_GERAL-1536x787.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p>
<p><strong>Fastnetmon TOP HOSTS (+100MB)</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_100MB.png" alt="" width="1920" height="1478" class="alignnone size-full wp-image-6331" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_100MB.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_100MB-300x231.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_100MB-1024x788.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_100MB-768x591.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_100MB-1536x1182.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p>
<p><strong>Fastnetmon TOP HOSTS (+300MB)</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_300MB.png" alt="" width="1920" height="984" class="alignnone size-full wp-image-6332" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_300MB.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_300MB-300x154.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_300MB-1024x525.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_300MB-768x394.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_HOSTS_300MB-1536x787.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p>
<p><strong>Fastnetmon TOP NETWORKS</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_NETWORKS.png" alt="" width="1920" height="984" class="alignnone size-full wp-image-6333" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_NETWORKS.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_NETWORKS-300x154.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_NETWORKS-1024x525.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_NETWORKS-768x394.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_NETWORKS-1536x787.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p>
<p><strong>Fastnetmon TOP TRÁFEGO DE SAÍDA</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_TRAFEGO_DE_SAIDA.png" alt="" width="1920" height="984" class="alignnone size-full wp-image-6334" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_TRAFEGO_DE_SAIDA.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_TRAFEGO_DE_SAIDA-300x154.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_TRAFEGO_DE_SAIDA-1024x525.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_TRAFEGO_DE_SAIDA-768x394.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TOP_TRAFEGO_DE_SAIDA-1536x787.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p>
<p><strong>Fastnetmon TRÁFEGO REDE ESPECIFICADA</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_REDE_ESPECIFICADA.png" alt="" width="1920" height="912" class="alignnone size-full wp-image-6335" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_REDE_ESPECIFICADA.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_REDE_ESPECIFICADA-300x143.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_REDE_ESPECIFICADA-1024x486.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_REDE_ESPECIFICADA-768x365.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_REDE_ESPECIFICADA-1536x730.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p>
<p><strong>Fastnetmon TRÁFEGO POR IP ESPECIFICO</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_POR_IP_ESPECIFICO.png" alt="" width="1920" height="912" class="alignnone size-full wp-image-6336" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_POR_IP_ESPECIFICO.png 1920w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_POR_IP_ESPECIFICO-300x143.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_POR_IP_ESPECIFICO-1024x486.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_POR_IP_ESPECIFICO-768x365.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/02/Fastnetmon_TRAFEGO_POR_IP_ESPECIFICO-1536x730.png 1536w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p>
<p>E como ficou o hardware agora?<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware_grafana.png" alt="" width="1340" height="458" class="alignnone size-full wp-image-6338" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware_grafana.png 1340w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware_grafana-300x103.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware_grafana-1024x350.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/02/fastnetmon_hardware_grafana-768x262.png 768w" sizes="auto, (max-width: 1340px) 100vw, 1340px" /></p>
<p>Gostou? Se sentindo mais seguro agora? É consultor e ganha $ com isso!?</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>Fontes:<br />
<a href="https://fastnetmon.com/install/" rel="noopener" target="_blank">https://fastnetmon.com/install/</a><br />
<a href="https://docs.frrouting.org/en/latest/bgp.html" rel="noopener" target="_blank">https://docs.frrouting.org/en/latest/bgp.html</a><br />
<a href="https://deb.frrouting.org/" rel="noopener" target="_blank">https://deb.frrouting.org/</a><br />
<a href="https://fastnetmon.com/docs/influxdb_integration/" rel="noopener" target="_blank">https://fastnetmon.com/docs/influxdb_integration/</a><br />
<a href="https://grafana.com/docs/grafana/latest/installation/debian/" rel="noopener" target="_blank">https://grafana.com/docs/grafana/latest/installation/debian/</a></p>
<h4>BÔNUS PEGANDO PREFIXO /24 DO IP ATACADO E ANUNCIANDO COM OUTRA COMMUNITY PARA MITIGAR</h4>
<pre class="remontti-code-plain">
#####################
# SCRIPT FASTNETMON
#####################

#!/usr/bin/env bash
  
# Este script receberá os seguintes parâmetros:
#  $1 IP do cliente
#  $2 INCOMING -&gt; Vindo de fora da rede | OUTGOING -&gt; Saindo da sua rede
#  $3 Pacotes por seguncoes
#  $4 Ação (ban ou unban)

# Pegando prefixo 24
ip32=$1
prefixo24=&quot;${ip32%.*}.0/24&quot;

# Defina o ID do Chat ou Grupo (Grupos sempre começam com &quot;-&quot; )
ID_CHAT=&#039;-1000000000000&#039;
 
if [ &quot;$2&quot; = &quot;incoming&quot; ]; then
  TIPO=&quot;Sendo atacado&quot;
else 
  TIPO=&quot;Realizando um ataque&quot;
fi
 
# Desbanindo um IP
if [ &quot;$4&quot; = &quot;unban&quot; ]; then
  /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;UNBAN IP: &lt;code&gt;$1&lt;/code&gt;&quot; &quot;&lt;code&gt;-&gt;&gt;&lt;/code&gt; Removido da blackhole&quot;
  # Remove IP do anuncio para o FRR
  vtysh --command &quot;configure terminal
  no ip route $1/32 lo
  no ip route $prefixo24 lo
  router bgp 65001
   address-family ipv4 unicast
    no network $1/32
    no network $prefixo24
  &quot;
  # Movemos os logs para pasta ataques pois não queremos mais receber elas.
  mv /var/log/fastnetmon_attacks/$1* /var/log/fastnetmon_attacks/ataques
  exit 0
fi
 
# Banindo um IP
if [ &quot;$4&quot; = &quot;ban&quot; ]; then
  /usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;BAN IP: &lt;code&gt;$1&lt;/code&gt; $TIPO &lt;b&gt;[$3 pps]&lt;/b&gt;&quot; &quot;&lt;code&gt;-&gt;&gt;&lt;/code&gt; Anunciado em blackhole&quot;
  /usr/local/bin/telegram -f &quot;$ID_CHAT&quot; /var/log/fastnetmon_attacks/$1* $1 &quot;Logs do ataque ao IP $1&quot;
  # Anuncia IP ao FRR
  vtysh --command &quot;configure terminal
  ip route $1/32 lo
  ip route $prefixo24 lo
  router bgp 65001
   address-family ipv4 unicast
    network $1/32
    network $prefixo24
  &quot;
    exit 0
fi
 
if [ &quot;$4&quot; == &quot;attack_details&quot; ]; then
  #/usr/local/bin/telegram -m &quot;$ID_CHAT&quot; &quot;BAN&quot; &quot;&lt;code&gt;FastNetMon: IP $1 blocked because $2 attack with power $3 pps&lt;/code&gt;&quot;
  exit 0
fi


#####################
# FRR
#####################


!
frr version 8.5.1
frr defaults traditional
hostname fnm
log syslog informational
no ipv6 forwarding
service integrated-vtysh-config
!
router bgp 65001
 bgp router-id 172.16.1.2
 neighbor 172.16.1.1 remote-as 12345
 neighbor 172.16.1.1 description &quot;BORDA&quot;
 !
 address-family ipv4 unicast
  neighbor 172.16.1.1 route-map MARK_FASTNETMON_IMPORT in
  neighbor 172.16.1.1 route-map MARK_FASTNETMON_EXPORT out
 exit-address-family
exit
!
ip prefix-list FASTNETMON_EXPORT_32 seq 5 permit 200.0.0.0/22 le 32
!
ip prefix-list FASTNETMON_EXPORT_24 seq 5 permit 200.0.0.0/22 le 24
!
route-map MARK_FASTNETMON_IMPORT deny 10
exit
!
route-map MARK_FASTNETMON_EXPORT permit 10
 match ip address prefix-list FASTNETMON_EXPORT_24
 set community 65001:777
exit
! 
route-map MARK_FASTNETMON_EXPORT permit 20
 match ip address prefix-list FASTNETMON_EXPORT_32
 set community 65001:666
exit
!
end
write memory


#####################
# HUAWEI
#####################


#Configurando filtros e sessão BGP
ip route-static 192.0.2.1 255.255.255.255 NULL0 description BLACKHOLE

# Aceitas os prefixos 32 do AS para blackhole
ip ip-prefix  ACCEP_PREFIX_MASK32_FASTNETMON_IPV4 index 10 permit 200.0.0.0 22 greater-equal 32

# Aceitas os prefixos 24 do AS para mitigar
ip ip-prefix  ACCEP_PREFIX_MASK24_FASTNETMON_IPV4 index 10 permit 200.0.0.0 22 greater-equal 24

#Iginora Prefixos do CGNAT/Servidores
ip ip-prefix  IGNORE_PREFIX_FASTNETMON_IPV4 index 10 permit 200.0.1.0 28 greater-equal 28 less-equal 32
ip ip-prefix  IGNORE_PREFIX_FASTNETMON_IPV4 index 20 permit 200.0.2.0 26 greater-equal 26 less-equal 32

# community que o FRR ira enviar
ip community-filter basic COMM_FASTNETMON_BLACKHOLE_32 index 10 permit 65001:666
ip community-filter basic COMM_FASTNETMON_BLACKHOLE_24 index 10 permit 65001:777

# Define comm para usar nos RP das operadoras
ip community-filter basic COMM_BLACKHOLE_32 index 10 permit 65444:666
ip community-filter basic COMM_BLACKHOLE_24 index 10 permit 65444:777

# RP
route-policy FASTNETMON_IMPORT_IPV4 deny node 1000
 if-match ip-prefix IGNORE_PREFIX_FASTNETMON_IPV4

route-policy FASTNETMON_IMPORT_IPV4 permit node 1010
 if-match community-filter COMM_FASTNETMON_BLACKHOLE_32 
 apply local-preference 999
 apply ip-address next-hop 192.0.2.1
 apply community 65444:666
 if-match ip-prefix ACCEP_PREFIX_MASK32_FASTNETMON_IPV4
 
route-policy FASTNETMON_IMPORT_IPV4 permit node 1020
 if-match community-filter COMM_FASTNETMON_BLACKHOLE_24
 apply local-preference 999
 apply ip-address next-hop 192.0.2.1
 apply community 65444:777
 if-match ip-prefix ACCEP_PREFIX_MASK24_FASTNETMON_IPV4
 
route-policy FASTNETMON_IMPORT_IPV4 deny node 9999
route-policy FASTNETMON_EXPORT_IPV4 deny node 9999

# FILTRO OPERADORA

# Envia para community de blackhole da operadora 
route-policy UPSTREAM_OP_BRUXADO71_EXPORT_IPV4 permit node 2070
 if-match community-filter COMM_BLACKHOLE_32
 apply community 71:666

# Envia para community de blackhole de mitigraçação
route-policy UPSTREAM_OP_BRUXADO71_EXPORT_IPV4 permit node 2070
 if-match community-filter COMM_BLACKHOLE_24
 apply community 71:999
</pre>
<p>O post <a href="https://blog.remontti.com.br/6278">Como se proteger de ataques DDoS com FastNetMon de graça &#8211; Integração FRR vs NE-Huawei &#8211; Bonus Gráficos Grafana</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6278/feed</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
			</item>
		<item>
		<title>Aprenda a instalar um Jump Server com Apache Guacamole um gateway de desktop remoto Web</title>
		<link>https://blog.remontti.com.br/6204</link>
					<comments>https://blog.remontti.com.br/6204#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Mon, 17 Jan 2022 20:51:38 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[guacamole]]></category>
		<category><![CDATA[rdp]]></category>
		<category><![CDATA[remote]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[telnet]]></category>
		<category><![CDATA[vlc]]></category>
		<category><![CDATA[vnc]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6204</guid>

					<description><![CDATA[<p>Introdução: vivemos em uma época onde “segurança” deixou de ser uma palavra qualquer, citada e questionada por alguns profissionais a diversos gestores, para se tornar algo realmente em evidência nas mídias. Segurança é um&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6204">Aprenda a instalar um Jump Server com Apache Guacamole um gateway de desktop remoto Web</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/01/guacamole.png" alt="" width="720" height="340" class="alignnone size-full wp-image-6233" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/01/guacamole.png 720w, https://blog.remontti.com.br/wp-content/uploads/2022/01/guacamole-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/01/guacamole-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /><br />
<strong>Introdução:</strong> vivemos em uma época onde “segurança” deixou de ser uma palavra qualquer, citada e questionada por alguns profissionais a diversos gestores, para se tornar algo realmente em evidência nas mídias. Segurança é um quesito importantíssimo para a continuidade de um negócio e muito ampla em diversos aspectos.<br />
Aqui abordaremos um conceito e uma ferramenta que serão muito úteis para uma Organização. Vamos começar com algumas perguntas simples?</p>
<ul>
<li>Você necessita de acessar remotamente ativos dentro da empresa em que trabalha?</li>
<li>Costuma deixar seus ativos acessíveis publicamente só para conectar de qualquer lugar?</li>
<li>Você restringe esse acesso por pessoas e/ou grupos?</li>
<li>Quando alguém com privilégios é demitido. Você tem que ir em diversos sistemas e equipamentos rapidamente, para remover os acessos?</li>
<li>Você sente falta de um local centralizado e único, que contenha a definição de seus sistemas para trabalhar remotamente?</li>
</ul>
<p>Se a resposta para essas perguntas foi um “<strong>SIM</strong>”, então esse artigo pode lhe ajudar a melhorar a forma como você acessa determinados ativos em sua rede.</p>
<p><iframe loading="lazy" src="https://player.vimeo.com/video/116207678?h=34d3bc7d02" width="640" height="428" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen></iframe></p>
<p>Primeiramente vamos a um conceito que muitos acham que VPN (Virtual Private Network) é a forma mais segura de acessar uma Intranet e assim prestar suporte remotamente de qualquer lugar. Bem, não queria destruir seu conceito mas; a VPN sem determinados cuidados com o seu sistema pessoal, de nada vai te proteger de um incidente que possa parar sua empresa. Imagine uma situação em que você esteja conectado remotamente via VPN corporativa, acessando um compartilhamento de arquivos da empresa e em algum momento durante o trabalho você adquiriu um bem sucedido ransomware. Esse malware causará grande prejuízo para a empresa e para a sua reputação, mesmo estando usando a tal VPN.  </p>
<p>Outros preferem usar recursos como os Jump Servers. Equipamentos com sistemas, por exemplo Windows, rodando serviços como RDP (Remote Desktop Protocol), ou Anydesk, ou Teamviewer, ou qualquer outro equivalente para permitir o acesso local e a partir dele conectar em outros sistemas dentro da empresa. Nada contra o sistema da Microsoft ou qualquer produto citado mas não me sinto confortável em deixá-los públicos na Internet. Lembrando que não existem sistemas 100% seguros. Em algum momento falhas podem surgir e alguém pode explorá-las. Pense em uma vulnerabilidade <strong>Zero Day</strong>.</p>
<p>Então o que venho sugerir nesse artigo é que juntem as duas soluções <strong>VPN</strong> e <strong>Jump Server</strong> mas de uma maneira, que na minha opinião, seria mais segura que ambas as soluções acima, construídas isoladamente.</p>
<p>Continuem usando a VPN mas também pensando na segurança dos sistemas pessoais de quem utiliza a VPN, para trabalhar remotamente. Não usem VPN PPTP em suas soluções corporativas, é insegura, obsoleta e não funciona bem com CGNAT, em sistemas que não possuem suporte ao ALG (Application Layer Gateway) PPTP.</p>
<p>Ao invés de deixarem públicos seus Jump Servers, mantenha-os com IPs privados RFC1918 e acessíveis somente através da VPN. Assim chegaremos a dois níveis de autenticação pelo menos. Crie um ou mais servidores Jump e crie ACLs nos equipamentos e sistemas que só permitam acesso dos IPs privados dos Jump Servers.</p>
<p>Dessa forma vai conseguir resolver boa parte daquelas perguntas que fiz, mas ainda não é o objetivo principal deste artigo. Esse artigo vai focar na ferramenta Apache Guacamole que é uma aplicação para construirmos um Jump Server mais inteligente e seguro.  </p>
<p>Mas o que seria o Apache Guacamole? Ele é um clientless remote desktop gateway, ou seja, você não precisa de um programa cliente instalado no seu desktop de trabalho ou pessoal, para acessar sistemas que usem os protocolos: RDP, VNC e SSH. Isso é feito através de um browser apenas e usando HTML5.</p>
<p>O Guacamole é uma aplicação Java que roda embaixo do Apache Tomcat. É dividido em duas partes, o server e os clients que fazem a conexão propriamente dita usando RDP, VNC ou SSH, de acordo com o tipo de acesso. Possui suporte a diversas bases de dados como MySQL, MariaDB, PostgreSQL e também LDAP.</p>
<p>Sua arquitetura funciona assim:<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/01/guacamole_arquitetura.png" alt="" width="300" height="529" class="alignnone size-full wp-image-6248" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/01/guacamole_arquitetura.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/01/guacamole_arquitetura-170x300.png 170w" sizes="auto, (max-width: 300px) 100vw, 300px" /></p>
<h3>Requisitos para o nosso artigo</h3>
<p> Debian 11 (Bullseye) 64 bits. <a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank">Instalação mínima</a>. Sistema deve restringir o acesso apenas via VPN e/ou Rede de Gerência da empresa (utilize regras de firewall iptables ou nftables para essa tarefa).<br />
&#8211; VM com 2 cores ou mais. Dependerá da quantidade de acessos simultâneos.<br />
&#8211; 2Gb de ram. Sugiro 4Gb.<br />
&#8211; 10G de disco. Dependerá do crescimento da base de dados, se for local.<br />
&#8211; Interface de rede com IP privado e liberado para acesso aos sistemas remotos.</p>
<h3>:: Instalação do MariaDB 10.5 ::</h3>
<pre class="remontti-code"># apt install mariadb-server mariadb-client </pre>
<p>Por padrão o pacote MariaDB 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.<br />
Assim, você pode logar diretamente sem fornecer a senha root do MariaDB, para aumentar a seguraça vamos definir uma senha para o usuário root do MariaDB, 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;;</pre>
<p>Ainda logado no MariaDB vamos criar nossa base de dados para o Guacamole, não esqueça de alterar <strong>S3NHA_GUACAMOL3_US3R</strong> por sua senha.</p>
<pre class="remontti-code">CREATE DATABASE guacamole;
CREATE USER &#039;guacamole&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;S3NHA_GUACAMOL3_US3R&#039;;
GRANT ALL PRIVILEGES ON guacamole.* TO &#039;guacamole&#039;@&#039;localhost&#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>:: Instalação Java JDK ::</h3>
<pre class="remontti-code"># apt install openjdk-11-jdk libmariadb-java</pre>
<p>Precisaremos configurar a variável de ambiente JAVA_HOME. No final do arquivo <strong>/etc/environment</strong> adicione o seguinte parâmetro <em>JAVA_HOME=&#8221;/usr/lib/jvm/java-11-openjdk-amd64&#8243;</em> </p>
<pre class="remontti-code">echo &#039;JAVA_HOME=&quot;/usr/lib/jvm/java-11-openjdk-amd64&quot;&#039; &gt;&gt;  /etc/environment</pre>
<p>Em seguida carregamos o /etc/environment:</p>
<pre class="remontti-code"># source /etc/environment</pre>
<h3>:: Instalação Tomcat::</h3>
<pre class="remontti-code"># apt install tomcat9 tomcat9-admin tomcat9-docs tomcat9-examples tomcat9-user</pre>
<p>Feito isso vamos criar um usuário de acesso ao Tomcat Web Application Manager. Vamos editar o arquivo <strong>/etc/tomcat9/tomcat-users.xml</strong> e no final antes de <strong></tomcat-users></strong> adicionar adicionar as 2 linhas, não esqueça de alterar <strong>S3NHA_FORT3</strong>:</p>
<pre class="remontti-code"># vim /etc/tomcat9/tomcat-users.xml</pre>
<pre class="remontti-code-plain">  &lt;role rolename=&quot;manager-gui&quot;/&gt;
  &lt;user username=&quot;admin&quot; password=&quot;S3NHA_FORT3&quot; roles=&quot;manager-gui&quot;/&gt;
</pre>
<p>Arquivo /etc/tomcat9/tomcat-users.xml sem os comentários ficará:</p>
<pre class="remontti-code">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;tomcat-users xmlns=&quot;http://tomcat.apache.org/xml&quot;
              xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
              xsi:schemaLocation=&quot;http://tomcat.apache.org/xml tomcat-users.xsd&quot;
              version=&quot;1.0&quot;&gt;

  &lt;role rolename=&quot;manager-gui&quot;/&gt;
  &lt;user username=&quot;admin&quot; password=&quot;S3NHA_FORT3&quot; roles=&quot;manager-gui&quot;/&gt;
&lt;/tomcat-users&gt;</pre>
<h3>:: Instalação Guacamole::</h3>
<pre class="remontti-code"># apt install guacd</pre>
<p>Os pacotes não criam os diretórios de configuração do Guacamole, então faremos conforme abaixo. Neles ficarão as extensions e o connector e que juntos integrarão o Java às bases de dados para funcionar a nossa autenticação e administração do Jump Server.</p>
<pre class="remontti-code-plain">/etc/guacamole/
├── extensions
└── lib</pre>
<pre class="remontti-code"># mkdir -p /etc/guacamole/lib /etc/guacamole/extensions</pre>
<p>Crie um link simbólico do connector java do MariaDB no Guacamole:</p>
<pre class="remontti-code"># ln -s /usr/share/java/mariadb-java-client.jar /etc/guacamole/lib/</pre>
<p>Vamos baixar e descompactar o pacote de extensão, para criação das tabelas e autenticação na base de dados. Detalhe que a versão tem que ser a mesma do pacote guacd que instalamos acima. Nesse caso é a versão 1.3.0 que vem no repositório do Debian 11.</p>
<pre class="remontti-code"># apt install wget
# cd /tmp
# wget -c https://archive.apache.org/dist/guacamole/1.3.0/binary/guacamole-auth-jdbc-1.3.0.tar.gz
# tar -xzvf guacamole-auth-jdbc-1.3.0.tar.gz</pre>
<p>Mova a extensão de autenticação via MySQL, para o lugar correto:</p>
<pre class="remontti-code"># mv /tmp/guacamole-auth-jdbc-1.3.0/mysql/guacamole-auth-jdbc-mysql-1.3.0.jar /etc/guacamole/extensions/</pre>
<p>Populando a base de dados <strong>guacamole</strong> com as tabelas e algumas informações iniciais:</p>
<pre class="remontti-code"># cat /tmp/guacamole-auth-jdbc-1.3.0/mysql/schema/*.sql | mysql -u root -p guacamole</pre>
<p>Informe a senha do usuário MariaDB root no nosso ex.: &#8220;ALTERE_3ST4_SENHA&#8221;</p>
<p>Se desejar certificar que as tabelas foram criadas acesse o terminal do MariaDB com o usuário e senha do guacamole</p>
<pre class="remontti-code"># mariadb -u guacamole -p</pre>
<p>Enter password: <em>S3NHA_GUACAMOL3_US3R</em><br />
Use o comando <strong>show tables;</strong> para ver as tabelas.</p>
<pre class="remontti-code-plain">Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.5.12-MariaDB-0+deb11u1 Debian 11

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 [guacamole]&gt; show tables; 
+---------------------------------------+
| Tables_in_guacamole                   |
+---------------------------------------+
| guacamole_connection                  |
| guacamole_connection_attribute        |
| guacamole_connection_group            |
| guacamole_connection_group_attribute  |
| guacamole_connection_group_permission |
| guacamole_connection_history          |
| guacamole_connection_parameter        |
| guacamole_connection_permission       |
| guacamole_entity                      |
| guacamole_sharing_profile             |
| guacamole_sharing_profile_attribute   |
| guacamole_sharing_profile_parameter   |
| guacamole_sharing_profile_permission  |
| guacamole_system_permission           |
| guacamole_user                        |
| guacamole_user_attribute              |
| guacamole_user_group                  |
| guacamole_user_group_attribute        |
| guacamole_user_group_member           |
| guacamole_user_group_permission       |
| guacamole_user_history                |
| guacamole_user_password_history       |
| guacamole_user_permission             |
+---------------------------------------+
23 rows in set (0.000 sec)

MariaDB [guacamole]&gt; exit;
Bye</pre>
<p>Criando o arquivo /etc/guacamole/guacamole.properties com as configurações de porta de acesso e os dados de conexão ao MariaDB.</p>
<pre class="remontti-code"># vim /etc/guacamole/guacamole.properties</pre>
<p>Não esqueça de alterar <em>S3NHA_GUACAMOL3_US3R</em></p>
<pre class="remontti-code"># Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port:    4822

# MySQL properties
mysql-driver: mariadb
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole
mysql-username: guacamole
mysql-password: S3NHA_GUACAMOL3_US3R</pre>
<p><em>OBS: Embora MariaDB e MySQL tenham algumas coisas em comum (MariaDB é um fork do Mysql), mas nesse caso eles são diferentes aqui. Em muitos artigos espalhados pela Internet se fala no pacote libmysql-java mas este não existe mais no Debian 11. No lugar dele usamos o libmariadb-java.</em></p>
<h5>Baixando e habilitando o Guacamole Web Application</h5>
<pre class="remontti-code"># ln -s /etc/guacamole/ /var/lib/tomcat9/.quacamole
# wget https://downloads.apache.org/guacamole/1.3.0/binary/guacamole-1.3.0.war -O /var/lib/tomcat9/webapps/guacamole.war
# systemctl restart tomcat9 guacd</pre>
<p>Se parássemos por aqui, já teríamos o Guacamole rodando e funcional em HTTP, mas vamos adicionar uma camada de criptografia nisso. Vamos habilitar o SSL no Apache Tomcat:</p>
<p>Vamos criar uma chave e uma senha com o próximo comando. Só seguir as instruções e preencher as perguntas:</p>
<pre class="remontti-code"># keytool -genkey -alias tomcat -keyalg RSA</pre>
<pre class="remontti-code-plain">Informe a senha da área de armazenamento de chaves:  S3NHA_USADA_K3YTOOL
Informe novamente a nova senha: S3NHA_USADA_K3YTOOL
Qual é o seu nome e o seu sobrenome?
  [Unknown]:  Marcelo Gondim
Qual é o nome da sua unidade organizacional?
  [Unknown]:  AMA
Qual é o nome da sua empresa?
  [Unknown]:  LinuxInfo
Qual é o nome da sua Cidade ou Localidade?
  [Unknown]:  Araruama
Qual é o nome do seu Estado ou Município?
  [Unknown]:  RJ
Quais são as duas letras do código do país desta unidade?
  [Unknown]:  BR
CN=Marcelo Gondim, OU=AMA, O=LinuxInfo, L=Araruama, ST=RJ, C=BR Está correto?
  [não]:  sim</pre>
<p>Concluído precisaremos movê-la para o local certo e com as devidas permissões:</p>
<pre class="remontti-code"># mv /root/.keystore /var/lib/tomcat9/
# chown tomcat. /var/lib/tomcat9/.keystore
# chmod 640 /var/lib/tomcat9/.keystore</pre>
<p>Em /etc/tomcat9/server.xml:</p>
<pre class="remontti-code"># vim /etc/tomcat9/server.xml</pre>
<p>Troque isso:</p>
<pre class="remontti-code">    &lt;Connector port=&quot;8080&quot; protocol=&quot;HTTP/1.1&quot;
               connectionTimeout=&quot;20000&quot;
               redirectPort=&quot;8443&quot; /&gt;
</pre>
<p>Por: <em>(Não esqueça de alterar S3NHA_USADA_K3YTOOL)</em></p>
<pre class="remontti-code">
    &lt;Connector port=&quot;8080&quot; protocol=&quot;HTTP/1.1&quot;
               connectionTimeout=&quot;20000&quot;
               redirectPort=&quot;8443&quot;
               maxThreads=&quot;200&quot;
               scheme=&quot;https&quot;
               secure=&quot;true&quot;
               SSLEnabled=&quot;true&quot;
               keystoreFile=&quot;/var/lib/tomcat9/.keystore&quot;
               keystorePass=&quot;S3NHA_USADA_K3YTOOL&quot;
               clientAuth=&quot;false&quot;
               sslProtocol=&quot;TLS&quot; /&gt;
</pre>
<pre class="remontti-code"># systemctl restart tomcat9 guacd</pre>
<p>Para acessarmos nosso Jump Server:<br />
<strong>https://[servidor]:8080/guacamole/</strong></p>
<p>O usuário e senha são <strong>guacadmin</strong>. Crie um novo usuário com permissões de administrador e em seguida remova este usuário padrão.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/01/debian_11_guacamole.png" alt="" width="924" height="441" class="alignnone size-full wp-image-6214" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/01/debian_11_guacamole.png 924w, https://blog.remontti.com.br/wp-content/uploads/2022/01/debian_11_guacamole-300x143.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/01/debian_11_guacamole-768x367.png 768w" sizes="auto, (max-width: 924px) 100vw, 924px" /></p>
<p><strong>Autor:</strong> Marcelo Gondim <gondim at linuxinfo.com.br><br />
Brasil Peering Fórum: <a href="https://wiki.brasilpeeringforum.org/w/Usuário:Gondim" rel="noopener" target="_blank">https://wiki.brasilpeeringforum.org/w/Usuário:Gondim</a><br />
Linkedin: <a href="https://www.linkedin.com/in/marcelo-gondim-sysadmin/" rel="noopener" target="_blank">https://www.linkedin.com/in/marcelo-gondim-sysadmin/</a><br />
Telegram: <a href="https://telegram.me/Marcelo_Gondim" rel="noopener" target="_blank">@Marcelo_Gondim</a></p>
<h3> Dicas extra do Remontti</h3>
<p>Para complementar, tem algumas coisas que eu acho que podem serem aplicadas ao nosso Guacamole apresentado pelo nosso parceiro <a href="https://telegram.me/Marcelo_Gondim" rel="noopener" target="_blank">Marcelo Gondim</a></p>
<p>&#8211; Nginx fazendo Proxy reverso para acessar a aplicação com um subdomínio.<br />
&#8211; Utilização do Let&#8217;s Encrypt para um certificado válido.<br />
&#8211; Port knocking com Nftables, para não deixar totalmente exposto.</p>
<h4>Proxy Nginx</h4>
<p>Como a aplicação será acessada apenas pelo Nginx podemos deixar o tomcat9 ouvindo apenas em localhost, se você segui o procedimento anterio qual criou o certificado privado agora ele não é mais necessarios vamos desfazer para o que era antes porem vamos colocar  o connector ouvindo apenas 127.0.0.1.</p>
<pre class="remontti-code"># vim /etc/tomcat9/server.xml</pre>
<p>Altere para:</p>
<pre class="remontti-code">    &lt;Connector address=&quot;127.0.0.1&quot; port=&quot;8080&quot; protocol=&quot;HTTP/1.1&quot;
               connectionTimeout=&quot;20000&quot;
               redirectPort=&quot;8443&quot; /&gt;
</pre>
<p>Reinicie o tomcat para que o mesmo rode apenas em localhost, assim não será mais possivel acesso pelo seu IP:8080</p>
<pre class="remontti-code"># systemctl restart tomcat9</pre>
<p>Instalaremos o nginx e vamos remover a assinatura do nginx onde ele exibe a versão do mesmo.</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>Irei alterar direto no arquivo default do nginx as configurações, se achar melhor você pode criar um novo arquivo.</p>
<pre class="remontti-code"># mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.original
# vim /etc/nginx/sites-available/default</pre>
<p>Adcione: <em>(Altere server_name para seu subdomínio)</em></p>
<pre class="remontti-code">server {
    listen 80;
    listen [::]:80;
 
    server_name guacamole.remontti.com.br;

    location / {
        proxy_pass http://127.0.0.1:8080/guacamole/;
        proxy_buffering off;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
        proxy_cookie_path /guacamole/ /;
    }
}</pre>
<pre class="remontti-code"># nginx -t
# systemctl restart nginx</pre>
<h3>Let&#8217;s Encrypt</h3>
<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>
<pre class="remontti-code">Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices)
 (Enter &#039;c&#039; to cancel): noc@remontti.com.br

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
Account registered.

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: guacamole.remontti.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 guacamole.remontti.com.br
Performing the following challenges:
http-01 challenge for guacamole.remontti.com.br
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/default
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/default

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled
https://guacamole.remontti.com.br
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/guacamole.remontti.com.br/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/guacamole.remontti.com.br/privkey.pem
   Your certificate will expire on 2022-04-17. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again with the &quot;certonly&quot; option. 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>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>Exemplo:</p>
<pre class="remontti-code"># echo &#039;00 00   1 * *   root    certbot -q renew&#039; &gt;&gt; /etc/crontab
# systemctl restart cron</pre>
<h4>Port knocking</h4>
<p>Nftables já vem por padrão no Debian 11 então basta habilitá-lo. Temos um tutorial do se <a href="https://blog.remontti.com.br/5390" rel="noopener" target="_blank">Port knocking</a> </p>
<pre class="remontti-code"># systemctl enable nftables</pre>
<p>O arquivo de configuração padrão do nftables fica em /etc/nftables.conf, então vamos edita-lo:</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<p>Neste exemplo vou estar liberando as portas 80 e 443 após “batermos” nas portas 52341, 28001, 60541, 30951, e por 2h (7200s) após bater nas portas teremos acesso as mesmas, caso fique mais que tempo definido será necessário bater novamente.</p>
<pre class="remontti-code">#!/usr/sbin/nft -f

flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0;
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}

define protege_portas = {80,443}

table inet portknock {
   set clientes_ipv4 {
      type ipv4_addr
      flags timeout
   }

   set clientes_ipv6 {
      type ipv6_addr
      flags timeout
   }

   set toctoc_aberta_ipv4 {
      type ipv4_addr . inet_service
      flags timeout
   }

   set toctoc_aberta_ipv6 {
      type ipv6_addr . inet_service
      flags timeout
   }

   chain input {
      type filter hook input priority -10; policy accept;

      iifname &quot;lo&quot; return

      tcp dport 52341 add @toctoc_aberta_ipv4 {ip  saddr . 28001 timeout 60s}
      tcp dport 52341 add @toctoc_aberta_ipv6 {ip6 saddr . 28001 timeout 60s}
      tcp dport 28001 ip  saddr . tcp dport @toctoc_aberta_ipv4 add @toctoc_aberta_ipv4 {ip  saddr . 60541 timeout 60s}
      tcp dport 28001 ip6 saddr . tcp dport @toctoc_aberta_ipv6 add @toctoc_aberta_ipv6 {ip6 saddr . 60541 timeout 60s}
      tcp dport 60541 ip  saddr . tcp dport @toctoc_aberta_ipv4 add @toctoc_aberta_ipv4 {ip  saddr . 30951 timeout 60s}
      tcp dport 60541 ip6 saddr . tcp dport @toctoc_aberta_ipv6 add @toctoc_aberta_ipv6 {ip6 saddr . 30951 timeout 60s}
      tcp dport 30951 ip  saddr . tcp dport @toctoc_aberta_ipv4 add @clientes_ipv4 {ip  saddr timeout 7200s} log prefix &quot;Portknock bem-sucedido: &quot;
      tcp dport 30951 ip6 saddr . tcp dport @toctoc_aberta_ipv6 add @clientes_ipv6 {ip6 saddr timeout 7200s} log prefix &quot;Portknock bem-sucedido: &quot;

      tcp dport { $protege_portas } ip  saddr @clientes_ipv4 counter accept
      tcp dport { $protege_portas } ip6 saddr @clientes_ipv6 counter accept
      tcp dport { $protege_portas } ct state established,related counter accept
      tcp dport { $protege_portas } counter reject with tcp reset
   }
}</pre>
<p>Reinicie o nftables</p>
<pre class="remontti-code"># systemctl restart nftables</pre>
<p>Neste tutorial de <a href="https://blog.remontti.com.br/5390" rel="noopener" target="_blank">Port knocking</a> tenho um modelinho web qual você pode usar, existe alguns clientes para celular <strong><a href="https://play.google.com/store/apps/details?id=com.xargsgrep.portknocker&#038;hl=pt_BR&#038;gl=US" rel="noopener" target="_blank">Android</a></strong>, <strong><a href="https://apps.apple.com/us/app/knockond/id333206277" rel="noopener" target="_blank">iPhone</a></strong> e <strong><a href="http://gregsowell.com/?p=2020" rel="noopener" target="_blank">Windows</a></strong>.</p>
<p>Agora deixamos mais seguro nosso servidor.</p>
<h5>Exemplo de como adicionar um Windows Server ao seu guacamole</h5>
<p>No canto superior direito, clique no nome de <strong>usuário</strong> e em seguida <strong>Settings</strong>.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/01/debian_11_guacamole_add_windows.png" alt="" width="376" height="234" class="alignnone size-full wp-image-6223" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/01/debian_11_guacamole_add_windows.png 376w, https://blog.remontti.com.br/wp-content/uploads/2022/01/debian_11_guacamole_add_windows-300x187.png 300w" sizes="auto, (max-width: 376px) 100vw, 376px" /><br />
Click em Connections em seguida New Connection<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/01/debian_11_guacamole_add_windows_1.png" alt="" width="675" height="210" class="alignnone size-full wp-image-6224" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/01/debian_11_guacamole_add_windows_1.png 675w, https://blog.remontti.com.br/wp-content/uploads/2022/01/debian_11_guacamole_add_windows_1-300x93.png 300w" sizes="auto, (max-width: 675px) 100vw, 675px" /></p>
<p><strong>EDIT CONNECTION</strong><br />
<strong>Name:</strong> Insira um nome de identificação para a conexão<br />
<strong>Location:</strong> Use o ROOT padrão se não houver requisitos específicos<br />
<strong>Protocol:</strong> RDP</p>
<p><strong>PARAMETERS</strong><br />
<em>Network</em><br />
<strong>Hostname:</strong> IP o Domínio do seu Servidor<br />
<strong>Port:</strong> Podemos deixá-lo vazio se usar a porta padrão 3389, ou informe a porta alterada do RDP<br />
<em>Authentication</em><br />
<strong>Username:</strong> Usuário<br />
<strong>Password:</strong> Senha<br />
<strong>Domain:</strong> Deixe em branco ou use o nome de domínio local do dispositivo Windows<br />
<strong>Ignore server certificate:</strong> Marque esta opção se o certificado for autoassinado</p>
<p>Role para baixo até o final da página e clique no botão <strong>Save</strong>.</p>
<p>A interface é bem intuitiva, acredito que não terá dificuldades, você pode criar grupos e usuarios e restrigir o acesso apenas a alguns servidores. </p>
<p>Espero que tenha gostado! E mais uma vez deixo meu agradecimento ao parceio <strong>Marcelo Gondim</strong>. Para trocar uma ideia chega lá no telegram <a href="https://telegram.me/remontticombr" rel="noopener" target="_blank">@remontticombr</a></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>Referências: </strong><br />
&#8211; <a href="https://wiki.debian.org/Guacamole" rel="noopener" target="_blank">https://wiki.debian.org/Guacamole</a><br />
&#8211; <a href="https://computingforgeeks.com/install-and-use-guacamole-remote-desktop-on-debian/" rel="noopener" target="_blank">https://computingforgeeks.com/install-and-use-guacamole-remote-desktop-on-debian/</a><br />
&#8211; <a href="https://wiki.brasilpeeringforum.org/w/Configurando_um_gateway_de_acesso_remoto_com_Guacamole" rel="noopener" target="_blank">https://wiki.brasilpeeringforum.org/w/Configurando_um_gateway_de_acesso_remoto_com_Guacamole</a><br />
&#8211; <a href="https://receitasdecodigo.com.br/web/configurando-ssl-no-tomcat-8" rel="noopener" target="_blank">https://receitasdecodigo.com.br/web/configurando-ssl-no-tomcat-8</a></p>
<p>O post <a href="https://blog.remontti.com.br/6204">Aprenda a instalar um Jump Server com Apache Guacamole um gateway de desktop remoto Web</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6204/feed</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação FreeRadius no Debian 11 Bullseye (Extra sqlippool)</title>
		<link>https://blog.remontti.com.br/6129</link>
					<comments>https://blog.remontti.com.br/6129#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 26 Nov 2021 20:11:30 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[freeradius]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6129</guid>

					<description><![CDATA[<p>Esse tutorial é ideal para provedores que desejam criar seu próprio sistema de autenticação com freeradius, fazendo autenticação do tipo PPPoE, hotspot, Wireless (PSK/EAP) entre outras. Neste tutorial iremos instalar e configurar o FreeRadius&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6129">Instalação FreeRadius no Debian 11 Bullseye (Extra sqlippool)</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/freeradius-3-debian11.png" alt="" width="900" height="428" class="alignnone size-full wp-image-6136" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/11/freeradius-3-debian11.png 900w, https://blog.remontti.com.br/wp-content/uploads/2021/11/freeradius-3-debian11-300x143.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/11/freeradius-3-debian11-768x365.png 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /><br />
Esse tutorial é ideal para provedores que desejam criar seu próprio sistema de autenticação com freeradius, fazendo autenticação do tipo PPPoE, hotspot, Wireless (PSK/EAP)  entre outras.</p>
<p>Neste tutorial iremos instalar e configurar o FreeRadius 3.0.x. </p>
<p><strong>REQUISITOS</strong><br />
1 – <a href="https://blog.remontti.com.br/5792" rel="noopener noreferrer" target="_blank">Debian 11 Bullseye &#8211; Instalação limpa</a><br />
2 – <a href="https://blog.remontti.com.br/5893" rel="noopener noreferrer" target="_blank">WEB Apache + PHP + MariaDB + phpMyAdmin “LAMP”</a> (Opcional)</p>
<p><strong>Instalação do FreeRadius 3.0.`>21`</strong><br />
Tenha primeiramente o MariaDB instalado <a href="https://blog.remontti.com.br/5893" rel="noopener" target="_blank">(Tutorial LAMP)</a>, então crie o banco de dados e usuário quais iremos utilizar para a integração com o Freeradius.</p>
<p>Abra o terminal de comando do MariaDB e crie a base e o usuario chamados de radius e defina a senha para este usuário.</p>
<pre class="remontti-code"># mariadb -u root -p</pre>
<p>Altere <strong>SENHA_USER_RADIUS</strong>. Você pode gerar uma senha forte e segura em <a href="https://senhasegura.remontti.com.br/" rel="noopener noreferrer" target="_blank">https://senhasegura.remontti.com.br</a></p>
<pre class="remontti-code">CREATE DATABASE radius;
GRANT ALL PRIVILEGES ON radius.* TO &#039;radius&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SENHA_USER_RADIUS&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Instale os pacotes do <strong>freeradius</strong></p>
<pre class="remontti-code"># apt install freeradius freeradius-mysql freeradius-utils</pre>
<p>Com o o banco de dados radius criado iremos importar as tabelas padrões do freeradius:</p>
<pre class="remontti-code"># mariadb -u radius -p radius &lt; /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
# mariadb -u radius -p radius &lt; /etc/freeradius/3.0/mods-config/sql/ippool/mysql/schema.sql</pre>
<p>Após comando será solicitado a senha do usuario radius (SENHA_USER_RADIUS).</p>
<p>Caso deseje logs mais detalhados (recomendo) edite o arquivo /etc/freeradius/3.0/radiusd.conf, mas antes faça um backup do mesmo.</p>
<pre class="remontti-code"># cp /etc/freeradius/3.0/radiusd.conf /etc/freeradius/3.0/radiusd.conf.orig
# vim /etc/freeradius/3.0/radiusd.conf</pre>
<p>Localize as variáveis e altere para yes  </p>
<pre class="remontti-code">[...]
log {
    [...]
        stripped_names = yes
        auth = yes
        auth_badpass = yes
        auth_goodpass = yes
    [...]
}
[...]</pre>
<p>Ajustaremos o <a href="https://wiki.freeradius.org/guide/SQL-HOWTO-for-freeradius-3.x-on-Debian-Ubuntu" rel="noopener noreferrer" target="_blank">mod SQL</a> para trabalhar com conexão do tipo mysql, e informamos os dados para conexão com o banco de dados. Arquivo /etc/freeradius/3.0/mods-available/sql.orig</p>
<pre class="remontti-code"># cp /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-available/sql.orig</pre>
<p>Usarei o comando <strong>sed</strong> para facilitar sua vida <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;" /> mas preste atenção nos comandos, se desejar pode editar o arquivo manualmente e alterar as entradas.</p>
<pre class="remontti-code"># sed -i &#039;s/driver = &quot;rlm_sql_null&quot;/driver = &quot;rlm_sql_mysql&quot;/&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;s/dialect = &quot;sqlite&quot;/dialect = &quot;mysql&quot;/&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;/server = &quot;localhost&quot;/s/^#//g&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;/port = 3306/s/^#//g&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;/login = &quot;radius&quot;/s/^#//g&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;/password = &quot;radpass&quot;/s/^#//g&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;/read_clients = yes/s/^#//g&#039; /etc/freeradius/3.0/mods-available/sql</pre>
<p>No próximo comando altere <strong>SENHA_USER_RADIUS</strong> para a senha de conexão do usuário radius.</p>
<pre class="remontti-code"># sed -i &#039;s/radpass/SENHA_USER_RADIUS/&#039; /etc/freeradius/3.0/mods-available/sql</pre>
<p>Habilite o mod:</p>
<pre class="remontti-code"># ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/sql</pre>
<p>Desativando o TLS do Mysql</p>
<pre class="remontti-code"># sed -i &#039;84,102 {s/^/##/}&#039; /etc/freeradius/3.0/mods-available/sql
# sed -i &#039;s/disable_tlsv1_1 = yes/disable_tlsv1_1 = no/&#039; /etc/freeradius/3.0/mods-available/eap 
# sed -i &#039;s/disable_tlsv1 = yes/disable_tlsv1 = no/&#039; /etc/freeradius/3.0/mods-available/eap
# sed -i &#039;s/tls_min_version = &quot;1.2&quot;/tls_min_version = &quot;1.0&quot;/&#039; /etc/freeradius/3.0/mods-available/eap</pre>
<p>Agora no arquivo /etc/freeradius/3.0/sites-enabled/default vamos comentar alguns componentes que não nos interessa (Se você entrar no arquivo e editar manualmente ele está todo comentado, auto explicativo.) e incluir alguns componentes como o SQL.</p>
<pre class="remontti-code"># cp /etc/freeradius/3.0/sites-available/default  /etc/freeradius/3.0/sites-available/default.org</pre>
<pre class="remontti-code"># sed -i &#039;/digest/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/suffix/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/files/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/ldap/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/exec/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/detail/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/unix/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;/attr_filter.accounting_response/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;s/-sql/sql/&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;689 s/# *//&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;854,874 {s/^/##/}&#039; /etc/freeradius/3.0/sites-available/default</pre>
<p>Habilitando o mod <strong> <a href="http://sqlippool" rel="noopener noreferrer" target="_blank">sqlippool</a></strong><br />
Como o mod sqlippool você poderá ter sua pool de IPs direto no banco de dados.</p>
<pre class="remontti-code"># ln -s /etc/freeradius/3.0/mods-available/sqlippool /etc/freeradius/3.0/mods-enabled/sqlippool</pre>
<p>Vou alterar (Descomentando e comentado) a chave pool_key = "<strong>%{NAS-Port}</strong>" por "<strong>%{Calling-Station-Id}</strong>", desta forma a chave será o MAC, e "allow_duplicates = no" para não termos duplicidades de IPs. Mais adiante iremos também ajustar o allocate_clear.</p>
<pre class="remontti-code"># sed -i &#039;74 {s/^/#/}&#039; /etc/freeradius/3.0/mods-available/sqlippool
# sed -i &#039;75 s/# *//&#039; /etc/freeradius/3.0/mods-available/sqlippool
# sed -i &#039;67 s/# *//&#039; /etc/freeradius/3.0/mods-available/sqlippool</pre>
<p>Precisamos adicionar o mod sqlippool no nosso arquivo default, você acrescentará sqlippool em <strong>accounting</strong> {...} e <strong>post-auth</strong> {...} logo abaixo de <strong>sql</strong>: </p>
<pre class="remontti-code"># sed -i &#039;642i\    sqlippool&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;734i\    sqlippool&#039; /etc/freeradius/3.0/sites-available/default</pre>
<p>Verifique com o comando abaixo se a saída do seu arquivo ficou assim:</p>
<pre class="remontti-code"># cat /etc/freeradius/3.0/sites-enabled/default |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<pre class="remontti-code-plain">server default {
listen {
        type = auth
        ipaddr = *
        port = 0
        limit {
              max_connections = 16
              lifetime = 0
              idle_timeout = 30
        }
}
listen {
        ipaddr = *
        port = 0
        type = acct
        limit {
        }
}
listen {
        type = auth
        port = 0
        limit {
              max_connections = 16
              lifetime = 0
              idle_timeout = 30
        }
}
listen {
        ipv6addr = ::
        port = 0
        type = acct
        limit {
        }
}
authorize {
        filter_username
        preprocess
        chap
        mschap
        eap {
                ok = return
        }
        sql
        expiration
        logintime
        pap
}
authenticate {
        Auth-Type PAP {
                pap
        }
        Auth-Type CHAP {
                chap
        }
        Auth-Type MS-CHAP {
                mschap
        }
        mschap
        eap
}
preacct {
        preprocess
        acct_unique
}
accounting {
    sqlippool
        sql
}
session {
        sql
}
post-auth {
        if (session-state:User-Name &amp;&amp; reply:User-Name &amp;&amp; request:User-Name &amp;&amp; (reply:User-Name == request:User-Name)) {
                update reply {
                        &amp;User-Name !* ANY
                }
        }
        update {
                &amp;reply: += &amp;session-state:
        }
    sqlippool
        sql
        remove_reply_message_if_eap
}
pre-proxy {
}
post-proxy {
        eap
}
}</pre>
<p>Faremos os ajustes no arquivo <strong>inner-tunnel</strong></p>
<pre class="remontti-code"># cp /etc/freeradius/3.0/sites-available/inner-tunnel /etc/freeradius/3.0/sites-available/inner-tunnel.org</pre>
<pre class="remontti-code"># sed -i &#039;/suffix/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;/files/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;/-ldap/s/^/#/g&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;s/-sql/sql/&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;s/radutmp/#radutmp/&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;266 s/# *//&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;336,361 {s/^/##/}&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;370,381 {s/^/##/}&#039; /etc/freeradius/3.0/sites-available/inner-tunnel</pre>
<p>Verifique com o comando abaixo se a saída do seu arquivo ficou assim:</p>
<pre class="remontti-code"># cat /etc/freeradius/3.0/sites-enabled/inner-tunnel |grep -v &quot;#&quot; |awk &#039;NF&gt;0&#039;</pre>
<pre class="remontti-code-plain">server inner-tunnel {
listen {
       ipaddr = 127.0.0.1
       port = 18120
       type = auth
}
authorize {
        filter_username
        chap
        mschap
        update control {
                &amp;Proxy-To-Realm := LOCAL
        }
        eap {
                ok = return
        }
        sql
        expiration
        logintime
        pap
}
authenticate {
        Auth-Type PAP {
                pap
        }
        Auth-Type CHAP {
                chap
        }
        Auth-Type MS-CHAP {
                mschap
        }
        mschap
        eap
}
session {
        sql
}
post-auth {
        sql
}
pre-proxy {
}
post-proxy {
        eap
}</pre>
<p>Uma alteração que acho válida é para que para cada alocação de <strong>IP</strong> ela seja <strong>randômica</strong>, isso pode solucionar alguns problemas como o balanceamento dos prefixo no seu BGP, ou daqueles clientes que jogam online, fazem download e até mesmo que estão sofrendo algum ataque. Assim ao reiniciar seu equipamento o mesmo irá receber um novo endereço IP. Para que funcione desta forma iremos apenas comentar algumas linhas e descomentar outras, pois em /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf variável <strong>allocate_find</strong> já vem com o modelo pronto <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>Comentar:</p>
<pre class="remontti-code"># sed -i &#039;41,53 {s/^/##/}&#039; /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf</pre>
<pre class="remontti-code-plain">##allocate_find = &quot;\
##  SELECT framedipaddress FROM ${ippool_table} \
##  WHERE pool_name = &#039;%{control:${pool_name}}&#039; \
##  AND ( \
##      expiry_time &lt; NOW() OR expiry_time IS NULL OR expiry_time = 0 \
##      OR ( nasipaddress = &#039;%{NAS-IP-Address}&#039; AND pool_key = &#039;${pool_key}&#039; ) \
##  ) \
##  ORDER BY \
##      (username &lt;&gt; &#039;%{User-Name}&#039;), \
##      (callingstationid &lt;&gt; &#039;%{Calling-Station-Id}&#039;), \
##      expiry_time \
##  LIMIT 1 \
##  FOR UPDATE&quot;</pre>
<p>Descomentar:</p>
<pre class="remontti-code"># sed -i &#039;74,81 s/# *//&#039; /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf</pre>
<pre class="remontti-code-plain">allocate_find = &quot;\
    SELECT framedipaddress FROM ${ippool_table} \
    WHERE pool_name = &#039;%{control:${pool_name}}&#039; \
    AND expiry_time IS NULL \
    ORDER BY \
        RAND() \
    LIMIT 1 \
    FOR UPDATE&quot;
</pre>
<p>Como alteramos a pool_key para Calling-Station-Id  em /etc/freeradius/3.0/mods-enabled/sqlippool vamos ajustar o <strong>allocate_clear</strong> para quando for liberar um IP use a chave pool_key e não a NAS, caso contrário ira liberar IPs indevidos que estão sendo utilizado por usuários ativos e assim evitamos que surjam IPs duplicados, para isso:</p>
<p>Comentar:</p>
<pre class="remontti-code"># sed -i &#039;26,35 {s/^/##/}&#039; /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf</pre>
<pre class="remontti-code-plain">##allocate_clear = &quot;\
##      UPDATE ${ippool_table} \
##      SET \
##              nasipaddress = &#039;&#039;, \
##              pool_key = 0, \
##              callingstationid = &#039;&#039;, \
##              username = &#039;&#039;, \
##              expiry_time = NULL \
##      WHERE expiry_time &lt;= NOW() - INTERVAL 1 SECOND \
##      AND nasipaddress = &#039;%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}&#039;&quot;</pre>
<p>Descomentar</p>
<pre class="remontti-code"># sed -i &#039;10,18 s/# *//&#039; /etc/freeradius/3.0/mods-config/sql/ippool/mysql/queries.conf</pre>
<pre class="remontti-code-plain">allocate_clear = &quot;\
        UPDATE ${ippool_table} \
        SET \
                nasipaddress = &#039;&#039;, \
                pool_key = 0, \
                callingstationid = &#039;&#039;, \
                username = &#039;&#039;, \
                expiry_time = NULL \
        WHERE pool_key = &#039;${pool_key}&#039;&quot;</pre>
<p>É interessante você ajustar o tempo <strong>lease_duration = 1200</strong> no arquivo /etc/freeradius/3.0/mods-available/sqlippool talvez para um menor intervalo,porém sempre respeitando que o <strong>Acct-Interim-Interval</strong> seja um tempo menor, para não ter duplicidades de ips. Falo sobre isso no tutorial <a href="https://blog.remontti.com.br/4085" rel="noopener noreferrer" target="_blank">https://blog.remontti.com.br/4085</a> recomendo a leitura!</p>
<p>Caso você tenha uma alta demanda de requisições você pode fazer algumas alterações no radiusd.conf.<br />
Altere conforme sua necessidade, e hardware de seu servidor. Vale lembrar que fazendo essas alterações pode ser necessário alterar o limite de conexões ao MariaDB. Não abuse nessas configurações recomendo ler a documentação.</p>
<pre class="remontti-code"># vim /etc/freeradius/3.0/radiusd.conf</pre>
<p>Você pode começar dobrando os valores, ex.:</p>
<pre class="remontti-code">[...]
thread pool {
        start_servers = 10
        max_servers = 64
        min_spare_servers = 6
        max_spare_servers = 20
        max_queue_size = 131072
        max_requests_per_server = 0
        auto_limit_acct = no
}
[...]</pre>
<h3>Finalizando</h3>
<p>Habilite o freeradius para começar junto com a inicialização do sistema</p>
<pre class="remontti-code"># systemctl enable freeradius</pre>
<p>Pare o serviço e inicie em modo debug</p>
<pre class="remontti-code"># systemctl stop freeradius
# freeradius -X</pre>
<p>Se nenhum erro acontecer uma mensagem com: <strong>Ready to process requests</strong> aparecer parabéns seu freeradius está funcionando. Através do comando debug você consegue acompanhar as ações que o freeradius irá fazer, ótimo para estudos e entendimento. Para encerrar o modo debig use Crtl+c, e então inicie o serviço de forma normal.</p>
<pre class="remontti-code"># systemctl start freeradius</pre>
<p>Para <strong>integrar</strong> seu servidor freeradius para fazer autenticações PPPoE, Hotspot, Wireless PSK/EAP entre outras, você precisa aprender mais sobre as <strong>tabelas</strong> do <strong>banco de dados</strong> e quais <strong>atributos</strong> usar em cada situação sempre pensando na segurança. Você pode acessar <a href="https://blog.remontti.com.br/4085" rel="noopener noreferrer" target="_blank">https://blog.remontti.com.br/4085</a> onde irá encontra alguns modelos de autenticação que atente praticamente todos os cenários de provedores. </p>
<p>Gostou? Quer me ajudar? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Abraço!</p>
<p><strong>Resolução de problema:</strong></p>
<p>Se seu login conter @ no entanto não terminar como domínio padrão exemplo user@dom.xxx.yy user@dom.xxx, e sim apenas user@dom edite:</p>
<pre class="remontti-code"># vim /etc/freeradius/3.0/policy.d/filter</pre>
<p>Altere para accept o seguinte filtro:</p>
<pre class="remontti-code">
        if ((&amp;User-Name =~ /@/) &amp;&amp; (&amp;User-Name !~ /@(.+)\.(.+)$/))  {
            update request {
                &amp;Module-Failure-Message += &#039;Rejected: Realm does not have at least one dot separator&#039;
            }
            #reject
            accept
        }
</pre>
<p>Fonte:<br />
<a href="https://wiki.freeradius.org/guide/SQL-HOWTO" rel="noopener noreferrer" target="_blank">https://wiki.freeradius.org/guide/SQL-HOWTO</a><br />
<a href="https://wiki.freeradius.org/modules/Rlm_sql" rel="noopener noreferrer" target="_blank">https://wiki.freeradius.org/modules/Rlm_sql</a><br />
<a href="https://wiki.freeradius.org/modules/Rlm_sqlippool" rel="noopener noreferrer" target="_blank">https://wiki.freeradius.org/modules/Rlm_sqlippool</a></p>
<p>O post <a href="https://blog.remontti.com.br/6129">Instalação FreeRadius no Debian 11 Bullseye (Extra sqlippool)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6129/feed</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>TR-069 &#8211; Instalação do  GenieACS no Debian 11 Bullseye</title>
		<link>https://blog.remontti.com.br/6001</link>
					<comments>https://blog.remontti.com.br/6001#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 29 Oct 2021 19:56:25 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[fiberhome]]></category>
		<category><![CDATA[GenieACS]]></category>
		<category><![CDATA[intelbras]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[routeros]]></category>
		<category><![CDATA[tp-link]]></category>
		<category><![CDATA[tplink]]></category>
		<category><![CDATA[tr-069]]></category>
		<category><![CDATA[tr069]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6001</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/6001">TR-069 &#8211; Instalação do  GenieACS no Debian 11 Bullseye</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11.png" alt="" width="750" height="375" class="alignnone size-full wp-image-6013" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11.png 750w, https://blog.remontti.com.br/wp-content/uploads/2021/10/genieacs_debian_11-300x150.png 300w" sizes="auto, (max-width: 750px) 100vw, 750px" /></p>
<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 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>Requesitos:</strong><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 recomendada:</strong><br />
<a href="https://blog.remontti.com.br/5848" rel="noopener" target="_blank"><strong>Configurando interface de rede no Debian 11</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>Ajustando o repositório</p>
<pre class="remontti-code"># vim /etc/apt/sources.list</pre>
<p>Adicione <strong>contrib non-free </strong>aos repositórios</p>
<pre class="remontti-code-plain"># deb http://YOUR_MIRROR/debian/ bullseye main contrib non-free
# deb-src http://YOUR_MIRROR/debian/ bullseye main contrib non-free

deb http://deb.debian.org/debian/ bullseye main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye main contrib non-free

deb http://security.debian.org/debian-security bullseye-security main contrib non-free
deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free

deb http://deb.debian.org/debian/ bullseye-updates main contrib non-free
deb-src http://deb.debian.org/debian/ bullseye-updates main contrib non-free</pre>
<p>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>Intale 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><strong>Pré-requisitos:</strong><br />
&#8211; Node.js<br />
&#8211; MongoDB</p>
<p><a href="https://genieacs.com" rel="noopener" target="_blank">https://genieacs.com</a><br />
<a href="http://docs.genieacs.com/" rel="noopener" target="_blank">http://docs.genieacs.com/</a></p>
<pre class="remontti-code"># apt install curl gnupg2 wget</pre>
<h3>Instalção do Node.js</h3>
<p>Repositório Node Js</p>
<pre class="remontti-code"># curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
# apt install nodejs -y</pre>
<p>Verifique a versão</p>
<pre class="remontti-code"># npm -v</pre>
<p>Veja se não tem atualização</p>
<pre class="remontti-code"># npm search -g npm</pre>
<p>Exemplo colocando a para atualizar (Ajuste a versão)</p>
<pre class="remontti-code"># npm install -g npm@9.6.7</pre>
<h3>Instalação do MongoDB</h3>
<p>Adicione o repositorio do MongoD (Sim é Buster Bullseye até o momento out/2021 não tem)</p>
<p><strong><a href="https://docs.mongodb.com/v5.0/tutorial/install-mongodb-on-debian/" rel="noopener" target="_blank">Versão 5</a></strong> (Recomendada)</p>
<pre class="remontti-code"># cd /tmp
# echo &quot;deb http://repo.mongodb.org/apt/debian buster/mongodb-org/5.0 main&quot; | tee /etc/apt/sources.list.d/mongodb-org-5.0.list
# curl -sSL https://www.mongodb.org/static/pgp/server-5.0.asc  -o mongoserver.asc
# gpg --no-default-keyring --keyring ./mongo_key_temp.gpg --import ./mongoserver.asc
# gpg --no-default-keyring --keyring ./mongo_key_temp.gpg --export &gt; ./mongoserver_key.gpg
# mv mongoserver_key.gpg /etc/apt/trusted.gpg.d/</pre>
<p><strong><a href="https://docs.mongodb.com/v4.4/tutorial/install-mongodb-on-debian/" target="_blank" rel="noopener">Versão 4</a></strong> (Alguns relatos que no vmware não teve jeito de fazer o mongodb iniciar e a v4 funcionou)</p>
<pre class="remontti-code"># cd /tmp
# echo &quot;deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main&quot; | tee /etc/apt/sources.list.d/mongodb-org-4.4.list
# wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add - </pre>
<p>Atualize o repositório e instale o mongodb bem como a estensão do nodejs</p>
<pre class="remontti-code"># apt update
# apt install mongodb-org node-mongodb</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>
<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         | 2022-08-22 | 1.2.9    | TR-069 CWMP ACS
@anlix-io/genieacs-sim    | TR-069 client…       | =anlix-io       | 2023-05-30 | 1.4.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 129 packages in 8s

12 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
GENIEACS_UI_JWT_SECRET=secret</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/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/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/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/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>
<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 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; vendor preset: enabled)
     Active: active (running) since Fri 2021-10-29 11:33:02 -03; 12s ago
   Main PID: 2487 (node)
      Tasks: 25 (limit: 2305)
     Memory: 155.5M
        CPU: 4.957s
     CGroup: /system.slice/genieacs-cwmp.service
             ├─2487 node /usr/bin/genieacs-cwmp
             ├─2494 /usr/bin/node /usr/bin/genieacs-cwmp
             └─2495 /usr/bin/node /usr/bin/genieacs-cwmp

● genieacs-nbi.service - GenieACS NBI
     Loaded: loaded (/etc/systemd/system/genieacs-nbi.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-10-29 11:33:30 -03; 11ms ago
   Main PID: 2531 (node)
      Tasks: 6 (limit: 2305)
     Memory: 840.0K
        CPU: 3ms
     CGroup: /system.slice/genieacs-nbi.service
             └─2531 node /usr/bin/genieacs-nbi

● genieacs-fs.service - GenieACS FS
     Loaded: loaded (/etc/systemd/system/genieacs-fs.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-10-29 11:33:41 -03; 12ms ago
   Main PID: 2596 (node)
      Tasks: 6 (limit: 2305)
     Memory: 840.0K
        CPU: 3ms
     CGroup: /system.slice/genieacs-fs.service
             └─2596 node /usr/bin/genieacs-fs

● genieacs-ui.service - GenieACS UI
     Loaded: loaded (/etc/systemd/system/genieacs-ui.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-10-29 11:33:51 -03; 28ms ago
   Main PID: 2639 (node)
      Tasks: 7 (limit: 2305)
     Memory: 7.7M
        CPU: 20ms
     CGroup: /system.slice/genieacs-ui.service
             └─2639 node /usr/bin/genieacs-ui</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>O post <a href="https://blog.remontti.com.br/6001">TR-069 &#8211; Instalação do  GenieACS no Debian 11 Bullseye</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6001/feed</wfw:commentRss>
			<slash:comments>35</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>
		<item>
		<title>Servidor WEB NGINX + PHP + PostgreSQL + phpPgAdmin + Letsencrypt no Debian 11 Bullseye (LNPP)</title>
		<link>https://blog.remontti.com.br/5915</link>
					<comments>https://blog.remontti.com.br/5915#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 20 Oct 2021 18:45:33 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[7.4]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[lnpp]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php7]]></category>
		<category><![CDATA[postgresql]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5915</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/5915">Servidor WEB NGINX + PHP + PostgreSQL + phpPgAdmin + Letsencrypt no Debian 11 Bullseye (LNPP)</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/NGINX-LNNP_DEB_11.png" alt="" width="720" height="340" class="alignnone size-full wp-image-5927" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/NGINX-LNNP_DEB_11.png 720w, https://blog.remontti.com.br/wp-content/uploads/2021/10/NGINX-LNNP_DEB_11-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/NGINX-LNNP_DEB_11-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /><br />
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/5792" rel="noopener noreferrer" target="_blank">Debian 11 Bullseye / Instalação Limpa</a></strong></p>
<h3>NGINX 1.18</h3>
<p><a href="https://www.nginx.com" rel="noopener" target="_blank">https://www.nginx.com</a></p>
<pre class="remontti-code"># apt install 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 />
Se você acessar um diretório que não existe um erro dizendo que não existe, e junto informações que não é legal aparecer.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx2.png" alt="" width="1036" height="296" class="alignnone size-full wp-image-5468" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx2.png 1036w, https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx2-300x86.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx2-1024x293.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx2-768x219.png 768w" sizes="auto, (max-width: 1036px) 100vw, 1036px" /><br />
Vamos remover assinatura do nginx onde ele exibe a versão do mesmo. Ninguém precisa saber! Correto?</p>
<pre class="remontti-code"># sed -i &#039;s/# server_tokens/server_tokens/&#039; /etc/nginx/nginx.conf
# systemctl restart nginx</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx3.png" alt="" width="712" height="157" class="alignnone size-full wp-image-5469" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx3.png 712w, https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx3-300x66.png 300w" sizes="auto, (max-width: 712px) 100vw, 712px" /></p>
<p>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/13/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 (13.4 (Debian 13.4-0+deb11u1))
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 para usuário postgres: 
psql (11.11 (Debian 11.11-0+deb10u1))
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 7.4</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 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/php7.4-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 php7.4-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/2021/10/php7.4_nginx.png" data-rel="lightbox-gallery-rOWTQdn0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/php7.4_nginx-300x279.png" alt="" width="300" height="279" class="alignnone size-medium wp-image-5921" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/php7.4_nginx-300x279.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/php7.4_nginx-768x713.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/10/php7.4_nginx.png 958w" sizes="auto, (max-width: 300px) 100vw, 300px" /></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;" /> Nosso 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/php7.4-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/php7.4-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>phpPgAdmin</h3>
<p>O phppgadmin finalmente foiu atualizado para uma versão recente no repositório então iremos insta-lo via apt.</p>
<pre class="remontti-code"># apt install phppgadmin </pre>
<p>Ajustes no config.inc.php</p>
<pre class="remontti-code"># vim /usr/share/phppgadmin/conf/config.inc.php</pre>
<p>Localize as linhas e ajuste:</p>
<pre class="remontti-code">$conf[&#039;extra_login_security&#039;] = false;
$conf[&#039;owned_only&#039;] = true;</pre>
<p>Para torna-lo acessível altere o arquivo de configuração do seu NGINX, no exemplo vou colocar no arquivo default, mas você poderia estar configurando em seus domínios. </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;

    add_header Strict-Transport-Security &quot;max-age=31536000; includeSubDomains&quot; always;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ^~ /phppgadmin {
        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/php7.4-fpm.sock;
        }

    }

}</pre>
<p>Se deseja tonar o phppgadmin acessível apenas de alguns endereços IPs (RECOMENDO) 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 reinicie o serviço:</p>
<pre class="remontti-code"># nginx -t
# systemctl restart nginx</pre>
<p>Basta acessar <strong>http://IP-SERVIDOR/phppgadmin</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/10/phppgadmin.png" data-rel="lightbox-gallery-rOWTQdn0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/phppgadmin-300x144.png" alt="" width="300" height="144" class="alignnone size-medium wp-image-5925" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/phppgadmin-300x144.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phppgadmin-768x369.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phppgadmin.png 955w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<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>Dica, se desejar desativar o TLS1.0 e TLS1.1 após criar um certificado um arquivo é criado /etc/letsencrypt/options-ssl-apache.conf, então edite e inclua no SSLProtocol TLSv1 -TLSv1.1</p>
<pre class="remontti-code"># vim /etc/letsencrypt/options-ssl-nginx.conf</pre>
<p>Ficando</p>
<pre class="remontti-code">#ssl_protocols            all -SSLv2 -SSLv3
ssl_protocols             all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1</pre>
<p>Reinicie o Neginx:</p>
<pre class="remontti-code"># systemctl restart nginx</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-rOWTQdn0" 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/5915">Servidor WEB NGINX + PHP + PostgreSQL + phpPgAdmin + Letsencrypt no Debian 11 Bullseye (LNPP)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5915/feed</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin + Let&#8217;s Encrypt no Debian 11 bullseye &#8220;LAMP&#8221;</title>
		<link>https://blog.remontti.com.br/5893</link>
					<comments>https://blog.remontti.com.br/5893#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 20 Oct 2021 15:01:11 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[php7.4]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5893</guid>

					<description><![CDATA[<p>Distribuição utilizada: Debian 11 Bullseye / 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 atualizado.&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5893">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin + Let&#8217;s Encrypt no Debian 11 bullseye &#8220;LAMP&#8221;</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/debian_11_lamp.png" alt="" width="790" height="374" class="alignnone size-full wp-image-5909" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/debian_11_lamp.png 790w, https://blog.remontti.com.br/wp-content/uploads/2021/10/debian_11_lamp-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/debian_11_lamp-768x364.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/10/debian_11_lamp-520x245.png 520w, https://blog.remontti.com.br/wp-content/uploads/2021/10/debian_11_lamp-720x340.png 720w" sizes="auto, (max-width: 790px) 100vw, 790px" /><br />
Distribuição utilizada: <strong><a href="https://blog.remontti.com.br/5792" rel="noopener noreferrer" target="_blank">Debian 11 Bullseye / 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 Apache ::</h3>
<pre class="remontti-code"># apt install apache2 apache2-utils</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-tW11lsq0" 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-tW11lsq0" 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 MariaDB 10.5 ::</h3>
<pre class="remontti-code"># apt install mariadb-server mariadb-client </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.<br />
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>
<h3>:: Instalação do PHP 7.4 ::</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</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 7.4.21 (cli) (built: Jul  2 2021 03:59:48) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.21, 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/2021/10/php7.png" data-rel="lightbox-gallery-tW11lsq0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/php7-150x150.png" alt="" width="150" height="150" class="alignnone size-thumbnail wp-image-5896" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/php7-150x150.png 150w, https://blog.remontti.com.br/wp-content/uploads/2021/10/php7-80x80.png 80w, https://blog.remontti.com.br/wp-content/uploads/2021/10/php7-320x320.png 320w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a></p>
<h3>:: phpMyAdmin ::</h3>
<p>Adivinha quem voltou para o repositório? Sim! phpmyadmin está de volta!</p>
<pre class="remontti-code"># apt install phpmyadmin</pre>
<p>Selecione <strong>Apache2</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_1.png" alt="" width="1047" height="299" class="alignnone size-full wp-image-5899" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_1.png 1047w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_1-300x86.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_1-1024x292.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_1-768x219.png 768w" sizes="auto, (max-width: 1047px) 100vw, 1047px" /></p>
<p><strong>Sim</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_2.png" alt="" width="1648" height="363" class="alignnone size-full wp-image-5900" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_2.png 1648w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_2-300x66.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_2-1024x226.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_2-768x169.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_2-1536x338.png 1536w" sizes="auto, (max-width: 1648px) 100vw, 1648px" /></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></p>
<p>Aguarde finalizar&#8230; <font color="blue"><strong>Se você é um menino que seguiu a risca não vai ter o erro seguinte, então pode pular esta parte.</strong></font></p>
<p><font color="red"><strong>POSSÍVEL ERRO!</strong><br />
Este erro acontece quando o usuário root do mariaDB está com senha. Caso isso acontecer, selecione <strong>IGNORAR</strong> e siga os passos a baixo.</font><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_4.png" alt="" width="900" height="758" class="alignnone size-full wp-image-5902" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_4.png 900w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_4-300x253.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_4-768x647.png 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /><br />
<font color="red">SE OCORRER O ERRO: SIGAS ESTES PASSOS PARA RESOLUÇÃO DO PROBLEMA ACIMA.</font><br />
<font color="red">Como o usuário root já tem senha e o script de instalção não sabe qual é a senha ele ele acaba apresentando esse erro ao criar o banco de dados bem como as tabelas do phpmyadmin, então vamos ter que criar na mão.<br />
Se você quiser certificar qual a senha digitou na instalação do phpmyadmin basta olhar o arquivo:</font></p>
<pre class="remontti-code"># vim /etc/phpmyadmin/config-db.php</pre>
<pre class="remontti-code-plain">$dbuser=&#039;phpmyadmin&#039;;
$dbpass=&#039;SUPER_SENHA&#039;;
$basepath=&#039;&#039;;
$dbname=&#039;phpmyadmin&#039;;
$dbserver=&#039;localhost&#039;;
$dbport=&#039;3306&#039;;
$dbtype=&#039;mysql&#039;;</pre>
<p><font color="red">Agora entre no mariadb e vamos criar o banco bem como o usuário phpmyadmin <em>(Use a mesma senha que está no config-db.php, ou altere também no config-db.php)</em></font></p>
<pre class="remontti-code"># mariadb -u root -p </pre>
<p><font color="red">Não esqueça de alterar a SUPER_SENHA.</font></p>
<pre class="remontti-code">CREATE DATABASE phpmyadmin;
CREATE USER &#039;phpmyadmin&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUPER_SENHA&#039;;
GRANT ALL PRIVILEGES ON phpmyadmin.* TO &#039;phpmyadmin&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUPER_SENHA&#039; WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;</pre>
<p>Importe as tabelas:</p>
<pre class="remontti-code"># mariadb -u root -p phpmyadmin &lt; /usr/share/phpmyadmin/sql/create_tables.sql</pre>
<p><font color="red">Pronto erro solucionado!</font></p>
<hr />
<p>Para acessar o phpmyadmin:<strong>http://[SERVER_IP]/phpmyadmin/</strong><br />
Caso seu phpmyadmin não abrir, certifique-se que o arquivo phpmyadmin.conf está lincado em /etc/apache2/conf-enabled/</p>
<pre class="remontti-code"># ls -lh /etc/apache2/conf-available/ | grep phpmyadmin.conf</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_apache_debian_11.png" alt="" width="991" height="93" class="alignnone size-full wp-image-5999" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_apache_debian_11.png 991w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_apache_debian_11-300x28.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_apache_debian_11-768x72.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_apache_debian_11-980x93.png 980w" sizes="auto, (max-width: 991px) 100vw, 991px" /><br />
<font color="red">Caso não esteja execute o comando, e reinicie o apache:</font></p>
<pre class="remontti-code"># ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-enabled/phpmyadmin.conf
# systemctl restart apache2</pre>
<p>Agora tente novamente.,</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_5.png" data-rel="lightbox-gallery-tW11lsq0" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_5-150x150.png" alt="" width="150" height="150" class="alignnone size-thumbnail wp-image-5905" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_5-150x150.png 150w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_5-80x80.png 80w, https://blog.remontti.com.br/wp-content/uploads/2021/10/phpmyadmin_debian_11_5-320x320.png 320w" sizes="auto, (max-width: 150px) 100vw, 150px" /></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

    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;

&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"># echo &gt; /root/.mysql_history</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-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>Dica, se desejar desativar o TLS1.0 e TLS1.1 após criar um certificado um arquivo é criado /etc/letsencrypt/options-ssl-apache.conf, então edite e inclua no SSLProtocol TLSv1 -TLSv1.1</p>
<pre class="remontti-code"># vim /etc/letsencrypt/options-ssl-apache.conf</pre>
<p>Ficando</p>
<pre class="remontti-code">#SSLProtocol            all -SSLv2 -SSLv3
SSLProtocol             all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1</pre>
<p>Reinicie o Apache:</p>
<pre class="remontti-code"># systemctl restart apache2</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-tW11lsq0" 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/5893">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin + Let&#8217;s Encrypt no Debian 11 bullseye &#8220;LAMP&#8221;</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5893/feed</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
			</item>
		<item>
		<title>Configurando interface de rede no Debian 10/11/12/13</title>
		<link>https://blog.remontti.com.br/5848</link>
					<comments>https://blog.remontti.com.br/5848#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sat, 18 Sep 2021 20:14:42 +0000</pubDate>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Active-backup]]></category>
		<category><![CDATA[Administração de Rede]]></category>
		<category><![CDATA[Administração de Sistemas]]></category>
		<category><![CDATA[Administração de Sistemas Linux]]></category>
		<category><![CDATA[Agregação de Portas]]></category>
		<category><![CDATA[Alta Disponibilidade]]></category>
		<category><![CDATA[Balance-alb]]></category>
		<category><![CDATA[Balance-rr]]></category>
		<category><![CDATA[Balance-tlb]]></category>
		<category><![CDATA[Balance-xor]]></category>
		<category><![CDATA[Bonding]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[CLI Linux]]></category>
		<category><![CDATA[configuração de rede]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Ethernet]]></category>
		<category><![CDATA[Gerenciamento de Servidor]]></category>
		<category><![CDATA[ifenslave]]></category>
		<category><![CDATA[LACP]]></category>
		<category><![CDATA[Linux Networking]]></category>
		<category><![CDATA[Otimização de Rede]]></category>
		<category><![CDATA[placa]]></category>
		<category><![CDATA[Protocolos de Rede]]></category>
		<category><![CDATA[rede]]></category>
		<category><![CDATA[Redundância de Rede]]></category>
		<category><![CDATA[routeros]]></category>
		<category><![CDATA[Segurança de Rede]]></category>
		<category><![CDATA[Soluções de Networking]]></category>
		<category><![CDATA[Stretch]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5848</guid>

					<description><![CDATA[<p>Neste tutorial vamos aprender a configurar nossas interfaces de rede no Debian e estar pensando um pouco mais para fazer uma boa escolha na hora de realizar suas configurações. Antes de mais nada você&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5848">Configurando interface de rede no Debian 10/11/12/13</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-7830" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/debian_network_config.webp" alt="" width="1792" height="1024" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/debian_network_config.webp 1792w, https://blog.remontti.com.br/wp-content/uploads/2021/09/debian_network_config-300x171.webp 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/debian_network_config-1024x585.webp 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/09/debian_network_config-768x439.webp 768w, https://blog.remontti.com.br/wp-content/uploads/2021/09/debian_network_config-1536x878.webp 1536w" sizes="auto, (max-width: 1792px) 100vw, 1792px" /></p>
<p>Neste tutorial vamos aprender a configurar nossas interfaces de rede no Debian e estar pensando um pouco mais para fazer uma boa escolha na hora de realizar suas configurações.</p>
<p>Antes de mais nada você precisa saber o que você quer!? Qual será o cenário!? Vejo muitas pessoas cometerem um desastre nos dias hoje quando se trata em colocar um simples IP público em um servidor. E por isso escrevo este &#8220;artigo&#8221; meio que tutorial.</p>
<p>No Debian você pode configurar os endereços IPs bem como algumas regras no arquivo <strong>/etc/network/interfaces</strong>, irei levar como base uma instalação recém-feita:</p>
<p>&#8211; <a href="https://blog.remontti.com.br/8267" target="_blank" rel="noopener">Instalação do Debian 13 Trixie</a><br />
&#8211; <a href="https://blog.remontti.com.br/7236" target="_blank" rel="noopener">Instalação do Debian 12 Bookworm</a><br />
&#8211; <a href="https://blog.remontti.com.br/5792" target="_blank" rel="noopener">Instalação do Debian 11 Bullseye</a><br />
&#8211; <a href="https://blog.remontti.com.br/2966" target="_blank" rel="noopener">Instalação do Debian 10 Buster</a></p>
<p>Irei usar o editor nano que é o que já vem instalado, mas você pode usar o editor de sua escolha.</p>
<pre class="remontti-code"># nano /etc/network/interfaces</pre>
<p>Se em sua instalação você informou o endereço IPv4 seu arquivo será algo como este, ressaltando que <strong>ens18</strong> é o nome da interface, e ela pode ser outra.</p>
<pre class="remontti-code"># This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens18
iface ens18 inet static
        address 192.168.87.3/24
        gateway 192.168.87.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 1.1.1.1 8.8.8.8
</pre>
<h4>Alterar DNS</h4>
<p>Por mais que vimos dns-nameserver nesta parte da configuração de rede, o servidor não irá usa-los, o arquivo qual será levado em conta é o <strong>/etc/resolv.conf </strong></p>
<pre class="remontti-code"># nano /etc/resolv.conf</pre>
<pre class="remontti-code">nameserver 1.1.1.1
nameserver 1.0.0.1
nameserver 2606:4700:4700::1111
nameserver 2606:4700:4700::1001</pre>
<p>Se sua instalação foi feita com DHCP ativo, sua configuração será:</p>
<pre class="remontti-code"># This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens18
iface ens18 inet dhcp</pre>
<h3>E ai, o que queremos ?</h3>
<p>Planejar, é claro! Se você esta montando seu data center onde terá vários servidores, o que será melhor adorar? Quebrar um prefixo /30 para cada servidor que eu for implementar? <strong>NÃO!</strong>. Quer me ver com os olhos sangrando é ver alguém que tem vários servidores e para cada servidor o mesmo quebrou um /30 público. Pense comigo você tem 2 servidores você precisa 2 IPs, se você quebrou 2 /30 você terá sim seus 2 IPs públicos mas você acabou de jogar no LIXO outros 6 endereços IPs, e nos dias de hoje 1 único IP publico é quase como o ditado: <em>Em terra de cego, quem tem um olho é rei?</em></p>
<p>Então o que fazer, o mais sensato é você pensar e quebrar um prefixo maior para que você não precise estar quebrando prefixos a cada servidor. Antes de mais nada imagine onde você quer chegar! Quantos servidores irá montar, quantos IPs publicos e privados irá precisar&#8230; Sempre que dou uma consultoria essa é a primeira coisa faço, &#8220;sento&#8221; com o cliente e estudo. E com base neste estudo reservamos já um/dois prefixo /29, /28 ou 27 até mesmo um /24 público/privado, vai depender muito de cada cenário, se meu cliente tem milhares de hospedagem com certeza o número de servidores em seu data center é enorme.</p>
<p>Outro grande erro em servidores é o <strong>NAT mal aplicado</strong>! Muitas pessoas principalmente pessoal de provedor ainda tem costume de colocar em seu Mikrotik de borda um belo NAT para fornecer internet a um servidor, ou apenas para fazer um redirecionamento de portas. Quando aplicamos regras de NAT em um roteadores causamos muitos malefícios para o bichinho! Então vamos para de fazer isso? Vou lhe ajudar!</p>
<p>É claro que isso é muito relativo de cada empresa, já fiz NAT com borda? Já! Depende do tamanho da empresa e organização de cada um. <strong>Então não leve ao pé da letra! Estou tentando lhe dizer o que é o melhor a ser feito!</strong></p>
<p>Já fui criticado por pedir para cliente comprar uma roteador para ser apenas o gateway dos servidores. <em>&#8220;Rudimar é louco&#8221;</em>. E eu digo: <em>Mais louco é quem faz NAT em roteador de borda! </em>. Em alguns casos eu recomendo um router para ligar os servidores, pois você pode ter diversos recursos na manga, e basta você fechar um iBGP/OSPF entre seu roteador de borda com seu roteador &#8220;data&#8221;.</p>
<h1>Exemplos</h1>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-5860" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/teste.drawio.png" alt="" width="809" height="372" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/teste.drawio.png 809w, https://blog.remontti.com.br/wp-content/uploads/2021/09/teste.drawio-300x138.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/teste.drawio-768x353.png 768w" sizes="auto, (max-width: 809px) 100vw, 809px" /></p>
<h4>Receber IP via DHCP</h4>
<p>O mais simples a ser feito quando seu servidor ira receber IP automaticamente.</p>
<pre class="remontti-code">allow-hotplug ens18
iface ens18 inet dhcp</pre>
<h4>Fixando IPv4 e IPv6</h4>
<p>Basicamente o que iremos usar em 95% das vezes</p>
<pre class="remontti-code">allow-hotplug ens18
iface ens18 inet static
        address 200.200.200.2/28
        gateway 200.200.200.1

iface ens18 inet6 static
        pre-up modprobe ipv6
        address 2804:bebe:cafe::2/64
        gateway 2804:bebe:cafe::1</pre>
<h4>Adicionando Multiplos IPs</h4>
<p>Quando quiser mais de um IP no mesmo servidor, caso for outras interfaces basta ajustar para o nome da interface</p>
<pre class="remontti-code">allow-hotplug ens18
iface ens18 inet static
        address 200.200.200.2/28
        gateway 200.200.200.1

iface ens18 inet static
        address 200.200.200.3/28

iface ens18 inet static
        address 200.200.201.1/32

iface ens18 inet6 static
        pre-up modprobe ipv6
        address 2804:bebe:cafe::2/64
        gateway 2804:bebe:cafe::1

iface ens18 inet6 static
        pre-up modprobe ipv6
        address 2804:bebe:cafe::3/64

iface ens18 inet6 static
        pre-up modprobe ipv6
        address 2804:bebe:ffff:ffff::ffff
        netmask 128</pre>
<h4>IP na Loopback</h4>
<p>Você pode usar quando estiver roteando um IP (OSFP/iBGP), exemplo com <a href="https://blog.remontti.com.br/4771" target="_blank" rel="noopener">FRR</a>, porém neste caso estaria fazendo a adição dos IPs pelo próprio FRR.<br />
Mas se você fará algum tipo de rota estática com intuito exemplo de fazer ECMP (Equal Cost Multi-Path), é importante que os IPs de anycast estejam na interface de loopback para que não tenha conflito.</p>
<pre class="remontti-code">auto lo 
iface lo inet loopback

iface lo inet static
        address 200.200.200.200/32</pre>
<h4>Ponto a ponto &#8211; Pointopoint</h4>
<p>Aqui muitos ficam bugado, no meu cenário perceba que temos um servidor conectado ao roteador de borda, agora imagine, que neste roteador de borda não tem nenhum IP público por politicas de segurança, mas ai vem o estagiário e e te diz: Vamos quebrar um /30 pub! Então saiba que você não precisa fazer isso, você pode adicionar um IP ponto a ponto, onde temos IP diferente dos dois lados, então como no exemplo a baixo podemos add no nosso roteador de borda 10.50.50.1 e no nosso servidor 200.200.200.0.</p>
<pre class="remontti-code">allow-hotplug ens18
iface ens18 inet static
        address 200.200.200.0
        pointopoint 10.50.50.1
        netmask 255.255.255.255
        gateway 10.50.50.1
</pre>
<p>Isso funciona? É claro! E você não irá precisar deixar seu roteador de borda com IP público acessível pelo mundo, e muito menos fazer um NAT! Como sou bonzinho vou deixar aqui como você configuraria isso no seu Mikrotikão! Ficaria assim:</p>
<pre class="remontti-code">RouterOS# /ip address
RouterOS# add address=10.50.50.1 comment=Pointopoint interface=ether1 network=200.200.200.0</pre>
<p>Simples não?! Testa ai! Depois me conta!</p>
<h4>Privado com saída em origem Público</h4>
<p>Quase que como o exemplo do pointopoint, porem em alguns roteadores não temos o suporte para fazer pointopoint, uma saída é você quebrar um prefixo privado (estou usando /30, mas se tivesses vários servidores junto faria já um prefixo maior). No exemplo então meu IP público é o 200.200.200.200/32 qual irei colocar na mesma interface da WAN que tenho o 10.33.33.2/30, logo o roteador é o 10.33.33.1. Desta forma você tem uma conversa entre as interfaces por IP privado, porem os pacotes são originados com o endereço de IP público.</p>
<pre class="remontti-code">allow-hotplug ens18
iface ens18 inet static
    address 200.200.200.200/32
iface ens18 inet static
    address 10.33.33.2/30
    post-up ip route add default via 10.33.33.1 src 200.200.200.200</pre>
<p>Mas ai temos um problema, seu servidor irá gerar os pacotes de origem publico, e irá enviar para internet, mas quando o pacote estiver voltando ao chegar em seu roteador de borda é necessário que você tenha uma rotá para o mesmo. Então crie um rota estática dizendo que Destino 200.200.200.200 o gateway é 10.33.33.2 IP este do seu servidor. Ex.:</p>
<p>Exemplo RouterOS:</p>
<pre class="remontti-code">RouterOS# /ip address add address=10.33.33.1/30 interface=ether2
RouterOS# /ip route add dst-address=200.200.200.200/32 gateway=10.33.33.2</pre>
<p>Exemplo Huawei:</p>
<pre class="remontti-code">ip route-static 200.200.200.200 32 10.33.33.2 preference 1 description SERVIDOR</pre>
<p>É possível fazer isso para IPv6 também? É claro!</p>
<pre class="remontti-code">allow-hotplug ens18

#IPv6 Público
iface ens18 inet6 static
        pre-up modprobe ipv6
        address 2804:bebe:cafe::cafe
        netmask 128

# IPv6 Privado
iface ens18 inet6 static
        pre-up modprobe ipv6
        address fd00:a::2/64
        post-up ip -6 route add default via fd00:a::1 src 2804:bebe:cafe::cafe</pre>
<p>Exemplo RouterOS:</p>
<pre class="remontti-code">RouterOS# /ipv6 address add address=fd00:a::1/64 advertise=no interface=ether2
RouterOS# /ipv6 route add dst-address=2804:bebe:cafe::cafe/128 gateway=fd00:a::2</pre>
<p>Exemplo Huawei:</p>
<pre class="remontti-code">ipv6 route-static 2804:bebe:cafe::cafe 128 fd00:a::2 preference 1 description SERVIDOR</pre>
<h5>Possível problema: Resolução ARP/ND na Inicialização</h5>
<p>Em alguns casos, pode acontecer do IP /32 (no IPv4) ou /128 (no IPv6) só começar a funcionar após um primeiro <em>ping</em> interno. Isso não significa que a configuração da rede esteja errada, mas sim que o kernel e o roteador precisam “descobrir” via ARP/ND como chegar a esse endereço adicional.</p>
<p>Esse comportamento ocorre porque, ao usar um endereço /32 (IPv4) ou /128 (IPv6), o roteador e o kernel do Linux não enviam nem respondem a requisições ARP/ND de forma “espontânea” para esse IP adicional. Somente quando há tráfego partindo do servidor (por exemplo, um ping), a troca de ARP/ND é feita e o roteador “aprende” para onde enviar os pacotes que chegam nesse IP público. Sem essa “ativação” inicial, o roteador não tem como saber que aquele IP /32 ou /128 está associado à interface do servidor.</p>
<p>No Debian 13 eu contornei desta forma:</p>
<pre class="remontti-code-blue">allow-hotplug ens18
iface ens18 inet static
    address 200.200.200.200/32
    up ip addr add 10.33.33.200/24 dev $IFACE
    up ip route replace default via 10.33.33.1 dev $IFACE  src 200.200.200.200
    down ip route del default via 10.33.33.1 dev $IFACE || true
    down ip addr del 10.33.33.2/24 dev $IFACE || true

iface ens18 inet6 static
    address 2804:bebe:cafe::cafe/128
    up ip -6 addr add fd00:a::2/64 dev $IFACE
    up ip -6 route replace default via fd00:a::1 dev $IFACE
    down ip -6 route del default via fd00:a::1 dev $IFACE || true
    down ip -6 addr del fd00:a::1/64 dev $IFACE || true
</pre>
<p>Se ainda não resolver tente com o script:</p>
<p>Crie o serviço systemd</p>
<pre class="remontti-code"># vim /etc/systemd/system/meu_script_rede.service</pre>
<p>Adicione:</p>
<pre class="remontti-code-blue">[Unit]
Description=Rodar script após inicialização da rede
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/meu_script.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
</pre>
<p>Crie o script, nele vamos incluir um ping</p>
<pre class="remontti-code"># vim /usr/local/bin/meu_script.sh</pre>
<p>Ajuste <strong>IPV4_GATEWAY</strong> e <strong>IPV6_GATEWAY</strong> para seus gateway.</p>
<pre class="remontti-code-blue">#!/bin/bash

# IPs
IPV4_GATEWAY=&quot;10.33.33.1&quot;
IPV6_GATEWAY=&quot;fd00:cafe::1&quot;

# Nº de pings
NPING=5

# Registro no log
date &gt; /var/log/rede_inicializada.log
echo &quot;A placa de rede foi inicializada&quot; &gt;&gt; /var/log/rede_inicializada.log

# Enviar pings para forçar ARP/ND
ping -O -4 -c $NPING $IPV4_GATEWAY &gt;&gt; /var/log/rede_inicializada.log
ping -O -6 -c $NPING $IPV6_GATEWAY &gt;&gt; /var/log/rede_inicializada.log

# Espera 1 segundo
sleep 1
</pre>
<p>Dê permissão de execução:</p>
<pre class="remontti-code"># chmod +x /usr/local/bin/meu_script.sh</pre>
<p>Ative o serviço no systemd e reinicie</p>
<pre class="remontti-code"># systemctl daemon-reload
# systemctl enable meu_script_rede
# systemctl start meu_script_rede
# systemctl status meu_script_rede</pre>
<p>Agora, toda vez que o servidor inicializar, este script rodará e enviará alguns pings para “ativar” as tabelas ARP e ND. Você poderá verificar o arquivo /var/log/rede_inicializada.log para ver a saída dos pings. `cat /var/log/rede_inicializada.log`</p>
<h4>Criando VLAN e adicionado IP nela</h4>
<p>Para adicionar um IP a uma VLAN precisamos carregar o módulo 8021q, e coloca-lo para iniciar com sistema.</p>
<pre class="remontti-code"># modprobe 8021q
# echo &quot;8021q&quot; &gt;&gt; /etc/modules</pre>
<p>Agora basta editar sua interface e incluir um ponto e o numero da VLAN. No exemplo VLAN 171</p>
<pre class="remontti-code">allow-hotplug ens18.171
iface ens18.171 inet static
       address 10.88.88.2/24</pre>
<h4>PBR &#8211; Roteamento baseado em políticas</h4>
<p>Eu particularmente uso em Accel-ppp para separar o trafego de IPs publicos de Privados, direcionando apenas os IPs de NAT para a caixa do CGNAT. É necessário criar uma nova tabela de rotas, irei chamar de cgnat no exemplo.</p>
<pre class="remontti-code"># echo &quot;100 cgnat&quot; &gt;&gt; /etc/iproute2/rt_tables
# cat /etc/iproute2/rt_tables
# ip route list table main</pre>
<p>Fecho um /30 entre router e servidor e digo que todos os IPs que 100.64.0.0./10 deve sair pela tabela de rotas com o CGNAT.</p>
<pre class="remontti-code">allow-hotplug ens18
iface ens18 inet static
    address 10.200.200.2/30
    post-up ip route add default via 10.200.200.1 dev ens18 table cgnat
    post-up ip rule add from 100.64.0.0/10 lookup cgnat</pre>
<h4>Blackhole</h4>
<p>Normalmente útil em casos que você usa seu servidor como roteador. Você irá colocar após as configurações da interface o post-up passando o prefixo ou ip qual irá subir em blackhole</p>
<pre class="remontti-code">allow-hotplug ens18
iface ens18 inet static
    address 10.33.33.2/30
    post-up ip route add blackhole 200.200.200.128/26 metric 250 || true</pre>
<h4>Agregação</h4>
<p>Instalar o ifenslave: Este pacote permite configurar a agregação de portas no Linux.</p>
<pre class="remontti-code"># apt install ifenslave</pre>
<p>Carregar o Módulo de Bonding</p>
<pre class="remontti-code"># echo &quot;bonding&quot; | tee -a /etc/modules
# modprobe bonding</pre>
<p>Verificar se o módulo foi carregado corretamente:</p>
<pre class="remontti-code"># lsmod | grep bonding</pre>
<p><strong>802.3ad (LACP):</strong> Ideal para aumentar a largura de banda e fornecer redundância quando conectado a um switch que suporta LACP.<br />
<strong>balance-xor:</strong> Útil para balanceamento de carga baseado em XOR, adequado para ambientes que não suportam LACP.<br />
<strong>balance-rr (Round Robin):</strong> Simples e eficaz para cargas de trabalho que exigem balanceamento de carga sem configuração específica do switch.<br />
<strong>active-backup:</strong> Fornece redundância sem aumento de largura de banda, útil quando a continuidade do serviço é mais crítica do que a capacidade.<br />
<strong>balance-tlb (Transmit Load Balancing) e balance-alb (Adaptive Load Balancing):</strong> Ambos são bons para ambientes onde a configuração do switch não pode ser alterada ou não suporta LACP. O ALB também tenta balancear o tráfego de entrada.</p>
<p>Aqui estão exemplos para vários modos de bonding</p>
<pre class="remontti-code"># vim /etc/network/interfaces</pre>
<h5>802.3ad (LACP)</h5>
<p><em>Aplicação: Ideal para ambientes de alta disponibilidade e alta largura de banda, como data centers ou servidores que precisam de conexões robustas e de alta capacidade. É necessário que ambos os lados (o Debian e o switch/router) suportem LACP.</em></p>
<pre class="remontti-code">auto bond0
iface bond0 inet static
    address 192.168.0.2/24
    bond-slaves enp4s0f0 enp4s0f1
    bond-miimon 100
    bond-mode 802.3ad
    bond-xmit-hash-policy layer2+3
</pre>
<h5>Balance-xor</h5>
<p><em>Aplicação: Bom para ambientes onde o tráfego de rede tem padrões conhecidos que podem ser distribuídos de forma eficaz usando XOR. Pode ser usado para melhorar o desempenho quando LACP não é suportado.</em></p>
<pre class="remontti-code">auto bond0
iface bond0 inet static
    address 192.168.0.2/24
    bond-slaves enp4s0f0 enp4s0f1
    bond-miimon 100
    bond-mode balance-xor
    bond-xmit-hash-policy layer2+3
</pre>
<h5>Balance-rr (Round Robin)</h5>
<p><em>Aplicação: Simples e eficaz para distribuir cargas de forma equitativa sobre as interfaces físicas. Útil em ambientes onde a ordem de chegada dos pacotes não é crítica.</em></p>
<pre class="remontti-code">auto bond0
iface bond0 inet static
    address 192.168.0.2/24
    bond-slaves enp4s0f0 enp4s0f1
    bond-miimon 100
    bond-mode balance-rr
</pre>
<h5>Active-backup</h5>
<p><em>Aplicação: Ideal para redundância sem aumentar a largura de banda. Se a interface primária falhar, outra assumirá. Recomendado para serviços críticos que precisam de alta disponibilidade mais do que de alta capacidade.</em></p>
<pre class="remontti-code">auto bond0
iface bond0 inet static
    address 192.168.0.2/24
    bond-slaves enp4s0f0 enp4s0f1
    bond-miimon 100
    bond-mode active-backup
    bond-primary enp4s0f0
</pre>
<h5>Balance-tlb (Transmit Load Balancing)</h5>
<p><em>Aplicação: Útil quando a modificação de configuração do switch não é possível. Realiza o balanceamento de carga de saída de acordo com a carga atual de cada interface. Não requer suporte específico do switch.</em></p>
<pre class="remontti-code">auto bond0
iface bond0 inet static
    address 192.168.0.2/24
    bond-slaves enp4s0f0 enp4s0f1
    bond-miimon 100
    bond-mode balance-tlb
</pre>
<h5>Balance-alb (Adaptive Load Balancing)</h5>
<p><em>Aplicação: Similar ao balance-tlb, mas também tenta balancear o tráfego de entrada, o que pode ser útil em servidores web ou de aplicativos. Essa modalidade não requer configuração especial do switch.</em></p>
<pre class="remontti-code">auto bond0
iface bond0 inet static
    address 192.168.0.2/24
    bond-slaves enp4s0f0 enp4s0f1
    bond-miimon 100
    bond-mode balance-alb
</pre>
<p>Reiniciar o sistema para aplicar as alterações:</p>
<pre class="remontti-code"># reboot</pre>
<p>Verificar o status do serviço de rede para garantir que não houve erros, e a configuração de bonding.</p>
<pre class="remontti-code"># systemctl status networking
# journalctl -u networking.service
# cat /proc/net/bonding/bond0</pre>
<h4>Considerações finais</h4>
<p>Sempre que editar o arquivo /etc/network/interfaces para que as configurações sejam carregadas será necessário reiniciar seu servidor, você até pode subir a interface com auto ao invés de allow-hotplug, mas não irei abordar aqui.</p>
<p>Caso você queira adicionar/remover IPs manualmente (em memória/perde ao reiniciar) você pode usar o comando <strong>ip</strong>, segue exemplo, onde <strong>ens18</strong> é o nome da interface.<br />
Adicionar:</p>
<pre class="remontti-code"># ip addr add 192.168.7.7/32 dev ens18
# ip -6 addr add 2001:db8:1::1/128 dev ens18</pre>
<p>Visualizar:</p>
<pre class="remontti-code"># ip address</pre>
<p>Remover:</p>
<pre class="remontti-code"># ip addr del 192.168.7.7/32 dev ens18
# ip -6 addr del 2001:db8:1::1/128 dev ens18</pre>
<p>Exibe interfaces / Endereços IPs</p>
<pre class="remontti-code"># ip -br a
# ip -br addr show
# ip -br link
# ip -br link show</pre>
<p>Exibir informações sobre todas as interfaces de rede:</p>
<pre class="remontti-code"># ip a
# ip addr
# ip addr show</pre>
<p>Exibir informações sobre todas as interfaces de rede IPv4:</p>
<pre class="remontti-code"># ip -4 a</pre>
<p>Exibir informações sobre todas as interfaces de rede IPv6:</p>
<pre class="remontti-code"># ip -6 a</pre>
<p>Exibir informações sobre uma interface de rede específica:</p>
<pre class="remontti-code"># ip a show eth0
# ip a list eth0
# ip a show dev eth0</pre>
<p>Mostrar apenas interfaces em execução</p>
<pre class="remontti-code"># ip link ls up</pre>
<p>Adicionar um endereço IPv4/IPv6:</p>
<pre class="remontti-code"># ip a add {ip_addr/mask} dev {interface}
# ip a add 10.0.1.200/255.255.255.0 dev eth0
# ip a add 10.0.1.200/24 dev eth0</pre>
<p>Remover endereço IP</p>
<pre class="remontti-code"># ip a del {ipv6_addr_OR_ipv4_addr} dev {interface}
# ip a del 10.0.1.200/24 dev eth0</pre>
<p>Desligando a interface</p>
<pre class="remontti-code"># ip link set dev eth1 down</pre>
<p>Ligando a interface</p>
<pre class="remontti-code"># ip link set dev eth1 up</pre>
<p>Ajusda</p>
<pre class="remontti-code"># man ip
# ip --help</pre>
<p>Comandos antigos X Novo comando</p>
<pre class="remontti-code">Velho # ifconfig -a
 Novo # ip a

Velho # ifconfig eth0 down
 Novo # ip link set eth0 down

Velho # ifconfig eth0 up
 Novo # ip link set eth0 up

Velho # ifconfig eth0 10.0.2.24
 Novo # ip addr add 10.0.2.24/24 dev eth0

Velho # ifconfig eth0 netmask 255.255.255.0
 Novo # ip addr add 10.0.1.1/24 dev eth0

Velho # ifconfig eth0 mtu 9000
 Novo # ip link set eth0 mtu 9000

Velho # ifconfig eth0:0 10.0.2.25
 Novo # ip addr add 10.0.2.25/24 dev eth0

Velho # netstat -g
 Novo # ip maddr

Velho # route
 Novo # ip r

Velho # route add -net 10.0.2.0 netmask 255.255.255.0 dev eth0
 Novo # ip route add 10.0.2.0/24 dev eth0

Velho # route add default gw 10.0.2.254
 Novo # ip route add default via 10.0.2.254

Velho # arp -a
 Novo # ip neigh

Velho # arp -v
 Novo # ip -s neigh

Velho # arp -s 10.0.2.33 01:02:03:04:05:06
 Novo # ip neigh add 10.0.3.33 lladdr 01:02:03:04:05:06 dev eth0

Velho # arp -i eth0 -d 10.0.2.254
 Novo # ip neigh del 10.0.2.254 dev eth0

Velho # netstat
 Novo # ss

Velho # netstat -tulpn
 Novo # ss -tulpn

Velho # netstat -neopa
 Novo # ss -neopa</pre>
<p>Espero ter colaborado com uma pequena parcela em seu conhecimento! Desculpa o português e as palavras faltando letras, é difícil conseguir tempo para vir aqui escrever e revisar, então abro meu &#8220;bloco de notas&#8221; e vou escrevendo&#8230;</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" target="_blank" rel="noopener noreferrer">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" target="_blank" rel="noopener noreferrer">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/5848">Configurando interface de rede no Debian 10/11/12/13</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5848/feed</wfw:commentRss>
			<slash:comments>17</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação do Debian 11 Bullseye limpa passo-a-passo</title>
		<link>https://blog.remontti.com.br/5792</link>
					<comments>https://blog.remontti.com.br/5792#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sat, 18 Sep 2021 15:14:26 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[instalaçao]]></category>
		<category><![CDATA[non-free]]></category>
		<category><![CDATA[Virtual]]></category>
		<category><![CDATA[virtualbox]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5792</guid>

					<description><![CDATA[<p>Neste tutorial vamos aprender de forma simples fazer a instalação da distribuição Linux Debian 11 Bullseye. 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/5792">Instalação do Debian 11 Bullseye 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/2021/09/debian11_instalacao_limpa.png" alt="" width="720" height="340" class="alignnone size-full wp-image-5854" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/debian11_instalacao_limpa.png 720w, https://blog.remontti.com.br/wp-content/uploads/2021/09/debian11_instalacao_limpa-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/debian11_instalacao_limpa-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /><br />
Neste tutorial vamos aprender de forma simples fazer a instalação da distribuição Linux Debian 11 Bullseye. </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>Existe duas vertentes para o download da nossa ISO. E a primeira coisa que você precisa saber que o projeto Debian é totalmente open source, logo o mesmo não ira incluir na ISO drives proprietários ou não gratuitos (non-free), então se você foi instalar em um servidor ex.: que tem uma placa intel 10gb para você não sair procurando drivers e colocando em um pendrive recomendo baixar a versão non-free (que já vem com vários drivers) um outro exemplo seria com placas de videos nvidia. </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>&#8211; <a href="https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/" rel="noopener" target="_blank">Download Debian 11 Bullseye AMD64</a><br />
&#8211; <a href="https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/current/amd64/iso-cd/" rel="noopener" target="_blank">Download Debian 11 Bullseye Non-Free AMD64</a></p>
<p>OBS: <em>No exemplo minha rede pertence a classe 192.168.87.0/24 e possui DHCP ativa, porem explicarei como fazer para setar manualmente se caso desejar.</em></p>
<p>Para montar seu pendrive bootavél eu particularmente gosto do <a href="https://www.balena.io/etcher/" rel="noopener" target="_blank">Balena etcher</a>, mas use o da sua preferencia. </p>
<p>Iniciando o boot:</p>
<p>Selecione: <strong>Graphical Install</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-1.png" alt="" width="640" height="480" class="alignnone size-full wp-image-5795" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-1.png 640w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-1-300x225.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<p><strong>Portuguese (Brazil) – Portugues do Brasil</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-2.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5797" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-2.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-2-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-2-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p><strong>Brasil</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-3.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5798" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-3.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-3-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-3-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p><strong>Português Brasileiro</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-4.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5799" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-4.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-4-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-4-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Neste momento ele irá identificar sua conexão de rede, e receber seus IP automaticamente via DHCP.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-6.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5801" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-6.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-6-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-6-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></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 />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-7.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5802" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-7.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-7-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-7-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p><strong>Configurar a rede manualmente</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-8.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5805" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-8.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-8-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-8-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Informe <strong>IP/PREFIX</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-9.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5806" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-9.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-9-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-9-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p><strong>Gateway</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-10.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5807" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-10.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-10-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-10-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p><strong>Servidores DNS</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-11.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5808" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-11.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-11-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-11-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>E agora voltamos a tela de <strong>Nome de Máquia</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-7.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5802" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-7.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-7-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-7-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></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 />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-12.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5809" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-12.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-12-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-12-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Defina <strong>Senha de root (administrador)</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-13.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5810" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-13.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-13-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-13-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Informe seu <strong>Nome completo</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-14.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5811" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-14.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-14-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-14-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Defina um <strong>nome de usuário</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-15.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5812" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-15.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-15-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-15-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Defina a <strong>senha deste usuário</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-15-a.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5815" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-15-a.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-15-a-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-15-a-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Selecione <strong>seu estado</strong> para a escolha do <strong>fuso horário</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-16.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5813" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-16.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-16-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-16-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></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 />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-17.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5819" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-17.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-17-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-17-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></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 />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-19.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5821" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-19.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-19-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-19-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p><strong>Finalizar o particionamento e escrever as mudanças no disco</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-20.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5822" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-20.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-20-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-20-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p><strong>Sim</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-21.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5823" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-21.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-21-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-21-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Aguarde&#8230;<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-22.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5824" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-22.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-22-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-22-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p><strong>Não</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-23.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5825" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-23.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-23-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-23-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p><strong>Brasil</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-24.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5826" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-24.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-24-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-24-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Eu gosto do <strong>deb.debian.org</strong> (mas pode selecionar outro se desejar)<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-25.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5827" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-25.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-25-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-25-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></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 />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-26.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5828" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-26.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-26-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-26-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></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 />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-27.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5829" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-27.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-27-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-27-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></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 />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-28.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5830" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-28.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-28-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-28-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></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 />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-29.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5831" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-29.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-29-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-29-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p><strong>Sim</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-31.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5833" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-31.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-31-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-31-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Seleciona o disco qual sera configurado o GRUB (Sem ele o sistema não inicia! Normalmente /dev/sda)<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-32.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5834" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-32.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-32-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-32-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Aguarde a finalização<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-33.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5835" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-33.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-33-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-33-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p>
<p>Continuar para reiniciar<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-34.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5836" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-34.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-34-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-34-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></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 />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-35.png" alt="" width="640" height="480" class="alignnone size-full wp-image-5837" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-35.png 640w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-35-300x225.png 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<p>E por fim chegamos a tela de login. Nesta tela você pode logar com usuário root diretamente.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-36.png" alt="" width="800" height="600" class="alignnone size-full wp-image-5838" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-36.png 800w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-36-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-36-768x576.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></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 address</pre>
<p>Perceba que estou logando com o usuário remontti e não root, por padrão (segurança) o SSH 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 **** de ir trocar as configurações do SSH e permitir o root logar<em> (Isso me deixa ***!)</em><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-37.png" alt="" width="1245" height="503" class="alignnone size-full wp-image-5839" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-37.png 1245w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-37-300x121.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-37-1024x414.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-37-768x310.png 768w" sizes="auto, (max-width: 1245px) 100vw, 1245px" /></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 </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 />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-apt.png" alt="" width="1906" height="1031" class="alignnone size-full wp-image-5851" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-apt.png 1906w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-apt-300x162.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-apt-1024x554.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-apt-768x415.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/09/Debian_11-apt-1536x831.png 1536w" sizes="auto, (max-width: 1906px) 100vw, 1906px" /><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*</p>
<pre class="remontti-code"># apt search firmware-linux
firmware-linux/stable 20210315-3 all
  Binary firmware for various drivers in the Linux kernel (metapackage)

firmware-linux-free/stable,now 20200122-1 all [installed,automatic]
  firmware binário para vários drivers no núcleo Linux

firmware-linux-nonfree/stable 20210315-3 all
  Binary firmware for various drivers in the Linux kernel (metapackage)</pre>
<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>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/5792">Instalação do Debian 11 Bullseye 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/5792/feed</wfw:commentRss>
			<slash:comments>39</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação do Zabbix 5 LTS + Grafana 7/8 + NGINX + PostgreSQL + Notificação Telegram com Debian 10/11</title>
		<link>https://blog.remontti.com.br/5517</link>
					<comments>https://blog.remontti.com.br/5517#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 16 Apr 2021 20:08:16 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php-fpm]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[telegram]]></category>
		<category><![CDATA[zabbix]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5517</guid>

					<description><![CDATA[<p>O Zabbix é uma solução de nível enterprise, de código aberto. O Zabbix é um software que monitora vários parâmetros da rede, dos servidores e da saúde dos serviços. Utiliza-se de um mecanismo flexível&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5517">Instalação do Zabbix 5 LTS + Grafana 7/8 + NGINX + PostgreSQL + Notificação Telegram com Debian 10/11</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/04/CAPA-ZABBIX-GRAFANA-POSTGRESQL.png" alt="" width="720" height="340" class="alignnone size-full wp-image-5530" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/CAPA-ZABBIX-GRAFANA-POSTGRESQL.png 720w, https://blog.remontti.com.br/wp-content/uploads/2021/04/CAPA-ZABBIX-GRAFANA-POSTGRESQL-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/04/CAPA-ZABBIX-GRAFANA-POSTGRESQL-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /><br />
O <strong>Zabbix</strong> é uma solução de nível enterprise, de código aberto. O Zabbix é um software que monitora vários parâmetros da rede, dos servidores e da saúde dos serviços. Utiliza-se de um mecanismo flexível de notificação que permite configurar alertas por e-mail entre outros como Telegram, para praticamente qualquer evento. As notificações permitem que se reaja rapidamente à problemas no ambiente. O Zabbix oferece excelentes recursos de relatórios e visualização de dados armazenados. Isso faz com que o Zabbix seja a ferramenta ideal para planejamento de capacidade.<br />
O <strong>Grafana</strong> é um software livre que permite a visualização de formato de dados métricos. Ele permite criar painéis e gráficos a partir de várias fontes, mas aqui iremos vamos aprender a integra-lo com o Zabbix.</p>
<h4>Requisitos se Debian 10 Buster</h4>
<p>&#8211; <a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">* Debian 10 instalação limpa</a><br />
&#8211; <a href="https://blog.remontti.com.br/5487" rel="noopener" target="_blank">* Servidor WEB NGINX + PHP + PostgreSQL + phpPgAdmin + Letsencrypt</a> (Opcional phpPgAdmin + Letsencrypt)</p>
<h4>Requisitos se Debian 11 Bullseye </h4>
<p>&#8211; <a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank">Instalação do Debian 11 Bullseye limpa passo-a-passo</a><br />
&#8211; <a href="https://blog.remontti.com.br/5915" rel="noopener" target="_blank">Servidor WEB NGINX + PHP + PostgreSQL + phpPgAdmin + Letsencrypt no Debian 11 Bullseye (LNPP)</a></p>
<h1>Instalação do Zabbix</h1>
<p>Para instalação do Zabbix vamos incluir o repositório do oficial do Zabbix.</p>
<pre class="remontti-code"># su -
# cd /tmp
# apt install wget</pre>
<p><strong>Repositório Debian 10</strong></p>
<pre class="remontti-code"># wget https://repo.zabbix.com/zabbix/5.0/debian/pool/main/z/zabbix-release/zabbix-release_5.0-1+buster_all.deb
# dpkg -i zabbix-release_5.0-1+buster_all.deb</pre>
<p><strong>Repositório  Debian 11</strong></p>
<pre class="remontti-code"># wget https://repo.zabbix.com/zabbix/5.0/debian/pool/main/z/zabbix-release/zabbix-release_5.0-2+debian11_all.deb
# dpkg -i zabbix-release_5.0-2+debian11_all.deb</pre>
<p>Atualize o repositório e realize a instalação </p>
<pre class="remontti-code"># apt update ; apt upgrade
# apt install zabbix-server-pgsql zabbix-frontend-php zabbix-nginx-conf zabbix-agent</pre>
<p>Vamos criar uma base de dados chamada <strong>zabbix</strong> e um usuário também chamado de zabbix no PostgreSQL.<br />
Não esqueça de alterar a senha: Use o gerador de senha: <a href="https://senhasegura.remontti.com.br/" rel="noopener noreferrer" target="_blank">https://senhasegura.remontti.com.br/</a></p>
<pre class="remontti-code"># su - postgres
$ createuser --pwprompt zabbix
Digite a senha para a nova role:  &lt;SENHA ZABBIX&gt;
Digite-a novamente: &lt;SENHA ZABBIX&gt;
Senha: &lt;SENHA POSTGRES CASO TENHA DEFINIDO NA INSTALAÇÃO DO MESMO&gt;

$ createdb -O zabbix zabbix
Senha: &lt;SENHA POSTGRES&gt;</pre>
<p>Importe o esquema inicial e os dados. Você será solicitado a inserir a senha que foi criada anteriormente.</p>
<pre class="remontti-code">$ zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | psql -U zabbix -d zabbix &amp;&gt;/dev/null
Senha para usuário zabbix: : &lt;SENHA ZABBIX&gt;
$ exit</pre>
<p>Edite o arquivo zabbix_server.conf para informar os dados para conexão com do PostgreSQL.</p>
<pre class="remontti-code"># vim /etc/zabbix/zabbix_server.conf</pre>
<p>Procure por <strong># DBPassword=</strong> descomente e sete sua senha.</p>
<pre class="remontti-code">#...
DBPassword=&lt;SENHA ZABBIX&gt;
#...</pre>
<p>Ajuste o arquivo /etc/zabbix/php-fpm.conf, descomente e defina o fuso horário correto. <a href="https://secure.php.net/manual/pt_BR/timezones.america.php" rel="noopener noreferrer" target="_blank">timezone</a> Sua região</a>.</p>
<pre class="remontti-code"># vim /etc/zabbix/php-fpm.conf</pre>
<p>Exemplo:</p>
<pre class="remontti-code">; php_value[date.timezone] = Europe/Riga
php_value[date.timezone] = America/Sao_Paulo</pre>
<p>Este é modelo padrão, altere então para sua região, também irei alterar alguns valores padrões se quiser pode remover as conf do mod_php5.c </p>
<p>Ajuste as configurações do nginx.</p>
<pre class="remontti-code"># vim /etc/nginx/conf.d/zabbix.conf </pre>
<p>Deixei algumas linhas comentadas como exemplo, faça de acordo com sua necessidade.</p>
<pre class="remontti-code">server {
        listen 80;
        listen [::]:80;
        server_name    zabbix.remontti.com.br localhost;
        #server_name   OU_SEU_IP;

        # Metodo simples para quem quer rodar em uma determinada porta
        #listen 8181;
        #listen [::]:8181;
        #server_name     _;

        root    /usr/share/zabbix;
        index   index.php;

        # Desmomente para deixar restringido apenas para determinados prefixos
        #allow  192.168.87.0/24;
        #allow  127.0.0.1;
        #allow  2001:0db8::/32;
        #allow  ::1;
        #deny   all;
        #error_page  403   http://www.remontti.com.br;
 
        location = /favicon.ico {
                log_not_found   off;
        }

        location / {
                try_files       $uri $uri/ =404;
        }

        location /assets {
                access_log      off;
                expires         10d;
        }

        location ~ /\.ht {
                deny            all;
        }

        location ~ /(api\/|conf[^\.]|include|locale) {
                deny            all;
                return          404;
        }

        location ~ [^/]\.php(/|$) {
                fastcgi_pass    unix:/var/run/php/zabbix.sock;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_index   index.php;

                fastcgi_param   DOCUMENT_ROOT   /usr/share/zabbix;
                fastcgi_param   SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
                fastcgi_param   PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;

                include fastcgi_params;
                fastcgi_param   QUERY_STRING    $query_string;
                fastcgi_param   REQUEST_METHOD  $request_method;
                fastcgi_param   CONTENT_TYPE    $content_type;
                fastcgi_param   CONTENT_LENGTH  $content_length;

                fastcgi_intercept_errors        on;
                fastcgi_ignore_client_abort     off;
                fastcgi_connect_timeout         60;
                fastcgi_send_timeout            180;
                fastcgi_read_timeout            180;
                fastcgi_buffer_size             128k;
                fastcgi_buffers                 4 256k;
                fastcgi_busy_buffers_size       256k;
                fastcgi_temp_file_write_size    256k;
        }
}
</pre>
<p>Inicie o servidor Zabbix e os processos do agente e configure-os para que sejam iniciados durante o boot do sistema.</p>
<pre class="remontti-code"># systemctl enable zabbix-server zabbix-agent</pre>
<p><strong>Debian 10</strong></p>
<pre class="remontti-code"># systemctl restart zabbix-server zabbix-agent nginx php7.3-fpm</pre>
<p><strong>Debian 11</strong></p>
<pre class="remontti-code"># systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm</pre>
<p>Acesse em seu navegador <strong>http://seu_ip:porta</strong> ou <strong>http://zabbix.seudominio.com.br</strong></p>
<p><strong>Next Step</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/04/1.png" alt="" width="1325" height="698" class="alignnone size-full wp-image-5519" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/1.png 1325w, https://blog.remontti.com.br/wp-content/uploads/2021/04/1-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/04/1-1024x539.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/04/1-768x405.png 768w" sizes="auto, (max-width: 1325px) 100vw, 1325px" /></p>
<p>Se tudo estiver ok: <strong>Next step</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-2.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-2.png" alt="" width="1213" height="1224" class="aligncenter size-full wp-image-4359" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-2.png 1213w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-2-297x300.png 297w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-2-1015x1024.png 1015w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-2-150x150.png 150w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-2-768x775.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-2-80x80.png 80w" sizes="auto, (max-width: 1213px) 100vw, 1213px" /></a></p>
<p>Selecione <strong>PostgreSQL</strong> e informe a <strong>senha do usuário zabbix </strong>criada anteriormente, clique em <strong>Next step</strong>.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/04/3.png" alt="" width="1325" height="698" class="alignnone size-full wp-image-5520" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/3.png 1325w, https://blog.remontti.com.br/wp-content/uploads/2021/04/3-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/04/3-1024x539.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/04/3-768x405.png 768w" sizes="auto, (max-width: 1325px) 100vw, 1325px" /></p>
<p><strong>Next step</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-4.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-4.png" alt="" width="1220" height="685" class="aligncenter size-full wp-image-4361" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-4.png 1220w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-4-300x168.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-4-1024x575.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-4-768x431.png 768w" sizes="auto, (max-width: 1220px) 100vw, 1220px" /></a></p>
<p><strong>Next step</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/04/5.png" alt="" width="1325" height="698" class="alignnone size-full wp-image-5521" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/5.png 1325w, https://blog.remontti.com.br/wp-content/uploads/2021/04/5-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/04/5-1024x539.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/04/5-768x405.png 768w" sizes="auto, (max-width: 1325px) 100vw, 1325px" /></p>
<p><strong>Finish</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-6.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-6.png" alt="" width="1220" height="685" class="aligncenter size-full wp-image-4363" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-6.png 1220w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-6-300x168.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-6-1024x575.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-6-768x431.png 768w" sizes="auto, (max-width: 1220px) 100vw, 1220px" /></a></p>
<p>Entre com Usuário <strong>Admin</strong> e senha <strong>zabbix</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-7.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-7.png" alt="" width="1220" height="685" class="aligncenter size-full wp-image-4364" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-7.png 1220w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-7-300x168.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-7-1024x575.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-7-768x431.png 768w" sizes="auto, (max-width: 1220px) 100vw, 1220px" /></a></p>
<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-8.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-8.png" alt="" width="1401" height="1137" class="aligncenter size-full wp-image-4365" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-8.png 1401w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-8-300x243.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-8-1024x831.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zb5-8-768x623.png 768w" sizes="auto, (max-width: 1401px) 100vw, 1401px" /></a></p>
<p>Para dexa-lo em Português / Tema escuro:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/zabbix-black.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/zabbix-black.png" alt="" width="1680" height="836" class="aligncenter size-full wp-image-4388" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/zabbix-black.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zabbix-black-300x149.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zabbix-black-1024x510.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zabbix-black-768x382.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/05/zabbix-black-1536x764.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<hr>
<p><strong><font color="red">Possível bug na instalação</font></strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/04/BUG_ZABBIX.jpg" alt="" width="1264" height="446" class="alignnone size-full wp-image-5704" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/BUG_ZABBIX.jpg 1264w, https://blog.remontti.com.br/wp-content/uploads/2021/04/BUG_ZABBIX-300x106.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2021/04/BUG_ZABBIX-1024x361.jpg 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/04/BUG_ZABBIX-768x271.jpg 768w" sizes="auto, (max-width: 1264px) 100vw, 1264px" /><br />
Caso se deparar com essa tela não se assuste, faça o seguinte:</p>
<pre class="remontti-code"># touch /etc/zabbix/web/zabbix.conf.php
# chown www-data. /etc/zabbix/web/zabbix.conf.php</pre>
<p>De um [Back]  depois [Next] q é sucesso!</p>
<hr>
<h1>Alertas no Telegram</h1>
<p>No Zabbix 5 temos o Telegram/Webhook, então bora aprender mexer nisso! Mas antes de mais nada será necessário criarmos um bot no Telegram.</p>
<p><strong>Criando Bot no telegram</strong></p>
<p>Abra o Telegram e procure por <a href="https://t.me/BotFather" rel="noopener noreferrer" target="_blank"><strong>@BotFather</strong></a>.<br />
Inicie a conversa com ele.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram1.jpg" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram1-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2823" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram1-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram1-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram1.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram2.jpg" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram2-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2826" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram2-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram2-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram2.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram3.jpg" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram3-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2827" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram3-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram3-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram3.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a></p>
<p>&#8211; Digite o comando <strong>/newbot</strong> para iniciar a criação de um novo bot.<br />
&#8211; Após o comando você vai dar um nome para seu bot. Ex.: <em>&#8220;Bot Legal RR&#8221;</em>.<br />
&#8211; Em seguida é necessário digitar o nome de usuário para o bot, sendo obrigatório terminar com <strong>bot</strong>. Ex.: <em>&#8220;legallrr_bot&#8221;</em>.<br />
&#8211; Ao finalizar você receber informações com seu TOKEN, que vamos utilizar em seguida.</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram4.jpg" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram4-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2830" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram4-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram4-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram4.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram5.jpg" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram5-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2833" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram5-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram5-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram5.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram6.jpg" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram6-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2835" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram6-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram6-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram6.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a></p>
<p>Neste exemplo nosso token para acessar a API HTTP ficou:<br />
<strong>757396508:AAHpaoyVN-95maOCax1vDPDQBnSaZd9P5r0</strong></p>
<p>Agora que o token abra o menu <strong>Administração</strong> &#8211;> <strong>Tipos de mídias</strong></p>
<p>Localize o Telegram e clique nele<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-1.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-1.png" alt="" width="1680" height="968" class="aligncenter size-full wp-image-4386" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-1.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-1-300x173.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-1-1024x590.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-1-768x443.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-1-1536x885.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p>Edite o ParseMode para HTML e Token para o token q você acabou de criar. Marque Process tags.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-2.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-2.png" alt="" width="1680" height="885" class="aligncenter size-full wp-image-4387" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-2.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-2-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-2-1024x539.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-2-768x405.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-2-1536x809.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p>Neste momento que escrevo na própria descrição da mídia telegram ele recomenda você add o bot @myidbot para descobrir o seu ID, mas parace que este bot está &#8220;dormindo&#8221;. Vamos ao metodos tradicional. Você pode receber notificações direta do seu bot ou então adiciono-lo em um grupo. </p>
<p>Procure pelo seu bot e comece uma conversa com ele e envie uma mensagem de teste para o mesmo, pois vamos precisar descobrir o ID do seu usuário, para que ele possa lhe enviar as mensagens.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram7.jpg" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram7-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2837" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram7-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram7-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram7.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram8.jpg" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram8-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2838" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram8-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram8-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram8.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a></p>
<p>Abra em seu seu navegador a seguinte URL <em>https://api.telegram.org/bot<strong>TOKEN</strong>/getUpdates</em> para descobrir o ID do usuário que enviou a mensagem ou de um grupo.<br />
Ex.: <font size="2"><em>https://api.telegram.org/bot<strong><font color="red">757396508:AAHpaoyVN-95maOCax1vDPDQBnSaZd9P5r0</font></strong>/getUpdates</em></font></p>
<p><strong>:: Chat privado ::</strong></p>
<pre class="remontti-code">{&quot;ok&quot;:true,&quot;result&quot;:[{
	&quot;update_id&quot;:649208620,&quot;message&quot;:{
		&quot;message_id&quot;:2,&quot;from&quot;:{&quot;id&quot;:221122111,&quot;is_bot&quot;:false,&quot;first_name&quot;:&quot;Rudimar&quot;,&quot;last_name&quot;:&quot;Remontti&quot;,&quot;username&quot;:&quot;remontti&quot;,&quot;language_code&quot;:&quot;pt-br&quot;},
		&quot;chat&quot;:{&quot;id&quot;:999999999,&quot;first_name&quot;:&quot;Rudimar&quot;,&quot;last_name&quot;:&quot;Remontti&quot;,&quot;username&quot;:&quot;remontti&quot;,&quot;type&quot;:&quot;private&quot;},
		&quot;date&quot;:1541210279,&quot;text&quot;:&quot;Testando&quot;
	}
}]}</pre>
<p>ID do chat privado: <strong>999999999</strong></p>
<p>Se desejar criar um grupo também, basta adicionar seu bot a ele, após adiciona-lo envia uma mensagem como <strong>/teste</strong> para que possamos coletar o ID do grupo.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram9.jpg" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram9-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2843" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram9-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram9-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram9.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram10.jpg" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram10-169x300.jpg" alt="" width="169" height="300" class="alignnone size-medium wp-image-2844" srcset="https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram10-169x300.jpg 169w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram10-576x1024.jpg 576w, https://blog.remontti.com.br/wp-content/uploads/2018/11/zabbix_bot_telegram10.jpg 720w" sizes="auto, (max-width: 169px) 100vw, 169px" /></a></p>
<p><strong>:: Chat em Grupo ::</strong></p>
<pre class="remontti-code">{&quot;ok&quot;:true,&quot;result&quot;:[{
	&quot;update_id&quot;:649208622,&quot;message&quot;:{&quot;message_id&quot;:4,&quot;from&quot;:{
		&quot;id&quot;:221122111,&quot;is_bot&quot;:false,&quot;first_name&quot;:&quot;Rudimar&quot;,&quot;last_name&quot;:&quot;Remontti&quot;,&quot;username&quot;:&quot;remontti&quot;,&quot;language_code&quot;:&quot;pt-br&quot;},
		&quot;chat&quot;:{&quot;id&quot;:-88888888888,&quot;title&quot;:&quot;Grupo Legal&quot;,&quot;type&quot;:&quot;group&quot;,&quot;all_members_are_administrators&quot;:true
	},&quot;date&quot;:1541210975,&quot;text&quot;:&quot;/teste&quot;,&quot;entities&quot;:[{&quot;offset&quot;:0,&quot;length&quot;:6,&quot;type&quot;:&quot;bot_command&quot;}
}]}</pre>
<p>ID do chat grupo: <strong>-88888888888</strong></p>
<p>Atenção para os <strong>grupos</strong> que sempre tem um sinal &#8220;-&#8221; na frente do ID.</p>
<p>Com o ID do grupo/usuário precisamos vincular ao usuário do Zabbix (Neste caso Admin)<br />
<strong>Administração</strong> ⇒ <strong>Usuários</strong> Clique no usuário <strong>Admin</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-3.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-3.png" alt="" width="1680" height="541" class="aligncenter size-full wp-image-4389" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-3.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-3-300x97.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-3-1024x330.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-3-768x247.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-3-1536x495.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p>Com as opções do usuário aberto clique na aba <strong>Mídia</strong> em seguita clique no <strong>Adicionar</strong>, selecione o Tipo Telegram e insira o em Enviar para o ID.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-5.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-5.png" alt="" width="1680" height="624" class="aligncenter size-full wp-image-4390" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-5.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-5-300x111.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-5-1024x380.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-5-768x285.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-5-1536x571.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a> </p>
<p>Atualize<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-6.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-6.png" alt="" width="1680" height="269" class="aligncenter size-full wp-image-4391" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-6.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-6-300x48.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-6-1024x164.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-6-768x123.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-6-1536x246.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p>Agora vamos criar a ação que fará o envios dos alertas.<br />
<strong>Configurações</strong> ⇒ <strong>Ações</strong> ⇒ <strong>Criar ação</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-7.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-7.png" alt="" width="1680" height="495" class="aligncenter size-full wp-image-4392" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-7.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-7-300x88.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-7-1024x302.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-7-768x226.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-7-1536x453.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p>De um nome para sua ação<br />
Em Condição clique em adicionar: Selecione <strong>Incidente suprimido</strong> e marque <strong>Não</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-8.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-8.png" alt="" width="1680" height="527" class="aligncenter size-full wp-image-4393" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-8.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-8-300x94.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-8-1024x321.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-8-768x241.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-8-1536x482.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p>Na aba <strong>Operações</strong> primeiro item <strong>Operações</strong> clique em <strong>adicionar</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-9.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-9.png" alt="" width="1680" height="470" class="aligncenter size-full wp-image-4394" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-9.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-9-300x84.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-9-1024x286.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-9-768x215.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-9-1536x430.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><strong>Enviar para usuário</strong>: Selecione o <strong>Admin</strong><br />
Enviar apenas para: <strong>Telegram</strong><br />
Marque <strong>Custom message</strong>, preencha com:<br />
<strong>Assunto</strong>:</p>
<pre class="remontti-code"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Problema: &lt;b&gt;{HOST.NAME}&lt;/b&gt;</pre>
<p><strong>Mensagem</strong></p>
<pre class="remontti-code">&lt;code&gt;{EVENT.NAME}&lt;/code&gt;
&lt;b&gt;{ITEM.NAME1}&lt;/b&gt; &lt;i&gt;{ITEM.VALUE1}&lt;/i&gt;

Tempo do evento: {EVENT.AGE} 
&lt;a href=&quot;{HOST.IP}&quot;&gt;{HOST.IP}&lt;/a&gt;
&lt;i&gt;{EVENT.SEVERITY}&lt;/i&gt;</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-10.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-10.png" alt="" width="1680" height="836" class="aligncenter size-full wp-image-4395" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-10.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-10-300x149.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-10-1024x510.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-10-768x382.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-10-1536x764.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p>No item <strong>Operações de recuperação</strong> faremos praticamente o mesmo:</p>
<p><strong>Assunto</strong>:</p>
<pre class="remontti-code"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Resolvido: &lt;b&gt;{HOST.NAME}&lt;/b&gt;</pre>
<p><strong>Mensagem padrão</strong></p>
<pre class="remontti-code">&lt;code&gt;{EVENT.NAME}&lt;/code&gt;
&lt;b&gt;{ITEM.NAME1}&lt;/b&gt; &lt;i&gt;{ITEM.VALUE1}&lt;/i&gt;

Tempo do evento: {EVENT.AGE} 
&lt;a href=&quot;{HOST.IP}&quot;&gt;{HOST.IP}&lt;/a&gt;
&lt;i&gt;{EVENT.SEVERITY}&lt;/i&gt;
ID&#039;s: {ITEM.ID}/{EVENT.ID}</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-11.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-11.png" alt="" width="1680" height="836" class="aligncenter size-full wp-image-4396" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-11.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-11-300x149.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-11-1024x510.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-11-768x382.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-11-1536x764.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p>No item <strong>Operações de atualização</strong><br />
<strong>Assunto</strong>:</p>
<pre class="remontti-code">Problema atualizado: {EVENT.NAME}</pre>
<p><strong>Mensagem padrão</strong></p>
<pre class="remontti-code">{USER.FULLNAME} {EVENT.UPDATE.ACTION} problema em {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.
{EVENT.UPDATE.MESSAGE}
O status atual do problema é {EVENT.STATUS}, reconhecido: {EVENT.ACK.STATUS}.</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-12.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-12.png" alt="" width="1680" height="836" class="aligncenter size-full wp-image-4397" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-12.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-12-300x149.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-12-1024x510.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-12-768x382.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-12-1536x764.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p>Operações configurada, clique em atualizar.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-13.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-13.png" alt="" width="1680" height="544" class="aligncenter size-full wp-image-4398" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-13.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-13-300x97.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-13-1024x332.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-13-768x249.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/05/tele-13-1536x497.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p>Pronto! Agora precisamos gerar um incidente para ver se nosso alerta será enviado para o Telegram.</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-14.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-14-576x1024.png" alt="" width="576" height="1024" class="alignnone size-large wp-image-3080" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-14-576x1024.png 576w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-14-169x300.png 169w, https://blog.remontti.com.br/wp-content/uploads/2019/07/zabbix-4.2-debian-10-buster-telegram-bot-14.png 720w" sizes="auto, (max-width: 576px) 100vw, 576px" /></a></p>
<p>O sistema de envio de mensagem está concluído! <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>
<h1>Grafana v7/v8</h1>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana.png" alt="" width="1680" height="1050" class="aligncenter size-full wp-image-4367" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-300x188.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-1024x640.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-768x480.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-1536x960.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a><br />
Pacotes necessários:</p>
<pre class="remontti-code"># apt install gnupg2 apt-transport-https software-properties-common wget</pre>
<p><strong>Para versão 7.5.x:</strong> (Não recomendado)</p>
<pre class="remontti-code"># cd /tmp/
# wget https://dl.grafana.com/oss/release/grafana_7.5.11_amd64.deb
# apt install ./grafana_7.5.11_amd64.deb
# grafana-cli plugins update-all
# systemctl restart grafana-server</pre>
<p><strong>Para versão 8.2.x:</strong> (Não recomendado)</p>
<pre class="remontti-code"># cd /tmp/
# wget https://dl.grafana.com/oss/release/grafana_8.2.7_amd64.deb
# apt install ./grafana_8.2.7_amd64.deb
# grafana-cli plugins update-all
# systemctl restart grafana-server</pre>
<p>Outras versões consulte <a href="https://grafana.com/grafana/download?edition=oss" rel="noopener" target="_blank">https://grafana.com/grafana/download?edition=oss</a></p>
<p><strong>Para Ultima versão v8.X:</strong> (Recomendado)<br />
Vamos baixar a key do repositório e adiciona-lo </p>
<pre class="remontti-code"># wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -
# echo &quot;deb https://packages.grafana.com/oss/deb stable main&quot; | tee -a /etc/apt/sources.list.d/grafana.list</pre>
<p>Atualize o repositório e instale o grafana</p>
<pre class="remontti-code"># apt update
# apt install grafana</pre>
<p>Antes de iniciar o grafana, se deseja alterar a porta padrão <strong>3000</strong> (recomendo) edite:</p>
<pre class="remontti-code"># vim /etc/grafana/grafana.ini</pre>
<p>Localize <strong>http_port</strong> e defina a porta de sua escolha.</p>
<pre class="remontti-code"># The http port  to use
;http_port = 3000</pre>
<p>Exemplo:</p>
<pre class="remontti-code">http_port = 53000</pre>
<p>Instale o <strong>Plugin Zabbix</strong></p>
<pre class="remontti-code"># grafana-cli plugins install alexanderzobnin-zabbix-app</pre>
<p>É recomendado que mensalmente você faça atualizações dos plugins instalados, com o comando:</p>
<pre class="remontti-code"># grafana-cli plugins update-all</pre>
<p>Agora sim colocamos o Grafana para iniciar junto com a inicialização, ativamos e inicializamos o serviço:</p>
<pre class="remontti-code"># systemctl daemon-reload
# systemctl enable grafana-server
# systemctl start grafana-server</pre>
<p>Acesse em seu navegador <strong>http://IP_URL:3000</strong> ou pela porta que você alterou. O nome de usuário padrão é admin e a senha padrão é admin.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-1.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-1.png" alt="" width="1370" height="781" class="aligncenter size-full wp-image-4368" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-1.png 1370w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-1-300x171.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-1-1024x584.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-1-768x438.png 768w" sizes="auto, (max-width: 1370px) 100vw, 1370px" /></a></p>
<p>Ao fazer login pela primeira vez, você será solicitado a alterar sua senha.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-2.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-2.png" alt="" width="1370" height="732" class="aligncenter size-full wp-image-4369" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-2.png 1370w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-2-300x160.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-2-1024x547.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-2-768x410.png 768w" sizes="auto, (max-width: 1370px) 100vw, 1370px" /></a></p>
<p>Uhull <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-3.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-3.png" alt="" width="1370" height="720" class="aligncenter size-full wp-image-4370" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-3.png 1370w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-3-300x158.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-3-1024x538.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-3-768x404.png 768w" sizes="auto, (max-width: 1370px) 100vw, 1370px" /></a></p>
<h4>Integração do grafana com o Zabbix</h4>
<p>Acesse o Configuration &#8211;> Plugins:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-7.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-7.png" alt="" width="1366" height="633" class="aligncenter size-full wp-image-4374" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-7.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-7-300x139.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-7-1024x475.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-7-768x356.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></a></p>
<p>Localize o Zabbix e clique no mesmo<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-5.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-5.png" alt="" width="1370" height="688" class="aligncenter size-full wp-image-4372" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-5.png 1370w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-5-300x151.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-5-1024x514.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-5-768x386.png 768w" sizes="auto, (max-width: 1370px) 100vw, 1370px" /></a></p>
<p>Agora ative clicando em <strong>Enable</strong>.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-6.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-6.png" alt="" width="1370" height="688" class="aligncenter size-full wp-image-4373" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-6.png 1370w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-6-300x151.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-6-1024x514.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-6-768x386.png 768w" sizes="auto, (max-width: 1370px) 100vw, 1370px" /></a></p>
<p>Volte em Configuration &#8211;> Data Sources<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-8.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-8.png" alt="" width="1366" height="633" class="aligncenter size-full wp-image-4375" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-8.png 1366w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-8-300x139.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-8-1024x475.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-8-768x356.png 768w" sizes="auto, (max-width: 1366px) 100vw, 1366px" /></a></p>
<p>Clique em <strong>Add data source</strong>.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-9.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-9.png" alt="" width="1370" height="639" class="aligncenter size-full wp-image-4376" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-9.png 1370w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-9-300x140.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-9-1024x478.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-9-768x358.png 768w" sizes="auto, (max-width: 1370px) 100vw, 1370px" /></a></p>
<p>Uma nova tela com varias fontes, localize Zabbix e clique em <strong>Select</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-10.png" data-rel="lightbox-gallery-o7lOBkcU" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-10.png" alt="" width="1370" height="639" class="aligncenter size-full wp-image-4377" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-10.png 1370w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-10-300x140.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-10-1024x478.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/05/grafana-10-768x358.png 768w" sizes="auto, (max-width: 1370px) 100vw, 1370px" /></a></p>
<p>Nas opções <strong>HTTP</strong> em <strong>URL</strong> informe o endereço do seu servidor Zabbix <strong>http://IP_URL/api_jsonrpc.php</strong>. Em <strong>Access</strong> selecione <strong>Browser</strong>. Em <strong>Zabbix API details</strong> informe seu usuário e senha do Zabbix e selecione a versão correspondente.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/04/graf-a.png" alt="" width="1043" height="1384" class="alignnone size-full wp-image-5524" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/graf-a.png 1043w, https://blog.remontti.com.br/wp-content/uploads/2021/04/graf-a-226x300.png 226w, https://blog.remontti.com.br/wp-content/uploads/2021/04/graf-a-772x1024.png 772w, https://blog.remontti.com.br/wp-content/uploads/2021/04/graf-a-768x1019.png 768w" sizes="auto, (max-width: 1043px) 100vw, 1043px" /></p>
<p>Role até o final e e clique em <strong>Save &#038; Test</strong> Se tudo ocorreu bem uma altera positivo com<strong>&#8220;Zabbix API version: 5.x.x&#8221;</strong> aparecerá.</p>
<p>Você pode também pode fazer uma conexão PostgreSQL com o banco de dados do zabbix, para tornar as coisas mais rápidas. Para isso basta &#8220;Add data source&#8221; pesquisar por PostgreSQL, então basta informa nome do banco, usuário e senha.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/04/graf-b.png" alt="" width="1043" height="1320" class="alignnone size-full wp-image-5525" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/graf-b.png 1043w, https://blog.remontti.com.br/wp-content/uploads/2021/04/graf-b-237x300.png 237w, https://blog.remontti.com.br/wp-content/uploads/2021/04/graf-b-809x1024.png 809w, https://blog.remontti.com.br/wp-content/uploads/2021/04/graf-b-768x972.png 768w" sizes="auto, (max-width: 1043px) 100vw, 1043px" /></p>
<p>Vá para as configurações do data source do zabbix, localize <strong>Direct DB Connection</strong>, ative-o e selecione <strong>PostgreSQL</strong>.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/04/graf-c.png" alt="" width="1040" height="501" class="alignnone size-full wp-image-5526" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/graf-c.png 1040w, https://blog.remontti.com.br/wp-content/uploads/2021/04/graf-c-300x145.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/04/graf-c-1024x493.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/04/graf-c-768x370.png 768w" sizes="auto, (max-width: 1040px) 100vw, 1040px" /></p>
<p>Agora vem a parte mais &#8220;chata/legal&#8221; que é você montar seus gráficos, como isso é algo bem peculiar de cada um, o intuito aqui era ensinar instalar. Recomendo a leitura de <a href="https://alexanderzobnin.github.io/grafana-zabbix/guides/gettingstarted/" rel="noopener noreferrer" target="_blank">Introdução ao Grafana-Zabbix</a> do autor do plugin.</p>
<h3>Bônus &#8211; Proxy Nginx grafana</h3>
<pre class="remontti-code"># vim /etc/nginx/sites-available/grafana.conf</pre>
<p>Adicione:</p>
<pre class="remontti-code">server {
    listen 80;
    listen [::]:80;

    server_name grafana.remontti.com.br;
  
    location / {
        proxy_pass http://localhost:53000;
        proxy_set_header   Host $host;
    }
}</pre>
<p>Cria o link para sites-enabled em seguida verifique as configurações e reinicie o serviço.</p>
<pre class="remontti-code"># ln -s /etc/nginx/sites-available/grafana.conf /etc/nginx/sites-enabled/
# nginx -t
# systemctl restart nginx</pre>
<p>Simples né? Gostou e quer me ajudar? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</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 />
https://www.zabbix.com/download<br />
https://www.zabbix.com/documentation/<br />
https://grafana.com/docs/grafana/latest/installation/debian/<br />
https://grafana.com/grafana/plugins/alexanderzobnin-zabbix-app<br />
https://alexanderzobnin.github.io/grafana-zabbix/configuration/<br />
https://core.telegram.org/bots</p>
<p>O post <a href="https://blog.remontti.com.br/5517">Instalação do Zabbix 5 LTS + Grafana 7/8 + NGINX + PostgreSQL + Notificação Telegram com Debian 10/11</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5517/feed</wfw:commentRss>
			<slash:comments>28</slash:comments>
		
		
			</item>
		<item>
		<title>Como configurar o RPKI de forma simples, instalação do Krill</title>
		<link>https://blog.remontti.com.br/4848</link>
					<comments>https://blog.remontti.com.br/4848#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 21 Aug 2020 21:59:02 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bgp]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 10]]></category>
		<category><![CDATA[krill]]></category>
		<category><![CDATA[registro.br]]></category>
		<category><![CDATA[rpki]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=4848</guid>

					<description><![CDATA[<p>RPKI é a especificação de uma tecnologia discutida e proposta pelo IETF (Internet Engeenering Task Force), RFC 6480, que permite a validação de anúncios de rotas via protocolo BGP. Essa tecnologia faz uso de&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/4848">Como configurar o RPKI de forma simples, instalação do Krill</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-capa-remontti.png" alt="" width="1792" height="1024" class="alignnone size-full wp-image-7757" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-capa-remontti.png 1792w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-capa-remontti-300x171.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-capa-remontti-1024x585.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-capa-remontti-768x439.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-capa-remontti-1536x878.png 1536w" sizes="auto, (max-width: 1792px) 100vw, 1792px" /></p>
<p>RPKI é a especificação de uma tecnologia discutida e proposta pelo IETF (Internet Engeenering Task Force), RFC 6480, que permite a validação de anúncios de rotas via protocolo BGP.</p>
<p>Essa tecnologia faz uso de Certificados Digitais (PKI), e de uma cadeia de certificação para validar a alocação de um conjunto de Recursos de Numeração Internet feita por um RIR/NIR a uma organização.</p>
<p>Um dos objetos a ser assinado com a referida chave privada se chama ROA (Route Origin Authorization), e que contém uma lista de blocos IPv4 e/ou IPv6 e um ASN que está autorizado a originar rotas para os referidos blocos.</p>
<p>As ROAs são então publicadas em repositórios e poderão ser utilizadas para validar que uma determinada rota para um bloco IP, recebida através do protocolo BGP, está sendo originada pelo ASN autorizado pelo detentor da alocação do bloco IP em questão.</p>
<p>Dessa forma cria-se um mecanismo para evitar uso indevido de blocos de endereços IP ou &#8220;sequestros&#8221;, que é quando através de um ASN se origina rotas para blocos IP alocados para outras organizações que não aquela responsável pelo ASN.</p>
<p>Vídeo recomendado que pode lhe ajudar esclarecer a importância do RPKI.<br />
<strong>RPKI: Uma proteção para roubo de prefixos no BGP</strong><br />
<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/wBpyhVuq8dw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p>Está instalação tem como base o projeto <strong><a href="https://github.com/NLnetLabs/krill" rel="noopener noreferrer" target="_blank">Krill</a></strong>. Krill é um daemon de Resource RPKI, apresentando uma Autoridade de Certificação (CA) e um servidor de publicação, escrito em Rust. </p>
<p><strong>Distribuição recomendada</strong>:<br />
<a href="https://blog.remontti.com.br/7236" rel="noopener noreferrer" target="_blank">Instalação do Debian 12 Bookworm limpa passo-a-passo<br />
</a></p>
<p>A base desta instalação foi com informações na <a href="https://krill.docs.nlnetlabs.nl/" rel="noopener noreferrer" target="_blank">documentação oficial</a>.</p>
<p>Não esqueça de virar root da forma correta e atualizar os pacotes, e instalar alguns pacotes que serão necessários. </p>
<pre class="remontti-code"># su - 
# apt update 
# apt install curl wget gnupg2 apt-transport-https net-tools ca-certificates lsb-release</pre>
<p>Adicionaremos ao repositório Debian para os pacotes da nlnetlabs:</p>
<p>Importe a chave do repositório.</p>
<pre class="remontti-code"># curl -fsSL https://packages.nlnetlabs.nl/aptkey.asc | gpg --dearmor -o /usr/share/keyrings/nlnetlabs-archive-keyring.gpg</pre>
<pre class="remontti-code"># echo \
&quot;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/nlnetlabs-archive-keyring.gpg] https://packages.nlnetlabs.nl/linux/debian \
$(lsb_release -cs) main&quot; | tee /etc/apt/sources.list.d/nlnetlabs.list &gt; /dev/null
</pre>
<p>Atualize o repositório</p>
<pre class="remontti-code"># apt update</pre>
<p>Instale o krill</p>
<pre class="remontti-code"># apt install krill krillup krillta</pre>
<p>Após a instalação será criado no sistema um usuário chamado krill que é dono do diretório /var/lib/krill/ (que até o momento não existe nada nele).</p>
<p>Por segurança criaremos um backp original do krill.conf o arquivo de configuração. </p>
<pre class="remontti-code"># cp /etc/krill.conf /etc/krill.conf.orig</pre>
<p>Por padrão o krill roda em localhost porta 3000. Mas para nós acessar posteriormente sua interface web (lagosta) será necessário ter acesso a mesma, tornado aberta para todos. <em>(Veremos também como aplicar um firewall, para não deixar acessível à todos)</em></p>
<pre class="remontti-code"># vim /etc/krill.conf</pre>
<p>Adicione como no print:</p>
<pre class="remontti-code">ip = &quot;0.0.0.0&quot;</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_3000_port.png" alt="" width="948" height="268" class="alignnone size-full wp-image-4857" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_3000_port.png 948w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_3000_port-300x85.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_3000_port-768x217.png 768w" sizes="auto, (max-width: 948px) 100vw, 948px" /></p>
<p>Por padrão o mesmo não vem habilitado na inicialização, para isso vamos habilita-lo.</p>
<pre class="remontti-code"># systemctl enable krill</pre>
<p>Agora inicie o serviço </p>
<pre class="remontti-code"># systemctl start krill</pre>
<p>Verifique se o mesmo está rodando sem nenhum erro.</p>
<pre class="remontti-code"># systemctl status krill</pre>
<p>Com o comando netstat você pode se certificar que agora o krill está aberto para qualquer IP &#8220;0.0.0.0&#8221;</p>
<pre class="remontti-code"># netstat -putan |grep krill</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_service-1.png" alt="" width="1225" height="88" class="alignnone size-full wp-image-4858" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_service-1.png 1225w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_service-1-300x22.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_service-1-1024x74.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_service-1-768x55.png 768w" sizes="auto, (max-width: 1225px) 100vw, 1225px" /></p>
<p>Tudo certo até aqui, será necessário pegarmos o Token que ele gerou na instalação, ele se encontra no arquivo /etc/krill.conf, para pega-ló pode executar este comando:</p>
<pre class="remontti-code"># cat /etc/krill.conf |grep &quot;token =&quot; | cut -d&#039;&quot;&#039; -s -f 2</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_token.png" alt="" width="940" height="130" class="alignnone size-full wp-image-4855" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_token.png 940w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_token-300x41.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_token-768x106.png 768w" sizes="auto, (max-width: 940px) 100vw, 940px" /><br />
Neste caso meu token é <em>38d8ffbe35eaa2391b01681662037600</em>, salve isso com 7 chaves!</p>
<p>E a instalação é só isso! <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>Agora basta acessar em seu navegador <strong>https://IP:3000</strong> e nos depararemos com interface web do krill &#8220;lagosta&#8221;. <strong>(User o Firefox)</strong> É necessário aceitar o certificado inválido.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-0.png" alt="" width="1285" height="582" class="alignnone size-full wp-image-7755" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-0.png 1285w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-0-300x136.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-0-1024x464.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-0-768x348.png 768w" sizes="auto, (max-width: 1285px) 100vw, 1285px" /></p>
<p>Informe o seu <strong>token</strong> em senha, no meu ex.: <em>&#8220;38d8ffbe35eaa2391b01681662037600&#8221;</em></p>
<p>Ao entrar pela primera vez será necessário informar um nome de autoridade, adotarei como nome &#8220;meu AS&#8221;<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_ca_name.png" alt="" width="1381" height="790" class="alignnone size-full wp-image-4861" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_ca_name.png 1381w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_ca_name-300x172.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_ca_name-1024x586.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_ca_name-768x439.png 768w" sizes="auto, (max-width: 1381px) 100vw, 1381px" /></p>
<p>Hora de acessarmos nossa conta no <a href="https://registro.br/login/" rel="noopener noreferrer" target="_blank">Registro.br</a></p>
<p>Clique em titularidade, em seguida &#8220;1 ASN&#8221;<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_titulariade.png" alt="" width="1160" height="401" class="alignnone size-full wp-image-4862" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_titulariade.png 1160w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_titulariade-300x104.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_titulariade-1024x354.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_titulariade-768x265.png 768w" sizes="auto, (max-width: 1160px) 100vw, 1160px" /></p>
<p>Role a página ate o final e <strong>clique em Configurar RPKI</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_rpki.png" alt="" width="1150" height="403" class="alignnone size-full wp-image-4863" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_rpki.png 1150w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_rpki-300x105.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_rpki-1024x359.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_rpki-768x269.png 768w" sizes="auto, (max-width: 1150px) 100vw, 1150px" /></p>
<p>Volte a tela do Krill, e clique em <strong>Parents</strong> e copie o conteúdo do <strong>Child Request</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-1.png" data-rel="lightbox-gallery-bBeZuzgD" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-1.png" alt="" width="1283" height="934" class="alignnone size-full wp-image-7744" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-1.png 1283w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-1-300x218.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-1-1024x745.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-1-768x559.png 768w" sizes="auto, (max-width: 1283px) 100vw, 1283px" /></a></p>
<p>Retorne ao Registro.BR e cole o conteúdo no campo <strong>Child Request</strong> e <strong>Habilitar RPKI</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_child_request.png" alt="" width="1159" height="563" class="alignnone size-full wp-image-4866" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_child_request.png 1159w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_child_request-300x146.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_child_request-1024x497.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_child_request-768x373.png 768w" sizes="auto, (max-width: 1159px) 100vw, 1159px" /></p>
<p>Copie o conteúdo do <strong>Parent Response</strong> que o RegistroBR gerou<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_parent_response.png" alt="" width="1151" height="847" class="alignnone size-full wp-image-4868" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_parent_response.png 1151w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_parent_response-300x221.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_parent_response-1024x754.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_parent_response-768x565.png 768w" sizes="auto, (max-width: 1151px) 100vw, 1151px" /></p>
<p>Cole o mesmo no Krill campo <strong>Parent Response</strong> e clique em confirmar.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-2.png" data-rel="lightbox-gallery-bBeZuzgD" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-2.png" alt="" width="1285" height="941" class="alignnone size-full wp-image-7745" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-2.png 1285w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-2-300x220.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-2-1024x750.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-2-768x562.png 768w" sizes="auto, (max-width: 1285px) 100vw, 1285px" /></a></p>
<p>Deve retornar uma mensagem de sucesso.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/su.png" alt="" width="380" height="100" class="alignnone size-full wp-image-4870" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/su.png 380w, https://blog.remontti.com.br/wp-content/uploads/2020/08/su-300x79.png 300w" sizes="auto, (max-width: 380px) 100vw, 380px" /></p>
<p>Você será já direcionado para o <strong>Repository</strong>, então copie a <strong>Publisher Request</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-3.png" data-rel="lightbox-gallery-bBeZuzgD" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-3.png" alt="" width="1285" height="854" class="alignnone size-full wp-image-7746" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-3.png 1285w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-3-300x199.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-3-1024x681.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-3-768x510.png 768w" sizes="auto, (max-width: 1285px) 100vw, 1285px" /></a></p>
<p>Vá ao registroBR e logo a baixo de parent response clique em <strong>Configurar publicação remota</strong> irá abrir um campo <strong>Publisher Request</strong>, agora cole e clique em <strong>Habilitar Publicação Remota</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_publisher_request.png" alt="" width="1161" height="769" class="alignnone size-full wp-image-4872" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_publisher_request.png 1161w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_publisher_request-300x199.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_publisher_request-1024x678.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_publisher_request-768x509.png 768w" sizes="auto, (max-width: 1161px) 100vw, 1161px" /></p>
<p>Role um pouco a paixa para baixo e veja que temos agora o <strong>Repository Response</strong> copie o mesmo e volte ao Krill<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_repository_response.png" alt="" width="1154" height="759" class="alignnone size-full wp-image-4873" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_repository_response.png 1154w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_repository_response-300x197.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_repository_response-1024x673.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_repository_response-768x505.png 768w" sizes="auto, (max-width: 1154px) 100vw, 1154px" /></p>
<p>Cole no campo <strong>Repository Response</strong> e clique em <strong>Confirmar</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-4.png" data-rel="lightbox-gallery-bBeZuzgD" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-4.png" alt="" width="1277" height="857" class="alignnone size-full wp-image-7747" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-4.png 1277w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-4-300x201.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-4-1024x687.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-4-768x515.png 768w" sizes="auto, (max-width: 1277px) 100vw, 1277px" /></a></p>
<p>Novamente deve retornar uma mensagem de sucesso.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/su.png" alt="" width="380" height="100" class="alignnone size-full wp-image-4870" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/su.png 380w, https://blog.remontti.com.br/wp-content/uploads/2020/08/su-300x79.png 300w" sizes="auto, (max-width: 380px) 100vw, 380px" /></p>
<p>Clique em ROAs. Você verá seus prefixos anunciados. (Se não aparecer atualize a página, pode levar uns minutos)<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-5.png" alt="" width="1283" height="734" class="alignnone size-full wp-image-7749" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-5.png 1283w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-5-300x172.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-5-1024x586.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-5-768x439.png 768w" sizes="auto, (max-width: 1283px) 100vw, 1283px" /></p>
<p>Agora precisamos adicionar nossos ROAs, clique em <strong>Add ROA/Adicionar ROA</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-7.png" alt="" width="1279" height="681" class="alignnone size-full wp-image-7751" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-7.png 1279w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-7-300x160.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-7-1024x545.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-7-768x409.png 768w" sizes="auto, (max-width: 1279px) 100vw, 1279px" /></p>
<p>Adicione todos seus prefixos<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-6.png" alt="" width="1275" height="661" class="alignnone size-full wp-image-7752" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-6.png 1275w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-6-300x156.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-6-1024x531.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-6-768x398.png 768w" sizes="auto, (max-width: 1275px) 100vw, 1275px" /></p>
<p>ROAs adicionados com sucesso! Nosso RPKI está finalizado!<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-8.png" alt="" width="1280" height="556" class="alignnone size-full wp-image-7753" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-8.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-8-300x130.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-8-1024x445.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-8-768x334.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></p>
<p>Para validar você pode acessar os Routinator da ripe.net (<a href="https://blog.remontti.com.br/5720" rel="noopener" target="_blank">ou crie o seu</a>), mas <strong>tenha paciência, aguarde pelo menos 1 hora antes de arrancar os cabelos</strong> se não validar. <strong><a href="https://rpki-validator.ripe.net" rel="noopener" target="_blank">https://rpki-validator.ripe.net</a>/</strong></p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/routnator.png" alt="" width="1258" height="698" class="alignnone size-full wp-image-7311" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/routnator.png 1258w, https://blog.remontti.com.br/wp-content/uploads/2020/08/routnator-300x166.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/routnator-1024x568.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/routnator-768x426.png 768w" sizes="auto, (max-width: 1258px) 100vw, 1258px" /></p>
<p>Não podemos esquecer o firewall, usarei o nftables</p>
<p>Instale e ative-o para iniciar com o sistema. (No <strong>Debian 11</strong> nftables já é o subistituto do iptables, não é necessários instalar, mas é necessário dar um enable)</p>
<pre class="remontti-code"># apt install nftables 
# systemctl enable nftables</pre>
<p>Edite as regras</p>
<pre class="remontti-code"># vim /etc/nftables.conf </pre>
<p>Neste exemplo eu acessível apenas deixo apenas aberto para 200.200.200.0/22 e 192.168.0.0/24</p>
<pre class="remontti-code">#!/usr/sbin/nft -f
  
flush ruleset

table inet filter {
        chain input {
                type filter hook input priority 0;
                # Krill
                ip saddr 127.0.0.1 tcp dport 3000 counter accept
                ip6 saddr ::1 tcp dport 3000 counter accept
                ip saddr 192.168.0.0/24 tcp dport 3000 counter accept
                ip saddr 200.200.200.0/22 tcp dport 3000 counter accept
                # Drop 
                tcp dport 3000 counter drop
        }
        chain forward {
                type filter hook forward priority 0;
        }
        chain output {
                type filter hook output priority 0;
        }
}
</pre>
<p>Reinicie o serviço</p>
<pre class="remontti-code"># systemctl restart nftables</pre>
<p>Verificar as regras:</p>
<pre class="remontti-code"># nft list ruleset</pre>
<h5>Backup</h5>
<p>Não esqueça de colocar o diretório em suas políticas de backups: <strong>/var/lib/krill/</strong>. Uma dica é o tutorial: <a href="https://blog.remontti.com.br/4791" rel="noopener noreferrer" target="_blank">Criando backups de forma simples e enviando para o Telegram ou servidor via SSH</a></p>
<h5>Bônus &#8211; Múltiplos CA</h5>
<p>Se quiser hospedar as CA de outros provedores ou é responsável por mais de um AS, basta adicionar nova CA pelo cliente do terminal, e assim será possível gerenciar pela interface web (lagosta) </p>
<pre class="remontti-code"># krillc add --token seutoken --ca NOME_CA</pre>
<p>Ex:</p>
<pre class="remontti-code"># krillc add --token 38d8ffbe35eaa2391b01681662037600 --ca AS4321</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_multipos_ca.png" alt="" width="691" height="262" class="alignnone size-full wp-image-4909" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_multipos_ca.png 691w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_multipos_ca-300x114.png 300w" sizes="auto, (max-width: 691px) 100vw, 691px" /><br />
<em>Deixou meu agradecimento ao amigo <a href="https://t.me/GlauberMattar" rel="noopener noreferrer" target="_blank">@GlauberMattar</a> por essa dica.</em></p>
<h5>Monitoramento</h5>
<p>Template<strong> Zabbix 5 e 4.4</strong> para monitorar se a porta 3000 está respondendo. <a href="https://blog.remontti.com.br/wp-content/uploads/2020/08/RR_Krill.zip"><strong>RR Krill Zabbix 5</strong></a> / <a href="https://blog.remontti.com.br/wp-content/uploads/2020/08/RR_Krill_zbx4.4.zip"><strong>RR Krill Zabbix 4.4</strong></a></p>
<h5>Leitura recomendada:</h5>
<p><a href="https://blog.remontti.com.br/5720" rel="noopener" target="_blank">Instalação do Routinator 3000, um software para validação RPKI</a></p>
<h3>Erros:</h3>
<p>Verifique se a hora do servidor está correta!</p>
<pre class="remontti-code"># apt install ntpdate
# ntpdate a.ntp.br</pre>
<p>Se desejar garantir coloque no cron para acertar a hora todos dia a meia noite, ex:</p>
<pre class="remontti-code"># cronta -e </pre>
<p>Adicione</p>
<pre class="remontti-code-plain"># m h  dom mon dow   command
00 00  *   *   *     ntpdate a.ntp.br</pre>
<p>Curtiu o conteúdo? Quer me ajudar manter essa p*** ? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>Fontes:<br />
<em>https://github.com/NLnetLabs/krill<br />
https://rpki.readthedocs.io/en/latest/krill/get-started.html<br />
https://registro.br/tecnologia/numeracao/rpki/</em></p>
<p>O post <a href="https://blog.remontti.com.br/4848">Como configurar o RPKI de forma simples, instalação do Krill</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/4848/feed</wfw:commentRss>
			<slash:comments>44</slash:comments>
		
		
			</item>
	</channel>
</rss>
