<?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 buster - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/buster/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/buster</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 buster - Remontti</title>
	<link>https://blog.remontti.com.br/tag/buster</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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 fetchpriority="high" 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="(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 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="(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>NTS – Mantenha a hora certa em seu servidor com segurança!</title>
		<link>https://blog.remontti.com.br/5691</link>
					<comments>https://blog.remontti.com.br/5691#comments</comments>
		
		<dc:creator><![CDATA[Iulisloi Zacarias]]></dc:creator>
		<pubDate>Sat, 26 Jun 2021 13:32:22 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 11]]></category>
		<category><![CDATA[hora]]></category>
		<category><![CDATA[ntp]]></category>
		<category><![CDATA[nts]]></category>
		<category><![CDATA[Segurança]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5691</guid>

					<description><![CDATA[<p>Este tutorial foi escrito pelo meu amigo: Iulisloi Zacarias Manter o relógio dos seus servidores corretamente ajustado pode evitar muita dor de cabeça. Alguns softwares simplesmente podem não funcionar com a hora incorreta, como&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5691">NTS – Mantenha a hora certa em seu servidor com segurança!</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/06/Network-Time-Security.png" alt="" width="720" height="340" class="alignnone size-full wp-image-5695" /></p>
<p><strong>Este tutorial foi escrito pelo meu amigo:</strong> <a href="https://telegram.me/izacarias" target="_blank" rel="noopener">Iulisloi Zacarias</a></p>
<p>Manter o relógio dos seus servidores corretamente ajustado pode evitar muita dor de cabeça. Alguns softwares simplesmente podem não funcionar com a hora incorreta, como exemplo cito aqui o DNSSEC e estrutura de chaves RPKI (nada muito grave, não é mesmo?!). Vale lembrar também que rastrear um problema ou conduzir uma auditoria fica muito mais fácil e assertivo se você manter os registros de data e hora nos <em>logs</em> com a informação correta.</p>
<p>O NTP é um protocolo que é utilizado para sincronizar a hora dos seus servidores e computador com uma fonte confiável de informação de hora, como por exemplo os servidores do projeto NTP.br. Há um tutorial muito completo sobre como manter seus servidores com a data correta <a href="https://blog.remontti.com.br/5608" target="_blank" rel="noopener">aqui</a>.</p>
<p>Mas você já parou para pensar sobre a segurança do NTP. As informações trafegam pela rede de forma aberta (isso não é um problema, já que saber a hora não é nenhum segredo) e sem mecanismos que permitam verificar se ela foi modificada, e isto sim pode ser um problema. Este tipo de ataque é chamado de ataque man-in-the-middle e consiste em um indivíduo mal-intencionado modificar a informação enquanto ela trafega pela rede. Além disso outro ataque bem comum é o “replay” de pacotes, ou seja, um atacante captura um pacote da comunicação original, e em seguida cria vários pacotes com as mesmas informações do pacote original, mas manipulando os campos que ele tem interesse e em seguida envia para as máquinas que ele deseja atacar. Pensando em resolver este problema de segurança, o NTS foi proposto (<a href="https://datatracker.ietf.org/doc/rfc8915/" target="_blank" rel="noopener">RFC 8915</a> https://datatracker.ietf.org/doc/rfc8915/).</p>
<p>Neste tutorial vamos utilizar o NTPsec, que é um “fork” da implementação de referência NTP e vêm ganhando popularidade no mundo Linux por ser umas das primeiras implementações NTP a ter suporte ao NTS.</p>
<p><strong><span style="color: red">É importante lembrar que o NTPsec têm a mesma função do pacote ntp no Debian e você não deve usar os dois ao mesmo tempo!</span></strong></p>
<p>Lembrando que utilizei o Debian 10:</p>
<pre class="remontti-code"># cat /etc/os-release</pre>
<pre class="remontti-code">PRETTY_NAME=&quot;Debian GNU/Linux 10 (buster)&quot;
NAME=&quot;Debian GNU/Linux&quot;
VERSION_ID=&quot;10&quot;
VERSION=&quot;10 (buster)&quot;
VERSION_CODENAME=buster
ID=debian
HOME_URL=&quot;https://www.debian.org/&quot;
SUPPORT_URL=&quot;https://www.debian.org/support&quot;
BUG_REPORT_URL=&quot;https://bugs.debian.org/&quot;</pre>
<p><strong>IMPORTANTE:</strong><br />
O uso do TLS 1.3 é obrigatório para o NTS e portanto este tutorial <strong>NÃO funcionará com Debian 9 ou Ubuntu 16.04</strong>.<br />
Neste tutorial uso o repositório <strong>backports</strong> do Debian. As versões dos programas são testadas no Debian stable, no entanto não são testadas tão extensivamente como as versões dos repositórios padrão do Debian.</p>
<p><strong><span style="color: red">Se você for um usuário iniciante no Debian/Linux, não recomendo fazer esta configuração em um servidor em produção!!!!</span></strong></p>
<p>Sem mais delongas, vamos lá…<br />
<strong>Iniciando</strong><br />
Torne-se root no seu sistema utilizando o comando “su -”</p>
<pre class="remontti-code">$ su -</pre>
<p>(OBS: utilize o comando “su menos”)<br />
Vamos garantir que outros clientes NTP não estejam em execução:</p>
<pre class="remontti-code"># systemctl stop ntp
# systemctl stop chrony
# systemctl stop openntpd
# systemctl stop systemd-timesyncd.service
# systemctl disable ntp
# systemctl disable chrony
# systemctl disable openntpd
# systemctl disable systemd-timesyncd.service
</pre>
<p><strong>Instalação do NTPsec e suas dependências</strong></p>
<p>Como o <strong>NTS</strong> é bem recente, vamos precisar instalar o NTPsec 1.2.0. No momento em que estou escrevendo este tutorial a versão do NTPsec nos repositórios padrão do Debian 10 é a 1.1.3. Nós vamos habilitar o repositório backports (stable-bpo) para que seja possível instalar a versão 1.2.0 do NTPsec no nosso Debian 10. Será necessário instalar também o pacote “ca-certificates” para podermos validar os certificados que os servidores vão nos oferecer.</p>
<pre class="remontti-code"># echo &quot;deb http://deb.debian.org/debian buster-backports main&quot; | tee /etc/apt/sources.list.d/buster-backports.list
# apt update
# apt install -y ntpsec/buster-backports ca-certificates</pre>
<p>Vamos ajustar as configurações do NTPsec para utilizar os servidores da Netnod (uma empresa que mantém servidores de hora para o governo da Suécia) e da Cloudflare. Por enquanto não temos servidores oficiais de hora no Brasil com suporte ao NTS (hey <a href="https://ntp.br/" target="_blank" rel="noopener">NTP.br</a>, vamos?!). Você pode incluir outros servidores NTS quando eles forem disponibilizados. Seguindo a metodologia do <a href="https://telegram.me/remontti" target="_blank" rel="noopener">Remontti</a>, vamos criar um arquivo para a nossa configuração e manter cópia do arquivo de configuração original:</p>
<pre class="remontti-code"># mv /etc/ntpsec/ntp.conf /etc/ntpsec/ntp.conf.orig
# vim /etc/ntpsec/ntp.conf</pre>
<p>Conteúdo do arquivo:</p>
<pre class="remontti-code"># /etc/ntpsec/ntp.conf, configuração para o ntpd; veja ntp.conf(5) para ajuda
# Configuraçao do drift file para o NTPsec computar os erros do relógio do seu computador
driftfile /var/lib/ntpsec/ntp.drift
leapfile /usr/share/zoneinfo/leap-seconds.list

# Configuracao do diretório de log
statsdir /var/log/ntpsec/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# Lista dos servidores com suporte NTS, você pode adicionar mais servidores à lista
server nts.netnod.se:4460 nts iburst
server sth1.nts.netnod.se:4460 nts iburst
server sth2.nts.netnod.se:4460 nts iburst
server time.cloudflare.com:4460 nts

# Permite trocar informações de hora com qualquer computador mas não permite configuração
# Segundo o guia do netnod essa configuração atende 99% dos casos ;-)
restrict default kod limited nomodify nopeer noquery
restrict -6 default kod limited nomodify nopeer noquery

# Permite consultas locais
restrict 127.0.0.1
restrict -6 ::1</pre>
<p>Crie o arquivo ntp.drift e o diretório para os logs e reinicie o serviço</p>
<pre class="remontti-code"># touch /var/lib/ntpsec/ntp.drift
# chown ntpsec:ntpsec /var/lib/ntpsec/ntp.drift
# mkdir /var/log/ntpsec
# chown -R ntpsec:ntpsec /var/log/ntpsec
# systemctl restart ntpsec</pre>
<p>Vamos verificar com quais servidores estamos tentando sincronizar:</p>
<pre class="remontti-code"># ntpq -p -u -w</pre>
<p>Irá listar algo como</p>
<pre class="remontti-code">     remote                                   refid      st t when poll reach   delay   offset   jitter
=======================================================================================================
+sth-ts.nts.netnod.se                    96.180.207.109   2 8   22   64   77 310.16ms 7.2680ms 10.631ms
*ntsts.sth1.ntp.se                       96.180.207.109   2 8   18   64   77 307.50ms 6.5467ms 13.046ms
+sth2-ts.nts.netnod.se                   156.133.237.214  2 8   22   64   77 305.86ms 4.2228ms 9.6702ms
-162.159.200.1                           10.191.8.4       3 8   23   64   77 61.953ms -31.52ms 19.442ms</pre>
<p>Verifique a coluna “st”. Esta coluna indica o stratum (ou estrato) e o valor 16 indica que o servidor está inoperante. No meu exemplo todos os servidores estão em operação pois os valores são 2, 2, 2, e 3. Veja também que há uma linha que inicia com um asterisco (*ntsts.sth1.ntp.se), esta informação indica que o NTPsec decidiu usar este servidor como principal referência para sincronização.</p>
<p>A coluna “refid” indica o servidor de referência do servidor NTS que você está consultando, isto é, onde o servidor NTS busca sua informação de hora. Se você observar o valor “.NTS.” na coluna “refid” no lugar dos IPs ou nomes de servidores, significa que o NTPsec ainda está negociando a conexão segura com o servidor e ainda não foi capaz de buscar informações de hora. Outra informação importante está na coluna “t” (quarta coluna da esquerda para a direita) que indica a quantidade de “cookies” que seu computador têm para usar com o servidor. Este valor deve ser 8. Números menores na coluna “t” indica conexões interrompidas (o valor 7 pode indicar que uma requisição está em progresso).</p>
<p>Por fim se tudo estiver funcionando corretamente, você pode incluir o NTPsec na inicialização do Linux:</p>
<pre class="remontti-code"># systemctl enable ntpsec</pre>
<p>É isso, agora a sincronização do seu relógio está protegida pela tecnologia mais avançada em termos de NTP <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>OBS:</strong> se a data do computador estiver muito atrasada ou muito adiantada, o NTS pode encontrar problemas em estabelecer uma conexão com o servidor de chaves do NTS e neste caso você precisa ajustar a data do servidor para um valor aproximado do atual (um dia de atraso não chega a ser um problema). Use o comando abaixo para ajustar a data, escrevendo a data no formato YYYYMMDD (Ano com quatro dígitos, Mês com dois dígitos e Dia com dois dígitos).</p>
<pre class="remontti-code">date +%Y%m%d -s &quot;20210617&quot;</pre>
<h4>Criando um servidor NTS</h4>
<p>Como dito anteriormente, o NTS é uma forma segura de sincronizar a hora do seu computador, para tanto ele usa uma camada de segurança baseada em TLS 1.3 e assim é OBRIGATÓRIO que você use um certificado digital. O certificado não pode ser autoassinado pois não funcionará (até funciona, com algumas “gambiarras”). A maneira mais fácil é usando um certificado Let’s Encrypt, mas vai precisar que seu servidor tenham um nome FQDN (ou seja, precisará de um domínio registrado, por exemplo: nts.meuservidor.com.br).<br />
Só para facilitar, lista dos requisitos:</p>
<ul>
<li>Debian 10</li>
<li>Certificado Digital</li>
<li>Um nome FQDN (domínio registrado)</li>
<li>Cliente NTS já configurado e funcionando</li>
</ul>
<p>Se você já tem um certificado válido no seu servidor e você vai usar o mesmo nome de máquina para o servidor NTS, você pode reusar o mesmo certificado. Caso contrário será necessário usar o certbot para solicitar um novo certificado.</p>
<p>Instale o certbot para obtermos o certificado digital:</p>
<pre class="remontti-code"># apt install certbot</pre>
<p><strong>Pare qualquer servidor HTTP antes de solicitar o novo certificado.</strong></p>
<pre class="remontti-code">systemctl stop apache2
systemctl stop nginx</pre>
<p>Solicite um novo certificado:</p>
<pre class="remontti-code"># certbot certonly --standalone</pre>
<p>Preencha os dados do seu certificado (no meu caso eu chamei meu servidor de nts.remontti.com.br, adapte para seu servidor) e responda o resto das perguntas como o modelo abaixo</p>
<pre class="remontti-code">Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices) (Enter &#039;c&#039; to
cancel): seumelhoremail@example.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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 at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing 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
Please enter in your domain name(s) (comma and/or space separated)  (Enter &#039;c&#039;
to cancel): nts.remontti.com.br
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for nts.remontti.com.br
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/nts.remontti.com.br/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/nts.remontti.com.br/privkey.pem
   Your cert will expire on 2021-09-21. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   &quot;certbot renew&quot;
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - 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><strong>Agora você á pode reiniciar o servidor HTTP, caso tenha parado o serviço antes de solicitar o certificado.</strong></p>
<p>Vamos copiar o certificado para a pasta do NTPsec para garantir a segurança do mesmo, afinal não queremos dar permissões em excesso para o arquivo possibilitando que alguém roube nossa chave privada invalidando toda nossa segurança.<br />
<strong>Não esqueça de ajustar o caminho dos arquivos do certificado digital, pois o certbot usa o nome do domínio para criar a estrutura de pastas utilizada para armazenar estes arquivos.</strong></p>
<pre class="remontti-code"># cp -v /etc/letsencrypt/live/nts.remontti.com.br/privkey.pem /etc/ntpsec/key.pem
# cp -v /etc/letsencrypt/live/nts.remontti.com.br/fullchain.pem /etc/ntpsec/cert-chain.pem
# chown ntpsec:ntpsec /etc/ntpsec/key.pem
# chown ntpsec:ntpsec /etc/ntpsec/cert-chain.pem
# chmod 600 /etc/ntpsec/key.pem
# chmod 600 /etc/ntpsec/cert-chain.pem</pre>
<p>Para ativar o servidor NTS no NTPsec, vamos editar o arquivo de configuração que criamos anteriormente</p>
<pre class="remontti-code"># vim /etc/ntpsec/ntp.conf</pre>
<p>Ao final do arquivo /etc/ntpsec/ntp.conf por volta da linha 28 (ative o número de linhas no vim com o comando &#8220;:set nu&#8221;), adicione as configurações abaixo:</p>
<pre class="remontti-code"># Servidor NTS
nts enable
nts key /etc/ntpsec/key.pem
nts cert /etc/ntpsec/cert-chain.pem
nts cookie /var/lib/ntpsec/nts-keys</pre>
<p>O conteúdo do arquivo ficará semelhante ao reproduzido abaixo:</p>
<pre class="remontti-code"># Configuraçao do drift file para o NTPsec computar os erros do relógio do seu computador
driftfile /var/lib/ntpsec/ntp.drift
leapfile /usr/share/zoneinfo/leap-seconds.list

# Configuracao do diretório de log
statsdir /var/log/ntpsec/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# Lista dos servidores com suporte NTS, você pode adicionar mais servidores à lista
server nts.netnod.se:4460 nts iburst
server sth1.nts.netnod.se:4460 nts iburst
server sth2.nts.netnod.se:4460 nts iburst
server time.cloudflare.com:4460 nts

# Permite trocar informações de hora com qualquer computador mas não permite configuração
# Segundo o guia do netnod essa configuração atende 99% dos casos ;-)
restrict default kod limited nomodify nopeer noquery
restrict -6 default kod limited nomodify nopeer noquery

# Permite consultas locais
restrict 127.0.0.1
restrict -6 ::1

nts enable
nts key /etc/ntpsec/key.pem
nts cert /etc/ntpsec/cert-chain.pem
nts cookie /var/lib/ntpsec/nts-keys</pre>
<p>Crie o arquivo utilizado pelo NTPsec para armazenar os cookies dos clientes e configure as permissões do mesmo:</p>
<pre class="remontti-code"># touch /var/lib/ntpsec/nts-keys
# chown ntpsec:ntpsec /var/lib/ntpsec/nts-keys
# chmod 600 /var/lib/ntpsec/nts-keys</pre>
<p>Por fim, reinicie o NTPsec:</p>
<pre class="remontti-code"># systemctl restart ntpsec</pre>
<p>Para verificar se tudo está correto, use o comando abaixo:</p>
<pre class="remontti-code"># systemctl status ntpsec</pre>
<p>Verifique o campo “Active:” a informação “active (running)” indica que o NTPsec está em execução. Não se assuste com algumas linhas em vermelho, se sua saída for semelhante ao texto abaixo (principalmente a última linha “NTSs: Private Key OK”), tudo está bem:</p>
<pre class="remontti-code">jun 18 16:49:44 nts ntpd[54392]: NTSs: starting NTS-KE server listening on port 4460
jun 18 16:49:44 nts ntpd[54392]: NTSs: OpenSSL security level is 2
jun 18 16:49:44 nts ntpd[54392]: NTSs: starting NTS-KE server listening on port 4460
jun 18 16:49:44 nts ntpd[54392]: NTSs: listen4 worked
jun 18 16:49:44 nts ntpd[54392]: NTSs: listen6 worked
jun 18 16:49:44 nts ntpd[54392]: NTSc: Using system default root certificates.
jun 18 16:49:44 nts ntpd[54392]: NTSs: loaded certificate (chain) from /etc/ntpsec/cert-chain.pem
jun 18 16:49:44 nts ntpd[54392]: NTSs: loaded private key from /etc/ntpsec/key.pem
jun 18 16:49:44 nts ntpd[54392]: NTSs: Private Key OK</pre>
<p>Caso não veja estas informações com o comando acima, você pode tentar usar o comando o</p>
<pre class="remontti-code">journalctl -u ntpsec.service</pre>
<p>para verificar as informação de inicialização do NTPsec e rastrear possíveis erros.</p>
<p><strong>Firewall com nftables</strong></p>
<p>Nosso servidor está configurado e funcionando e apesar de o NTS ser muito mais seguro que o NTP, ainda assim não custa nada implementarmos um Firewall. Vamos utilizar o mesmo script do tutorial que o @Remontti preparou para o NTP.<br />
Instale o nftables e o habilite para inciar com o sistema</p>
<pre class="remontti-code"># apt install -y nftables
# systemctl enable nftables</pre>
<p>Crie o arquivo com as regras do nftables. Observe que temos duas listas chamadas acesso-ntp-local-v4 e acesso-ntp-local-v6 onde informamos todos os IPs que podem solicitar informação de hora na nossa rede (Informe os IPs de sua rede!).</p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<pre class="remontti-code">#!/usr/sbin/nft -f

flush ruleset
 
table inet filter {
 
    # Permite os ips da sua rede
    set acesso-ntp-v4 {
        type ipv4_addr
        flags interval
        elements = { 127.0.0.1, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, 100.64.0.0/10, 200.200.200.0/22 }
    }
    set acesso-ntp-v6 {
        type ipv6_addr
        flags interval
        elements = { ::1,  2804:ff4:bebe::/48 }
    }
 
    chain input {
        type filter hook input priority 0;
 
        # NTP
        ip saddr  @acesso-ntp-v4 tcp dport 4460 counter accept
        ip saddr  @acesso-ntp-v4 udp dport 123 counter accept
        ip6 saddr @acesso-ntp-v6 tcp dport 4460 counter accept
        ip6 saddr @acesso-ntp-v6 udp dport 123 counter accept
        tcp dport 4460 counter drop
        udp dport 123 counter drop
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}</pre>
<p>Reinicie o nftables em seguida verifique se as regras foram carregadas:</p>
<pre class="remontti-code"># systemctl restart nftables
# nft list ruleset</pre>
<h4>Script para renovação automática do certificado</h4>
<p>O certificado digital oferecido gratuitamente pelo Let&#8217;s Encrypt tem validade de 90 dias. Para evitar que o nosso servidor NTS fique com um certificado expirado (vencido), vamos criar um script de renovação que será executado periodicamente pelo cron.</p>
<p>Crie o arquivo renovassl.sh</p>
<pre class="remontti-code"># vim /etc/letsencrypt/renovassl.sh</pre>
<p>com o seguinte conteúdo:</p>
<pre class="remontti-code">#!/bin/bash

# Variaveis
CHAINFILE=$(cat /etc/letsencrypt/renewal/* | awk -F &#039;=&#039; &#039;$1~/fullchain/{print $2;exit}&#039;)
KEYFILE=$(cat /etc/letsencrypt/renewal/* | awk -F &#039;=&#039; &#039;$1~/privkey/{print $2;exit}&#039;)

# Para temporariamente o servidor web
# Precisamos da porta 80 e 443 livre para o certbot conseguir renovar o certificado
# - Remova o comentário (#) da linha correspondente ao seu servidor web
# /usr/bin/systemctl stop apache2
# /usr/bin/systemctl stop nginx

# Permite o certbot se conectar a porta 80 e 443 para renovar o certificado
nft add rule inet filter input tcp dport 80 counter accept
nft add rule inet filter input tcp dport 443 counter accept


# Aguarda 10 seg (tempo do apache parar) 
sleep 10

# Renova o certificado
/usr/bin/certbot -q renew

# Aguarda o certificado renovar
sleep 30

# Aguarda 2 seg
sleep 2
 
# Restarta o servidor web
# Caso você tenha um servidor web (Apache, Nginx, Lighttpd...), reinicie o serviço
# /usr/bin/systemctl restart apache2
# /usr/bin/systemctl restart nginx

# Para o serviço ntpsec
/usr/bin/systemctl stop ntpsec

# Copia cadeia de certificado e chave privada para o diretorio do NTPsec
/usr/bin/cp $CHAINFILE /etc/ntpsec/cert-chain.pem
/usr/bin/cp $KEYFILE /etc/ntpsec/key.pem

# Altera as permissoes para o usuário speedtest conseguir ler os certificados
/usr/bin/chown ntpsec:ntpsec /etc/ntpsec/cert-chain.pem
/usr/bin/chown ntpsec:ntpsec /etc/ntpsec/key.pem
/usr/bin/chmod 600 /etc/ntpsec/cert-chain.pem
/usr/bin/chmod 600 /etc/ntpsec/key.pem

# Reinicia o serviço NTPsec
/usr/bin/systemctl start ntpsec

# Reinicia o nftables para restaurar as regras
/usr/bin/systemctl restart nftables</pre>
<p><strong>Lembre-se de ajustar o script conforme sua necessidade. Você pode ajustar o caminho da chave privada e da cadeia de certificados atribuindo o caminho dos arquivos correspondentes às variávies CHAINFILE e KEYFILE.</strong></p>
<p>Dê permissão de execução ao arquivo renovassl.sh</p>
<pre class="remontti-code"># chmod +x /etc/letsencrypt/renovassl.sh</pre>
<p>E adicione o script ao cron para que a tarefa seja executada periodicamente:</p>
<pre class="remontti-code"># echo &#039;00 00   1 * *   root    /etc/letsencrypt/renovassl.sh&#039; | tee -a /etc/crontab</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-plXjiOWz" 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? Quer ajudar 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 ficaremos felizes em saber que ajudamos. 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>O post <a href="https://blog.remontti.com.br/5691">NTS – Mantenha a hora certa em seu servidor com segurança!</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5691/feed</wfw:commentRss>
			<slash:comments>2</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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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-KKDFe4Xl" 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>Servidor WEB NGINX + PHP + PostgreSQL + phpPgAdmin + Letsencrypt no Debian 10 Buster (LNPP)</title>
		<link>https://blog.remontti.com.br/5487</link>
					<comments>https://blog.remontti.com.br/5487#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 07 Apr 2021 20:56:22 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[certificado]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 10]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[letsencrypt]]></category>
		<category><![CDATA[LNMP]]></category>
		<category><![CDATA[lnpp]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[pgadmin]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php-fpm]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[phppgadmin]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[postgresql]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5487</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/5487">Servidor WEB NGINX + PHP + PostgreSQL + phpPgAdmin + Letsencrypt no Debian 10 Buster (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/04/NGINX-LNNP.png" alt="" width="720" height="340" class="alignnone size-full wp-image-5514" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/NGINX-LNNP.png 720w, https://blog.remontti.com.br/wp-content/uploads/2021/04/NGINX-LNNP-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/04/NGINX-LNNP-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/2966" rel="noopener noreferrer" target="_blank">Debian 10 Stretch / Instalação Limpa</a></strong></p>
<h3>NGINX</h3>
<p><a href="https://www.nginx.com" rel="noopener" target="_blank">https://www.nginx.com</a></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/11/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 (11.11 (Debian 11.11-0+deb10u1))
Digite &quot;help&quot; para ajuda.
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
$ dropuser teste</pre>
<p>Volte para root</p>
<pre class="remontti-code">$ exit</pre>
<h3>PHP7</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.3-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.3-fpm</pre>
<p>Vamos criar um arquivo em PHP para testa se nosso NGINX está interpretando o PHP.</p>
<pre class="remontti-code"># echo &#039;&lt;?php phpinfo();&#039; &gt;&gt; /var/www/html/teste.php</pre>
<p>Acesse em seu navegador http://IP-SERVIDOR/teste.php<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx-php7.png" alt="" width="1173" height="899" class="alignnone size-full wp-image-5473" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx-php7.png 1173w, https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx-php7-300x230.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx-php7-1024x785.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/04/nginx-php7-768x589.png 768w" sizes="auto, (max-width: 1173px) 100vw, 1173px" /><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;

    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.3-fpm.sock;
    }
}</pre>
<pre class="remontti-code"># vim /etc/nginx/sites-available/sub2e3.conf</pre>
<p>Neste ex: vou representar o <em>sub2.remontti.com.br</em> e <em>sub3.remontti.com.br</em></p>
<pre class="remontti-code">server {
    listen 80;
    listen [::]:80;

    root /var/www/sub2e3;
    index index.php index.html index.htm;

    server_name sub2.remontti.com.br sub3.remontti.com.br;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.3-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 até pode ser instalado via apt, porém seu empacotamento esta na versão 5, vou baixar a versão mais recente direta do <a href="https://github.com/phppgadmin/phppgadmin/releases" rel="noopener" target="_blank">https://github.com/phppgadmin/phppgadmin/releases</a> hoje (abril 2021) na versão 7.13.0</p>
<pre class="remontti-code"># apt install wget 
# cd /tmp/
# wget https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.gz
# tar vxf phpPgAdmin-7.13.0.tar.gz
# mv /tmp/phpPgAdmin-7.13.0 /usr/share/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;servers&#039;][0][&#039;host&#039;] = &#039;localhost&#039;;
$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;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.3-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.3-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 http://IP-SERVIDOR/phppgadmin<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/04/phppgadmin7.png" alt="" width="1033" height="340" class="alignnone size-full wp-image-5495" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/phppgadmin7.png 1033w, https://blog.remontti.com.br/wp-content/uploads/2021/04/phppgadmin7-300x99.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/04/phppgadmin7-1024x337.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/04/phppgadmin7-768x253.png 768w" sizes="auto, (max-width: 1033px) 100vw, 1033px" /><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/04/postgres2.png" alt="" width="1401" height="576" class="alignnone size-full wp-image-5511" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/04/postgres2.png 1401w, https://blog.remontti.com.br/wp-content/uploads/2021/04/postgres2-300x123.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/04/postgres2-1024x421.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/04/postgres2-768x316.png 768w" sizes="auto, (max-width: 1401px) 100vw, 1401px" /></p>
<h3>LETSENCRYPT</h3>
<p>Criando certificado valido para nossos domínios.</p>
<pre class="remontti-code"># apt install letsencrypt python-certbot-nginx</pre>
<p>Tenha seu(s) domínio(s) configurado em /etc/nginx/sites-enabled/</p>
<pre class="remontti-code"># letsencrypt</pre>
<p>Retorno do questionário:</p>
<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): dev@null.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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 at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing 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

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: sub1.remontti.com.br
2: sub2.remontti.com.br   &lt;&lt; CASO VOCÊ TENHA MAIS DE UM SUB CONFIGURADO
3: sub3.remontti.com.br    &lt;&lt; IRÁ APARECER AQUI 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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 &lt;&lt; ESCOLHA QUAIS VC DESEJA
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for sub1.remontti.com.br
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/sub1.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you&#039;re confident your site works on HTTPS. You can undo this
change by editing your web server&#039;s configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press &#039;c&#039; to cancel): 2 &lt;&lt; SE QUISER FORCAR SEMPRE HTTPS
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/sub1.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled
https://sub1.remontti.com.br

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=sub1.remontti.com.br
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/sub1.remontti.com.br/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/sub1.remontti.com.br/privkey.pem
   Your cert will expire on 2021-07-05. 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;
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - 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>Você pode também criar o certificado diretamente para um domínio. </p>
<pre class="remontti-code"># letsencrypt --authenticator standalone --installer nginx -d sub1.remontti.com.br</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-V86mwLA0" 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>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"># echo &#039;00 00   1 * *   root    /usr/bin/certbot -q renew&#039; &gt;&gt; /etc/crontab
# systemctl restart cron</pre>
<p>Caso não renovar apenas rode o comando letsencrypt novamente. </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/5487">Servidor WEB NGINX + PHP + PostgreSQL + phpPgAdmin + Letsencrypt no Debian 10 Buster (LNPP)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5487/feed</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Como instalar Netbox, ferramenta grátis para documentar sua rede</title>
		<link>https://blog.remontti.com.br/5412</link>
					<comments>https://blog.remontti.com.br/5412#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 19 Mar 2021 20:06:22 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[documentação]]></category>
		<category><![CDATA[netbox]]></category>
		<category><![CDATA[nginx]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5412</guid>

					<description><![CDATA[<p>Netbox é um aplicativo web de código aberto projetado para ajudar a gerenciar e documentar redes de computadores. Concebido inicialmente pela equipe de engenharia de rede da DigitalOcean , o NetBox foi desenvolvido especificamente&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5412">Como instalar Netbox, ferramenta grátis para documentar sua rede</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/03/netbox.png" alt="" width="416" height="121" class="alignnone size-full wp-image-5421" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox.png 416w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-300x87.png 300w" sizes="auto, (max-width: 416px) 100vw, 416px" /><br />
<a href="https://netbox.readthedocs.io/en/stable/" rel="noopener" target="_blank">Netbox</a> é um aplicativo web de código aberto projetado para ajudar a gerenciar e documentar redes de computadores. Concebido inicialmente pela equipe de engenharia de rede da DigitalOcean , o NetBox foi desenvolvido especificamente para atender às necessidades dos engenheiros de rede e infraestrutura. Abrange os seguintes aspectos de gerenciamento de rede:</p>
<p>Gerenciamento de endereço IP (IPAM) &#8211; redes e endereços IP, VRFs e VLANs</p>
<ul>
<li><strong>Racks de equipamentos</strong> &#8211; organizados por grupo e local</li>
<li><strong>Dispositivos</strong> &#8211; Tipos de dispositivos e onde estão instalados</li>
<li><strong>Conexões</strong> &#8211; Rede, console e conexões de energia entre dispositivos</li>
<li><strong>Virtualização</strong> &#8211; máquinas virtuais e clusters</li>
<li><strong>Circuitos de dados</strong> &#8211; circuitos e provedores de comunicações de longa distância</li>
<li><strong>Segredos</strong> &#8211; armazenamento criptografado de credenciais confidenciais</li>
</ul>
<p><strong>Requisitos:</strong><br />
Como de costume vou realizar a <a href="https://blog.remontti.com.br/2966" rel="noopener" target="_blank">instalação no<strong> Debian 10</strong> limpo </a>(sem pacotes extras)<br />
Vire root da forma correta, colocando após os su o &#8220;-&#8220;. </p>
<pre class="remontti-code">su -</pre>
<p>Instale os pacotes que serão requisitos.</p>
<pre class="remontti-code"># apt install vim net-tools wget redis-server supervisor\
  postgresql-contrib postgresql libpq-dev gcc\
  python-minimal python3 python3-pip python3-venv\
  python3-dev build-essential libxml2-dev libxslt1-dev\
  libffi-dev libssl-dev zlib1g-dev graphviz\
  nginx redis python3-setuptools</pre>
<p>Vire o usuário postgres, para poder criar nosso banco de dados.</p>
<pre class="remontti-code"># su - postgres</pre>
<p>Entre no terminal de comandos do postgres</p>
<pre class="remontti-code">$ psql</pre>
<p>Não esqueça de alterar a <strong>senha</strong>.</p>
<pre class="remontti-code">postgres=# CREATE DATABASE netboxdb;
postgres=# CREATE USER netboxuser WITH PASSWORD &#039;senha&#039;;
postgres=# GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netboxuser;
postgres=# exit</pre>
<p> Verifique ser o serviço redis esta respondendo.</p>
<pre class="remontti-code">$ redis-cli ping</pre>
<p>Deve retornar : <strong>PONG</strong><br />
Retorne ao usuario root</p>
<pre class="remontti-code">exit</pre>
<p>Atualize o pip</p>
<pre class="remontti-code"># pip3 install --upgrade pip</pre>
<p>Agora vamos baixar o projeto NetBox. Verifique em <a href="https://github.com/netbox-community/netbox/releases" rel="noopener" target="_blank">https://github.com/netbox-community/netbox/releases</a> não existe uma nova versão.<br />
Entre em tmp (diretório temporário do linux que após um reboot é apagado) em seguida fizemos o download, extraímos, movemos para o diretório correto bem como ajustamos permissões do diretório que faremos upload de arquivos.</p>
<pre class="remontti-code"># cd /tmp
# wget https://github.com/netbox-community/netbox/archive/refs/tags/v2.10.8.tar.gz
# tar vxf v2.10.8.tar.gz
# mv netbox*/ /opt/netbox
# cd /opt/netbox/
# chown www-data. /opt/netbox/netbox/media/ -R</pre>
<p>Execute o comando abaixo para gerar nossa SECRET KEY que iremos usar em seguida.</p>
<pre class="remontti-code"># /opt/netbox/netbox/generate_secret_key.py </pre>
<p>Ex.:</p>
<pre class="remontti-code-plain">T7TE07O$j^Jqf9(*20q8M5kG4%NBIci#gEEn0$wuw*qodT7Lfo</pre>
<p>Copie o arquivo de configuração exemplo para ajustar com suas infomações</p>
<pre class="remontti-code"># cp /opt/netbox/netbox/netbox/configuration.example.py /opt/netbox/netbox/netbox/configuration.py
# vim /opt/netbox/netbox/netbox/configuration.py</pre>
<p>Localize as linhas como exemplo abaixo e altere os valores.</p>
<pre class="remontti-code">ALLOWED_HOSTS = [&#039;localhost&#039;,&#039;netbox.remontti.com.br&#039;]

DATABASE = {
    &#039;NAME&#039;: &#039;netboxdb&#039;,       # Database name
    &#039;USER&#039;: &#039;netboxuser&#039;,     # PostgreSQL username
    &#039;PASSWORD&#039;: &#039;senha&#039;,      # PostgreSQL password
    &#039;HOST&#039;: &#039;localhost&#039;,      # Database server
    &#039;PORT&#039;: &#039;&#039;,               # Database port (leave blank for default)
    &#039;CONN_MAX_AGE&#039;: 300,      # Max database connection age
}
# Gerado com o comando /opt/netbox/netbox/generate_secret_key.py
SECRET_KEY = &#039;T7TE07O$j^Jqf9(*20q8M5kG4%NBIci#gEEn0$wuw*qodT7Lfo&#039;

LOGIN_REQUIRED = True</pre>
<p>Instalaremos os pacotes do py requeiridos.</p>
<pre class="remontti-code"># pip3 install -r /opt/netbox/requirements.txt</pre>
<p>Vamos a instalção do bichão!</p>
<pre class="remontti-code"># cd /opt/netbox/netbox/
# python3 manage.py migrate</pre>
<pre class="remontti-code-plain">Operations to perform:
  Apply all migrations: admin, auth, circuits, contenttypes, dcim, extras, ipam, secrets, sessions, taggit, tenancy, users, virtualization
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying tenancy.0001_initial... OK
  Applying tenancy.0002_tenant_group_optional... OK
  Applying tenancy.0003_unicode_literals... OK
  Applying taggit.0001_initial... OK
  Applying taggit.0002_auto_20150616_2121... OK
  Applying tenancy.0004_tags... OK
  Applying tenancy.0005_change_logging... OK
  Applying dcim.0001_initial... OK
  Applying ipam.0001_initial... OK
  Applying dcim.0002_auto_20160622_1821... OK
  Applying extras.0001_initial... OK
  Applying extras.0002_custom_fields... OK
  Applying extras.0003_exporttemplate_add_description... OK
  Applying extras.0004_topologymap_change_comma_to_semicolon... OK
  Applying extras.0005_useraction_add_bulk_create... OK
  Applying extras.0006_add_imageattachments... OK
  Applying extras.0007_unicode_literals... OK
  Applying extras.0008_reports... OK
  Applying extras.0009_topologymap_type... OK
  Applying extras.0010_customfield_filter_logic... OK
  Applying extras.0011_django2... OK
  Applying extras.0012_webhooks... OK
  Applying extras.0013_objectchange... OK
  Applying ipam.0002_vrf_add_enforce_unique... OK
  Applying dcim.0003_auto_20160628_1721... OK
  Applying dcim.0004_auto_20160701_2049... OK
  Applying dcim.0005_auto_20160706_1722... OK
  Applying dcim.0006_add_device_primary_ip4_ip6... OK
  Applying dcim.0007_device_copy_primary_ip... OK
  Applying dcim.0008_device_remove_primary_ip... OK
  Applying dcim.0009_site_32bit_asn_support... OK
  Applying dcim.0010_devicebay_installed_device_set_null... OK
  Applying ipam.0003_ipam_add_vlangroups... OK
  Applying ipam.0004_ipam_vlangroup_uniqueness... OK
  Applying ipam.0005_auto_20160725_1842... OK
  Applying ipam.0006_vrf_vlan_add_tenant... OK
  Applying ipam.0007_prefix_ipaddress_add_tenant... OK
  Applying ipam.0008_prefix_change_order... OK
  Applying ipam.0009_ipaddress_add_status... OK
  Applying ipam.0010_ipaddress_help_texts... OK
  Applying ipam.0011_rir_add_is_private... OK
  Applying dcim.0011_devicetype_part_number... OK
  Applying dcim.0012_site_rack_device_add_tenant... OK
  Applying dcim.0013_add_interface_form_factors... OK
  Applying dcim.0014_rack_add_type_width... OK
  Applying dcim.0015_rack_add_u_height_validator... OK
  Applying dcim.0016_module_add_manufacturer... OK
  Applying dcim.0017_rack_add_role... OK
  Applying dcim.0018_device_add_asset_tag... OK
  Applying dcim.0019_new_iface_form_factors... OK
  Applying dcim.0020_rack_desc_units... OK
  Applying dcim.0021_add_ff_flexstack... OK
  Applying dcim.0022_color_names_to_rgb... OK
  Applying ipam.0012_services... OK
  Applying ipam.0013_prefix_add_is_pool... OK
  Applying ipam.0014_ipaddress_status_add_deprecated... OK
  Applying ipam.0015_global_vlans... OK
  Applying ipam.0016_unicode_literals... OK
  Applying ipam.0017_ipaddress_roles... OK
  Applying ipam.0018_remove_service_uniqueness_constraint... OK
  Applying dcim.0023_devicetype_comments... OK
  Applying dcim.0024_site_add_contact_fields... OK
  Applying dcim.0025_devicetype_add_interface_ordering... OK
  Applying dcim.0026_add_rack_reservations... OK
  Applying dcim.0027_device_add_site... OK
  Applying dcim.0028_device_copy_rack_to_site... OK
  Applying dcim.0029_allow_rackless_devices... OK
  Applying dcim.0030_interface_add_lag... OK
  Applying dcim.0031_regions... OK
  Applying dcim.0032_device_increase_name_length... OK
  Applying dcim.0033_rackreservation_rack_editable... OK
  Applying dcim.0034_rename_module_to_inventoryitem... OK
  Applying dcim.0035_device_expand_status_choices... OK
  Applying dcim.0036_add_ff_juniper_vcp... OK
  Applying dcim.0037_unicode_literals... OK
  Applying dcim.0038_wireless_interfaces... OK
  Applying dcim.0039_interface_add_enabled_mtu... OK
  Applying dcim.0040_inventoryitem_add_asset_tag_description... OK
  Applying dcim.0041_napalm_integration... OK
  Applying dcim.0042_interface_ff_10ge_cx4... OK
  Applying dcim.0043_device_component_name_lengths... OK
  Applying virtualization.0001_virtualization... OK
  Applying ipam.0019_virtualization... OK
  Applying ipam.0020_ipaddress_add_role_carp... OK
  Applying dcim.0044_virtualization... OK
  Applying dcim.0045_devicerole_vm_role... OK
  Applying dcim.0046_rack_lengthen_facility_id... OK
  Applying dcim.0047_more_100ge_form_factors... OK
  Applying dcim.0048_rack_serial... OK
  Applying dcim.0049_rackreservation_change_user... OK
  Applying dcim.0050_interface_vlan_tagging... OK
  Applying dcim.0051_rackreservation_tenant... OK
  Applying dcim.0052_virtual_chassis... OK
  Applying dcim.0053_platform_manufacturer... OK
  Applying dcim.0054_site_status_timezone_description... OK
  Applying dcim.0055_virtualchassis_ordering... OK
  Applying dcim.0056_django2... OK
  Applying dcim.0057_tags... OK
  Applying dcim.0058_relax_rack_naming_constraints... OK
  Applying dcim.0059_site_latitude_longitude... OK
  Applying dcim.0060_change_logging... OK
  Applying dcim.0061_platform_napalm_args... OK
  Applying extras.0014_configcontexts... OK
  Applying extras.0015_remove_useraction... OK
  Applying extras.0016_exporttemplate_add_cable... OK
  Applying extras.0017_exporttemplate_mime_type_length... OK
  Applying extras.0018_exporttemplate_add_jinja2... OK
  Applying extras.0019_tag_taggeditem... OK
  Applying dcim.0062_interface_mtu... OK
  Applying dcim.0063_device_local_context_data... OK
  Applying dcim.0064_remove_platform_rpc_client... OK
  Applying dcim.0065_front_rear_ports... OK
  Applying circuits.0001_initial... OK
  Applying circuits.0002_auto_20160622_1821... OK
  Applying circuits.0003_provider_32bit_asn_support... OK
  Applying circuits.0004_circuit_add_tenant... OK
  Applying circuits.0005_circuit_add_upstream_speed... OK
  Applying circuits.0006_terminations... OK
  Applying dcim.0066_cables...
    Adding console connections... 0 cables created
    Adding power connections... 0 cables created
    Adding interface connections... 0 cables created
 OK
  Applying circuits.0007_circuit_add_description... OK
  Applying circuits.0008_circuittermination_interface_protect_on_delete... OK
  Applying circuits.0009_unicode_literals... OK
  Applying circuits.0010_circuit_status... OK
  Applying circuits.0011_tags... OK
  Applying circuits.0012_change_logging... OK
  Applying circuits.0013_cables...
    Adding circuit terminations... 0 cables created
 OK
  Applying circuits.0014_circuittermination_description... OK
  Applying circuits.0015_custom_tag_models... OK
  Applying circuits.0016_3569_circuit_fields... OK
  Applying circuits.0017_circuittype_description... OK
  Applying circuits.0018_standardize_description... OK
  Applying circuits.0019_nullbooleanfield_to_booleanfield... OK
  Applying virtualization.0002_virtualmachine_add_status... OK
  Applying virtualization.0003_cluster_add_site... OK
  Applying virtualization.0004_virtualmachine_add_role... OK
  Applying virtualization.0005_django2... OK
  Applying virtualization.0006_tags... OK
  Applying virtualization.0007_change_logging... OK
  Applying virtualization.0008_virtualmachine_local_context_data... OK
  Applying virtualization.0009_custom_tag_models... OK
  Applying virtualization.0010_cluster_add_tenant... OK
  Applying virtualization.0011_3569_virtualmachine_fields... OK
  Applying tenancy.0006_custom_tag_models... OK
  Applying virtualization.0012_vm_name_nonunique... OK
  Applying virtualization.0013_deterministic_ordering... OK
  Applying virtualization.0014_standardize_description... OK
  Applying ipam.0021_vrf_ordering... OK
  Applying ipam.0022_tags... OK
  Applying ipam.0023_change_logging... OK
  Applying ipam.0024_vrf_allow_null_rd... OK
  Applying ipam.0025_custom_tag_models... OK
  Applying ipam.0026_prefix_ordering_vrf_nulls_first... OK
  Applying ipam.0027_ipaddress_add_dns_name... OK
  Applying ipam.0028_3569_prefix_fields... OK
  Applying ipam.0029_3569_ipaddress_fields... OK
  Applying ipam.0030_3569_vlan_fields... OK
  Applying ipam.0031_3569_service_fields... OK
  Applying ipam.0032_role_description... OK
  Applying ipam.0033_deterministic_ordering... OK
  Applying ipam.0034_fix_ipaddress_status_dhcp... OK
  Applying ipam.0035_drop_ip_family... OK
  Applying ipam.0036_standardize_description... OK
  Applying secrets.0001_initial... OK
  Applying secrets.0002_userkey_add_session_key... OK
  Applying secrets.0003_unicode_literals... OK
  Applying secrets.0004_tags... OK
  Applying secrets.0005_change_logging... OK
  Applying secrets.0006_custom_tag_models... OK
  Applying dcim.0067_device_type_remove_qualifiers... OK
  Applying dcim.0068_rack_new_fields... OK
  Applying dcim.0069_deprecate_nullablecharfield... OK
  Applying dcim.0070_custom_tag_models... OK
  Applying extras.0020_tag_data... OK
  Applying extras.0021_add_color_comments_changelog_to_tag... OK
  Applying extras.0022_custom_links... OK
  Applying extras.0023_fix_tag_sequences... OK
  Applying extras.0024_scripts... OK
  Applying extras.0025_objectchange_time_index... OK
  Applying extras.0026_webhook_ca_file_path... OK
  Applying extras.0027_webhook_additional_headers... OK
  Applying extras.0028_remove_topology_maps... OK
  Applying extras.0029_3569_customfield_fields... OK
  Applying extras.0030_3569_objectchange_fields... OK
  Applying extras.0031_3569_exporttemplate_fields... OK
  Applying extras.0032_3569_webhook_fields... OK
  Applying extras.0033_graph_type_template_language... OK
  Applying extras.0034_configcontext_tags... OK
  Applying extras.0035_deterministic_ordering... OK
  Applying extras.0036_contenttype_filters_to_q_objects... OK
  Applying extras.0037_configcontexts_clusters... OK
  Applying extras.0038_webhook_template_support... OK
  Applying extras.0039_update_features_content_types... OK
  Applying extras.0040_standardize_description... OK
  Applying extras.0041_tag_description... OK
  Applying extras.0042_customfield_manager... OK
  Applying virtualization.0015_vminterface... OK
  Applying ipam.0037_ipaddress_assignment... OK
  Applying dcim.0071_device_components_add_description... OK
  Applying dcim.0072_powerfeeds... OK
  Applying dcim.0073_interface_form_factor_to_type... OK
  Applying dcim.0074_increase_field_length_platform_name_slug... OK
  Applying dcim.0075_cable_devices...
Updating cable device terminations...
 OK
  Applying dcim.0076_console_port_types... OK
  Applying dcim.0077_power_types... OK
  Applying dcim.0078_3569_site_fields... OK
  Applying dcim.0079_3569_rack_fields... OK
  Applying dcim.0080_3569_devicetype_fields... OK
  Applying dcim.0081_3569_device_fields... OK
  Applying dcim.0082_3569_interface_fields... OK
  Applying virtualization.0016_replicate_interfaces...
    Replicating 0 VM interfaces...
    Replicating assigned objects...
 OK
  Applying dcim.0082_3569_port_fields... OK
  Applying dcim.0083_3569_cable_fields... OK
  Applying dcim.0084_3569_powerfeed_fields... OK
  Applying dcim.0085_3569_poweroutlet_fields... OK
  Applying dcim.0086_device_name_nonunique... OK
  Applying dcim.0087_role_descriptions... OK
  Applying dcim.0088_powerfeed_available_power... OK
  Applying dcim.0089_deterministic_ordering... OK
  Applying dcim.0090_cable_termination_models... OK
  Applying dcim.0091_interface_type_other... OK
  Applying dcim.0092_fix_rack_outer_unit... OK
  Applying dcim.0093_device_component_ordering... OK
  Applying dcim.0094_device_component_template_ordering... OK
  Applying dcim.0095_primary_model_ordering... OK
  Applying dcim.0096_interface_ordering... OK
  Applying dcim.0097_interfacetemplate_type_other... OK
  Applying dcim.0098_devicetype_images... OK
  Applying dcim.0099_powerfeed_negative_voltage... OK
  Applying dcim.0100_mptt_remove_indexes... OK
  Applying dcim.0101_nested_rackgroups... OK
  Applying dcim.0102_nested_rackgroups_rebuild... OK
  Applying dcim.0103_standardize_description... OK
  Applying dcim.0104_correct_infiniband_types... OK
  Applying dcim.0105_interface_name_collation... OK
  Applying dcim.0106_role_default_color... OK
  Applying dcim.0107_component_labels... OK
  Applying dcim.0108_add_tags... OK
  Applying dcim.0109_interface_remove_vm... OK
  Applying dcim.0110_virtualchassis_name... OK
  Applying dcim.0111_component_template_description... OK
  Applying dcim.0112_standardize_components... OK
  Applying dcim.0113_nullbooleanfield_to_booleanfield... OK
  Applying dcim.0114_update_jsonfield... OK
  Applying dcim.0115_rackreservation_order... OK
  Applying dcim.0116_rearport_max_positions... OK
  Applying extras.0043_report... OK
  Applying extras.0044_jobresult... OK
  Applying extras.0045_configcontext_changelog... OK
  Applying extras.0046_update_jsonfield... OK
  Applying extras.0047_tag_ordering... OK
  Applying users.0001_api_tokens... OK
  Applying users.0002_unicode_literals... OK
  Applying users.0003_token_permissions... OK
  Applying users.0004_standardize_description... OK
  Applying users.0005_userconfig... OK
  Applying users.0006_create_userconfigs... OK
  Applying users.0007_proxy_group_user... OK
  Applying users.0008_objectpermission... OK
  Applying users.0009_replicate_permissions... OK
  Applying secrets.0007_secretrole_description... OK
  Applying secrets.0008_standardize_description... OK
  Applying secrets.0009_secretrole_drop_users_groups... OK
  Applying sessions.0001_initial... OK
  Applying taggit.0003_taggeditem_add_unique_index... OK
  Applying tenancy.0007_nested_tenantgroups... OK
  Applying tenancy.0008_nested_tenantgroups_rebuild... OK
  Applying tenancy.0009_standardize_description... OK
  Applying users.0010_update_jsonfield... OK
  Applying virtualization.0017_update_jsonfield... OK</pre>
<p>Crie seu usuário para o acesso web:</p>
<pre class="remontti-code"># python3 manage.py createsuperuser </pre>
<pre class="remontti-code-plain">Username (leave blank to use &#039;root&#039;): remontti
Email address: noc@remontti.com.br
Password: sua_senha
Password (again): sua_senha
Superuser created successfully</pre>
<pre class="remontti-code"># python3 manage.py collectstatic</pre>
<pre class="remontti-code-plain">979 static files copied to &#039;/opt/netbox/netbox/static&#039;.</pre>
<p>Vamos preparar nosso serviço web</p>
<pre class="remontti-code"># pip3 install gunicorn

# cat &lt;&lt;EOF | tee /opt/netbox/gunicorn_config.py
command = &#039;/usr/local/bin/gunicorn&#039;
pythonpath = &#039;/opt/netbox/netbox&#039;
bind = &#039;127.0.0.1:8001&#039;
workers = 3
user = &#039;www-data&#039;
EOF

# cat &lt;&lt;EOF | tee /etc/supervisor/conf.d/netbox.conf
[program:netbox]
command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
directory = /opt/netbox/netbox/
user = www-data
EOF

# systemctl restart supervisor</pre>
<p>Caso você não queira ter certificado e nem vai usar um domínio pode pular esta parte...<br />
Vou instalar o letsencrypt para gerar nosso certificado (pode preencher como quiser as perguntas). Caso queira instalar com um certificado "privado/invalido" <a href="https://netbox.readthedocs.io/en/stable/installation/5-http-server/" rel="noopener" target="_blank">veja aqui</a>.</p>
<pre class="remontti-code"># apt install letsencrypt python-certbot-nginx
# systemctl stop nginx
# letsencrypt --authenticator standalone --installer nginx -d netbox.remontti.com.br</pre>
<p>Crie um script para renomar o certificado automaticamente</p>
<pre class="remontti-code"># vim  /etc/renovassl.sh</pre>
<p>Adicione:</p>
<pre class="remontti-code">#!/bin/bash
# Para o nginx 
/usr/bin/systemctl stop nginx
# Aguarda 10 seg (tempo do nginx parar) 
sleep 10
# Renova o certificado
/usr/bin/certbot -q renew
# Aguarda o certificado renovar
sleep 30
# Restarta o nginx 
/usr/bin/systemctl restart nginx</pre>
<p>Altere as permissões para executa-lo e adicione o scrip ao cron para ser rodado todo dia 1º do mês. </p>
<pre class="remontti-code"># chmod +x /etc/renovassl.sh
# echo &#039;00 00   1 * *   root    /etc/renovassl.sh&#039; &gt;&gt; /etc/crontab
# systemctl restart cron</pre>
<p>Removemos o arquivo defautl do nosso servidor web (nginx), e iremos criar um novo, estou usando um domínio, caso esteja utilizando com IP privado apenas coloque um underline ou sei próprio IP. </p>
<pre class="remontti-code"># rm /etc/nginx/sites-enabled/default
# vim /etc/nginx/sites-available/netbox.conf</pre>
<p>Ajuste o diretório do seu certificado.  </p>
<pre class="remontti-code">server {
    listen 443 ssl;
    # Quiser limitar o acesso apenas a seus IPs
    #allow  192.168.1.0/24;
    #allow  2001:0db8::/32;
    #deny   all;
    #error_page  403   http://www.remontti.com.br;

    server_name netbox.remontti.com.br;

    ssl_certificate /etc/letsencrypt/live/netbox.remontti.com.br/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/netbox.remontti.com.br/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    client_max_body_size 25m;

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }

    location / {
        proxy_pass http://localhost:8001;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

server {
    listen 80;
    server_name netbox.remontti.com.br;
    return 301 https://$host$request_uri;
}</pre>
<p>Ou a versão simplificada sem certificado, usando o seu endereço IP, se ainda assim deseja só usar o domínios basta colocar no lugar no IP.</p>
<pre class="remontti-code">server {
    listen 80;
    server_name 192.168.0.2;
    client_max_body_size 25m;

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }

    location / {
        proxy_pass http://localhost:8001;
    }
}</pre>
<p>Remova assinatura do nginx (ninguém precisa saber a versão!)</p>
<pre class="remontti-code"># sed -i &#039;s/# server_tokens/server_tokens/&#039; /etc/nginx/nginx.conf</pre>
<p>Verifique se seu arquivo de configuração do nginx está correto:</p>
<pre class="remontti-code"># nginx -t</pre>
<pre class="remontti-code-plain">nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful</pre>
<p>Crie o atalho do arquivo de configuração dentro do diretório enabled para que o mesmo seja carregado ao restart o nginx.</p>
<pre class="remontti-code"># ln -s /etc/nginx/sites-available/netbox.conf /etc/nginx/sites-enabled/
# systemctl restart nginx</pre>
<p>Agora acesse seu domínios <em>"https://netbox.remontti.com.br/"</em> ou <em>"https://ip/"</em> e entre com sua senha criada anteriormente.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-2.png" alt="" width="1680" height="914" class="alignnone size-full wp-image-5418" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-2.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-2-300x163.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-2-1024x557.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-2-768x418.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-2-1536x836.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /><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;" /><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-3.png" alt="" width="1680" height="982" class="alignnone size-full wp-image-5419" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-3.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-3-300x175.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-3-1024x599.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-3-768x449.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/03/netbox-3-1536x898.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></p>
<h3>PLUGINs</h3>
<p><strong>Netbox Topology Views</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-Topology-Views.png" data-rel="lightbox-gallery-s6VAWQgF" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-Topology-Views-300x149.png" alt="" width="300" height="149" class="alignnone size-medium wp-image-5446" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-Topology-Views-300x149.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-Topology-Views-1024x510.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-Topology-Views-768x382.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-Topology-Views-1536x764.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-Topology-Views.png 1903w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
<a href="https://github.com/mattieserver/netbox-topology-views" rel="noopener" target="_blank">https://github.com/mattieserver/netbox-topology-views</a></p>
<p><strong>Netbox QR Code</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-QR-Code.png" data-rel="lightbox-gallery-s6VAWQgF" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-QR-Code-300x146.png" alt="" width="300" height="146" class="alignnone size-medium wp-image-5451" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-QR-Code-300x146.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-QR-Code-1024x497.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-QR-Code-768x373.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-QR-Code-1536x745.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2021/03/Netbox-QR-Code-2048x994.png 2048w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
<a href="https://github.com/k01ek/netbox-qrcode" rel="noopener" target="_blank">https://github.com/k01ek/netbox-qrcode</a></p>
<pre class="remontti-code"># pip install netbox-topology-views
# pip install netbox-qrcode
# echo netbox-topology-views &gt;&gt; /opt/netbox/local_requirements.txt
# echo netbox-qrcode &gt;&gt; /opt/netbox/local_requirements.txt
# vim /opt/netbox/netbox/netbox/configuration.py</pre>
<p>Adicione:</p>
<pre class="remontti-code">PLUGINS = [&#039;netbox_topology_views&#039;,&#039;netbox_qrcode&#039;]

PLUGINS_CONFIG = {
  &#039;netbox_topology_views&#039;: {
    &#039;device_img&#039;: &#039;router,switch,firewall&#039;,
    &#039;preselected_device_roles&#039;: &#039;Router, Firewall&#039;,
    &#039;allow_coordinates_saving&#039;: False,
    &#039;ignore_cable_type&#039;: &#039;&#039;,
  },
  &#039;netbox_qrcode&#039;: {
    &#039;with_text&#039;: True,
    &#039;text_fields&#039;: [&#039;name&#039;, &#039;serial&#039;],
    &#039;font&#039;: &#039;ArialMT&#039;,
    &#039;custom_text&#039;: &#039;Remontti\ntel.00-000-000-000&#039;,
    &#039;qr_version&#039;: 1,
    &#039;qr_error_correction&#039;: 0,
    &#039;qr_box_size&#039;: 4,
    &#039;qr_border&#039;: 4,
    &#039;cable&#039;: None,
    &#039;rack&#039;: {
      &#039;text_fields&#039;: [
        &#039;site&#039;,
        &#039;name&#039;,
        &#039;tenant&#039;
      ]
    },
    &#039;device&#039;: {
      &#039;text_fields&#039;: [
        &#039;name&#039;,
        &#039;serial&#039;,
        &#039;tenant&#039;,
        &#039;primary_ip&#039;
      ]
    }
  }
}
</pre>
<p>Copiamos os arquivos empacotados estáticos e reiniciamos o supervisor (netbox).</p>
<pre class="remontti-code"># python3 /opt/netbox/netbox/manage.py collectstatic --no-input
# systemctl restart supervisor</pre>
<h3>COMO ATUALIZAR PARA FUTURAS VERSÕES</h3>
<p>Procure pela ultima atualização: <a href="https://github.com/netbox-community/netbox/releases" rel="noopener" target="_blank">https://github.com/netbox-community/netbox/releases</a>, e copie a url da versão tar.gz, no exemplo estou atualizando para versão 2.10.8, então preste atenção no nome dos diretórios.<br />
Vou baixar e extrair:</p>
<pre class="remontti-code"># cd /tmp/
# wget https://github.com/netbox-community/netbox/archive/refs/tags/v2.10.8.tar.gz
# tar -xzf v2.10.8.tar.gz</pre>
<p>Copie os arquivos de configuração para a versão mais nova, preste atenção nos nomes de diretórios que contém a versãi no ex. "2.10.8" para a versão que esteja atualizando.</p>
<pre class="remontti-code"># cp /opt/netbox/netbox/netbox/configuration.py /tmp/netbox-2.10.8/netbox/netbox/
# cp /opt/netbox/local_requirements.txt /tmp/netbox-2.10.8/
# cp /opt/netbox/gunicorn_config.py /tmp/netbox-2.10.8/</pre>
<p>Copie os arquivos que você enviou, exemplo fotos etc.</p>
<pre class="remontti-code"># cp -pr /opt/netbox/netbox/media/ /tmp/netbox-2.10.8/netbox/</pre>
<p>Além disso, certifique-se de copiar ou vincular quaisquer scripts e relatórios personalizados que você fez.</p>
<pre class="remontti-code"># cp -r /opt/netbox/netbox/scripts /opt/netbox/netbox/
# cp -r /opt/netbox/netbox/reports /opt/netbox/netbox/</pre>
<p>Renomeia o antigo diretório (Não vamos remover, pois se der ruim basta volta-lo)</p>
<pre class="remontti-code"># mv /opt/netbox /opt/netbox_`date +%Y%m%d`</pre>
<p>Movemos nosso diretório atualizado para /opt/netbox.</p>
<pre class="remontti-code"># mv /tmp/netbox-2.10.8/ /opt/netbox</pre>
<p>Finalizamos copiando os arquivos empacotados estáticos e reiniciamos o supervisor (netbox).</p>
<pre class="remontti-code"># python3 /opt/netbox/netbox/manage.py collectstatic --no-input
# systemctl restart supervisor</pre>
<p>Espero que tenha gostado!</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Fonte:<br />
<a href="https://netbox.readthedocs.io/en/stable/installation" rel="noopener" target="_blank">https://netbox.readthedocs.io/en/stable/installation</a></p>
<p>O post <a href="https://blog.remontti.com.br/5412">Como instalar Netbox, ferramenta grátis para documentar sua rede</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5412/feed</wfw:commentRss>
			<slash:comments>14</slash:comments>
		
		
			</item>
		<item>
		<title>Como instalar o Jellyfin um sistema de mídia pessoal</title>
		<link>https://blog.remontti.com.br/5322</link>
					<comments>https://blog.remontti.com.br/5322#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Thu, 25 Feb 2021 01:07:34 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 10]]></category>
		<category><![CDATA[emby]]></category>
		<category><![CDATA[emby-server]]></category>
		<category><![CDATA[filmes]]></category>
		<category><![CDATA[midia]]></category>
		<category><![CDATA[Server]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5322</guid>

					<description><![CDATA[<p>Jellyfin é um sistema de mídia de software livre que permite que você controle o gerenciamento e o streaming de sua mídia. É uma alternativa ao Emby e Plex proprietários, para fornecer mídia de&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5322">Como instalar o Jellyfin um sistema de mídia pessoal</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://jellyfin.org/" rel="noopener" target="_blank">Jellyfin</a> é um sistema de mídia de software livre que permite que você controle o gerenciamento e o streaming de sua mídia. É uma alternativa ao Emby e Plex proprietários, para fornecer mídia de um servidor dedicado para dispositivos de usuário final por meio de vários aplicativos. Jellyfin é descendente da versão 3.5.2 do Emby e portado para a estrutura do .NET Core para permitir o suporte cruzado completo. Não há amarras, licenças ou recursos premium e agendas ocultas: apenas uma equipe que deseja construir algo melhor e trabalhar em conjunto para alcançá-lo. Congratulamo-nos com qualquer pessoa interessada em se juntar a nós em nossa busca!</p>
<p><center><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-2.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-2-300x170.png" alt="" width="300" height="170" class="alignnone size-medium wp-image-5326" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-2-300x170.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-2-1024x580.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-2-768x435.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-2-1536x869.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-2.png 1908w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-3.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-3-300x170.png" alt="" width="300" height="170" class="alignnone size-medium wp-image-5327" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-3-300x170.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-3-1024x580.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-3-768x435.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-3-1536x869.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-3.png 1908w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-4.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-4-300x169.png" alt="" width="300" height="169" class="alignnone size-medium wp-image-5328" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-4-300x169.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-4-1024x576.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-4-768x432.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-4-1536x864.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-4.png 1920w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-5.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-5-300x163.png" alt="" width="300" height="163" class="alignnone size-medium wp-image-5329" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-5-300x163.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-5-1024x556.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-5-768x417.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-5.png 1417w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-1.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-1-300x170.png" alt="" width="300" height="170" class="alignnone size-medium wp-image-5325" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-1-300x170.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-1-1024x580.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-1-768x435.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-1-1536x869.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-1.png 1908w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></center></p>
<p>Possui uma vasta <a href="https://jellyfin.org/clients/" rel="noopener" target="_blank">compatibilidade de aplicativos clientes</a> como <a href="https://www.amazon.com/gp/aw/d/B07TX7Z725" rel="noopener" target="_blank">Firetv</a>, Kody, Xbox One, PS4, LG WebOS, Samsung, GOogle Cast, AirPlay, Roku, <a href="https://play.google.com/store/apps/details?id=org.jellyfin.mobile" rel="noopener" target="_blank">Android</a>, <a href="https://apps.apple.com/us/app/jellyfin-mobile/id1480192618" rel="noopener" target="_blank">iOS</a> entre outros.</p>
<p>Sua instalação é muito simples <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>Como de costume vou realizar a <a href="https://blog.remontti.com.br/2966" rel="noopener" target="_blank">instalação no Debian 10 limpo </a>(sem nenhuma instalação de pacotes)</p>
<p>Instale os pacotes necessários:</p>
<pre class="remontti-code"># apt install apt-transport-https lsb-release gnupg wget</pre>
<p>Adicione o repositório do Jellyfin para sempre ter atualização.</p>
<pre class="remontti-code"># wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | apt-key add -
# echo &quot;deb [arch=$( dpkg --print-architecture )] \
https://repo.jellyfin.org/$( awk -F&#039;=&#039; &#039;/^ID=/{ print $NF }&#039; \
/etc/os-release ) $( awk -F&#039;=&#039; &#039;/^VERSION_CODENAME=/{ print $NF }&#039; \
/etc/os-release ) main&quot; |tee /etc/apt/sources.list.d/jellyfin.list</pre>
<p>Atualize o repositório e em seguida instale o Jellyfin</p>
<pre class="remontti-code"># apt update
# apt install jellyfin</pre>
<p>Crie um diretório onde irá salvar seus Vídeos:</p>
<pre class="remontti-code"># mkdir /home/remontti/videos
# cd /home/remontti/videos
# wget https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4</pre>
<p>Para que seja possível editar ou deletar os videos pela interface web é sempre necessário dar permissões ao Jellyfin</p>
<pre class="remontti-code"># chown jellyfin. /home/remontti/videos -R </pre>
<p>Reinicie o serviço</p>
<pre class="remontti-code"># systemctl restart jellyfin</pre>
<p>Acesse seu endereço IP ou domino na porta <strong>8096</strong>, ex http://media.remontti.com.br:8096 para finalizar a instalação.</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-1.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-1.png" alt="" width="1680" height="914" class="alignnone size-full wp-image-5340" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-1.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-1-300x163.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-1-1024x557.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-1-768x418.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-1-1536x836.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-2.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-2.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5341" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-2.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-2-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-2-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-2-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-2-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-3.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-3.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5342" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-3.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-3-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-3-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-3-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-3-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-4.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-4.png" alt="" width="1681" height="860" class="alignnone size-full wp-image-5343" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-4.png 1681w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-4-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-4-1024x524.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-4-768x393.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-4-1536x786.png 1536w" sizes="auto, (max-width: 1681px) 100vw, 1681px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-5.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-5.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5344" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-5.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-5-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-5-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-5-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-5-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-6.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-6.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5345" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-6.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-6-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-6-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-6-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-6-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-7.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-7.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5346" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-7.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-7-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-7-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-7-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-7-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-8.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-8.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5347" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-8.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-8-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-8-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-8-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-8-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-9.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-9.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5348" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-9.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-9-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-9-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-9-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-9-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-10.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-10.png" alt="" width="1680" height="914" class="alignnone size-full wp-image-5349" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-10.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-10-300x163.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-10-1024x557.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-10-768x418.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-10-1536x836.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-11.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-11.png" alt="" width="1680" height="854" class="alignnone size-full wp-image-5350" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-11.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-11-300x153.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-11-1024x521.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-11-768x390.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-11-1536x781.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-12.png" data-rel="lightbox-gallery-OXGfErrs" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-12.png" alt="" width="1680" height="926" class="alignnone size-full wp-image-5351" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-12.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-12-300x165.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-12-1024x564.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-12-768x423.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/02/jellyfin-web-12-1536x847.png 1536w" sizes="auto, (max-width: 1680px) 100vw, 1680px" /></a></p>
<p>Parabéns seu servidor já esta pronto! Como dito anterior você encontra vários apps clientes: <a href="https://jellyfin.org/clients/" rel="noopener" target="_blank">https://jellyfin.org/clients/ </a></p>
<p>Jellyfin permite aceleração por placas gráficas, para saber mais acesse:<br />
<a href="https://jellyfin.org/docs/general/administration/hardware-acceleration.html" rel="noopener" target="_blank">https://jellyfin.org/docs/general/administration/hardware-acceleration.html</a></p>
<p>Espero que tenha gostado!</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p><em>Fontes:</em><br />
<a href="https://jellyfin.org/downloads/" rel="noopener" target="_blank">https://jellyfin.org/downloads/</a><br />
<a href="https://jellyfin.org/docs/general/administration/installing.html#debian" rel="noopener" target="_blank">https://jellyfin.org/docs/general/administration/installing.html#debian</a><br />
<a href="https://github.com/jellyfin/jellyfin" rel="noopener" target="_blank">https://github.com/jellyfin/jellyfin</a></p>
<p>O post <a href="https://blog.remontti.com.br/5322">Como instalar o Jellyfin um sistema de mídia pessoal</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5322/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		<enclosure url="https://www.learningcontainer.com/wp-content/uploads/2020/05/sample-mp4-file.mp4" length="10546620" type="video/mp4" />

			</item>
		<item>
		<title>Monitoramento com o Observium no Debian 10</title>
		<link>https://blog.remontti.com.br/5103</link>
					<comments>https://blog.remontti.com.br/5103#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 20 Oct 2020 20:03:05 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Huawei]]></category>
		<category><![CDATA[monitoramento]]></category>
		<category><![CDATA[observium]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[rrd]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=5103</guid>

					<description><![CDATA[<p>Observium é uma ferramenta de gerenciamento e monitoramento de rede gratuita e de código aberto que pode ser usada para monitorar todos os dispositivos de rede. Ele é escrito em PHP e usa SNMP&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/5103">Monitoramento com o Observium no Debian 10</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium-remontti-capa.png" alt="" width="720" height="340" class="alignnone size-full wp-image-5117" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium-remontti-capa.png 720w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium-remontti-capa-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium-remontti-capa-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /><br />
<a href="https://www.observium.org/" rel="noopener noreferrer" target="_blank">Observium</a> é uma ferramenta de gerenciamento e monitoramento de rede gratuita e de código aberto que pode ser usada para monitorar todos os dispositivos de rede. Ele é escrito em PHP e usa SNMP para coletar os dados do dispositivo conectado e monitorá-los usando uma interface da web. </p>
<p>Observium oferece suporte a vários hardwares de rede e sistemas operacionais, incluindo Linux, Windows, FreeBSD, Cisco, Dell, Netscaler, Huawei, Mikrotik e muito mais. O Observium oferece uma interface poderosa, simples e fácil de usar para monitorar a saúde e o status de sua rede.</p>
<p>Profissionalmente desenvolvido e mantido por uma equipe de experientes engenheiros de rede e administradores de sistemas, o Observium é uma plataforma projetada e construída por seus usuários.</p>
<p>A <strong>Comunidade Observium </strong>está disponível <strong>gratuitamente</strong> para todos e recebe atualizações e recursos duas vezes por ano. O <strong>Observium Professional </strong>adiciona acesso prioritário a atualizações diárias e novos recursos por uma pequena <strong>taxa anual</strong>.</p>
<h3>Requisitos:</h3>
<p><a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">* Debian 10 (Buster) -> Instalação Limpa</a><br />
<a href="https://blog.remontti.com.br/3006" rel="noopener noreferrer" target="_blank">* Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP”</a><br />
A instalação do <strong>phpMyAdmin não é necessária</strong>.</p>
<p>Instale os pacotes necessários:</p>
<pre class="remontti-code"># apt install snmp fping python-mysqldb rrdtool subversion whois mtr-tiny ipmitool graphviz imagemagick wget</pre>
<p>Crie o banco de dados do observium </p>
<pre class="remontti-code"># mariadb -u root -p</pre>
<p>Não esqueça de alterar <strong>SUA_SENHA</strong></p>
<pre class="remontti-code">CREATE DATABASE observium DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON observium.* TO &#039;observium&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039;;
FLUSH PRIVILEGES;
QUIT;</pre>
<p>Edições Observium</p>
<p>Como dito o Observium vem em duas edições, uma Open Source Community Edition lançada em um ciclo semestral e uma edição com recursos adicionais, correções rápidas de bugs e melhorias de recursos diariamente. Caso queira a versão &#8220;Pro&#8221; acesse <a href="https://www.observium.org/" rel="noopener noreferrer" target="_blank">https://www.observium.org/</a></p>
<p>Como a a gente é pobre <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> (zueira) vamos instalar a versão <strong>Community Edition</strong><br />
Se desejar instalar o Community Edition, instale usando a versão .tar.gz mais recente.</p>
<p>Baixe o .tar.gz mais recente do Observium e descompacte:</p>
<pre class="remontti-code"># cd /var/www/
# wget http://www.observium.org/observium-community-latest.tar.gz
# tar zxvf observium-community-latest.tar.gz</pre>
<p>Crie o diretório para armazenar RRDs e ous logs:</p>
<pre class="remontti-code"># mkdir /var/www/observium/rrd 
# mkdir /var/www/observium/logs</pre>
<p>Ajustes as permissões:</p>
<pre class="remontti-code"># chown www-data. /var/www/observium/ -R </pre>
<p>Crie uma cópia do config.php.default para config.php e ajustes os valores do banco de dados colocando os valores criado no passo anterior:</p>
<pre class="remontti-code"># cp /var/www/observium/config.php.default /var/www/observium/config.php
# vim /var/www/observium/config.php</pre>
<pre class="remontti-code">$config[&#039;db_extension&#039;] = &#039;mysqli&#039;;
$config[&#039;db_host&#039;]      = &#039;localhost&#039;;
$config[&#039;db_user&#039;]      = &#039;observium&#039;;
$config[&#039;db_pass&#039;]      = &#039;SUA_SENHA&#039;;
$config[&#039;db_name&#039;]      = &#039;observium&#039;;</pre>
<p>Configure o banco de dados:</p>
<pre class="remontti-code"># php /var/www/observium/discovery.php -u </pre>
<p>Retornará:</p>
<pre class="remontti-code">  ___   _                              _
 / _ \ | |__   ___   ___  _ __ __   __(_) _   _  _ __ ___
| | | || &#039;_ \ / __| / _ \| &#039;__|\ \ / /| || | | || &#039;_ ` _ \
| |_| || |_) |\__ \|  __/| |    \ V / | || |_| || | | | | |
 \___/ |_.__/ |___/ \___||_|     \_/  |_| \__,_||_| |_| |_|
                     Observium Community Edition 20.9.10731
                                  https://www.observium.org

Install initial database schema ... done.
-- Updating database/file schema
416 -&gt; 417 # (db) .. Done (0s).
417 -&gt; 418 # (db) . Done (0s).
418 -&gt; 419 # (db) .... Done (1s).
419 -&gt; 420 # (db) .. Done (0s).
420 -&gt; 421 # (db) ... Done (0s).
421 -&gt; 422 # (db) .. Done (0s).
422 -&gt; 423 # (db) ...... Done (0s).
423 -&gt; 424 # (php)  Done (0s).
424 -&gt; 425 # (db) . Done (0s).
425 -&gt; 426 # (db) ............... Done (0s).
426 -&gt; 427 # (db) ... Done (0s).
427 -&gt; 428 # (db) ... Done (0s).
428 -&gt; 429 # (db) ... Done (0s).
429 -&gt; 430 # (db) (WARNING! Required MySQL version 5.6+ or MariaDB 10.0+).... Done (0s).
430 -&gt; 431 # (db) ..... Done (0s).
431 -&gt; 432 # (php)  Done (0s).
432 -&gt; 433 # (db) ......... Done (0s).
433 -&gt; 434 # (db) ... Done (0s).
434 -&gt; 435 # (db) . Done (0s).
-- Done.</pre>
<p>Como o php-mcrypt não está mais no repositório do Debian 10 (php.7.3) vamos instala-lo na mão:</p>
<pre class="remontti-code"># apt install php-dev libmcrypt-dev mcrypt
# pecl channel-update pecl.php.net
# pecl install channel://pecl.php.net/mcrypt-1.0.2</pre>
<p>Edite o php.ini</p>
<pre class="remontti-code"># vim /etc/php/7.3/cli/php.ini</pre>
<p>Inclua:</p>
<pre class="remontti-code">extension=mcrypt.so</pre>
<p>Verifique se a extensão esta sendo carregada, deve retornar o valor mcrypt.</p>
<pre class="remontti-code"># php -m | grep mcrypt</pre>
<p>Faremos a configuração do apache para que quando o servidor for acessado no navegado o mesmo já abra o Observium, caso você esteja instalando com outros serviços web, ou gosta das coisas organizadas pode pular para o próximo exemplo.</p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/000-default.conf</pre>
<p>Ajuste para:</p>
<pre class="remontti-code">&lt;VirtualHost *:80&gt;
    ServerAdmin noc@remontti.com.br

    DocumentRoot /var/www/observium/html

    &lt;FilesMatch \.php$&gt;
      SetHandler application/x-httpd-php
    &lt;/FilesMatch&gt;

    &lt;Directory /&gt;
            Options FollowSymLinks
            AllowOverride None
    &lt;/Directory&gt;

    &lt;Directory /var/www/observium/html/&gt;
            DirectoryIndex index.php
            Options FollowSymLinks MultiViews
            AllowOverride All
            Require all granted
    &lt;/Directory&gt;

    ErrorLog  ${APACHE_LOG_DIR}/error_observium.log    
    CustomLog  ${APACHE_LOG_DIR}/access_observium.log combined
    ServerSignature On

&lt;/VirtualHost&gt;</pre>
<p>Caso você queira proteger para algumas classes de IPs e usar um subdomíno pode usar este modelo. (Mas você pode filtrar por IP também no modelo anterior ajustando os &#8220;Require&#8221;)</p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/observium.conf</pre>
<pre class="remontti-code">&lt;virtualhost *:80&gt;
   ServerName observium.remontti.com.br
   ServerAdmin noc@remontti.com.br

   # Sem permissões será redirecionada para
   ErrorDocument 403 http://www.remontti.com.br
 
   DocumentRoot /var/www/observium/html

    &lt;FilesMatch \.php$&gt;
      SetHandler application/x-httpd-php
    &lt;/FilesMatch&gt;

    &lt;Directory /&gt;
      Options FollowSymLinks
      AllowOverride None
    &lt;/Directory&gt;
 
   &lt;Directory /var/www/observium/html/&gt;
      DirectoryIndex index.php
      Options FollowSymLinks MultiViews
      AllowOverride All
      Require all denied
      &lt;RequireAll&gt;
         &lt;RequireAny&gt;
            Require ip 127.0.0.1 ::1 45.80.51.0/29 2804:f123:bebe:c0ca::/64
         &lt;/RequireAny&gt;
      &lt;/RequireAll&gt;
   &lt;/Directory&gt;
 
   ErrorLog ${APACHE_LOG_DIR}/error_observium.log
   CustomLog ${APACHE_LOG_DIR}/access_observium.log combined
 
&lt;/VirtualHost&gt;</pre>
<p>Habilite a configuração criada acima:</p>
<pre class="remontti-code"># a2ensite observium</pre>
<p>Habilite o o modulo rewrite</p>
<pre class="remontti-code"># a2enmod rewrite</pre>
<p>Reinicie o serviço do apache</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>Vamos utilizar as MIBs do Observium, para isso vamos chama-las (Você pode adicionar outras, verifique quais disponiveis em /var/www/observium/mibs). </p>
<pre class="remontti-code"># vim /etc/snmp/snmp.conf</pre>
<p>Ajuste:</p>
<pre class="remontti-code">mibs : /var/www/observium/mibs/rfc:/var/www/observium/mibs/net-snmp:/var/www/observium/mibs/mikrotik:/var/www/observium/mibs/huawei</pre>
<p>Precisamos ajustar </p>
<p>Observium opera em uma frequência de poller fixa de 5 minutos ou 300 segundos. O processo poller-wrapper deve ser executado nesta frequência NÃO funcionará de outra forma. então vamos criar o /etc/cron.d/observium </p>
<pre class="remontti-code"># vim /etc/cron.d/observium</pre>
<p>Adicione:</p>
<pre class="remontti-code"># Execute uma descoberta completa de todos os dispositivos uma vez a cada 6 horas
# Run a complete discovery of all devices once every 6 hours
33  */6   * * *   root    /var/www/observium/discovery.php -h all &gt;&gt; /dev/null 2&gt;&amp;1

# Execute a descoberta automática de dispositivos recém-adicionados a cada 5 minutos
# Run automated discovery of newly added devices every 5 minutes
*/5 *     * * *   root    /var/www/observium/discovery.php -h new &gt;&gt; /dev/null 2&gt;&amp;1

# Execute o multithreaded poller wrapper a cada 5 minutos
# Run multithreaded poller wrapper every 5 minutes
*/5 *     * * *   root    /var/www/observium/poller-wrapper.py &gt;&gt; /dev/null 2&gt;&amp;1

# Execute o script de manutenção diariamente para syslog, log de eventos e log de alerta
# Run housekeeping script daily for syslog, eventlog and alert log
13 5      * * *   root    /var/www/observium/housekeeping.php -ysel &gt;&gt; /dev/null 2&gt;&amp;1

# Execute o script de manutenção diariamente para rrds, portas, entradas órfãs no banco de dados e dados de desempenho
# Run housekeeping script daily for rrds, ports, orphaned entries in the database and performance data
47 4      * * *   root    /var/www/observium/housekeeping.php -yrptb &gt;&gt; /dev/null 2&gt;&amp;1</pre>
<p>Reinicie o Cron:</p>
<pre class="remontti-code"># systemctl restart cron</pre>
<p>Adicione o primeiro usuário, use o level 10 para o administrador:</p>
<pre class="remontti-code"># php /var/www/observium/adduser.php &lt;usuario&gt; &lt;senha&gt; &lt;level&gt;</pre>
<p>Ex.:</p>
<pre class="remontti-code"># php /var/www/observium/adduser.php admin suasenha 10</pre>
<p>Adicione um primeiro dispositivo para monitorar: (Não esqueça de configurar o SNMP)</p>
<pre class="remontti-code"># php /var/www/observium/add_device.php &lt;hostname&gt; &lt;community&gt; v2c
# php /var/www/observium/add_device.php 10.0.0.100 publicsnmp v2c</pre>
<p>Agora acesse seu servidor em seu navegador e entre com usuário e senha criado.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_debian_buster.png" alt="" width="1019" height="489" class="alignnone size-full wp-image-5112" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_debian_buster.png 1019w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_debian_buster-300x144.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_debian_buster-768x369.png 768w" sizes="auto, (max-width: 1019px) 100vw, 1019px" /></p>
<p>Parabéns!<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_home_debian_buster.png" alt="" width="1345" height="919" class="alignnone size-full wp-image-5113" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_home_debian_buster.png 1345w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_home_debian_buster-300x205.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_home_debian_buster-1024x700.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/10/observium_home_debian_buster-768x525.png 768w" sizes="auto, (max-width: 1345px) 100vw, 1345px" /></p>
<p>Espero que tenha lhe instigado/inspirado a buscar mais aprender um pouquinho +</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p><strong>Fonte:</strong><br />
<a href="https://docs.observium.org/install_debian/" rel="noopener noreferrer" target="_blank">https://docs.observium.org/install_debian/</a><br />
<a href="https://docs.observium.org/web_config/" rel="noopener noreferrer" target="_blank">https://docs.observium.org/web_config/</a><br />
<a href="https://docs.observium.org/dashboard/" rel="noopener noreferrer" target="_blank">https://docs.observium.org/dashboard/</a></p>
<p>O post <a href="https://blog.remontti.com.br/5103">Monitoramento com o Observium no Debian 10</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/5103/feed</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Criando um servidor de autenticação com FreeRadius no Debian 10 Buster (Extra sqlippool)</title>
		<link>https://blog.remontti.com.br/4063</link>
					<comments>https://blog.remontti.com.br/4063#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 13 Mar 2020 20:25:16 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[3.0.16]]></category>
		<category><![CDATA[3.0.17]]></category>
		<category><![CDATA[autenticar]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[eap]]></category>
		<category><![CDATA[freeradius]]></category>
		<category><![CDATA[hotspot]]></category>
		<category><![CDATA[ppp]]></category>
		<category><![CDATA[pppo]]></category>
		<category><![CDATA[pptp]]></category>
		<category><![CDATA[psk]]></category>
		<category><![CDATA[radius]]></category>
		<category><![CDATA[ubiquiti]]></category>
		<category><![CDATA[wpa]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=4063</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/4063">Criando um servidor de autenticação com FreeRadius no Debian 10 Buster (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/2020/03/freeradius-3-debian10-instalacao.png" alt="" width="900" height="428" class="alignnone size-full wp-image-4221" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/freeradius-3-debian10-instalacao.png 900w, https://blog.remontti.com.br/wp-content/uploads/2020/03/freeradius-3-debian10-instalacao-300x143.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/freeradius-3-debian10-instalacao-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 sobre o Debina 10, com integração dos na base de dados MariaDB (frok do MySQL), ativaremos ainda o módulos SQLIPPOOL para armazenar nossa pool de IPs na base de dados. </p>
<p><strong>REQUISITOS</strong><br />
1 – <a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Debian 10 bustes &#8211; Instalação limpa</a><br />
2 – <a href="https://blog.remontti.com.br/3006" rel="noopener noreferrer" target="_blank">WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP” </a> (Se desejar usar o phpMyAdmin)</p>
<p><strong>Instalação do FreeRadius 3.0.`>17`</strong></p>
<p>Primeiramente iremos criar o banco de dados e usuário e conceder as permissões de acesso.</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</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>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;682 s/# *//&#039; /etc/freeradius/3.0/sites-available/default
# sed -i &#039;829,849 {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;65 {s/^/#/}&#039; /etc/freeradius/3.0/mods-available/sqlippool
# sed -i &#039;66 s/# *//&#039; /etc/freeradius/3.0/mods-available/sqlippool
# sed -i &#039;58 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;641i\        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">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 {
        sql
        sqlippool
}
session {
        sql
}
post-auth {
        update {
                &amp;reply: += &amp;session-state:
        }
        sql
        sqlippool
        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;269 s/# *//&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;331,356 {s/^/##/}&#039; /etc/freeradius/3.0/sites-available/inner-tunnel
# sed -i &#039;365,376 {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">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,50 {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) \
##      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;55,62 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 = 3600</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><strong>Opcional</strong><br />
Eu particularmente não gosto da ideia da tabela radusergroup não ter um ID, em alguma programação ela pode ser útil, então para fazer isso se desejar faça:</p>
<pre class="remontti-code"># mariadb -u radius -p</pre>
<p>Entre com suasenha do usuário radius.</p>
<pre class="remontti-code">USE radius;
ALTER TABLE `radusergroup` ADD `id` INT(20) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`) ;
ALTER TABLE `radusergroup` ADD UNIQUE(`id`);
quit;</pre>
<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>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/4063">Criando um servidor de autenticação com FreeRadius no Debian 10 Buster (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/4063/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) usando Debian 10</title>
		<link>https://blog.remontti.com.br/3865</link>
					<comments>https://blog.remontti.com.br/3865#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 18 Dec 2019 00:50:02 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[certificado]]></category>
		<category><![CDATA[criptografado]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debina buster]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[pure-ftpd]]></category>
		<category><![CDATA[seguro]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[tls]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3865</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 10&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3865">Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados (MariaDB) usando Debian 10</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-3865"></span><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp.jpg" alt="" width="1000" height="474" class="alignnone size-full wp-image-3876" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp.jpg 1000w, https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp-768x364.jpg 768w, https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp-520x245.jpg 520w, https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp-720x340.jpg 720w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></p>
<p><strong>Requisito:</strong><br />
<a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Debian 10 Stretch / Instalação Limpa</a></p>
<p>Vire root de maneira correta no Debian 10!</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.<br />
Assim, você pode logar diretamente sem fornecer a senha root do MariaDB. Mas isso é estranho, pois minha senha do root do MariaDB é diferente do meu usuário unix.<br />
Bom se você é meio paranoico com segurança, para alterar a senha do usuário root do MariaDB de forma bruta faça o seguinte:</p>
<pre class="remontti-code"># mariadb -u root</pre>
<pre class="remontti-code">USE mysql;
UPDATE user SET password=PASSWORD(&#039;SENHA_DB_ROOT&#039;) WHERE User=&#039;root&#039;;
UPDATE user SET plugin=&quot;mysql_native_password&quot;;
FLUSH PRIVILEGES;
quit;</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)
);

quit; 
</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;);

quit;</pre>
<p>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"># echo &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/3006" rel="noopener noreferrer" target="_blank">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “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/3865">Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados (MariaDB) usando Debian 10</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3865/feed</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Como montar um servidor de e-mail com Postfix, Dovecot, PostfixAdmin, SpamAssassin, Amavis, Clamav,  RoundCube, SPF, DKIM, DMARC, Fail2Ban</title>
		<link>https://blog.remontti.com.br/3744</link>
					<comments>https://blog.remontti.com.br/3744#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 26 Nov 2019 01:59:55 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian10]]></category>
		<category><![CDATA[DKIM]]></category>
		<category><![CDATA[DMARC]]></category>
		<category><![CDATA[Dovecot]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[ipv4]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[PostfixAdmin]]></category>
		<category><![CDATA[RoundCube]]></category>
		<category><![CDATA[servidor completo]]></category>
		<category><![CDATA[SpamAssassin]]></category>
		<category><![CDATA[SPF]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3744</guid>

					<description><![CDATA[<p>Neste tutorial vou ensinar como configurar um servidor de e-mail com domínios virtuais com integração dos usuários/domínios no banco de dados MariaDB/MySQL. Nele vamos ter filtros entre varias otimizações. &#8211; Postfix Postfix é um&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3744">Como montar um servidor de e-mail com Postfix, Dovecot, PostfixAdmin, SpamAssassin, Amavis, Clamav,  RoundCube, SPF, DKIM, DMARC, Fail2Ban</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/2019/11/Postfix-Dovecot-PostfixAdmin-SpamAssassin-Amavis-Clamav-RoundCube-SPF-DKIM-DMARC-Fail2Ban.jpg" alt="" width="1000" height="474" class="alignnone size-full wp-image-3800" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/11/Postfix-Dovecot-PostfixAdmin-SpamAssassin-Amavis-Clamav-RoundCube-SPF-DKIM-DMARC-Fail2Ban.jpg 1000w, https://blog.remontti.com.br/wp-content/uploads/2019/11/Postfix-Dovecot-PostfixAdmin-SpamAssassin-Amavis-Clamav-RoundCube-SPF-DKIM-DMARC-Fail2Ban-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2019/11/Postfix-Dovecot-PostfixAdmin-SpamAssassin-Amavis-Clamav-RoundCube-SPF-DKIM-DMARC-Fail2Ban-768x364.jpg 768w, https://blog.remontti.com.br/wp-content/uploads/2019/11/Postfix-Dovecot-PostfixAdmin-SpamAssassin-Amavis-Clamav-RoundCube-SPF-DKIM-DMARC-Fail2Ban-520x245.jpg 520w, https://blog.remontti.com.br/wp-content/uploads/2019/11/Postfix-Dovecot-PostfixAdmin-SpamAssassin-Amavis-Clamav-RoundCube-SPF-DKIM-DMARC-Fail2Ban-720x340.jpg 720w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></p>
<p>Neste tutorial vou ensinar como configurar um servidor de e-mail com domínios virtuais com integração dos usuários/domínios no banco de dados MariaDB/MySQL. Nele vamos ter filtros entre varias otimizações. </p>
<p>&#8211; <strong><a href="http://www.postfix.org/" rel="noopener noreferrer" target="_blank">Postfix</a></strong> Postfix é um agente de transferência de e-mails livre e de código aberto que encaminha e entrega e-mails, e tem como objetivo ser uma alternativa segura ao Sendmail.<br />
&#8211; <strong><a href="https://www.dovecot.org/" rel="noopener noreferrer" target="_blank">Dovecot</a></strong> é um servidor de IMAP e POP3 open source para sistemas Linux e UNIX, escrito primariamente com segurança em mente.<br />
&#8211; <strong><a href="http://postfixadmin.sourceforge.net/" rel="noopener noreferrer" target="_blank">Postfixadmin</a></strong> Interface web para o gerenciamento de contas de e-mails e domínios.<br />
&#8211; <strong><a href="https://spamassassin.apache.org/" rel="noopener noreferrer" target="_blank">Spamassassin</a></strong> é um programa de computador licenciado através da licença Apache e utilizado como filtro de spam enviado através de mensagem eletrônica. O filtro SpamAssassin funciona dando uma pontuação a cada mensagem que entra, baseado em diferentes &#8220;testes&#8221; que faz analisando todo o conteúdo da mensagem.<br />
&#8211; <strong><a href="https://www.clamav.net/" rel="noopener noreferrer" target="_blank">Clamav</a></strong>  é um antivírus open source gratuito feito especialmente para Linux, mas que conta também com uma versão gratuita para Windows e outra paga para Mac OS.<br />
&#8211; <strong><a href="https://en.wikipedia.org/wiki/Amavis" rel="noopener noreferrer" target="_blank">Amavis</a></strong>  é um filtro de conteúdo de código aberto para correio eletrônico, implementando transferência de mensagens, decodificação, algum processamento e verificação e interface com filtros de conteúdo externos para fornecer proteção contra spam, vírus e outros malwares.<br />
&#8211; <strong><a href="https://roundcube.net/" rel="noopener noreferrer" target="_blank">RoundCube</a></strong> é um cliente de email IMAP baseado na Web (Webmail).<br />
&#8211; <strong><a href="https://antispam.br/admin/spf/" rel="noopener noreferrer" target="_blank">SPF</a></strong> (Sender Policy Framework) é um sistema que identifica para os servidores de email quais hosts têm permissão para enviar email para um determinado domínio. A configuração do SPF ajuda a impedir que seu email seja classificado como spam.<br />
&#8211;<strong><a href="http://www.opendkim.org/" rel="noopener noreferrer" target="_blank">DKIM</a></strong> (DomainKeys Identified Mail) é um sistema que permite que seus servidores de email oficiais adicionem uma assinatura aos cabeçalhos dos emails de saída e identifique a chave pública do seu domínio para que outros servidores de email possam verificar a assinatura. Assim como no SPF, o DKIM ajuda a impedir que seu email seja considerado spam. Também permite que os servidores de correio detectem quando o seu correio foi adulterado em trânsito.<br />
&#8211; <strong><a href="https://dmarc.org/" rel="noopener noreferrer" target="_blank">DMARC</a></strong> (Autenticação, Relatório e Conformidade de Mensagens de Domínio) permite anunciar aos servidores de email quais são as políticas do seu domínio em relação a emails que falham nas validações SPF e / ou DKIM. Além disso, permite solicitar relatórios de mensagens com falha dos servidores de email.<br />
&#8211; <strong><a href="https://www.fail2ban.org" rel="noopener noreferrer" target="_blank">Fail2Ban</a></strong> é uma estrutura de software de prevenção de intrusões que protege os servidores de computadores contra ataques de força bruta.</p>
<h4>REQUISITOS</h4>
<p>0 &#8211; Saber que esse procedimento exige conhecimento <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 />
1 &#8211; Ter configurado <a href="https://blog.remontti.com.br/3086" target="_blank" rel="noopener noreferrer">DNS Autoritativo e Reverso sobre seus IPS</a>.<br />
2 &#8211; Debian 10 Buster <a href="https://blog.remontti.com.br/2966" target="_blank" rel="noopener noreferrer">instalação limpa</a><br />
3 &#8211; Não ter seu endereço IP listado em backlist.</p>
<p>Você pode verificar se seu IP está em uma blacklist nos sites:<br />
<a href="https://mxtoolbox.com/blacklists.aspx" rel="noopener noreferrer" target="_blank">https://mxtoolbox.com/blacklists.aspx   </a><br />
<a href="http://www.anti-abuse.org/multi-rbl-check-results/" rel="noopener noreferrer" target="_blank">http://www.anti-abuse.org/multi-rbl-check-results/</a><br />
<a href="https://viewdns.info/spamdblookup/" rel="noopener noreferrer" target="_blank">https://viewdns.info/spamdblookup/</a></p>
<h4>AJUSTES</h4>
<p>IP ex. do servidor: 45.80.50.6 / 2804:f123:bebe:cafe::6<br />
Sendo que o reverso deste ips apontam para mail.remontti.com.br<br />
Entradas MX, TXT e SPF configuradas.<br />
Ex autoritativo:</p>
<pre class="remontti-code">$TTL 86400      ; 1 day
remontti.net.br        IN SOA  ns1.remontti.net.br. hostmaster.remontti.net.br. (
                            2019071900 ; serial
                            10800      ; refresh (3 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.50.4
                        AAAA    2804:f123:bebe:cafe::4
                        MX      10 mail.remontti.net.br.
                        TXT     &quot;v=spf1 a mx -all&quot;
                        SPF     &quot;v=spf1 a mx -all&quot;
$ORIGIN remontti.net.br.
$TTL 10800      ; 3 hours

45-80-50-0                      A       45.80.50.0
router-gw                       A       45.80.50.1
                                AAAA    2804:f123:bebe:cafe::1

ns1                             A       45.80.50.2
                                AAAA    2804:f123:bebe:cafe::2
hostmaster                      A       45.80.50.2
                                AAAA    2804:f123:bebe:cafe::2
ns2                             A       45.80.50.3
                                AAAA    2804:f123:bebe:cafe::3

www                             A       45.80.50.4
                                AAAA    2804:f123:bebe:cafe::4
ftp                             A       45.80.50.4
                                AAAA    2804:f123:bebe:cafe::4

zabbix                          A       45.80.50.5
                                AAAA    2804:f123:bebe:cafe::5
phpipam                         A       45.80.50.5
                                AAAA    2804:f123:bebe:cafe::5

mail                            A       45.80.50.6
                                AAAA    2804:f123:bebe:cafe::6
imap                            A       45.80.50.6
                                AAAA    2804:f123:bebe:cafe::6
pop                             A       45.80.50.6
                                AAAA    2804:f123:bebe:cafe::6
smtp                            A       45.80.50.6
                                AAAA    2804:f123:bebe:cafe::6</pre>
<p>Ex reverso:</p>
<pre class="remontti-code">$ORIGIN .
$TTL 86400      ; 1 day
50.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                    2019071900 ; serial
                    10800      ; refresh (3 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.
0         PTR     45.80.50.0.remontti.net.br.
1         PTR     cpd.remontti.net.br.
2         PTR     ns1.remontti.net.br.
3         PTR     ns2.remontti.net.br.
4         PTR     www.remontti.net.br.
5         PTR     zabbix.remontti.net.br.
6         PTR     mail.remontti.net.br.
 
; ....</pre>
<p>Ajuste o nome do servidor alterando alguns parâmetros do sistema.</p>
<pre class="remontti-code"># vim /etc/hosts</pre>
<pre class="remontti-code">[...]
127.0.0.1         localhost
250.250.250.6     mail.remontti.com.br    mail
[...]</pre>
<pre class="remontti-code"># vim /etc/hostname</pre>
<pre class="remontti-code">mail</pre>
<p>Configure sua interface de rede. Vou deixar um modelo, onde o bloco de IPv4 é um /28 (255.255.255.240) e um /64 para IPv6.</p>
<pre class="remontti-code"># vim /etc/network/interfaces</pre>
<pre class="remontti-code">allow-hotplug enp0s3
iface enp0s3 inet static
        address 45.80.50.6/28
        gateway 45.80.50.1
        dns-nameservers 45.80.50.2
        dns-search remontti.com.br

iface enp0s3 inet6 static
        pre-up modprobe ipv6
        address 2804:f123:bebe:cafe::6
        netmask 64
        gateway 2804:f123:bebe:cafe::1</pre>
<p>Reinicie seu servidor</p>
<pre class="remontti-code"> # reboot</pre>
<h4>APACHE2, MARIADB E PHP7</h4>
<pre class="remontti-code"># su -
# apt update; apt upgrade
# apt install apache2 apache2-utils mariadb-server mariadb-client curl\
  libapache2-mod-php php php-mysql php-cli php-pear php-gmp php-gd php-bcmath\
  php-mbstring php-curl php-xml php-zip php-imap php-intl php-ldap php-imagick wget</pre>
<p>Vamos habilitar o mod_rewrite.</p>
<pre class="remontti-code"># a2enmod rewrite</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 funcione corretamente será necessário adicionar alguma linhas.</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">	&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/2019/07/apache2-deb10-rewrite.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite-300x251.png" alt="" width="300" height="251" class="alignnone size-medium wp-image-3012" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite-300x251.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite-768x642.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite.png 887w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Por segurança recomendo remover a assinatura do servidor, para isso edite:</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>Agora precisamos restartar o apache2 para que tenha efeito as alterações.</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>http://[SERVER_IP]/<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-230x300.png" alt="" width="230" height="300" class="alignnone size-medium wp-image-3010" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-230x300.png 230w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-768x1003.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-784x1024.png 784w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster.png 941w" sizes="auto, (max-width: 230px) 100vw, 230px" /></a></p>
<h4>phpMyAdmin `** Opcional **`</h4>
<p>Cade ele do repositório?<br />
O PHPMyAdmin não está mais disponível como pacote .deb no Debian 10. Fazendo um pesquisa o motivo é que o &#8220;pessoal&#8221; que faz empacotamento não tem uma versão estável. <a href="https://security-tracker.debian.org/tracker/CVE-2018-19968" rel="noopener noreferrer" target="_blank">https://security-tracker.debian.org/tracker/CVE-2018-19968</a></p>
<p>Desta forma debian &#8220;obriga&#8221; com que o usuário instale-o a partir da fonte. <a href="https://www.phpmyadmin.net/downloads/" rel="noopener noreferrer" target="_blank">https://www.phpmyadmin.net/downloads/</a></p>
<p>phpMyAdmin 4.9.2 (25/11/2019)</p>
<pre class="remontti-code"># cd /tmp/
# wget https://files.phpmyadmin.net/phpMyAdmin/4.9.2/phpMyAdmin-4.9.2-all-languages.tar.gz
# tar -vxzf phpMyAdmin-4.9.2-all-languages.tar.gz -C /usr/share/
# mv /usr/share/phpMyAdmin-4.9.2-all-languages /usr/share/phpmyadmin
# mkdir /etc/phpmyadmin
# touch /etc/phpmyadmin/htpasswd.setup
# mkdir -p /var/lib/phpmyadmin/tmp
# chown -R www-data:www-data /var/lib/phpmyadmin</pre>
<p>Criaremos o arquivo de configuração do Apache.</p>
<pre class="remontti-code"># vim /etc/apache2/conf-available/phpmyadmin.conf</pre>
<pre class="remontti-code"># phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

&lt;Directory /usr/share/phpmyadmin&gt;
 Options FollowSymLinks
 DirectoryIndex index.php

 &lt;IfModule mod_php7.c&gt;
 AddType application/x-httpd-php .php

 php_flag magic_quotes_gpc Off
 php_flag track_vars On
 php_flag register_globals Off
 php_value include_path .
 &lt;/IfModule&gt;

&lt;/Directory&gt;

# Authorize for setup
&lt;Directory /usr/share/phpmyadmin/setup&gt;
 &lt;IfModule mod_authn_file.c&gt;
 AuthType Basic
 AuthName &quot;phpMyAdmin Setup&quot;
 AuthUserFile /etc/phpmyadmin/htpasswd.setup
 &lt;/IfModule&gt;
 Require valid-user
&lt;/Directory&gt;

# Disallow web access to directories that don&#039;t need it
&lt;Directory /usr/share/phpmyadmin/libraries&gt;
 Order Deny,Allow
 Deny from All
&lt;/Directory&gt;
&lt;Directory /usr/share/phpmyadmin/setup/lib&gt;
 Order Deny,Allow
 Deny from All
&lt;/Directory&gt;</pre>
<p>Ative a configuração e reinicie o Apache.</p>
<pre class="remontti-code"># a2enconf phpmyadmin
# systemctl restart apache2
# systemctl status apache2</pre>
<p>Na próxima etapa, vamos configurar o armazenamento de configuração do phpMyadmin (banco de dados).<br />
Faça o login no MariaDB como usuário root:</p>
<pre class="remontti-code"># mariadb</pre>
<p>Criamos um novo banco de dados para o chamado phpmyadmin e um usuario pma (altere para sua senha). Em seguida, concedemos as permissões do banco de dados.<br />
Você pode gerar uma senha acessando <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 phpmyadmin;
CREATE USER &#039;pma&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039;;
GRANT ALL PRIVILEGES ON phpmyadmin.* TO &#039;pma&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039; WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;</pre>
<p>Carregue as tabelas do banco de dados: (Informe a senha do root do MariaDB)</p>
<pre class="remontti-code"># mariadb phpmyadmin &lt; /usr/share/phpmyadmin/sql/create_tables.sql</pre>
<p>Agora é necessário ajustar o arquivo de configuração do phpmyadmin.<br />
Definir:<br />
* senha segura (blowfish secret) que deve ter 32 caracteres. Não use o meu exemplo blowfish secreto, defina o seu próprio! Use o gerador <a href="https://senhasegura.remontti.com.br" rel="noopener noreferrer" target="_blank">https://senhasegura.remontti.com.br</a><br />
* diretório que o PHPMyAdmin deve usar para armazenar arquivos temporários.<br />
* Descomentar as linhas $cfg['Servers']<br />
- controlhost : localhost<br />
- controlpass : SUA_SENHA</p>
<pre class="remontti-code"># cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
# vim /usr/share/phpmyadmin/config.inc.php</pre>
<pre class="remontti-code">$cfg[&#039;blowfish_secret&#039;] = &#039;dkJhGx83XR3JjuFrDn8kPp9NtXnkLptl&#039;;
/* Adicione esta linha */
$cfg[&#039;TempDir&#039;] = &#039;/var/lib/phpmyadmin/tmp&#039;;

/* User used to manipulate with storage */
$cfg[&#039;Servers&#039;][$i][&#039;controlhost&#039;] = &#039;localhost&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;controlport&#039;] = &#039;&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;controluser&#039;] = &#039;pma&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;controlpass&#039;] = &#039;SUA_SENHA&#039;;

/* Storage database and tables */
$cfg[&#039;Servers&#039;][$i][&#039;pmadb&#039;] = &#039;phpmyadmin&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;bookmarktable&#039;] = &#039;pma__bookmark&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;relation&#039;] = &#039;pma__relation&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;table_info&#039;] = &#039;pma__table_info&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;table_coords&#039;] = &#039;pma__table_coords&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;pdf_pages&#039;] = &#039;pma__pdf_pages&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;column_info&#039;] = &#039;pma__column_info&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;history&#039;] = &#039;pma__history&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;table_uiprefs&#039;] = &#039;pma__table_uiprefs&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;tracking&#039;] = &#039;pma__tracking&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;userconfig&#039;] = &#039;pma__userconfig&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;recent&#039;] = &#039;pma__recent&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;favorite&#039;] = &#039;pma__favorite&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;users&#039;] = &#039;pma__users&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;usergroups&#039;] = &#039;pma__usergroups&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;navigationhiding&#039;] = &#039;pma__navigationhiding&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;savedsearches&#039;] = &#039;pma__savedsearches&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;central_columns&#039;] = &#039;pma__central_columns&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;designer_settings&#039;] = &#039;pma__designer_settings&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;export_templates&#039;] = &#039;pma__export_templates&#039;;</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-300x296.png" alt="" width="300" height="296" class="alignnone size-medium wp-image-3021" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-300x296.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-768x757.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster.png 901w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>http://[SERVER_IP]/phpmyadmin/<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/11/phpmyadmin.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/11/phpmyadmin-300x199.png" alt="" width="300" height="199" class="alignnone size-medium wp-image-3769" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/11/phpmyadmin-300x199.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/11/phpmyadmin.png 750w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<h4>POSTFIX / DOVECOTE / DKIM / SPF</h3>
<p>O Postfix é um agente de transferência de emails (MTA = Message Transfer Agent), um software livre para envio e entrega de emails. Rápido e fácil de administrar, muito utilizado em servidores UNIX.<br />
Algumas vantagens:<br />
- Suporte a Ipv6<br />
- Suporte a MIME<br />
- Autenticação SASL<br />
- Canal seguro utilizando TLS<br />
- Suporte a banco de dados(MySQL,PostgreSQL,LDAP,entre outros)<br />
- Verificação a listas RBL<br />
- Extenso suporte a filtros<br />
- Suporte a expressão-regular<br />
- Verificação de cabeçalho<br />
- Verificação no corpo da mensagem<br />
- Suporte a Greylisting e SPF através de plugins.</p>
<p>Dovecot é um servidor de IMAP e POP3 open source para sistemas Linux e UNIX, escrito primariamente com segurança em mente, tem o objetivo primário de ser um servidor de email leve, rápido e de fácil configuração. Dovecot suporta mbox, Maildir e seu próprio formato nativo de alta performance, Dbox. É 100% compatível com clientes de emails acessando as caixas de correio diretamente. Também inclui um agente de entrega de emails com suporte opcional a filtros Sieve, o que acho muito legal!</p>
<p>Vamos a instalação:</p>
<pre class="remontti-code"># apt install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd\
  dovecot-pop3d dovecot-lmtpd dovecot-sieve dovecot-managesieved openssl\
  opendkim opendkim-tools postfix-policyd-spf-python postfix-pcre</pre>
<p>Responda:<br />
<strong>Site da Internet</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfix1.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfix1-300x154.png" alt="" width="300" height="154" class="alignnone size-medium wp-image-3756" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfix1-300x154.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfix1-1024x525.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfix1-768x394.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfix1-1536x788.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfix1.png 1600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Se seu DNS reverso estiver ok ele virá já com o domínio reverso de seu IP, mas isso não é necessariamente ser o nome do ip rever, mas eu recomendo que tenha confurado o reverso para o seu servidor de e-mail.<br />
<strong>mail.remontti.com.br</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfix2.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfix2-300x155.png" alt="" width="300" height="155" class="alignnone size-medium wp-image-3757" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfix2-300x155.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfix2-1024x529.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfix2-768x397.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfix2-1536x794.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfix2.png 1600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Verifique o arquivo /etc/mailname e sertifique-se que seja seu domínio.</p>
<pre class="remontti-code"># vim /etc/mailname</pre>
<pre class="remontti-code">mail.remontti.com.br</pre>
<p>Adicione um e-mail para seu usuário root do Linux</p>
<pre class="remontti-code"># vim /etc/aliases</pre>
<pre class="remontti-code">root: postmaster@remontti.com.br</pre>
<pre class="remontti-code"># newaliases</pre>
<h4>POSTFIXADMIN</h4>
<p>PostfixAdmin gerenciará os domínios e e-mail.</p>
<pre class="remontti-code"># apt install postfixadmin</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin1.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin1-300x159.png" alt="" width="300" height="159" class="alignnone size-medium wp-image-3758" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin1-300x159.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin1-1024x542.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin1-768x407.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin1-1536x813.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin1.png 1600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin2.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin2-300x159.png" alt="" width="300" height="159" class="alignnone size-medium wp-image-3759" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin2-300x159.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin2-1024x544.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin2-768x408.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin2-1536x816.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin2.png 1600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin3.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin3-300x159.png" alt="" width="300" height="159" class="alignnone size-medium wp-image-3760" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin3-300x159.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin3-1024x542.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin3-768x407.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin3-1536x813.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin3.png 1600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Ajuste o tipo do banco para <strong>mysqli</strong></p>
<pre class="remontti-code"># vim /etc/postfixadmin/dbconfig.inc.php</pre>
<pre class="remontti-code">$dbtype=&#039;mysqli&#039;</pre>
<p>Defina o tipo de criptografia para as senhas salvas no BD e o idioma.</p>
<pre class="remontti-code"># vim /etc/postfixadmin/config.inc.php </pre>
<p>Procure pelas seguintes linhas e altere conforme a baixo.</p>
<pre class="remontti-code">$CONF[&#039;encrypt&#039;] = &#039;md5&#039;;
$CONF[&#039;default_language&#039;] = &#039;pt-br&#039;;</pre>
<p>Como existe varias alterações <i>"change-this-to-your.domain.tld"</i> vou usar o comando sed para alterar todas de uma única vez. <strong>Não esqueça de substituir pelo seu dominio.</strong></p>
<pre class="remontti-code"># sed -i &#039;s/change-this-to-your.domain.tld/remontti.com.br/&#039; /etc/postfixadmin/config.inc.php</pre>
<p>Mais alguns ajustes</p>
<pre class="remontti-code"># cp /etc/postfixadmin/config.inc.php  /usr/share/postfixadmin/config.local.php
# mkdir /usr/share/postfixadmin/templates_c/
# chown -R www-data. /usr/share/postfixadmin/templates_c/</pre>
<p>Acesse:<br />
<strong>http://SEU-DOMINO/postfixadmin/public/setup.php</strong></p>
<p>No primeiro acesso suas tabelas já serão criadas no seu bd, você deve ter todas as dependências <strong>OK</strong>.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin5.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin5-288x300.png" alt="" width="288" height="300" class="alignnone size-medium wp-image-3762" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin5-288x300.png 288w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin5-982x1024.png 982w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin5-768x800.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin5-1474x1536.png 1474w, https://blog.remontti.com.br/wp-content/uploads/2019/11/postfixadmin5.png 1680w" sizes="auto, (max-width: 288px) 100vw, 288px" /></a></p>
<p>Bem no final temos: <strong>Change setup password</strong><br />
Preencha os campos Setup password com uma senha e repita (Essa senha será necessária pra criar administradores do PostfixAdmin) e clique em <strong>Generate password hash</strong></p>
<p>Voce vai receber uma mensagem parecida com essa:<br />
<font color="red"><i>If you want to use the password you entered as setup password, edit config.inc.php or config.local.php and set<br />
$CONF['setup_password'] = 'ca06e6cd4df066ac8e7999616a773b00:51508f16ca5ef631a5ed23ccc44160d934375ec5'; </i></font><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134710.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134710-300x58.png" alt="screenshot_20161017_134710" width="300" height="58" class="alignnone size-medium wp-image-1497" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134710-300x58.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134710-768x148.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134710.png 786w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Esta senha criptografada, será necessários informar no arquivo config.inc.php antes de prosseguir. Então vamos a edição.</p>
<pre class="remontti-code"># vim /etc/postfixadmin/config.inc.php</pre>
<p>Localize:</p>
<pre class="remontti-code">$CONF[&#039;setup_password&#039;] = &#039;changeme&#039;;</pre>
<p>Altere para:</p>
<pre class="remontti-code">$CONF[&#039;setup_password&#039;] = &#039;ca06e6cd4df066ac8e7999616a773b00:51508f16ca5ef631a5ed23ccc44160d934375ec5&#039;;</pre>
<p>Salve se arquivo e volte para seu navegador. Em <strong>Create superadmin account</strong> vamos criar nosso usuário administrador do PostfixAdmin.</p>
<p>Nos campos:<br />
<strong>Setup password</strong> = Informe a senha q você gerou no passo anterior.<br />
<strong>Administrador:</strong> = um endereço email que será o seu login (postmaster@remontti.com.br)<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134743.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134743-300x161.png" alt="screenshot_20161017_134743" width="300" height="161" class="alignnone size-medium wp-image-1498" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134743-300x161.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134743-768x413.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_134743.png 779w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Clique em <strong>Criar administrador</strong></p>
<p>Deve retornar a mensagem:</p>
<pre class="remontti-code">
	Administrador criado! (postmaster@remontti.com.br)
	You are done with your basic setup.

	You can now login to PostfixAdmin using the account you just created.
</pre>
<p>Acesse: http://SEU-DOMINO//postfixadmin/public/</p>
<p>Já é possível acessa-lo com nosso usuários administrador, e adicionar seus domínios e contas de e-mails.<br />
Domínios => Criar  Domínio<br />
Virtual => Criar conta de Email</p>
<p>Dando continuidade criaremos nosso usuários vmail que será o "cara" responsável pelo trabalho.</p>
<pre class="remontti-code"># groupadd -g 5000 vmail
# useradd -g vmail -u 5000 vmail -d /var/vmail
# mkdir /var/vmail
# chown vmail:vmail /var/vmail</pre>
<p>Edite o arquivo /etc/postfix/main.cf</p>
<pre class="remontti-code"># cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
# vim /etc/postfix/main.cf</pre>
<p>Altere e adicione como descrito abaixo.</p>
<pre class="remontti-code">#--------ALTERE--------#
smtpd_banner = $myhostname
myorigin = $myhostname
mydestination = localhost

#--------COMENTE--------#
#relayhost =
#mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
#mailbox_size_limit = 0

#--------ADD AO FINAL--------#

# Authentification
smtpd_sasl_type=dovecot
smtpd_sasl_path=private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql_sender_login_maps.cf
broken_sasl_auth_clients = yes

# Virtual mailboxes
local_transport = virtual
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_base = /var/vmail/
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 104
virtual_transport = dovecot
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
dovecot_destination_recipient_limit = 1
spamassassin_destination_recipient_limit = 1

###### EXTRAS COMENTADO #######
# Tamanho maximo do anexo (21 MB)
# No webmail php deve permitir upar esse tamanho
message_size_limit = 22020096

# Um pouco mais de  protecao contra spam
disable_vrfy_command = yes

# A RFC 821 basicamente exige que os enderecos sejam envelopados ou contidos por &lt;&gt;.
# Seguir esta regra faz com que se use essa notacao na sessao SMTP. Isso ajuda a barrar alguns Mailers.
strict_rfc821_envelopes = yes

# Caixa postal inexistente devolver aosender o erro 500,
# desta forma daqui alguns minutos voce nao precisara processar novamente o mesmo spam.
unknown_local_recipient_reject_code = 500

# E rejeitar com erro 554 enderecos desconhecidos
unknown_address_reject_code = 554

# Tambem com o erro 554 podemos rejeitar as conexoes que venham de hostnames desconhecidos
unknown_hostname_reject_code = 554

# Os cliente desconhecidos tambem rejeitaremos com o mesmo erro
unknown_client_reject_code = 554

# Vamos definir que o servidores remotos podem fazer no maximo 10
# conexõsimultaneas (e um valor que trabalho, editem conforme a necessidade).
# Um spammer faz mais de 20
smtp_destination_recipient_limit = 10

# Vamos definir que a conexao so pode cometer 3 erros de codigos 500
# (erros definitivos), apos isto sera desconectado
smtpd_hard_error_limit = 3

# Para erros de codigo 400 (erros temporarios), podemos desconecta-los na primeira
smtpd_soft_error_limit = 1

# Bom, claro que o spammer tambem pode ser desconectado e depois se reconectar,
# entao vamos nos prevenir destes espertinhos definindo quantas conexoes ele pode fazer por minuto.
smtpd_client_connection_count_limit = 10

# Nestas conexoes vamos limitar quantas mensagens ele pode mandar por minuto,
# no meu caso uso 25. Se algum usuario seu reclamar deste limite,
# classifique-o como ninja ou na pior hipotese, um mail maniaco.
smtpd_client_message_rate_limit = 25

# Deixar um spammer maluco e faze-lo perder tempo. Dificilmente um servidor conectado
# ao seu servidor vai cometer erros, os spammer cometem muitos erros, pois eles ficam tentando.
# Para irrita-los e quem sabe um dia desistirem de mim, eu travo eles dentro do meu servidor a cada erro.
# No meu caso, a cada erro eu os travo por 20 segundos. Ate que diminuiu o numero de spammers no meu servidor,
# devo estar na blacklist deles.rs
smtpd_error_sleep_time = 20

# Para este tipo de problema, os spammers podem resetar os erros deles.
# Para evitar que eles facam isto e sejam desconetados, podemos dizer se eles podem ou nao fazer isto.
# Como colher de cha, vamos deixar fazer isto apenas uma vez (ate porque servidores as vezes usam este comando).
# Permitir a maquina remota dar o comando RSET apenas 1 vez.
smtpd_junk_command_limit = 1


# Defina tambem o numero maximo de destinatarios em uma unica mensagem.
# Utilize o numero que melhor lhe convir, entreviste pessoas chaves se necessarios.
smtpd_recipient_limit = 50

# Os spammers nao se preocupam muito com isto,
# entao uma otima pratica para bloquear spams eh
# tornar a identificacao por HELO/EHLO obrigatoria.
smtpd_helo_required = yes

# Um pouco mais sobre o HELO/EHLO eh definir um tempo
# limite para o servidor fazer a identificacao, um
# servidor serio nao tem porque ficar enrolando.
# Vai diminuindo o tempo e observando os resultados.
# Vamos comecar com 60 segundos
smtp_helo_timeout = 60s

smtpd_client_restrictions =     permit_mynetworks,
                                permit_sasl_authenticated,
                                check_recipient_access hash:/etc/postfix/white-black-list,
                                check_client_access hash:/etc/postfix/white-black-list,
                                reject_unknown_client_hostname,
                                reject_unknown_reverse_client_hostname,
                                sleep 1,
                                reject_unauth_pipelining

smtpd_helo_restrictions =       permit_mynetworks,
                                permit_sasl_authenticated,
                                check_recipient_access hash:/etc/postfix/white-black-list,
                                check_client_access hash:/etc/postfix/white-black-list,
                                check_helo_access hash:/etc/postfix/white-black-list,
                                reject_invalid_helo_hostname,
                                reject_non_fqdn_helo_hostname,
                                reject_unknown_helo_hostname,
                                reject_unauth_pipelining
 
smtpd_sender_restrictions =     reject_non_fqdn_sender,
                                reject_unknown_sender_domain,
                                reject_unlisted_sender,
                                reject_authenticated_sender_login_mismatch,
                                permit_sasl_authenticated,
                                reject_sender_login_mismatch,
                                warn_if_reject,
                                permit_mynetworks
 
smtpd_recipient_restrictions =  check_sender_access hash:/etc/postfix/white-black-list,
                                check_helo_access hash:/etc/postfix/white-black-list,
                                check_recipient_access hash:/etc/postfix/white-black-list,
                                check_client_access hash:/etc/postfix/white-black-list,
                                permit_sasl_authenticated,
                                permit_mynetworks,
                                reject_unauth_destination,
                                check_policy_service unix:private/policyd-spf,
                                reject_unknown_reverse_client_hostname,
                                reject_invalid_hostname,
                                reject_non_fqdn_hostname,
                                reject_non_fqdn_sender,
                                reject_non_fqdn_recipient,
                                reject_unknown_sender_domain,
                                reject_unknown_recipient_domain,
                                reject_unauth_pipelining,
                                reject_rbl_client access.redhawk.org, 
                                reject_rbl_client all.spamrats.com, 
                                reject_rbl_client b.barracudacentral.org, 
                                reject_rbl_client bl.spamcop.net, 
                                reject_rbl_client blackholes.mail-abuse.org, 
                                reject_rbl_client bogons.cymru.com, 
                                reject_rbl_client cbl.abuseat.org, 
                                reject_rbl_client cblless.anti-spam.org.cn, 
                                reject_rbl_client csi.cloudmark.com, 
                                reject_rbl_client db.wpbl.info, 
                                reject_rbl_client dnsbl.dronebl.org, 
                                reject_rbl_client dnsbl.inps.de, 
                                reject_rbl_client dnsbl.sorbs.net, 
                                reject_rbl_client drone.abuse.ch, 
                                reject_rbl_client dsn.rfc-ignorant.org, 
                                reject_rbl_client httpbl.abuse.ch, 
                                reject_rbl_client ix.dnsbl.manitu.net, 
                                reject_rbl_client korea.services.net, 
                                reject_rbl_client multi.surbl.org, 
                                reject_rbl_client netblock.pedantic.org, 
                                reject_rbl_client opm.tornevall.org, 
                                reject_rbl_client pbl.spamhaus.org, 
                                reject_rbl_client psbl.surriel.com, 
                                reject_rbl_client query.senderbase.org, 
                                reject_rbl_client rbl.efnetrbl.org, 
                                reject_rbl_client rbl.interserver.net, 
                                reject_rbl_client rbl.rbldns.ru, 
                                reject_rbl_client rbl.spamlab.com, 
                                reject_rbl_client rbl.suresupport.com, 
                                reject_rbl_client rbl-plus.mail-abuse.org, 
                                reject_rbl_client relays.mail-abuse.org, 
                                reject_rbl_client sbl.spamhaus.org, 
                                reject_rbl_client spamguard.leadmon.net, 
                                reject_rbl_client spamrbl.imp.ch, 
                                reject_rbl_client tor.dan.me.uk, 
                                reject_rbl_client ubl.unsubscore.com, 
                                reject_rbl_client virbl.bit.nl, 
                                reject_rbl_client wormrbl.imp.ch, 
                                reject_rbl_client zen.spamhaus.org, 
                                reject_rbl_client dnsbl-1.uceprotect.net, 
                                reject_rhsbl_sender dbl.spamhaus.org, 
                                reject_rhsbl_helo dbl.spamhaus.org, 
                                reject_rhsbl_client dbl.spamhaus.org, 
                                reject_rhsbl_helo black.uribl.com,
                                reject_rhsbl_sender black.uribl.com,
                                reject_rhsbl_client black.uribl.com,
                                reject_rhsbl_helo multi.surbl.org,
                                reject_rhsbl_sender multi.surbl.org,
                                reject_rhsbl_client multi.surbl.org,
                                reject_rhsbl_helo multi.uribl.com,
                                reject_rhsbl_sender multi.uribl.com,
                                reject_rhsbl_client multi.uribl.com,
                                permit
</pre>
<p><strong>RBL/RHSBL</strong>: Caso não queira utilizar alguma das rbl/sbl ou utilizar outras sinta-se a vontade.</p>
<p>Aproveitamos já iremos criar uma <strong>lista Negra / Branca</strong>, crie um arquivo chamado <strong>white-black-list</strong></p>
<pre class="remontti-code"># vim /etc/postfix/white-black-list</pre>
<p>Nele adicione os dominos/emails com OK que você confia e REJECT para os que deseja descartar, ex.:</p>
<pre class="remontti-code">remontti.com.br OK
gmail.com OK
spamerdoinferno.com.br REJECT
propagandadocapeta.com.br REJECT</pre>
<p>Agora você precisa executar o comando <strong>postmap</strong> no seu arquivo white-black-list ele irá gerar um novo arquivo white-black-list.db</p>
<pre class="remontti-code"># postmap /etc/postfix/white-black-list</pre>
<p>Mais informações você encontra em:<br />
<a href="http://www.postfix.org/VIRTUAL_README.html#virtual_mailbox" rel="noopener noreferrer" target="_blank">http://www.postfix.org/VIRTUAL_README.html#virtual_mailbox</a></p>
<p>Precisamos criar 4 arquivos que farão a conexão com o BD, pra facilitar criamos nossa variável MINHASENHA</p>
<p>Vamos criar uma variável com o valor da senha que foi informada na instalação do postfixadmin, assim ira facilitar.</p>
<pre class="remontti-code"># MINHASENHA=&#039;sua-senha-do-usuario-postfixadmin-do-mysql&#039;</pre>
<p>Não use $ ou # em sua senha</p>
<p><strong>mysql_virtual_alias_maps.cf</strong></p>
<pre class="remontti-code"># echo &quot;
hosts = localhost
user = postfixadmin
password = $MINHASENHA
dbname = postfixadmin
query = SELECT goto FROM alias WHERE address=&#039;%s&#039; AND active = &#039;1&#039;
&quot; &gt;&gt; /etc/postfix/mysql_virtual_alias_maps.cf</pre>
<p><strong>mysql_virtual_mailbox_maps.cf</strong></p>
<pre class="remontti-code"># echo &quot;
hosts = localhost
user = postfixadmin
password = $MINHASENHA
dbname = postfixadmin
query = SELECT maildir FROM mailbox WHERE username=&#039;%s&#039; AND active = &#039;1&#039;
&quot; &gt;&gt; /etc/postfix/mysql_virtual_mailbox_maps.cf</pre>
<p><strong>mysql_sender_login_maps.cf</strong></p>
<pre class="remontti-code"># echo &quot;
hosts = localhost
user = postfixadmin
password = $MINHASENHA
dbname = postfixadmin
query = SELECT username AS allowedUser FROM mailbox WHERE username=&#039;%s&#039; AND active = 1 UNION SELECT goto FROM alias WHERE address=&#039;%s&#039; AND active = &#039;1&#039;
&quot; &gt;&gt; /etc/postfix/mysql_sender_login_maps.cf</pre>
<p><strong>mysql_virtual_domains_maps.cf</strong></p>
<pre class="remontti-code"># echo &quot;
hosts = localhost
user = postfixadmin
password = $MINHASENHA
dbname = postfixadmin
query = SELECT domain FROM domain WHERE domain=&#039;%s&#039; AND active = &#039;1&#039;
&quot; &gt;&gt; /etc/postfix/mysql_virtual_domains_maps.cf</pre>
<p>Acesse o diretório de instalação e verifique se os arquivos com as iniciais mysql_* foram criados. Depois altere as permissões e grupos.</p>
<pre class="remontti-code"># cd /etc/postfix
# ls -lh mysql_*
# chmod o-rwx,g+r mysql_*
# chgrp postfix mysql_*</pre>
<p>Vamos as alterações no master.cf.</p>
<p>Faça um backup do arquivo original antes e adicione no final:</p>
<pre class="remontti-code"># cp /etc/postfix/master.cf /etc/postfix/master.cf.orig
# vim /etc/postfix/master.cf</pre>
<p>Adicione ao final:</p>
<pre class="remontti-code"># Dovecot
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}</pre>
<p>Localize as seguintes linhas e descomente-as:</p>
<pre class="remontti-code">submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_sasl_auth_enable=yes

smtps     inet  n       -       -       -       -       smtpd
  -o smtpd_tls_wrappermode=yes</pre>
<p>Descomente e altere os valores de smtpd_client_restrictions, os originais são diferentes. (veja na imagem abaixo como fica)</p>
<pre class="remontti-code">  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
[...]
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_143502.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_143502-254x300.png" alt="screenshot_20161017_143502" width="254" height="300" class="alignnone size-medium wp-image-1500" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_143502-254x300.png 254w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161017_143502.png 694w" sizes="auto, (max-width: 254px) 100vw, 254px" /></a></p>
<p><strong>Configurando o Dovecot</strong></p>
<p>Vou usar o comando sed para fazer as alterações necessárias em vez de ficarmos abrindo arquivo e editando.</p>
<pre class="remontti-code"># cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
# sed -i -e &#039;s/#listen/listen/&#039; /etc/dovecot/dovecot.conf

# cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext.orig
# sed -i -e &#039;s/#driver =/driver = mysql/&#039; /etc/dovecot/dovecot-sql.conf.ext</pre>
<p>Adicionamos ao final do arquivo /etc/dovecot/dovecot.conf mais algumas conf:</p>
<pre class="remontti-code"># echo &quot; &quot; &gt;&gt; /etc/dovecot/dovecot.conf
# echo &quot;service stats {&quot; &gt;&gt; /etc/dovecot/dovecot.conf
# echo &quot;    unix_listener stats-reader {&quot; &gt;&gt; /etc/dovecot/dovecot.conf
# echo &quot;        user = vmail&quot; &gt;&gt; /etc/dovecot/dovecot.conf
# echo &quot;        group = vmail&quot; &gt;&gt; /etc/dovecot/dovecot.conf
# echo &quot;        mode = 0660&quot; &gt;&gt; /etc/dovecot/dovecot.conf
# echo &quot;    }&quot; &gt;&gt; /etc/dovecot/dovecot.conf
# echo &quot; &quot; &gt;&gt; /etc/dovecot/dovecot.conf
# echo &quot;    unix_listener stats-writer {&quot; &gt;&gt; /etc/dovecot/dovecot.conf
# echo &quot;        user = vmail&quot; &gt;&gt; /etc/dovecot/dovecot.conf
# echo &quot;        group = vmail&quot; &gt;&gt; /etc/dovecot/dovecot.conf
# echo &quot;        mode = 0660&quot; &gt;&gt; /etc/dovecot/dovecot.conf
# echo &quot;    }&quot; &gt;&gt; /etc/dovecot/dovecot.conf
# echo &quot;}&quot; &gt;&gt; /etc/dovecot/dovecot.conf</pre>
<p>Certifique-se que sua senha do postfixadmin ainda esta salva na variável $MINHASENHA.</p>
<pre class="remontti-code"># echo $MINHASENHA

# sed -i -e &quot;s/#connect =/connect = host=localhost dbname=postfixadmin user=postfixadmin password=$MINHASENHA/&quot; /etc/dovecot/dovecot-sql.conf.ext
# sed -i -e &#039;s/#default_pass_scheme/default_pass_scheme/&#039; /etc/dovecot/dovecot-sql.conf.ext</pre>
<p>Vamos inserir algumas linhas ao final de dovecot-sql.conf.ext.</p>
<pre class="remontti-code"># echo &quot;&quot; &gt;&gt; /etc/dovecot/dovecot-sql.conf.ext
# echo &quot;user_query = SELECT concat(&#039;/var/vmail/&#039;, maildir) as home, concat(&#039;maildir:/var/vmail/&#039;, maildir) as mail, 5000 AS uid, 5000 AS gid, concat(&#039;*:bytes=&#039;, (quota)) AS quota_rule FROM mailbox WHERE username = &#039;%u&#039; AND active = &#039;1&#039;;&quot; &gt;&gt; /etc/dovecot/dovecot-sql.conf.ext
# echo &quot;&quot; &gt;&gt; /etc/dovecot/dovecot-sql.conf.ext
# echo &quot;password_query = SELECT username as user, password, concat(&#039;/var/vmail/&#039;, maildir) as userdb_home, concat(&#039;maildir:/var/vmail/&#039;, maildir) as userdb_mail, 5000 as userdb_uid, 5000 as userdb_gid, concat(&#039;*:bytes=&#039;, (quota)) AS userdb_quota_rule FROM mailbox WHERE username = &#039;%u&#039; AND active = &#039;1&#039;;&quot; &gt;&gt; /etc/dovecot/dovecot-sql.conf.ext</pre>
<p>Alterações dos arquivos 10-auth.conf / 10-logging.conf / 10-ssl.conf</p>
<pre class="remontti-code"># cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.orig
# sed -i -e &#039;s/#disable_plaintext_auth = yes/disable_plaintext_auth = no/&#039; /etc/dovecot/conf.d/10-auth.conf
# sed -i -e &#039;s/auth_mechanisms = plain/auth_mechanisms = plain login/&#039; /etc/dovecot/conf.d/10-auth.conf
# sed -i -e &#039;s/!include auth-system.conf.ext/#!include auth-system.conf.ext/&#039; /etc/dovecot/conf.d/10-auth.conf
# sed -i -e &#039;s/#!include auth-sql.conf.ext/!include auth-sql.conf.ext/&#039; /etc/dovecot/conf.d/10-auth.conf

# cp /etc/dovecot/conf.d/10-logging.conf /etc/dovecot/conf.d/10-logging.conf.orig
# sed -i -e &#039;s/#log_path/log_path/&#039; /etc/dovecot/conf.d/10-logging.conf
# sed -i -e &#039;s/#log_timestamp = &quot;%b %d %H:%M:%S &quot;/log_timestamp = &quot;%Y-%m-%d %H:%M:%S &quot;/&#039; /etc/dovecot/conf.d/10-logging.conf</pre>
<p>Em 10-master.conf ficou complicado fazer alteração com sed então vamos no braço.</p>
<pre class="remontti-code"># cp /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.orig
# vim /etc/dovecot/conf.d/10-master.conf</pre>
<p>em :service auth {<br />
COMENTE tudo de unix_listener auth-userdb</p>
<pre class="remontti-code">service auth {

#  unix_listener auth-userdb {
#    #mode = 0666
#    #user = 
#    #group = 
#  }

# Descomente
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
  }
# Adicione
  unix_listener auth-master {
    mode = 0666
  }

# Descomente
  # Auth process is run as this user.
  user = $default_internal_user
}</pre>
<p>Vamos criar um filtro para que todas as mensagens marcada com spam sejam movida para o diretórios SPAM.</p>
<pre class="remontti-code"># mkdir /var/lib/dovecot/sieve/
# cp /etc/dovecot/conf.d/90-sieve.conf /etc/dovecot/conf.d/90-sieve.conf.orig
# sed -i -e &#039;s/sieve = file:~\/sieve;active=~\/.dovecot.sieve/sieve = ~\/dovecot.sieve/&#039; /etc/dovecot/conf.d/90-sieve.conf
# sed -i -e &#039;s/#sieve_default =/sieve_default =/&#039; /etc/dovecot/conf.d/90-sieve.conf

# echo &#039;require [&quot;fileinto&quot;];&#039; &gt;&gt; /var/lib/dovecot/sieve/default.sieve
# echo &#039;# rule:[Spam]&#039; &gt;&gt; /var/lib/dovecot/sieve/default.sieve
# echo &#039;if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot; {&#039; &gt;&gt; /var/lib/dovecot/sieve/default.sieve
# echo &#039;        fileinto &quot;Junk&quot;;&#039; &gt;&gt; /var/lib/dovecot/sieve/default.sieve
# echo &#039;}&#039; &gt;&gt; /var/lib/dovecot/sieve/default.sieve

# sievec /var/lib/dovecot/sieve/default.sieve
# chown -R vmail:vmail /var/lib/dovecot

# cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.orig
# sed -i -e &#039;s/mail_location = mbox:~\/mail:INBOX=\/var\/mail\/%u/mail_location = mbox:~\/mail:INBOX=\/var\/vmail\/%u/&#039; /etc/dovecot/conf.d/10-mail.conf</pre>
<p>!Exatamente nessa ordem!</p>
<pre class="remontti-code"># sed -i -e &#039;s/inbox = yes/inbox = yes\n  /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    } /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      special_use = \Junk /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      auto = subscribe /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    mailbox Junk { /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    } /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      special_use = \Sent /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      auto = subscribe /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    mailbox Sent { /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    } /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      special_use = \Drafts /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      auto = subscribe /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    mailbox Drafts { /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n    } /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      special_use = \Trash /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n      auto = subscribe /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n  mailbox Trash { /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/inbox = yes/inbox = yes\n  /&#039; /etc/dovecot/conf.d/10-mail.conf
# sed -i -e &#039;s/#mail_plugins =/mail_plugins = quota/&#039; /etc/dovecot/conf.d/10-mail.conf</pre>
<pre class="remontti-code"># cp /etc/dovecot/conf.d/20-managesieve.conf  /etc/dovecot/conf.d/20-managesieve.conf.orig
# vim /etc/dovecot/conf.d/20-managesieve.conf</pre>
<p>Descomente:</p>
<pre class="remontti-code">protocols = $protocols sieve

service managesieve-login {
  #...
  #...
  #....
}
service managesieve {
  #...
  #...
  #....
}
protocol sieve {
  #...
  #...
  #....
}</pre>
<pre class="remontti-code"># cp /etc/dovecot/conf.d/15-lda.conf /etc/dovecot/conf.d/15-lda.conf.orig
# sed -i -e &#039;s/#mail_plugins = $mail_plugins/mail_plugins = $mail_plugins sieve quota/&#039; /etc/dovecot/conf.d/15-lda.conf

# cp /etc/dovecot/conf.d/20-imap.conf /etc/dovecot/conf.d/20-imap.conf.orig
# sed -i -e &#039;s/#mail_plugins = $mail_plugins/mail_plugins = $mail_plugins quota imap_quota/&#039; /etc/dovecot/conf.d/20-imap.conf

# cp /etc/dovecot/conf.d/20-pop3.conf /etc/dovecot/conf.d/20-pop3.conf.orig
# sed -i -e &#039;s/#mail_plugins = $mail_plugins/mail_plugins = $mail_plugins quota/&#039; /etc/dovecot/conf.d/20-pop3.conf

# cp /etc/dovecot/conf.d/90-quota.conf /etc/dovecot/conf.d/90-quota.conf.orig
# sed -i -e &#039;s/#quota = maildir/quota = maildir/&#039; /etc/dovecot/conf.d/90-quota.conf
# sed -i -e &#039;s/#quota_rule =/quota_rule =/&#039; /etc/dovecot/conf.d/90-quota.conf
# sed -i -e &#039;s/#quota_rule2 =/quota_rule2 =/&#039; /etc/dovecot/conf.d/90-quota.conf
# sed -i -e &#039;s/#quota_warning/quota_warning/&#039; /etc/dovecot/conf.d/90-quota.conf</pre>
<pre class="remontti-code"># vim /etc/dovecot/conf.d/90-quota.conf</pre>
<p>Descomente e altere user = dovecot para   user = root</p>
<pre class="remontti-code">service quota-warning {
  executable = script /usr/local/bin/quota-warning.sh
  user = root
  unix_listener quota-warning {
    user = vmail
  }
}</pre>
<pre class="remontti-code"># vim /usr/local/bin/quota-warning.sh</pre>
<pre class="remontti-code">#!/bin/sh
PERCENT=$1
USER=$2
cat &lt;&lt; EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o &quot;plugin/quota=maildir:User quota:noenforcing&quot;
From: postmaster@remontti.com.br
Subject: $USER com  $PERCENT% 
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Sua conta de email: $USER 
está com uso acima de $PERCENT%,

-- 
Rudimar Remontti
  Remontti ME
EOF

# Evine uma cópia para o administrador:
ADM=noc@remontti.com.br
cat &lt;&lt; EOF | /usr/lib/dovecot/dovecot-lda -d $ADM -o &quot;plugin/quota=maildir:User quota:noenforcing&quot;
From: postmaster@remontti.com.br
Subject: $USER com  $PERCENT% 
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Verificar conta de email: $USER 
Caixa acima de  $PERCENT%

-- 
Rudimar Remontti
  Remontti ME
EOF</pre>
<p>Demos permissão e restartamos o serviços.</p>
<pre class="remontti-code"># chmod +x /usr/local/bin/quota-warning.sh
# systemctl restart dovecot postfix
# systemctl status dovecot postfix </pre>
<p>Comando para ver cota</p>
<pre class="remontti-code"># doveadm quota get -u usuario@dominio.com.br</pre>
<h4>WEBMAIL ROUNDCUBE</h4>
<p>Ajuste o <a href="https://www.php.net/manual/pt_BR/timezones.america.php" rel="noopener noreferrer" target="_blank">time zone </a>de acordo com sua localidade.</p>
<pre class="remontti-code"># sed -i -e &quot;s/^;date\.timezone =.*$/date\.timezone = &#039;America\/Sao_Paulo&#039;/&quot; /etc/php/7.3/apache2/php.ini
# systemctl restart apache2</pre>
<p>Acesse e baixe a versão mais recente<br />
<a href="https://roundcube.net/download/" rel="noopener noreferrer" target="_blank">https://roundcube.net/download/</a></p>
<p>Hoje (27/Nov/2019) 1.4.1 Complete </p>
<pre class="remontti-code"># cd /var/www/html
# wget https://github.com/roundcube/roundcubemail/releases/download/1.4.1/roundcubemail-1.4.1-complete.tar.gz
# tar -vxzf roundcubemail*
# mv roundcubemail-1.4.1 webmail
# rm roundcubemail-1.4.1-complete.tar.gz</pre>
<p>Criaremos nosso banco de dados para o roundcubemail.</p>
<pre class="remontti-code"># mariadb</pre>
<p>Será solicitado a senha root do mysql, entre com a senha.</p>
<pre class="remontti-code">CREATE DATABASE roundcubemail;
GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY &#039;SUA-SENHA-BD-ROUND&#039;;
FLUSH PRIVILEGES;
quit;</pre>
<p>Acesse:<br />
http://SEU-DOMINIO/webmail/installer/</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/11/roundcube1.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/11/roundcube1-300x248.png" alt="" width="300" height="248" class="alignnone size-medium wp-image-3764" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/11/roundcube1-300x248.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/11/roundcube1-1024x847.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/11/roundcube1-768x635.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/11/roundcube1-1536x1270.png 1536w, https://blog.remontti.com.br/wp-content/uploads/2019/11/roundcube1.png 1600w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Clique em <strong>Next</strong></p>
<p>Será necessário dar permissão para criação do config.inc.php na pasta config,</p>
<pre class="remontti-code"># chown www-data. /var/www/html/webmail/ -R</pre>
<p>Itens a serem alterados:</p>
<p><strong>== General configuration ==</strong><br />
product_name: Nome do Webmail<br />
Check client IP in session authorization: MARQUE</p>
<p><strong>== Logging & Debugging ==</strong><br />
log_driver: syslog</p>
<p><strong>== Database setup ==</strong><br />
Database type: MYSQL<br />
Database server: localhost<br />
Database name: roundcubemail<br />
Database user name: roundcube<br />
Database password: SUA-SENHA-BD-ROUND<br />
db_prefix:</p>
<p><strong>== IMAP Settings ==</strong><br />
default_host: localhost (se vc usar certificado deixe tls://mail.remontti.com.br)<br />
username_domain: remontti.com.br</p>
<p><strong>== SMTP Settings ==</strong><br />
smtp_server: tls://mail.remontti.com.br (se vc nao for criar certificado deixe localhost)</p>
<p><strong>== Display settings & user prefs ==</strong><br />
language *: pt_BR<br />
Compose HTML formatted messages: always</p>
<p><strong>== Plugins ==</strong><br />
"De acordo com suas necessidades! Porém vou configurar os seguintes.<br />
- emoticons<br />
- managesieve<br />
- markasjunk<br />
- newmail_notifier<br />
- password<br />
- zipdownload</p>
<p>Agora clique em <strong>[CREAT CONFIG]</strong><br />
Vai retornar uma mensagem:<br />
<i>The config file was saved successfully into RCMAIL_CONFIG_DIR directory of your Roundcube installation.</i></p>
<p>Isso significa que nosso arquivo de configuração do roundcube foi criado (config/config.inc.php)</p>
<p>Agora clique em: <strong>[CONTINUE]</strong><br />
Agora em: <strong>[Inicialize database]</strong></p>
<p>Irá retornar:<i><br />
Check DB config<br />
DSN (write):  OK<br />
DB Schema:  OK<br />
DB Write:  OK<br />
DB Time:  OK</i></p>
<p>Por seguração deixe as permissões para o root novamente, e para www-data apenas para pasta temp</p>
<pre class="remontti-code"># chown root. /var/www/html/webmail/ -R
# chown www-data. /var/www/html/webmail/temp -R</pre>
<p>Se você já criou uma conta de email você pode testa-la [Check login]</p>
<p>Como recomendações, mova o diretório <strong>installer</strong> para outro nome ou remova.</p>
<p><i>After completing the installation and the final tests please remove the whole installer folder from the document root of the webserver or make sure that enable_installer option in config.inc.php is disabled.</p>
<pre class="remontti-code"># rm installer/ -rf</pre>
<p>Acesse o diretório dos plugins do roundcube.</p>
<pre class="remontti-code"># cd /var/www/html/webmail/plugins/</pre>
<p><strong>== newmail_notifier ==</strong></p>
<pre class="remontti-code"># cd newmail_notifier
# cp config.inc.php.dist config.inc.php
# sed -i -e &#039;s/= false/= true/&#039; config.inc.php</pre>
<p><strong>== zipdownload ==</strong></p>
<pre class="remontti-code"># cd ../zipdownload
# cp config.inc.php.dist config.inc.php</pre>
<p><strong>== markasjunk ==</strong></p>
<pre class="remontti-code"># cd ../markasjunk/
# cp config.inc.php.dist config.inc.php</pre>
<p><strong>= managesieve =</strong><br />
Faz emails identificado com spam cair na pasta spam.</p>
<pre class="remontti-code"># cd ../managesieve
# cp config.inc.php.dist  config.inc.php
# vim config.inc.php</pre>
<p>Altere: (atençao para o caminho)</p>
<pre class="remontti-code">$config[&#039;managesieve_default&#039;] = &#039;/var/www/html/webmail/plugins/managesieve/default.sieve&#039;;
$config[&#039;managesieve_script_name&#039;] = &#039;Filtros&#039;;</pre>
<p>Crie o arquivo default.sieve</p>
<pre class="remontti-code"># vim /var/www/html/webmail/plugins/managesieve/default.sieve</pre>
<pre class="remontti-code">require [&quot;fileinto&quot;];
# rule:[Spam]
if header :contains &quot;X-Spam-Flag&quot; &quot;YES&quot;
{
        fileinto &quot;Junk&quot;;
        stop;
}</pre>
<p><strong>== password ==</strong><br />
Permite usuário alterar sua senha.</p>
<pre class="remontti-code"># cd ../password
# cp config.inc.php.dist  config.inc.php
# vim config.inc.php</pre>
<p>Altere:</p>
<pre class="remontti-code">
//Define o uma quantidade minima de caracteres
$config[&#039;password_minimum_length&#039;] = 8;

$config[&#039;password_minimum_score&#039;] = 4;

$config[&#039;password_db_dsn&#039;] = &#039;mysql://postfixadmin:SENHA-POSTFIX-MYSQL@localhost/postfixadmin&#039;;
$config[&#039;password_query&#039;] = &quot;UPDATE  mailbox SET  password=MD5(%p) WHERE username=%u AND password=MD5(%o)&quot;;
</pre>
<h3><a href="http://plugins.roundcube.net/" rel="noopener noreferrer" target="_blank">Plugins extra</a></h3>
<p><strong>== contextmenu ==</strong><br />
<a href="https://github.com/johndoh/roundcube-contextmenu/releases" rel="noopener noreferrer" target="_blank">Baixe a versão mais recente</a></p>
<pre class="remontti-code"># cd /var/www/html/webmail/plugins/
# wget https://github.com/johndoh/roundcube-contextmenu/archive/3.0.zip
# apt install unzip 
# unzip 3.0.zip
# rm 3.0.zip
# mv roundcube-contextmenu-3.0 contextmenu</pre>
<p><strong>== <a href="https://github.com/remontti/dovecot_ident/releases" rel="noopener noreferrer" target="_blank">dovecot_ident</a> ==</strong><br />
Como webmail é um acesso localhost, nos logs de acesso IMAP não queremos isso e sim o IP do usuário que esta acessando, para isso:</p>
<pre class="remontti-code"># cd /var/www/html/webmail/plugins
# wget https://github.com/remontti/dovecot_ident/archive/3.0.tar.gz
# tar -vxzf 3.0.tar.gz
# rm 3.0.tar.gz
# mv dovecot_ident-3.0 dovecot_ident
# vim /etc/dovecot/dovecot.conf</pre>
<p>Descomente incluindo:</p>
<pre class="remontti-code">login_trusted_networks = 127.0.0.1 ::1</pre>
<p>Restarte os serviços</p>
<pre class="remontti-code"># systemctl restart dovecot postfix
# systemctl status dovecot postfix</pre>
<p>Agora precisamos adicionar nossos plugins extrar nas configurações do Round.</p>
<pre class="remontti-code"># vim /var/www/html/webmail/config/config.inc.php</pre>
<p>Procure por:</p>
<pre class="remontti-code">$config[&#039;plugins&#039;] = array(&#039;emoticons&#039;, &#039;identity_select&#039;, &#039;managesieve&#039;, &#039;markasjunk&#039;, &#039;newmail_notifier&#039;, &#039;password&#039;, &#039;zipdownload&#039;);</pre>
<p>Inclua os plugins contextmenu e contextmenu ficando:</p>
<pre class="remontti-code">$config[&#039;plugins&#039;] = array(&#039;emoticons&#039;, &#039;identity_select&#039;, &#039;managesieve&#039;, &#039;markasjunk&#039;, &#039;newmail_notifier&#039;, &#039;password&#039;, &#039;zipdownload&#039;, &#039;contextmenu&#039;, &#039;dovecot_ident&#039;);</pre>
<p>Adicione também check_all_folders, para verificar novos e-mails em todas as pastas, bom caso você criar algum filtro personalizado, ex todas as mensagems contendo x assunto ou de um domínio/email... assim se cair uma mensagem ela fica uma notificação numérica além da pasta principal.</p>
<pre class="remontti-code">// If true all folders will be checked for recent messages
$config[&#039;check_all_folders&#039;] = true;</pre>
<p>Seu servidor de e-mail já está funcionado, logue em seu webmail, envie algum e-mails.<br />
Acesse: <strong>http://SEU-DOMINIO/webmail/</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/11/roundcube1.4.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/11/roundcube1.4.png" alt="" width="517" height="444" class="alignnone size-full wp-image-3770" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/11/roundcube1.4.png 517w, https://blog.remontti.com.br/wp-content/uploads/2019/11/roundcube1.4-300x258.png 300w" sizes="auto, (max-width: 517px) 100vw, 517px" /></a></p>
<h4>PEGANDO A ULTIMA VEZ QUE USUÁRIO LOGOU E O IP</h4>
<p>Se você é administrador de um servidor de e-mail certamente vai querer isso!<br />
Primeiramente vamos adicionar alguns campos extrar nassa tabela mailbox (last_login_date last_login_ip last_login_proto)</p>
<pre class="remontti-code"># mariadb</pre>
<pre class="remontti-code">use postfixadmin;
ALTER TABLE `mailbox` ADD `last_login_date` DATETIME NULL COMMENT &#039;last login date&#039;,ADD `last_login_ip` VARCHAR( 39 ) NULL COMMENT &#039;last login ip&#039;,ADD `last_login_proto` CHAR( 5 ) NULL ;
quit;</pre>
<p>Vamos ensinar o dovecot a alimentar esses campos.<br />
<strong>10-master.conf</strong></p>
<pre class="remontti-code"># sed -i -e &#039;s/service imap {/service imap {\n  executable = imap imap-postlogin/&#039; /etc/dovecot/conf.d/10-master.conf
# sed -i -e &#039;s/service imap {/service imap {\n  # Post-login action/&#039; /etc/dovecot/conf.d/10-master.conf
# sed -i -e &#039;s/service pop3 {/service pop3 {\n  executable = pop3 pop3-postlogin/&#039; /etc/dovecot/conf.d/10-master.conf
# sed -i -e &#039;s/service pop3 {/service pop3 {\n  # Post-login action/&#039; /etc/dovecot/conf.d/10-master.conf
# echo &#039;&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;# Post login scripting POP3&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;service pop3-postlogin {&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  executable = script-login /usr/local/bin/postlogin-pop.sh&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  user = $default_internal_user&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  unix_listener pop3-postlogin {&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  }&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;}&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;# Post login scripting IMAP&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;service imap-postlogin {&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  executable = script-login /usr/local/bin/postlogin-imap.sh&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  user = $default_internal_user&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  unix_listener imap-postlogin {&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;  }&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf
# echo &#039;}&#039;&gt;&gt; /etc/dovecot/conf.d/10-master.conf</pre>
<p>Crie o arquivo postlogin-imap.sh</p>
<pre class="remontti-code"># vim /usr/local/bin/postlogin-imap.sh</pre>
<p>Atenção para SENHA.</p>
<pre class="remontti-code">
#!/bin/sh
MYSQL_USER=&#039;postfixadmin&#039;
PASSWD=&#039;SENHA&#039;
DB_NAME=&#039;postfixadmin&#039;
if [ X&quot;${USER}&quot; != X&quot;dump-capability&quot; ]; then
mysql -u${MYSQL_USER} -p${PASSWD} ${DB_NAME} &gt;/dev/null 2&gt;&amp;1 &lt;&lt;EOF
UPDATE mailbox SET \
last_login_ip=&quot;$IP&quot;, \
last_login_date=NOW(), \
last_login_proto=&quot;POP3&quot; \
WHERE username=&quot;$USER&quot;;
EOF
fi
exec &quot;$@&quot;
</pre>
<p>Crie o arquivo postlogin-pop.sh</p>
<pre class="remontti-code"># vim /usr/local/bin/postlogin-pop.sh</pre>
<p>Atenção para SENHA.</p>
<pre class="remontti-code">
#!/bin/sh
MYSQL_USER=&#039;postfixadmin&#039;
PASSWD=&#039;SENHA&#039;
DB_NAME=&#039;postfixadmin&#039;
if [ X&quot;${USER}&quot; != X&quot;dump-capability&quot; ]; then
mysql -u${MYSQL_USER} -p${PASSWD} ${DB_NAME} &gt;/dev/null 2&gt;&amp;1 &lt;&lt;EOF
UPDATE mailbox SET \
last_login_ip=&quot;$IP&quot;, \
last_login_date=NOW(), \
last_login_proto=&quot;POP3&quot; \
WHERE username=&quot;$USER&quot;;
EOF
fi
exec &quot;$@&quot;
</pre>
<pre class="remontti-code"># chmod +x /usr/local/bin/postlogin-*
# systemctl restart dovecot</pre>
<p>Acesse sua conta de e-mail e apos consulte a tabela mailbox (`SELECT * FROM mailbox`)</p>
<p>Até este ponto nosso servidor está 100%, agora falta apenas um Anti-Spam e um Anti-Vírus para ficar perfeito, Então vamos nessa <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>SPAMASSASSIN</h4>
<p>Vamos começar pelo SpamAssassin</p>
<pre class="remontti-code"># apt install spamc spamassassin</pre>
<p>Alguns ajustes</p>
<pre class="remontti-code"># systemctl enable spamassassin
# sed -i -e &#039;s/CRON=0/CRON=1/&#039; /etc/default/spamassassin
# sed -i -e &#039;s/# report_safe 1/report_safe 0/&#039; /etc/spamassassin/local.cf</pre>
<pre class="remontti-code"># vim /etc/postfix/master.cf</pre>
<p>Adicione ==> <strong>-o content_filter=spamassassin</strong></p>
<pre class="remontti-code">smtp      inet  n       -       -       -       -       smtpd
  -o content_filter=spamassassin
   {..}
submission inet n       -       -       -       -       smtpd
  -o content_filter=spamassassin
   {..}
smtps     inet  n       -       -       -       -       smtpd
  -o content_filter=spamassassin
  {..}
</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2017/01/Screenshot_20170130_180239.png" data-rel="lightbox-gallery-H5C0GLF9" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2017/01/Screenshot_20170130_180239-300x242.png" alt="" width="300" height="242" class="alignnone size-medium wp-image-1633" srcset="https://blog.remontti.com.br/wp-content/uploads/2017/01/Screenshot_20170130_180239-300x242.png 300w, https://blog.remontti.com.br/wp-content/uploads/2017/01/Screenshot_20170130_180239.png 619w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>E no final do arquivo:</p>
<pre class="remontti-code"># SpamAssassin
spamassassin unix -     n       n       -       -       pipe
  user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}</pre>
<p>Vamos instalar o Razor Pyzor para ajudar no bloquei dos Spam.</p>
<pre class="remontti-code"># apt install razor pyzor</pre>
<pre class="remontti-code"># vim /etc/spamassassin/local.cf</pre>
<p>Inclua antes da ultima linha (endif # Mail::SpamAssassin::Plugin::Shortcircuit)</p>
<pre class="remontti-code"># ...


# razor2
use_razor2 1
score RAZOR2_CHECK 2.500

# pyzor
use_pyzor 1
score PYZOR_CHECK 2.500

endif # Mail::SpamAssassin::Plugin::Shortcircuit</pre>
<pre class="remontti-code"># su - debian-spamd -c &#039;razor-admin -d --create&#039;
# su - debian-spamd -c &#039;razor-admin -register&#039;
# su - debian-spamd -c &#039;razor-admin -discover&#039;</pre>
<h4>ANTIVIRUS AMAVIS / CLAMAV</h4>
<p>Você precisa ter nos repositórios os pacotes <strong>contrib non-free</strong></p>
<pre class="remontti-code"># vim /etc/apt/sources.list</pre>
<p>(exemplo)</p>
<pre class="remontti-code">deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

# buster-updates, previously known as &#039;volatile&#039;
deb http://deb.debian.org/debian/ buster-updates main contrib non-free
deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free</pre>
<pre class="remontti-code"># apt update
# apt install amavisd-new clamav clamav-freshclam clamav-daemon p7zip p7zip-full\
  arj bzip2 cabextract nomarch pax rar unrar unrar-free unzip zip lhasa lrzip lz4\
  libmail-dkim-perl libnet-ldap-perl libsnmp-perl libmessage-passing-zeromq-perl\
  lzop p7zip rpm

# adduser clamav amavis
# mkdir /var/run/clamav
# touch /var/run/clamav/clamd.ctl
# chown clamav.  /var/run/clamav/clamd.ctl
# systemctl stop clamav-freshclam
# freshclam
# su - amavis -c &#039;razor-admin -d --create&#039;
# su - amavis -c &#039;razor-admin -register&#039;
# su - amavis -c &#039;razor-admin -discover&#039;</pre>
<pre class="remontti-code"># vim /etc/amavis/conf.d/15-content_filter_mode</pre>
<p>#(Descomente)</p>
<pre class="remontti-code">[...]
@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
[...]</pre>
<pre class="remontti-code"># vim /etc/amavis/conf.d/50-user</pre>
<p>Adicionar !! Atenção para SENHA</p>
<pre class="remontti-code">use strict;
  
#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

@lookup_sql_dsn = (
    [&#039;DBI:mysql:database=postfixadmin;host=127.0.0.1;port=3306&#039;,
     &#039;postfixadmin&#039;,
     &#039;SENHA-BD-POSTFIX&#039;]);
$sql_select_policy = &#039;SELECT &quot;Y&quot; as local FROM alias WHERE address IN (%k)&#039;;

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return</pre>
<pre class="remontti-code"># vim /etc/amavis/conf.d/05-node_id</pre>
<p> Altere: </p>
<pre class="remontti-code">$myhostname = &quot;mail.remontti.com.br&quot;;</pre>
<pre class="remontti-code"># vim /etc/amavis/conf.d/01-debian</pre>
<p>Comente:</p>
<pre class="remontti-code">#$unarj      = [&#039;arj&#039;, &#039;unarj&#039;];</pre>
<p>Descomente:</p>
<pre class="remontti-code">$unrar      = [&#039;rar&#039;, &#039;unrar&#039;]; #disabled (non-free, no security support)</pre>
<h4>Personalização Amavis</h4>
<pre class="remontti-code"># vim /etc/amavis/conf.d/20-debian_defaults</pre>
<p>Eu comento sa_spam_subject_tag, assim as mensagens que forem spam não terão o assunto trocado, pois elas já irão cair na caixa de spam.</p>
<pre class="remontti-code">#$sa_spam_subject_tag = &#039;***SPAM*** &#039;;</pre>
<p>Comente se não desejar receber as menssagens de erro.</p>
<pre class="remontti-code">#$final_virus_destiny      = D_DISCARD;  # (data not lost, see virus quarantine)
#$final_banned_destiny     = D_BOUNCE;   # D_REJECT when front-end MTA
#$final_spam_destiny       = D_BOUNCE;
$final_bad_header_destiny = D_PASS;     # False-positive prone (for spam)</pre>
<p>Não comente final_bad_header_destiny (se não os spam não serão entregues)</p>
<p>Se não quiser que seu email postmaster receba um email com todos os emails q ele discartou, comente:</p>
<pre class="remontti-code">#$virus_admin = &quot;postmaster\@$mydomain&quot;; # due to D_DISCARD default</pre>
<p>Habilitar o amavis no postfix</p>
<pre class="remontti-code"># postconf -e &quot;content_filter = smtp-amavis:[127.0.0.1]:10024&quot;</pre>
<pre class="remontti-code"># vim /etc/postfix/master.cf</pre>
<p>Adicionar ao final</p>
<pre class="remontti-code">#Amavis
smtp-amavis       unix  -       -       -       -       2       smtp
  -o smtp_data_done_timeout=1200
  -o smtp_send_xforward_command=yes
  -o disable_dns_lookups=yes
  -o max_use=20
  -o smtp_generic_maps=

127.0.0.1:10025 inet    n       -       -       -       -       smtpd
  -o mynetworks=127.0.0.0/8
  -o content_filter=
  -o local_recipient_maps=
  -o local_header_rewrite_clients=
  -o relay_recipient_maps=
  -o smtpd_restriction_classes=
  -o smtpd_delay_reject=no
  -o smtpd_client_restrictions=permit_mynetworks,reject
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o smtpd_data_restrictions=reject_unauth_pipelining
  -o smtpd_end_of_data_restrictions=
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000
  -o smtpd_client_connection_count_limit=0
  -o smtpd_client_connection_rate_limit=0
  -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
  -o strict_rfc821_envelopes=yes
# SPF
policyd-spf  unix       -       n       n       -       0       spawn
    user=policyd-spf argv=/usr/bin/policyd-spf</pre>
<p>Ajuste o SPF para que execute seus testes.</p>
<pre class="remontti-code"># sed -i &#039;s/HELO_reject = Fail/HELO_reject = False/&#039; /etc/postfix-policyd-spf-python/policyd-spf.conf
# sed -i &#039;s/Mail_From_reject = Fail/Mail_From_reject = False/&#039; /etc/postfix-policyd-spf-python/policyd-spf.conf</pre>
<p>Inclua em main.cf `policyd-spf_time_limit = 3600` para aumentar o tempo limite impedirá o Postfix de interromper o agente se as transações forem um pouco lentas.</p>
<pre class="remontti-code"># postconf -e &quot;policyd-spf_time_limit = 3600&quot;</pre>
<p>Alguns pacotes que o amavis utiliza já não estão mais no debian buster então vamos baixa-los e instala-los.</p>
<pre class="remontti-code"># cd /tmp
# wget http://ftp.br.debian.org/debian/pool/main/r/ripole/ripole_0.2.0+20081101.0215-3_amd64.deb
# apt install ./ripole_0.2.0+20081101.0215-3_amd64.deb
# wget http://ftp.br.debian.org/debian/pool/main/z/zoo/zoo_2.10-28_amd64.deb
# apt install ./zoo_2.10-28_amd64.deb</pre>
<p>Restarte todos os serviços e verifique se tudo esta ok.</p>
<pre class="remontti-code"># systemctl restart clamav-daemon clamav-freshclam spamassassin amavis dovecot postfix
# systemctl status clamav-daemon clamav-freshclam spamassassin amavis dovecot postfix</pre>
<p>Simular o envio de um spam:</p>
<pre class="remontti-code"># cd /tmp
# wget http://spamassassin.apache.org/gtube/gtube.txt
# sendmail seu@email.com.br &lt; gtube.txt</pre>
<p>Não podemos esquecer de definir a senha do usuário root do mariadb/mysql</p>
<pre class="remontti-code"># mariadb</pre>
<pre class="remontti-code">USE mysql;
UPDATE user SET password=PASSWORD(&#039;SENHA_DB_ROOT&#039;) WHERE User=&#039;root&#039;;
UPDATE user SET plugin=&quot;mysql_native_password&quot;;
FLUSH PRIVILEGES;
quit;</pre>
<h4>HTTPS / SSL / CERTIFICADO VÁLIDO</h4>
<p>Sugestão é você configurar seu <a href="https://blog.remontti.com.br/3464" rel="noopener noreferrer" target="_blank">domínios virtuais</a> (ou mais de um)  e configurar o<a href="https://blog.remontti.com.br/3548" rel="noopener noreferrer" target="_blank"> Let’s Encrypt</a><br />
Leitura recomendada:<br />
- <a href="https://blog.remontti.com.br/3548" rel="noopener noreferrer" target="_blank">Criando certificado grátis com Let’s Encrypt para o Apache no Debian 10</a><br />
- <a href="https://blog.remontti.com.br/3464" rel="noopener noreferrer" target="_blank">Como ter diversos sub/domínios no mesmo servidor? (Domínios virtuais com Apache2)</a></p>
<p>Vou fazer um exemplo bem simples editando o 000-default.conf</p>
<pre class="remontti-code"># vim /etc/apache2/sites-enabled/000-default.conf</pre>
<p>Descomente a linha <strong>ServerName</strong> e adicione o domínio do seu servidor </p>
<pre class="remontti-code">&lt;VirtualHost *:80&gt;
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request&#039;s Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        Protocols h2 http/1.1
        ServerName mail.remontti.com.br

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        &lt;Directory /var/www/html/&gt;
                Options FollowSymLinks
                AllowOverride All
        &lt;/Directory&gt;

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with &quot;a2disconf&quot;.
        #Include conf-available/serve-cgi-bin.conf
&lt;/VirtualHost&gt;</pre>
<p>Restarte o apache</p>
<pre class="remontti-code"># a2enmod http2
# systemctl restart apache2</pre>
<p>Instale o letsencrypt e cerbot </p>
<pre class="remontti-code"># apt install letsencrypt python-certbot-apache</pre>
<p>Antes de gerar o certificado para “mail.remontti.com.br” pare o apache</p>
<pre class="remontti-code"># systemctl stop apache2
# letsencrypt --authenticator standalone --installer apache -d mail.remontti.com.br</pre>
<pre class="remontti-code">Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer apache
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 at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing 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
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for mail.remontti.com.br
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/000-default-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/000-default-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/000-default-le-ssl.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you&#039;re confident your site works on HTTPS. You can undo this
change by editing your web server&#039;s configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press &#039;c&#039; to cancel): 2
Redirecting vhost in /etc/apache2/sites-enabled/000-default.conf to ssl vhost in /etc/apache2/sites-available/000-default-le-ssl.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://mail.remontti.com.br

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=mail.remontti.com.br
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/mail.remontti.com.br/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/mail.remontti.com.br/privkey.pem
   Your cert will expire on 2020-02-18. 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;
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - 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>Agora já temos uma acesso seguro em "mail.remontti.com.br", interessante que agora temos certificados válidos que podemos usar no nosso serviço de e-mail, então vamos ajustar!</p>
<pre class="remontti-code"># mv /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/ssl/certs/ssl-cert-snakeoil.pem.off
# mv /etc/ssl/private/ssl-cert-snakeoil.key /etc/ssl/private/ssl-cert-snakeoil.key.off
# ln -s /etc/letsencrypt/live/mail.remontti.com.br/fullchain.pem /etc/ssl/certs/ssl-cert-snakeoil.pem
# ln -s /etc/letsencrypt/live/mail.remontti.com.br/privkey.pem /etc/ssl/private/ssl-cert-snakeoil.key</pre>
<p>Adicione smtp_tls_security_level, smtp_tls_CAfile e smtp_tls_loglevel em main.cf</p>
<pre class="remontti-code"># postconf -e &quot;smtp_tls_security_level = may&quot;
# postconf -e &quot;smtp_tls_CAfile = /etc/ssl/certs/ssl-cert-snakeoil.pem&quot;
# postconf -e &quot;smtp_tls_loglevel = 1&quot;</pre>
<p>Restart os serviços</p>
<pre class="remontti-code"># systemctl restart clamav-daemon clamav-freshclam spamassassin amavis dovecot postfix</pre>
<h4>DKIM</h4>
<p>Adicione usuário postfix ao opendkimgrupo para que o Postfix possa acessar o soquete do OpenDKIM quando for necessário.</p>
<pre class="remontti-code"># adduser postfix opendkim</pre>
<pre class="remontti-code"># vim /etc/opendkim.conf</pre>
<p>Altere</p>
<pre class="remontti-code">#Socket                 local:/var/run/opendkim/opendkim.sock
Socket              local:/var/spool/postfix/opendkim/opendkim.sock</pre>
<p>Adicione ao final do arquivo</p>
<pre class="remontti-code">##  Specifies the path to the private key to use when signing.  Ignored if
##  SigningTable and KeyTable are used.  No default; must be specified for 
##  signing if SigningTable/KeyTable are not in use.
KeyTable            /etc/dkimkeys/key.table

##  SigningTable dataset
##      default (none)
##
##  Defines a dataset that will be queried for the message sender&#039;s address
##  to determine which private key(s) (if any) should be used to sign the
##  message.  The sender is determined from the value of the sender
##  header fields as described with SenderHeaders above.  The key for this
##  lookup should be an address or address pattern that matches senders;
##  see the opendkim.conf(5) man page for more information.  The value
##  of the lookup should return the name of a key found in the KeyTable
##  that should be used to sign the message.  If MultipleSignatures
##  is set, all possible lookup keys will be attempted which may result
##  in multiple signatures being applied.
SigningTable        refile:/etc/dkimkeys/signing.table

##  ExternalIgnoreList filename
##
##  Names a file from which a list of externally-trusted hosts is read.
##  These are hosts which are allowed to send mail through you for signing.
##  Automatically contains 127.0.0.1.  See man page for file format.
ExternalIgnoreList  /etc/dkimkeys/trusted.hosts

##  InternalHosts dataset
##      default &quot;127.0.0.1&quot;
##
##  Names a file from which a list of internal hosts is read.  These are
##  hosts from which mail should be signed rather than verified.
##  Automatically contains 127.0.0.1.
InternalHosts       /etc/dkimkeys/trusted.hosts

##  Canonicalization hdrcanon[/bodycanon]
##      default &quot;simple/simple&quot;
##
##  Select canonicalizations to use when signing.  If the &quot;bodycanon&quot; is
##  omitted, &quot;simple&quot; is used.  Valid values for each are &quot;simple&quot; and
##  &quot;relaxed&quot;.
Canonicalization    relaxed/simple

##  AutoRestart { yes | no }
##      default &quot;no&quot;
##
##  Indicate whether or not the filter should arrange to restart automatically
##  if it crashes.
AutoRestart     yes

##  AutoRestartRate n/t[u]
##      default (none)
## 
##  Sets the maximum automatic restart rate.  See the opendkim.conf(5)
##  man page for the format of this parameter.
AutoRestartRate 10/1M

##  DNSTimeout n
##      default 10
##
##  Specify the time in seconds to wait for replies from the nameserver when
##  requesting keys or signing policies.
DNSTimeout      5</pre>
<p>Crie o diretório do soquete OpenDKIM na área de trabalho do Postfix e verifique se ele possui a propriedade correta, em seguida edite o caminho para o soquete é diferente do padrão, porque no Debian 10 o processo Postfix lida com uma prisão chroot e não pode acessar o local normal.</p>
<pre class="remontti-code"># mkdir /var/spool/postfix/opendkim
# chown opendkim:postfix /var/spool/postfix/opendkim
# vim /etc/default/opendkim</pre>
<p>Altere</p>
<pre class="remontti-code">#RUNDIR=/var/run/opendkim
RUNDIR=/var/spool/postfix/opendkim</pre>
<pre class="remontti-code"># vim /etc/dkimkeys/signing.table</pre>
<p>Crie a tabela de assinatura /etc/dkimkeys/signing.table. Ele precisa ter uma linha por domínio para a qual você lida com o email. Cada linha deve ficar assim:</p>
<pre class="remontti-code">*@remontti.com.br   remontti</pre>
<p>Substitua  *@remontti.com.br por seu domínio e remontti por um nome abreviado para o domínio. O primeiro campo é um padrão que corresponde aos endereços de email. O segundo campo é um nome para a entrada da tabela de chaves que deve ser usada para assinar emails desse endereço.</p>
<pre class="remontti-code"># vim /etc/dkimkeys/key.table </pre>
<pre class="remontti-code">remontti     remontti.com.br:201911:/etc/dkimkeys/remontti.private</pre>
<p>Substitua remontti pelo valor que você usou para o domínio na tabela de assinatura. Substitua remontti.com.br por seu nome de domínio e substitua 201911 ano atual de 4 dígitos e mês de 2 dígitos (isso é chamado de seletor). O primeiro campo conecta as tabelas de assinatura e chave.</p>
<p>O segundo campo é dividido em 3 seções separadas por dois pontos.<br />
    1- A primeira seção é o nome de domínio para o qual a chave é usada.<br />
    2- A segunda seção é um seletor usado ao procurar registros importantes no DNS.<br />
    3- A terceira seção nomeia o arquivo que contém a chave de assinatura do domínio.</p>
<p>Crie o arquivo de hosts confiáveis.</p>
<pre class="remontti-code"># vim /etc/dkimkeys/trusted.hosts</pre>
<pre class="remontti-code">127.0.0.1
::1
localhost
mail
remontti.com.br
mail.remontti.com.br</pre>
<p>Ao criar o arquivo, mude "mail" para o nome do seu servidor e substitua remontti.com.br pelo seu próprio nome de domínio. Estamos identificando os hosts pelos quais os usuários enviarão mensagens e devem ter as mensagens enviadas assinadas, que para configurações básicas será o seu próprio servidor de email.</p>
<p>Gere chaves para cada domínio:</p>
<pre class="remontti-code"># cd /etc/dkimkeys
# opendkim-genkey -b 2048 -h rsa-sha256 -r -s 201911 -d remontti.com.br -v</pre>
<p><em>opendkim-genkey: generating private key<br />
opendkim-genkey: private key written to 201911.private<br />
opendkim-genkey: extracting public key<br />
opendkim-genkey: DNS TXT record written to 201911.txt</em></p>
<p>Criamos uma atalho e alteramos as permissões</p>
<pre class="remontti-code"># ln -s 201911.private  remontti.private
# chown -R opendkim. /etc/dkimkeys/
# chmod -R go-rw /etc/dkimkeys/</pre>
<p>Restart e verifique se o OpenDKIM iniciou corretamente.</p>
<pre class="remontti-code"># systemctl restart opendkim
# systemctl status -l opendkim</pre>
<h4>Configurar DKIM no seu DNS</h4>
<p>Como no SPF, o DKIM usa registros TXT para armazenar informações sobre a chave de assinatura de cada domínio.<br />
Usando o AAAAMM como acima, é necessário criar um registro TXT para o host YYYYMM._domainkeyde de cada domínio para o qual você lida com o correio. Seu valor pode ser encontrado no arquivo 201911.txt. Esses arquivos são assim:</p>
<pre class="remontti-code">201911._domainkey       IN      TXT     ( &quot;v=DKIM1; h=rsa-sha256; k=rsa; s=email; &quot;
          &quot;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAks0HGeii8xoDxuL9vlZmJg6ajHg0l5Mc/8PfC4FQtVTp1BWhlRHQwIQAgbnD+y1nt4JAp4hC7vGx/qdMd1MGlUUJGTpXtTOr4p5DyBwO8zGC+vIuN0cJaBViNXQxLKT0ZX0bg00yQ2LtJIbw+0nAmTyuPcHxOtLfS5GMJe7kP/rmCCOCqiVAfuq/sslkqlpNkOWHaJf211x0Q3&quot;
          &quot;ts6TNrFxu7ExdGfWFpzEtSW+a/HhR/iIwYQGPl63JdjOLhS6Sy7IGk0xKRbIMQfLa91voPTKq+GnHcXbKzwI1SFfF39wGnrxfw9bIS/KmgzHBrFJ8nvrwTas2Q249AZUNzqhvFSwIDAQAB&quot; )  ; ----- DKIM key 201911 for remontti.com.br</pre>
<p>Remova os parênteses, e as quebras de linhas. E h=rsa-sha256 altere para h=sha256. O resultado ficaria:</p>
<pre class="remontti-code">201911._domainkey       TXT     &quot;v=DKIM1; h=sha256; k=rsa; s=email; &quot; &quot;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAks0HGeii8xoDxuL9vlZmJg6ajHg0l5Mc/8PfC4FQtVTp1BWhlRHQwIQAgbnD+y1nt4JAp4hC7vGx/qdMd1MGlUUJGTpXtTOr4p5DyBwO8zGC+vIuN0cJaBViNXQxLKT0ZX0bg00yQ2LtJIbw+0nAmTyuPcHxOtLfS5GMJe7kP/rmCCOCqiVAfuq/sslkqlpNkOWHaJf211x0Q3&quot; &quot;ts6TNrFxu7ExdGfWFpzEtSW+a/HhR/iIwYQGPl63JdjOLhS6Sy7IGk0xKRbIMQfLa91voPTKq+GnHcXbKzwI1SFfF39wGnrxfw9bIS/KmgzHBrFJ8nvrwTas2Q249AZUNzqhvFSwIDAQAB&quot;</pre>
<p>Você pode adicionar uma política <strong>ADSP</strong> ao seu domínio, dizendo que todos os emails do seu domínio devem ser assinados por DKIM. Como de costume, isso é feito com um registro TXT para host <strong>_adsp._domainkeyem</strong> seu domínio com um valor de <strong>dkim=all</strong>. Você não precisa configurar isso, mas isso dificulta a falsificação de emails de seus domínios, porque os servidores de e-mail do destinatário verão a falta de uma assinatura DKIM e rejeitarão a mensagem.</p>
<pre class="remontti-code">_adsp._domainkeyem      TXT     &quot;dkim=all&quot;</pre>
<p>Relatório e conformidade de mensagens de domínio (<strong>DMARC</strong>). O registro DNS do DMARC pode ser adicionado para informar aos servidores de correio o que você acha que eles devem fazer com os e-mails que afirmam pertencer ao seu domínio e que falham na validação com SPF e/ou DKIM. O DMARC também permite solicitar relatórios sobre mensagens que não passam em uma ou mais verificações de validação. O DMARC deve ser configurado apenas se você tiver o SPF e o DKIM configurados e operando com êxito. Se você adicionar o registro DNS DMARC sem o SPF e o DKIM, as mensagens do seu domínio falharão na validação, o que pode fazer com que sejam descartadas ou relegadas a uma pasta de spam.</p>
<p>O registro DMARC é um registro TXT para host <strong>_dmarcem</strong> seu domínio que contém os seguintes valores recomendados:</p>
<pre class="remontti-code">v=DMARC1;p=quarantine;sp=quarantine;adkim=r;aspf=r</pre>
<p>Isso solicita que os servidores de correio em quarentena (não descartem, mas separem das mensagens regulares) qualquer email que falhe nas verificações de SPF ou DKIM. Nenhum relatório é solicitado. Pouquíssimos servidores de correio implementam o software para gerar relatórios sobre mensagens com falha; portanto, é desnecessário solicitá-las. Se você deseja solicitar relatórios, o valor seria semelhante a este exemplo, adicionado como uma única sequência:</p>
<pre class="remontti-code">v=DMARC1;p=quarantine;sp=quarantine;adkim=r;aspf=r;fo=1;rf=afrf;rua=mailto:seuemail@domino.com.br</pre>
<p>Os registros DMARC têm um número de tags e opções disponíveis. Essas tags são usadas para controlar suas configurações de autenticação:</p>
<p>`v` especifica a versão do protocolo, neste caso DMARC1.<br />
`p` determina a política para o domínio raiz, como "example.com". As opções disponíveis:<br />
   - `quarantine` instrui que, se um email falhar na validação, o destinatário deve separá-lo para processamento.<br />
   - `reject` solicita que o servidor de email receptor rejeite os emails que falham na validação.<br />
   - `none` solicita que o destinatário não tome nenhuma ação se um email não passar na validação.</p>
<p>`sp` determina a política para subdomínios, como "subdomínio.exemplo.com". Ele usa os mesmos argumentos que a `p` tag.</p>
<p>`adkim` especifica o modo de alinhamento para DKIM, que determina com que rigor os registros DKIM são validados. As opções disponíveis são:<br />
   - `r` modo de alinhamento relaxado, a autenticação DKIM é aplicada com menos rigor.<br />
   - `s` modo de alinhamento estrito. Somente uma correspondência exata com a entrada DKIM para o domínio raiz será vista como validada.</p>
<p>`aspf` determina o modo de alinhamento para verificação do SPF. Leva os mesmos argumentos que `adkim`.</p>
<p>Adicione nas configurações do seu arquivo DNS autoritativo e restart seu DNS. Ex (bind):</p>
<pre class="remontti-code">$TTL 86400      ; 1 day
remontti.net.br        IN SOA  ns1.remontti.net.br. hostmaster.remontti.net.br. (
                            2019071900 ; serial
                            10800      ; refresh (3 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.50.4
                        AAAA    2804:f123:bebe:cafe::4
                        MX      10 mail.remontti.net.br.
                        TXT     &quot;v=spf1 a mx -all&quot;
                        SPF     &quot;v=spf1 a mx -all&quot;
$ORIGIN remontti.net.br.
$TTL 10800      ; 3 hours
 
45-80-50-0                      A       45.80.50.0
router-gw                       A       45.80.50.1
                                AAAA    2804:f123:bebe:cafe::1
 
ns1                             A       45.80.50.2
                                AAAA    2804:f123:bebe:cafe::2
hostmaster                      A       45.80.50.2
                                AAAA    2804:f123:bebe:cafe::2
ns2                             A       45.80.50.3
                                AAAA    2804:f123:bebe:cafe::3
 
www                             A       45.80.50.4
                                AAAA    2804:f123:bebe:cafe::4
ftp                             A       45.80.50.4
                                AAAA    2804:f123:bebe:cafe::4
 
zabbix                          A       45.80.50.5
                                AAAA    2804:f123:bebe:cafe::5
phpipam                         A       45.80.50.5
                                AAAA    2804:f123:bebe:cafe::5
 
mail                            A       45.80.50.6
                                AAAA    2804:f123:bebe:cafe::6
imap                            A       45.80.50.6
                                AAAA    2804:f123:bebe:cafe::6
pop                             A       45.80.50.6
                                AAAA    2804:f123:bebe:cafe::6
smtp                            A       45.80.50.6
                                AAAA    2804:f123:bebe:cafe::6
$TTL 300 ; 5 min
$ORIGIN remontti.com.br.
201911._domainkey       TXT     &quot;v=DKIM1; h=sha256; k=rsa; s=email; &quot; &quot;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAks0HGeii8xoDxuL9vlZmJg6ajHg0l5Mc/8PfC4FQtVTp1BWhlRHQwIQAgbnD+y1nt4JAp4hC7vGx/qdMd1MGlUUJGTpXtTOr4p5DyBwO8zGC+vIuN0cJaBViNXQxLKT0ZX0bg00yQ2LtJIbw+0nAmTyuPcHxOtLfS5GMJe7kP/rmCCOCqiVAfuq/sslkqlpNkOWHaJf211x0Q3&quot; &quot;ts6TNrFxu7ExdGfWFpzEtSW+a/HhR/iIwYQGPl63JdjOLhS6Sy7IGk0xKRbIMQfLa91voPTKq+GnHcXbKzwI1SFfF39wGnrxfw9bIS/KmgzHBrFJ8nvrwTas2Q249AZUNzqhvFSwIDAQAB&quot;
_adsp._domainkeyem      TXT     &quot;dkim=all&quot;
_dmarc                  TXT     &quot;v=DMARC1;p=quarantine;sp=quarantine;adkim=r;aspf=r&quot;</pre>
<p>Teste as chaves para a assinatura e verificação corretas usando o opendkim-testkeycomando:</p>
<pre class="remontti-code"># opendkim-testkey -d remontti.com.br -s 201911</pre>
<p>Se tudo estiver correto, você não deverá obter nenhuma saída. Se você quiser ver mais informações, adicione -vvvno final do comando. Isso produz saída de depuração detalhada. A última mensagem deve ser "tecla OK". Pouco antes disso, você poderá ver a mensagem "chave não segura". Isso é normal e não indica um erro, apenas significa que seu domínio ainda não está configurado para DNSSEC.</p>
<p>Adicione </p>
<pre class="remontti-code">vim /etc/postfix/main.cf</pre>
<pre class="remontti-code"># OpenDKIM
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = local:opendkim/opendkim.sock</pre>
<pre class="remontti-code"># systemctl restart opendkim postfix
# systemctl status opendkim postfix</pre>
<h4>Rotação da chave DKIM</h4>
<p> <strong>(Não faça isso agora! Leia com atenção)</strong></p>
<p>O motivo pelo qual o formato AAAAMM é usado é que a prática recomendada exige a alteração das chaves de assinatura DKIM de vez em quando (recomenda-se mensalmente, e não mais que a cada 6 meses). Para fazer isso sem interromper as mensagens em trânsito, você gera as novas chaves usando um novo seletor. O processo é:</p>
<p>Gere novas chaves como anteriormente no /etc/dkimkeys/. Use o ano e o mês atuais para o valor do seletor AAAAMM, para que seja diferente do seletor atualmente em uso.</p>
<pre class="remontti-code"># cd /etc/dkimkeys/
# opendkim-genkey -b 2048 -h rsa-sha256 -r -s 202006 -d remontti.com.br -v</pre>
<p>Use o .txt gerado para adicionar as novas chaves ao seu DNS, usando o novo seletor AAAAMM nos nomes de host. <strong>Não remova ou altere os registros DKIM TXT existentes</strong>. Feito isso, verifique os novos dados da chave usando o seguinte comando:</p>
<pre class="remontti-code"># opendkim-testkey -d remontti.com.br -s 202006 -k remontti.private</pre>
<p>Pare o Postfix e o OpenDKIM para que eles não processem e-mails enquanto você estiver trocando as chaves.</p>
<pre class="remontti-code"># systemctl stop postfix opendkim</pre>
<p>Remova o link anterior do "remontti.private" e link ao novo "202006.private" arquivo gerado e defina as permissões corretas:</p>
<pre class="remontti-code"># cd /etc/dkimkeys
# rm remontti.private 
# ln -s 202006.private  remontti.private
# chown -R opendkim. /etc/dkimkeys/
# chmod -R go-rw /etc/dkimkeys/</pre>
<p>Altere o antigo valores de AAAAMM em key.table para o novo seletor e salve o arquivo.</p>
<pre class="remontti-code"># vim /etc/dkimkeys/key.table </pre>
<pre class="remontti-code">remontti     remontti.com.br:202006:/etc/dkimkeys/remontti.private</pre>
<p>Inicie o OpenDKIM e o Postfix</p>
<pre class="remontti-code"># systemctl start opendkim postfix</pre>
<p>Certifique-se de que ambos iniciem sem erros.</p>
<pre class="remontti-code"># systemctl status opendkim postfix</pre>
<p><strong>Espere algumas semanas para remover o antigo registro pois algum servidor pode estar ainda usando a antiga chave.</strong> (Eu normalmente removo apenas quando crio uma nova)</p>
<h4>FAIL2BAN + NFTABLES</h4>
<p>Fail2Ban é uma estrutura de software de prevenção de intrusões que protege os servidores de computadores contra ataques de força bruta, que opera monitorando arquivos de logs. Sendo o mais comum usado para bloquear endereços IPs selecionados que podem pertencer a hosts que estão tentando violar a segurança.</p>
<pre class="remontti-code"># apt install nftables fail2ban</pre>
<p>Como o iptables está sendo substituído por nftables começando com o Debian Buster, vamos configurar o Fail2Ban para usar o nftables como padrão.<br />
Mas vou ir além em vez de usar o filtro multiport vou setar allports e modifica-lo para que quando uma tentativa de violação acontecer o Fail2Ban crie uma regra de firewall que dropa definitivamente o IP e não apenas fechando a porta do serviço para "invasor".</p>
<pre class="remontti-code"># vim /etc/fail2ban/jail.conf</pre>
<p>Procure por "banaction = iptables-multiport" e "banaction_allports = iptables-allports" e altere seu valor para "nftables-allports":</p>
<pre class="remontti-code">#banaction = iptables-multiport
#banaction_allports = iptables-allports
banaction = nftables-allports
banaction_allports = nftables-allports</pre>
<p>Altere o modo de bloqueio em nftables-allports.conf para fazer que ele de um "drop all".</p>
<pre class="remontti-code"># vim /etc/fail2ban/action.d/nftables-allports.conf</pre>
<p>Procure por nftables_mode = meta l4proto <protocol> e altere deixando seu valor vazio:</p>
<pre class="remontti-code">#nftables_mode = meta l4proto &lt;protocol&gt;
nftables_mode =</pre>
<p>Em nftables-common.conf alteraremos o padrão de reject para drop</p>
<pre class="remontti-code"># vim /etc/fail2ban/action.d/nftables-common.conf</pre>
<p>Procure por "blocktype = reject" e altere seu valor para "drop".</p>
<pre class="remontti-code">#blocktype = reject
blocktype = drop</pre>
<p>Ativamos alguns filtros. Se desejar ajustar o tempo te banimento altere o valor de bantime, e os numeros de erros/tentativas em maxretry.</p>
<pre class="remontti-code"># vim /etc/fail2ban/jail.d/defaults-debian.conf</pre>
<p>Adicione no arquivo:</p>
<pre class="remontti-code">[sshd]
enabled = true

[postfix-sasl]
enabled = true
bantime  = 1h
maxretry = 5

[dovecot]
enabled = true
bantime  = 1h
maxretry = 5

[sieve]
enabled = true
bantime  = 1h
maxretry = 5</pre>
<p>Ativamos o nftables e restartamos os serviços:</p>
<pre class="remontti-code"># systemctl enable nftables
# systemctl restart nftables fail2ban</pre>
<p>Para visualizar seu firewall use o comando:</p>
<pre class="remontti-code"># nft list ruleset</pre>
<p>Alguns comandos do fail2ban<br />
Status:</p>
<pre class="remontti-code"># fail2ban-client status</pre>
<p>Status do filtro:</p>
<pre class="remontti-code"># fail2ban-client status NOME_FILTRO</pre>
<p>Remover um IP bloqueado de um filtro:</p>
<pre class="remontti-code"># fail2ban-client set NOME_FILTRO unbanip IP_BLOQUEADO</pre>
<p>Ufaaaa acabamos, espero que tenha gostado! <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>O post <a href="https://blog.remontti.com.br/3744">Como montar um servidor de e-mail com Postfix, Dovecot, PostfixAdmin, SpamAssassin, Amavis, Clamav,  RoundCube, SPF, DKIM, DMARC, Fail2Ban</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3744/feed</wfw:commentRss>
			<slash:comments>46</slash:comments>
		
		
			</item>
		<item>
		<title>Como configurar um servidor DNS Response Policy Zone (RPZ) + Shallalist</title>
		<link>https://blog.remontti.com.br/3692</link>
					<comments>https://blog.remontti.com.br/3692#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 15 Oct 2019 00:07:53 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[bind9]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian10]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[isc]]></category>
		<category><![CDATA[Policy]]></category>
		<category><![CDATA[Response]]></category>
		<category><![CDATA[Response Policy Zone]]></category>
		<category><![CDATA[rpz]]></category>
		<category><![CDATA[umbrella]]></category>
		<category><![CDATA[Zone]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3692</guid>

					<description><![CDATA[<p>Neste tutoria vamos aprender a configurar o um servidor DNS com RPZ, uma política personalizada para que os resolvedores recursivos retornem resultados modificados. Desta forma administradores de rede podem usar o DNS RPZ para&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3692">Como configurar um servidor DNS Response Policy Zone (RPZ) + Shallalist</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Neste tutoria vamos aprender a configurar o um servidor DNS com <a href="https://www.isc.org/rpz/" rel="noopener noreferrer" target="_blank">RPZ</a>, uma política personalizada para que os resolvedores recursivos retornem resultados modificados. Desta forma administradores de rede podem usar o DNS RPZ para impedir exemplo que hosts infectados por malwares entre outros casos como sites pornográficos tenham a resolução de nomes bloqueando. </p>
<p>O DNS RPZ é uma tecnologia desenvolvida pelo <a href="https://www.isc.org/bind/" rel="noopener noreferrer" target="_blank">ISC</a> disponível desde a versão 9.8 do Bind.</p>
<p>Muitas pessoas se referem ao DNS RPZ como um &#8220;DNS Firewall&#8221;. ISPs estão testando e implementando isso para fornecer proteção adicional aos seus clientes. Um bom exemplo é o <a href="https://www.opendns.com/home-internet-security/" rel="noopener noreferrer" target="_blank">OpenDNS Family Shield</a> que utiliza deste recurso.</p>
<p>Mas o mais perigoso aqui é usar o RPZ para o mau! Essa política é muito usada infelizmente para tal. Sabe aquele roteador que foi infectado e todos os sites de bancos etc foram direcionado para servidores de hackers é bem possível que esse servidor esteja usando RPZ. Por isso você administrador de uma rede é muito importante bloquear todos os DNS que são suspeitos, ou melhor faça uma lista com todos os DNS mais famosos e confiáveis da internet e autorize apenas eles, seja um profissional que pensa na segurança do seu cliente. </p>
<p>Instalação do servidor DNS será com base no tutorial: <a href="https://blog.remontti.com.br/3086" rel="noopener noreferrer" target="_blank">Servidor DNS seguro com Bind9 (Recursivo, Autoritativo e Reverso) + Fail2ban + nftables no Debian 10 Buster</a></p>
<p>Vou replicar apenas os comandos principais aqui para subir nosso DNS, se você deseja ter detalhes sobre a instalação do DNS leia o tutorial <a href="https://blog.remontti.com.br/3086" rel="noopener noreferrer" target="_blank">citado acima</a>.</p>
<pre class="remontti-code"># vim /etc/network/interfaces</pre>
<p>Ajuste sua interface de rede:</p>
<pre class="remontti-code">allow-hotplug enp0s3
iface enp0s3 inet static
        address 45.80.50.5/27
        gateway 45.80.50.1
        dns-nameservers 127.0.0.1
        dns-search localhost

iface enp0s3 inet6 static
        pre-up modprobe ipv6
        address 2804:f123:bebe:cafe::5
        netmask 64
        gateway 2804:f123:bebe:cafe::1</pre>
<p><strong>Instalando Bind9</strong> </p>
<pre class="remontti-code"># su -
# apt install bind9 dnsutils
# echo &quot;nameserver 127.0.0.1&quot; &gt; /etc/resolv.conf 
# cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bkp
# echo &gt; named.conf.options
# vim /etc/bind/named.conf.options</pre>
<pre class="remontti-code">acl autorizados {
    127.0.0.1;
    ::1;
    45.80.50.0/23;
    2804:f123::/32;
    192.168.0.0/16;
    172.16.0.0/12;
    100.64.0.0/10;
    10.0.0.0/8;
};
 
options {
    directory &quot;/var/cache/bind&quot;;
 
    dnssec-enable yes;
    dnssec-validation auto;
 
    auth-nxdomain no;
 
    listen-on { any; };
    listen-on-v6 { any; };
 
    minimal-responses yes;
 
    allow-recursion { autorizados; };
 
    allow-query-cache { autorizados; };
 
    allow-query { any; };
 
    allow-transfer { none; };
 
    masterfile-format text;
 
    version &quot;RR DNS Server&quot;;
};</pre>
<p><strong>Instalando Fail2ban</strong></p>
<pre class="remontti-code"># apt install nftables fail2ban
# vim /etc/fail2ban/jail.conf</pre>
<p>Altere:</p>
<pre class="remontti-code">#banaction = iptables-multiport
#banaction_allports = iptables-allports
banaction = nftables-allports
banaction_allports = nftables-allports</pre>
<pre class="remontti-code"># vim /etc/fail2ban/action.d/nftables-allports.conf</pre>
<p>Altere:</p>
<pre class="remontti-code">#nftables_mode = meta l4proto &lt;protocol&gt;
nftables_mode =</pre>
<pre class="remontti-code"># vim /etc/fail2ban/action.d/nftables-common.conf</pre>
<p>Altere:</p>
<pre class="remontti-code">#blocktype = reject
blocktype = drop</pre>
<pre class="remontti-code"># vim /etc/fail2ban/filter.d/bind9.conf</pre>
<p>Crie:</p>
<pre class="remontti-code"># Fail2Ban filter file for named (bind9.11).
#
 
[Definition]
 
# Daemon name
_daemon=named
 
# 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?:)
 
#       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+)?
 
prefregex = ^%(__line_prefix)s( error:)?\s*client( @[0-9a-z]+)? &lt;HOST&gt;#\S+( \([\S.]+\))?: &lt;F-CONTENT&gt;.+&lt;/F-CONTENT&gt;$
 
failregex = ^(view (internal|external): )?query(?: \(cache\))? &#039;.*&#039; denied\s*$
            ^zone transfer &#039;\S+/AXFR/\w+&#039; denied\s*$
            ^bad zone transfer request: &#039;\S+/IN&#039;: non-authoritative zone \(NOTAUTH\)\s*$
 
ignoreregex =
 
# DEV Notes:
# Author: Rudimar Remontti</pre>
<pre class="remontti-code"># vim /etc/fail2ban/jail.d/bind9.conf</pre>
<p>Crie:</p>
<pre class="remontti-code">[bind9]
enabled  = true
port     = domain,953
protocol = tcp
logpath  = /var/log/named/security.log
bantime  = 24h
maxretry = 1</pre>
<pre class="remontti-code"># vim /etc/bind/named.conf</pre>
<p>Adicione:</p>
<pre class="remontti-code">// 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/named.log&quot; versions 2 size 50k;
        severity info;
        print-time yes;
        print-severity yes;
        print-category yes;
    };
 
    channel errors_syslog {
        syslog daemon;
        severity warning;
    };
 
    category security { security_file; };
    category dnssec { errors_syslog; };
    category default { file_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>
<pre class="remontti-code"># mkdir /var/log/named/
# chown bind. /var/log/named/
# mv /usr/share/dns/root.hints /usr/share/dns/root.hints.`date +%Y%m%d`
# apt install wget
# wget https://www.internic.net/domain/named.root -O /usr/share/dns/root.hints --no-check-certificate
# # ln -s /usr/share/dns/ /etc/bind/rootservers
# systemctl enable nftables
# systemctl restart bind9 nftables fail2ban
# systemctl status bind9 nftables fail2ban
# q</pre>
<p>DNS configurado e seguro! Vamos as configurações do RPZ.</p>
<h3>RPZ</h3>
<p>Primeiramente vamos supor que o servidor DNS tenha o IP 45.80.50.5 / 2804:f123:bebe:cafe::5, Então <strong>acesse seu servidor DNS MASTER</strong> responsável pelo domínio <strong>autoritativo</strong> e crie um <strong>subdomínios</strong> chamado exemplo &#8220;<strong>umbrella</strong>&#8220;. Também pode alterar o nome no reverso.</p>
<pre class="remontti-code"># vim /var/cache/bind/master-aut/SEUDOMINIO.hosts</pre>
<pre class="remontti-code">
//...
www                             A       45.80.50.4
                                AAAA    2804:f123:bebe:cafe::4
ftp                             A       45.80.50.4
                                AAAA    2804:f123:bebe:cafe::4
umbrella                        A       45.80.50.5
                                AAAA    2804:f123:bebe:cafe::5
zabbix                          A       45.80.50.6
                                AAAA    2804:f123:bebe:cafe::6
//...
</pre>
<p><strong>Voltando para o servidor DNS RPZ</strong></p>
<p>Crie uma zona chamada rpz.zone</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<p>Adicione:</p>
<pre class="remontti-code">//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include &quot;/etc/bind/zones.rfc1918&quot;;

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>Adicione o response-policy</p>
<pre class="remontti-code">acl autorizados {
    127.0.0.1;
    ::1;
    45.80.50.0/23;
    2804:f123::/32;
    192.168.0.0/16;
    172.16.0.0/12;
    100.64.0.0/10;
    10.0.0.0/8;
};
 
options {
    directory &quot;/var/cache/bind&quot;;
 
    dnssec-enable yes;
    dnssec-validation auto;
 
    auth-nxdomain no;
 
    listen-on { any; };
    listen-on-v6 { any; };
 
    response-policy {
	zone &quot;rpz.zone&quot; policy CNAME umbrella.remontti.net.br;
    };

    minimal-responses yes;
 
    allow-recursion { autorizados; };
 
    allow-query-cache { autorizados; };
 
    allow-query { any; };
 
    allow-transfer { none; };
 
    masterfile-format text;
 
    version &quot;RR DNS Server&quot;;
};</pre>
<p>Vamos criar o arquivo qual vai ter todos nossos hosts (Domínios) bloqueados.</p>
<pre class="remontti-code"># mkdir /var/cache/bind/rpz/
# ln -s /var/cache/bind/rpz/ /etc/bind/
# vim /var/cache/bind/rpz/db.rpz.zone</pre>
<p>No exemplo vou adicionar alguns sites pornos.</p>
<pre class="remontti-code">$TTL 1H
@       IN      SOA LOCALHOST. umbrella.remontti.net.br. (
                2019101400      ; Serial  
                1h              ; Refresh
                15m             ; Retry
                30d             ; Expire 
                2h              ; Negative Cache TTL
        )
        NS  umbrella.remontti.net.br.

;; EXEMPLO ;; 
; dominio.com.br	IN 	CNAME .
; *.dominio.com.br  IN  CNAME .

xvideos.com 	IN CNAME .
*.xvideos    	IN CNAME .
redtube.com 	IN CNAME .
*.redtube.com 	IN CNAME .
pornhub.com 	IN CNAME .
*.pornhub.com 	IN CNAME .</pre>
<pre class="remontti-code"># chown  bind. /var/cache/bind/rpz/ -R</pre>
<p>Reinicie o serviço e verifique se o mesmo está rodando sem nenhum erro.</p>
<pre class="remontti-code"># systemctl restart bind9
# systemctl status  bind9</pre>
<p>Vamos fazer um teste para ver se os domínios acima estão sendo direcionado para o nosso IP:</p>
<pre class="remontti-code"># dig redtube.com @localhost</pre>
<pre class="remontti-code">; &lt;&lt;&gt;&gt; DiG 9.11.5-P4-5.1-Debian &lt;&lt;&gt;&gt; redtube.com @localhost
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 47325
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 695da3136d14fab5fc6e70b65da4a6c86880192f7d09611f (good)
;; QUESTION SECTION:
;redtube.com.                   IN      A

;; ANSWER SECTION:
redtube.com.                5       IN    CNAME   umbrella.remontti.net.br.
umbrella.remontti.net.br.   10769   IN    A       45.80.50.5

;; Query time: 1412 msec
;; SERVER: ::1#53(::1)
;; WHEN: seg out 14 13:48:08 -03 2019
;; MSG SIZE  rcvd: 116</pre>
<p>Testado subdomínios:</p>
<pre class="remontti-code"># dig www.redtube.com @localhost |grep IN 

www.redtube.com.            5       IN   CNAME   umbrella.remontti.net.br.
umbrella.remontti.net.br.   10567   IN   A       45.80.50.5

# dig qualquercoisa.redtube.com @localhost |grep IN 

qualquercoisa.redtube.com.  5       IN   CNAME   umbrella.remontti.net.br.
umbrella.remontti.net.br.   10557   IN   A       45.80.50.5

# ping qualquercoisa.redtube.com

PING umbrella.remontti.net.br (45.80.50.5) 56(84) bytes of data.
64 bytes from umbrella.remontti.net.br (45.80.50.5): icmp_seq=1 ttl=64 time=0.031 ms
64 bytes from umbrella.remontti.net.br (45.80.50.5): icmp_seq=2 ttl=64 time=0.025 ms
64 bytes from umbrella.remontti.net.br (45.80.50.5): icmp_seq=3 ttl=64 time=0.015 ms
64 bytes from umbrella.remontti.net.br (45.80.50.5): icmp_seq=4 ttl=64 time=0.066 ms
^C
--- umbrella.remontti.net.br ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 10ms
rtt min/avg/max/mdev = 0.031/0.062/0.080/0.018 ms</pre>
<p>Seu DNS RPZ já está funcional. </p>
<p>Mas seria legal instalarmos um <strong>Serviço Web</strong> já que o IP do dos domínios bloqueados é nosso próprio servidor DNS-RPZ. Assim todas as páginas acessadas vão carregar um aviso que o site está sendo bloqueado por algum motivo.</p>
<p>Você pode acessar os tutoriais para saber mais sobre servidor web e domínios virtuais:<br />
– <a href="https://blog.remontti.com.br/3006" rel="noopener noreferrer" target="_blank">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP” </a><br />
– <a href="https://blog.remontti.com.br/3464" rel="noopener noreferrer" target="_blank">Como ter diversos sub/domínios no mesmo servidor? (Domínios virtuais com Apache2)</a></p>
<p><strong>Instalando o Apache2+PHP</strong></p>
<pre class="remontti-code"># apt install apache2 apache2-utils libapache2-mod-php php</pre>
<p>Por segurança recomendo remover a assinatura do servidor:</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>Alteramos a configurar padrão do apache para nosso domínio umbrella.remontti.net.br e restringir ele apenas para nossos IP de da nossa rede, da mesma forma feita para com os DNS.</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> alterar para os IPs que você vai autorizar as conexões. Seu arquivo <strong>000-default.conf</strong> vai ficas assim:</p>
<pre class="remontti-code">&lt;virtualhost *:80&gt;
        Protocols h2 http/1.1
        ServerName umbrella.remontti.net.br
        ServerAdmin noc@remontti.com.br
        ErrorDocument 403 http://www.remontti.com.br/
        ErrorDocument 404 /index.php

        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 45.80.50.0/23 2804:f123::/32
        &lt;/Directory&gt;
 
        LogLevel warn 
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
&lt;/virtualhost&gt;</pre>
<p>Vamos criar o arquivo 000-default-ssl.conf para usar certificado porém inválido, pois não fará diferença configurar um certificado válido (se você desejar pode seguir o passo no outro <a href="https://blog.remontti.com.br/3548" rel="noopener noreferrer" target="_blank">tutorial usando letsencrypt)</a>, pois os os hosts bloqueados não vão corresponder ao IP que o DNS resolveu, logo sempre vai retornar erro de certificado, mas para que quando um domínio com certificado for acessado não fique sem carregar a página iremos fazer o seguinte:</p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/000-default-ssl.conf</pre>
<p>Adicione:</p>
<pre class="remontti-code">&lt;IfModule mod_ssl.c&gt;
    &lt;VirtualHost _default_:443&gt;
        Protocols h2 http/1.1
        ServerName umbrella.remontti.net.br
        ServerAdmin noc@remontti.com.br
        ErrorDocument 403 http://www.remontti.com.br/
        ErrorDocument 404 /index.php

        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 45.80.50.0/23 2804:f123::/32
        &lt;/Directory&gt;

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on

        SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

    &lt;/VirtualHost&gt;
&lt;/IfModule&gt;</pre>
<pre class="remontti-code"># a2ensite 000-default-ssl.conf 
# a2enmod http2 rewrite ssl
# systemctl restart apache2</pre>
<p>Para facilitar montei um modelinho de página que será nosso alerta. Você deve alterar o logo entre outros detalhes da index.php para sua realidade!<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/10/html.tar.gz">html.tar</a></p>
<pre class="remontti-code"># cd /var/www/
# rm html
# wget https://blog.remontti.com.br/wp-content/uploads/2019/10/html.tar.gz
# tar -vxzf html.tar.gz
# cd html
# vim index.php</pre>
<p>Altere o nome da empresa/site, substitua também o arquivo do logo.</p>
<pre class="remontti-code">  $empresa = &quot;Remontti&quot;;
  $site=&quot;http://www.remontti.com.br&quot;;</pre>
<p>Caso você não gostou da página sinta-se livre para criar a sua própria, a ideia é apenas demonstrar como faze-la.</p>
<p>Hora de ver funcionar <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 />
Altere o DNS do seu computador para o IP do seu servidor RPZ e acesse um site proibido!</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/10/xvideos-rpz-ns.png" data-rel="lightbox-gallery-oPJS0eF7" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/10/xvideos-rpz-ns-1024x503.png" alt="" width="1024" height="503" class="alignnone size-large wp-image-3696" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/10/xvideos-rpz-ns-1024x503.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/10/xvideos-rpz-ns-300x147.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/10/xvideos-rpz-ns-768x377.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/10/xvideos-rpz-ns.png 1112w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>BINGO! <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;" /></strong></p>
<p>Mas como fazer para saber tantos domínios? Bom existe uma lista chamada <a href="http://www.shallalist.de" rel="noopener noreferrer" target="_blank">shallalist</a> bem antiga por sinal mas ainda é atualizada. É claro que não vai ter todos os hosts, pois a todo minuto alguém esta criando um novo, mas vai já ajudar muito! Ao fazer <a href="http://www.shallalist.de/Downloads/shallalist.tar.gz" rel="noopener noreferrer" target="_blank">donwload da lista </a> teremos varias pastas divididas em categorias:</p>
<pre class="remontti-code">├── adv             ├── forum           ├── movies          ├── sex   
├── aggressive      ├── gamble          ├── music           ├── shopping
├── alcohol         ├── global_usage    ├── news            ├── socialnet
├── anonvpn         ├── government      ├── podcasts        ├── spyware
├── automobile      ├── hacking         ├── politics        ├── tracker    
├── chat            ├── hobby           ├── porn            ├── updatesites
├── costtraps       ├── homestyle       ├── radiotv         ├── urlshortener
├── dating          ├── hospitals       ├── recreation      ├── violence
├── downloads       ├── imagehosting    ├── redirector      ├── warez
├── drugs           ├── isp             ├── religion        ├── weapons
├── dynamic         ├── jobsearch       ├── remotecontrol   ├── webmail
├── education       ├── library         ├── ringtones       ├── webphone
├── finance         ├── military        ├── science         ├── webradio
├── fortunetelling  ├── models          ├── searchengines   └── webtv</pre>
<p>Montei um script para ler esses arquivos e montar nosso arquivo <strong>db.rpz.zone</strong> com base na shallalist. <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;" /> Aceito presente depois dessa!<br />
Para ficar organizado vamos criar uma pasta chamada <strong>script-rpz</strong></p>
<pre class="remontti-code"># mkdir /etc/bind/script-rpz
# cd /etc/bind/script-rpz</pre>
<p>Vamos criar um arquivo <strong>rpz.pl</strong> em linguagem perl para montar nosso arquivo <strong>db.rpz.zone</strong>.</p>
<p>No arquivo ajuste para as listas que desejar, no exemplo vou usar as: <em>drugs, hacking, porn, spyware, violence, warez</em>. Também seu domínios RPZ.</p>
<pre class="remontti-code"># vim /etc/bind/script-rpz/rpz.pl</pre>
<pre class="remontti-code">#!/usr/bin/perl -w
#
# Shallalist DNS RPZ 
#
# Ex de uso:
#   perl rpz.pl (no arg, creates NXDOMAIN CNAME &quot;.&quot;)
#   perl rpz.pl A 192.168.2.1 (creates &quot;A&quot; redirect)
#   perl rpz.pl CNAME nowhere.local (creates &quot;CNAME&quot; redirect)
#   perl rpz.pl CNAME CATEGORY.local (creates category &quot;CNAME&quot; redirect)

use strict;
use warnings;

my ($urls);
my @categories = (&#039;drugs&#039;,&#039;hacking&#039;,&#039;porn&#039;,&#039;spyware&#039;,&#039;violence&#039;,&#039;warez&#039;);

for my $c (0 .. (scalar(@categories) - 1)) {
        #open (my $list,&#039;&lt;&#039;,&quot;blacklists/$categories[$c]/domains&quot;);
        open (my $list,&#039;&lt;&#039;,&quot;BL/$categories[$c]/domains&quot;);
        chomp(my @domains = &lt;$list&gt;); 
        close($list);
 
        for my $d (0 .. (scalar(@domains) - 1)) {
                $urls-&gt;{lc($domains[$d])} = $categories[$c];
        }
}

open (my $db,&#039;&gt;&#039;,&quot;./db.rpz.zone&quot;);
print $db &#039;$TTL 1H
@       IN      SOA localhost. umbrella.remontti.net.br. (
                        9999999999      ; Serial  
                        1h              ; Refresh
                        15m             ; Retry
                        30d             ; Expire 
                        2h              ; Negative Cache TTL
                )
                NS  umbrella.remontti.net.br.

;; EXEMPLO ;; 
; *.remontti.com.br       CNAME .
; remontti.com.br         CNAME .
;
&#039;;

while (my ($key, $value) = each(%$urls) ) {
        my $redirect = &#039;CNAME .&#039;;

        if (defined($ARGV[0]) and defined($ARGV[1])) {
                $redirect = uc($ARGV[0]) . &#039; &#039; . $ARGV[1];
                if ($ARGV[1] =~ m/CATEGORY/) {
                        $redirect =~ s/CATEGORY/$value/;
                }
        }

        if (substr($key,0,1) ne &#039;.&#039;) {
                print $db $key . &#039; IN &#039; . $redirect . &quot;\n&quot;;
                print $db &#039;*.&#039; . $key . &#039; IN &#039; . $redirect . &quot;\n&quot;;
        }
}
close($db);

exit;

__END__
</pre>
<p>Próximo passo é criar o um shell script chamado <strong>gera.rpz.sh</strong> para baixar a lista e ajustar os domínios para não ter nenhum erro. Note que farei o ajuste apenas para categorias que usei, se você for fazer para outras não deixe de configurar no gera.rpz.sh.</p>
<pre class="remontti-code"># vim /etc/bind/script-rpz/gera.rpz.sh</pre>
<pre class="remontti-code">#!/bin/sh
sleep 1
echo
echo &quot;Baixando lista shallalist&quot;
wget http://www.shallalist.de/Downloads/shallalist.tar.gz
tar -zxf shallalist.tar.gz

sleep 1
echo 
echo &quot;Preparando Lista: DROGAS&quot;
mv /etc/bind/script-rpz/BL/drugs/domains /etc/bind/script-rpz/BL/drugs/domains.org
cat /etc/bind/script-rpz/BL/drugs/domains.org |grep -Eo &quot;^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}.*&quot; &gt;&gt; /etc/bind/script-rpz/BL/drugs/domains

sleep 1
echo &quot;Preparando Lista: HACKING&quot;
mv /etc/bind/script-rpz/BL/hacking/domains /etc/bind/script-rpz/BL/hacking/domains.org
cat /etc/bind/script-rpz/BL/hacking/domains.org |grep -Eo &quot;^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}.*&quot; &gt;&gt; /etc/bind/script-rpz/BL/hacking/domains

sleep 1
echo &quot;Preparando Lista: PORNOS&quot;
mv /etc/bind/script-rpz/BL/porn/domains /etc/bind/script-rpz/BL/porn/domains.org
cat /etc/bind/script-rpz/BL/porn/domains.org |grep -Eo &quot;^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}.*&quot; &gt;&gt; /etc/bind/script-rpz/BL/porn/domains

sleep 1
echo &quot;Preparando Lista: SPYWARE&quot;
mv /etc/bind/script-rpz/BL/spyware/domains /etc/bind/script-rpz/BL/spyware/domains.org
cat /etc/bind/script-rpz/BL/spyware/domains.org |grep -Eo &quot;^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}.*&quot; &gt;&gt; /etc/bind/script-rpz/BL/spyware/domains

sleep 1
echo &quot;Preparando Lista: VIOLENCIA&quot;
mv /etc/bind/script-rpz/BL/violence/domains /etc/bind/script-rpz/BL/violence/domains.org
cat /etc/bind/script-rpz/BL/violence/domains.org |grep -Eo &quot;^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}.*&quot; &gt;&gt; /etc/bind/script-rpz/BL/violence/domains

sleep 1
echo &quot;Preparando Lista: PIRATARIA ILEGAL E VIRUS&quot;
mv /etc/bind/script-rpz/BL/warez/domains /etc/bind/script-rpz/BL/warez/domains.org
cat /etc/bind/script-rpz/BL/warez/domains.org |grep -Eo &quot;^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}.*&quot; &gt;&gt; /etc/bind/script-rpz/BL/warez/domains

cd /etc/bind/script-rpz/
echo 
echo &quot;Gerando db.rpz.zone&quot; 
perl rpz.pl

echo 
echo &quot;Removendo arquivos desnecessarios&quot;
rm -rf BL/
rm -f shallalist.tar.gz

echo 
echo &quot;Corrigindo enderecos invalidos&quot;
sed -i -e &#039;s/www.battleit.ee\/tpb/battleit.ee/&#039; /etc/bind/script-rpz/db.rpz.zone
sed -i -e &#039;s/battleit.ee&quot;/battleit.ee/&#039; /etc/bind/script-rpz/db.rpz.zone
sed -i -e &#039;s/freebiggals.net./freebiggals.net/&#039; /etc/bind/script-rpz/db.rpz.zone

SEQUENCIAL=`date +%Y%m%d00`

sed -i -e &quot;s/9999999999/$SEQUENCIAL/&quot; /etc/bind/script-rpz/db.rpz.zone

echo
echo &quot;Verificando se tem algum erros no arquivo db.rpz.zone&quot;
named-checkzone localhost /etc/bind/script-rpz/db.rpz.zone
echo 
echo &quot;Caso tenha algum erro do tipo: ignoring out-of-zone edite este script e adicione ele como&quot;
echo &quot;no exemplo dos dominios corrigindos com o comando sed -i -e ......&quot;
echo
echo &quot;Se voce recebeu um OK na verificacao&quot;
echo &quot;Agora basta mover db.rpz.zone  /var/cache/bind/rpz/ e reinicie o bind&quot;
echo
echo &quot;Comandos:&quot;
echo &quot;# mv /var/cache/bind/rpz/db.rpz.zone /var/cache/bind/rpz/db.rpz.zone.`date +%Y%m%d`&quot;
echo &quot;# mv /etc/bind/script-rpz/db.rpz.zone /var/cache/bind/rpz/&quot;
echo &quot;# systemctl restart bind9&quot;</pre>
<p>De permissões entre no diretório do nosso script e execute o mesmo, <strong>fique atento se der algum erro!</strong></p>
<pre class="remontti-code"># chmod +x /etc/bind/script-rpz/gera.rpz.sh
# cd /etc/bind/script-rpz/
# sh gera.rpz.sh</pre>
<p>Vai retornar: </p>
<pre class="remontti-code">Baixando lista shallalist
--2019-10-14 17:52:20--  http://www.shallalist.de/Downloads/shallalist.tar.gz
Resolvendo www.shallalist.de (www.shallalist.de)... 2a01:4f8:140:5407::2, 46.4.77.203
Conectando-se a www.shallalist.de (www.shallalist.de)|2a01:4f8:140:5407::2|:80... conectado.
A requisição HTTP foi enviada, aguardando resposta... 200 OK
Tamanho: 9986607 (9,5M) [application/x-gzip]
Salvando em: “shallalist.tar.gz”

shallalist.tar.gz                       100%[============================================================================&gt;]   9,52M  3,52MB/s    em 2,7s    

2019-10-14 17:52:23 (3,52 MB/s) - “shallalist.tar.gz” salvo [9986607/9986607]

Preparando Lista: DROGAS
Preparando Lista: HACKING
Preparando Lista: PORNOS
Preparando Lista: SPYWARE
Preparando Lista: VIOLENCIA
Preparando Lista: PIRATARIA ILEGAL E VIRUS

Gerando db.rpz.zone

Removendo arquivos desnecessarios

Corrigindo enderecos invalidos

Verificando se tem algum erros no arquivo db.rpz.zone
zone localhost/IN: loaded serial 2019101400
OK

Caso tenha algum erro do tipo: ignoring out-of-zone edite este script e adicione ele como
no exemplo dos dominios corrigindos com o comando sed -i -e ......

Se voce recebeu um OK na verificacao
Agora basta mover db.rpz.zone  /var/cache/bind/rpz/ e reinicie o bind

Comandos:
# mv /var/cache/bind/rpz/db.rpz.zone /var/cache/bind/rpz/db.rpz.zone.20191014
# mv /etc/bind/script-rpz/db.rpz.zone /var/cache/bind/rpz/
# systemctl restart bind9</pre>
<p>Note que a linha 28 recebemos um <strong>OK</strong> isso significa que nosso arquivo está apto para ser usado!</p>
<p>Como descrito vamos primeiro gerar um bkp do nosso antigo db.rpz.zone.DATA_HJ</p>
<pre class="remontti-code"># mv /var/cache/bind/rpz/db.rpz.zone /var/cache/bind/rpz/db.rpz.zone.`date +%Y%m%d`</pre>
<p>Em seguida mover o novo db.rpz.zone e restartar o bind.</p>
<pre class="remontti-code"># mv /etc/bind/script-rpz/db.rpz.zone /var/cache/bind/rpz/
# systemctl restart bind9</pre>
<p><strong>Uau agora temos mais de um milhão de domínios em nosso RPZ! </strong></p>
<p>Uma boa fonte de hosts você <a href="https://github.com/StevenBlack/hosts" rel="noopener" target="_blank">pode encontrar aqui</a>.</p>
<p>Espero que tenha gostado! <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>O post <a href="https://blog.remontti.com.br/3692">Como configurar um servidor DNS Response Policy Zone (RPZ) + Shallalist</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3692/feed</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title>Como é meu desktop #2? Debian 10 + KDE Plasma Minimalista + Extras</title>
		<link>https://blog.remontti.com.br/3322</link>
					<comments>https://blog.remontti.com.br/3322#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 13 Aug 2019 15:02:47 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Angry IP Scan]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Chromium]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian10]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[Etcher]]></category>
		<category><![CDATA[Filezilla]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Gimp]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[googleearth]]></category>
		<category><![CDATA[impressora]]></category>
		<category><![CDATA[Kdenlive]]></category>
		<category><![CDATA[nextcloud]]></category>
		<category><![CDATA[playonlinuyx]]></category>
		<category><![CDATA[rdesktop]]></category>
		<category><![CDATA[spotify]]></category>
		<category><![CDATA[Sublime Text]]></category>
		<category><![CDATA[Teamviewer]]></category>
		<category><![CDATA[telegram]]></category>
		<category><![CDATA[Thunderbird]]></category>
		<category><![CDATA[Torrent]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3322</guid>

					<description><![CDATA[<p>Antes de começar se você é iniciante e achar que é muito complexo instalar desta forma, você pode fazer a instalação selecionando a interface que deseja. Este formato é um meio de instalar apenas&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3322">Como é meu desktop #2? Debian 10 + KDE Plasma Minimalista + Extras</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Antes de começar se você é iniciante e achar que é muito complexo instalar desta forma, você pode fazer a instalação selecionando a interface que deseja. Este formato é um meio de instalar apenas os pacotes que você realmente usa e consequentemente deixará muito mais leve seu sistema.</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/meudesktop-debian10.png" data-rel="lightbox-gallery-jFfmOhBC" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/meudesktop-debian10-1024x640.png" alt="" width="1024" height="640" class="alignnone size-large wp-image-3363" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/meudesktop-debian10-1024x640.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/08/meudesktop-debian10-300x188.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/meudesktop-debian10-768x480.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/meudesktop-debian10.png 1680w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p><strong>Download</strong><br />
Vamos usar a ISO incluído Non-free + Firmware. Pq non-free e Firmware? A instalação Debian padrão é configurada para instalar apenas o Software Livre e drives não proprietários. Como muita pessoas tem dificuldade de carregar drives e instalar pacotes ex “flash-player” recomendo baixar esta iso, vou deixar dois links oficiais:<br />
<a href="https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/" rel="noopener noreferrer" target="_blank">https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/</a></p>
<p><strong>Instalação</strong><br />
Para instalação você pode seguir o tutorial: <a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Instalação do Debian 10 Limpa</a> passo-a-passo a parte mais importante para nossa instalação minimalista é  na hora de <strong>Escolha o software a ser instalado</strong> <strong>NÃO</strong> marcar nenhuma opção.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/08/debian10.png" data-rel="lightbox-gallery-jFfmOhBC" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/08/debian10-300x225.png" alt="" width="300" height="225" class="alignnone size-medium wp-image-3350" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/08/debian10-300x225.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/08/debian10-768x576.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/08/debian10.png 800w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>Repositório contrib non-free</strong></p>
<pre class="remontti-code">#  vim /etc/apt/sources.list</pre>
<p>Certifique-se de que ao final de cada repositório tenha <strong>contrib non-free</strong>, se não tiver adicione.</p>
<pre class="remontti-code">deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

# buster-updates, previously known as &#039;volatile&#039;
deb http://deb.debian.org/debian/ buster-updates main contrib non-free
deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free</pre>
<p>Tenha tudo atualizado!</p>
<pre class="remontti-code"># apt update ; apt upgrade</pre>
<p>Agora vamos instalar apenas os pacotes básicos (para mim) do nosso desktop minimalista.</p>
<pre class="remontti-code">
# su -
# apt install sddm kde-plasma-desktop kde-l10n-ptbr plasma-nm\
  bash-completion vim wget sudo curl unrar-free ark kcalc\
  okular gwenview kolourpaint4 vlc ksnapshot polkit-kde-1\
  htop iotop nethogs iftop locate traceroute mtr whois\
  nmap sddm-theme-debian-breeze gtk3-engines-breeze wireless-tools\
  dirmngr net-tools dnsutils apt-transport-https python-ipaddr\
  usermode firmware-linux-free network-manager-dev network-manager-pptp\
  network-manager-vpnc network-manager-ssh network-manager-openvpn\
  network-manager-pptp net-tools libavcodec-extra ffmpeg synaptic\
  lm-sensors msttcorefonts partitionmanager dialog firmware-linux\
  firmware-linux-free firmware-linux-nonfree firmware-misc-nonfree</pre>
<p>Adicione seu usuário ao grupo sudo</p>
<pre class="remontti-code"># usermod -G sudo SEU_USUARIO</pre>
<p>Ajustes de idioma</p>
<pre class="remontti-code"># dpkg-reconfigure locales</pre>
<p>Marque as opções:<br />
<em>[*] pt_BR ISO-8859-1<br />
[*] pt_BR.UTF-8 UTF-8</em><br />
Selecione:<br />
<em>pt_BR.UTF-8 UTF-8</em><br />
Já vamos aproveitar para otimizar a parametrização do kernel.</p>
<pre class="remontti-code"># echo &quot;# Reduz o uso de SWAP&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;vm.swappiness=10&quot; &gt;&gt; /etc/sysctl.conf
# echo &quot;# Melhora a gestão de cache&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</pre>
<p>Reinicie e sua interface desktop já deve estar pronta!</p>
<pre class="remontti-code"># systemctl reboot</pre>
<p><strong>Drive de vídeo</strong><br />
Em grande parte os drives são reconhecidos e instalado, mas caso tenha problema consulte:</p>
<p><a href="https://wiki.debian.org/GraphicsCard" rel="noopener noreferrer" target="_blank">https://wiki.debian.org/GraphicsCard</a><br />
<a href="https://wiki.debian.org/AtiHowTo" rel="noopener noreferrer" target="_blank">https://wiki.debian.org/AtiHowTo</a><br />
<a href="https://wiki.debian.org/ATIProprietary" rel="noopener noreferrer" target="_blank">https://wiki.debian.org/ATIProprietary</a><br />
<a href="https://wiki.debian.org/NvidiaGraphicsDrivers" rel="noopener noreferrer" target="_blank">https://wiki.debian.org/NvidiaGraphicsDrivers</a></p>
<h3>APLICATIVOS</h3>
<p>:: <a href="https://www.mozilla.org/pt-BR/firefox/" rel="noopener noreferrer" target="_blank"><strong>Firefox</strong></a> :: (Navegador)</p>
<pre class="remontti-code">$ sudo apt install firefox-esr firefox-esr-l10n-pt-br</pre>
<p>:: <strong><a href="https://www.chromium.org/">Chromium</a></strong> :: (Navegador)</p>
<pre class="remontti-code">$ sudo apt install chromium chromium-l10n</pre>
<p>:: <a href="https://www.google.com/intl/pt-BR/chrome/" rel="noopener noreferrer" target="_blank"><strong>Chrome</strong></a> :: (Navegador)</p>
<pre class="remontti-code">$ cd /tmp/
$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
$ sudo apt install ./google-chrome-stable_current_amd64.deb</pre>
<p>:: <a href="https://www.google.com.br/intl/pt-BR/earth/" rel="noopener noreferrer" target="_blank"><strong>Google Earth</strong></a> :: (Mapas)</p>
<pre class="remontti-code">$ cd /tmp/
$ wget https://dl.google.com/dl/earth/client/current/google-earth-pro-stable_current_amd64.deb
$ sudo apt install ./google-earth-pro-stable_current_amd64.deb</pre>
<p>:: <a href="https://www.libreoffice.org/" rel="noopener noreferrer" target="_blank"><strong>LibreOffice</strong></a> :: (Suite office)</p>
<pre class="remontti-code">$ sudo apt install libreoffice libreoffice-style-breeze libreoffice-l10n-pt-br</pre>
<p>:: <a href="https://www.thunderbird.net/pt-BR/" rel="noopener noreferrer" target="_blank"><strong>Thunderbird</strong></a> :: (Cliente E-mails)</p>
<pre class="remontti-code">$ sudo apt install thunderbird thunderbird-l10n-pt-br lightning-l10n-pt-br</pre>
<p>:: <a href="https://filezilla-project.org/" rel="noopener noreferrer" target="_blank"><strong>Filezilla</strong></a> :: (Cliente FTP +SFTP)</p>
<pre class="remontti-code">$ sudo apt install filezilla</pre>
<p>:: <strong><a href="https://github.com/GNOME/vinagre" rel="noopener noreferrer" target="_blank">Vinagre</a></strong> :: (Visualizador de área de trabalho remota)</p>
<pre class="remontti-code">$ sudo apt install vinagre</pre>
<p>:: <a href="https://www.rdesktop.org/" rel="noopener noreferrer" target="_blank"><strong>Rdesktop</strong></a> :: (Cliente RDP para o Terminal Server do Windows modo texto)</p>
<pre class="remontti-code">$ sudo apt install rdesktop</pre>
<p>:: <a href="https://kdenlive.org/" rel="noopener noreferrer" target="_blank"><strong>Kdenlive</strong></a>:: (Editor video)</p>
<pre class="remontti-code">$ sudo apt install kdenlive</pre>
<p>:: <a href="https://www.gimp.org/" rel="noopener noreferrer" target="_blank"><strong>Gimp</strong></a> :: (Editor imagem)</p>
<pre class="remontti-code">$ sudo apt install gimp</pre>
<p>:: <a href="https://www.playonlinux.com/" rel="noopener noreferrer" target="_blank"><strong>Playonlinux</strong></a> :: (Gerenciamento Wine para rodar aplicativos do Windows)</p>
<pre class="remontti-code">$ sudo dpkg --add-architecture i386 ; sudo apt update ; sudo apt upgrade
$ sudo apt install playonlinux</pre>
<p>Inclua as fontes da MS.</p>
<pre class="remontti-code">$ cp /usr/share/fonts/truetype/msttcorefonts/* ~/PlayOnLinux\&#039;s\ virtual\ drives/default/drive_c/windows/Fonts/</pre>
<p>:: <strong><a href="https://desktop.telegram.org" rel="noopener noreferrer" target="_blank">Telegram</a></strong> ::<br />
A versão via apt não é a mais recente, a instalação manual é mais recomendada se você quiser ter a versão mais atual.<br />
Acesse: <a href="https://github.com/telegramdesktop/tdesktop/releases/latest" rel="noopener noreferrer" target="_blank">https://github.com/telegramdesktop/tdesktop/releases/latest</a> e baixe a ultima versão &#8220;Linux 64 bit: Binary&#8221; ou 32 se for o seu caso. </p>
<pre class="remontti-code">$ cd /tmp/
$ wget https://telegram.org/dl/desktop/linux -O tsetup.tar.xz
$ tar xvf tsetup.tar.xz
$ sudo mv Telegram/ /opt/
$ sudo chown $USER. /opt/Telegram/ -R
$ sudo ln -sf /opt/Telegram/Telegram /usr/bin/telegram
$ telegram &amp;</pre>
<p>:: <a href="https://www.spotify.com/br/download/linux/" rel="noopener noreferrer" target="_blank"><strong>Spotify</strong></a> :: </p>
<pre class="remontti-code">$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 931FF8E79F0876134EDDBDCCA87FF9DF48BF1C90
$ echo deb http://repository.spotify.com stable non-free | sudo tee /etc/apt/sources.list.d/spotify.list
$ sudo apt update
$ sudo apt install spotify-client</pre>
<p>:: <strong><a href="https://www.skype.com/pt-br/get-skype/" rel="noopener noreferrer" target="_blank">Skype</a></strong> ::</p>
<pre class="remontti-code">$ cd /tmp/
$ wget https://repo.skype.com/latest/skypeforlinux-64.deb
$ sudo apt install ./skypeforlinux-64.deb</pre>
<p>:: <strong><a href="https://wiki.debian.org/Java/" rel="noopener noreferrer" target="_blank">Java</a></strong> :: </p>
<pre class="remontti-code">$ sudo apt install icedtea-netx default-jre</pre>
<p>:: <strong><a href="http://angryip.org/download/#linux" rel="noopener noreferrer" target="_blank">Angry IP Scan</a></strong>:: (Scaner Redes)</p>
<pre class="remontti-code">$ cd /tmp/
$ wget https://github.com/angryip/ipscan/releases/download/3.6.2/ipscan_3.6.2_amd64.deb
$ sudo apt install ./ipscan_3.6.2_amd64.deb</pre>
<p>:: <strong><a href="https://www.sublimetext.com/docs/3/linux_repositories.html" rel="noopener noreferrer" target="_blank">Sublime Text</a></strong> :: (Editor de texto)</p>
<pre class="remontti-code">$ wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
$ echo &quot;deb https://download.sublimetext.com/ apt/stable/&quot; | sudo tee /etc/apt/sources.list.d/sublime-text.list
$ sudo apt update ; sudo apt install sublime-text</pre>
<p>:: <strong><a href="https://etcher.io" rel="noopener noreferrer" target="_blank">Etcher</a></strong> :: (Flash USB bootaveis)</p>
<pre class="remontti-code">$ echo &quot;deb https://deb.etcher.io stable etcher&quot; | sudo tee /etc/apt/sources.list.d/balena-etcher.list
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61
$ sudo apt update
$ sudo apt install balena-etcher-electron</pre>
<p>:: <strong><a href="https://www.teamviewer.com/pt-br/download/linux/" rel="noopener noreferrer" target="_blank">Teamviewer</a></strong> ::</p>
<pre class="remontti-code">$ cd /tmp/
$ wget https://download.teamviewer.com/download/linux/teamviewer_amd64.deb
$ sudo apt install ./teamviewer_amd64.deb</pre>
<p>:: <strong><a href="https://www.dropbox.com/install" rel="noopener noreferrer" target="_blank">Dropbox</a></strong> :: (Cloud)</p>
<pre class="remontti-code">$ cd /tmp/
$ sudo apt install python3-gpg python-gpg
$ wget https://www.dropbox.com/download?dl=packages/ubuntu/dropbox_2019.02.14_amd64.deb -O dropbox.deb
$ sudo apt install ./dropbox.deb</pre>
<p>:: <strong><a href="https://nextcloud.com/install/#install-clients" rel="noopener noreferrer" target="_blank">Nextcloud</a></strong> :: (Cloud)</p>
<pre class="remontti-code">$ cd /tmp/
$ wget https://download.nextcloud.com/desktop/releases/Linux/Nextcloud-2.6.3-x86_64.AppImage -O Nextcloud.AppImage
$ chmod a+x Nextcloud.AppImage
$ sudo mkdir /opt/Nextcloud
$ sudo chown $USER. /opt/Nextcloud/ -R
$ mv Nextcloud.AppImage /opt/Nextcloud/</pre>
<p>Atalho (pesquise um ícone na internet)</p>
<pre class="remontti-code">$ wget http://www.iconarchive.com/download/i106074/papirus-team/papirus-apps/nextcloud.ico -O /opt/Nextcloud/nextcloud.ico
$ sudo vim /usr/share/applications/nextcloud.desktop</pre>
<p>Crie um atalho em seus aplicativos</p>
<pre class="remontti-code">[Desktop Entry]
Version=2.6.3
Name=NextCloud
Comment=NextCloud Desktop
TryExec=/opt/Nextcloud/Nextcloud.AppImage
Exec=/opt/Nextcloud/Nextcloud.AppImage
Icon=/opt/Nextcloud/nextcloud.ico
Terminal=false
StartupWMClass=NextcloudDesktop
Type=Application
Categories=Network;</pre>
<p>Para colocar inicializar com o sistema vá nas configurações do aplicativo.<br />
<strong>:: Torrent::</strong><br />
Eu gosto do <strong><a href="https://github.com/rakshasa/rtorrent" rel="noopener noreferrer" target="_blank">rtorrent</a></strong> via terminal</p>
<pre class="remontti-code">$ sudo apt install rtorrent</pre>
<p>Mas para interface prefiro <strong><a href="https://www.qbittorrent.org/" rel="noopener noreferrer" target="_blank">qBittorrent</a></strong></p>
<pre class="remontti-code">$ sudo apt install qbittorrent</pre>
<p>:: <strong><a href="https://www.virtualbox.org/wiki/Linux_Downloads" rel="noopener noreferrer" target="_blank">Virtualbox</a></strong> :: </p>
<pre class="remontti-code">$ echo &quot;deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian buster contrib&quot; | sudo tee /etc/apt/sources.list.d/virtualbox.list
$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
$ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
$ sudo apt update
$ sudo apt install virtualbox-6.1
$ sudo usermod -a -G vboxusers $USER</pre>
<pre class="remontti-code">$ cd /tmp/
$ wget --no-check-certificate https://download.virtualbox.org/virtualbox/6.1.0/Oracle_VM_VirtualBox_Extension_Pack-6.1.0.vbox-extpack
$ sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.1.0.vbox-extpack</pre>
<p><strong>:: Iniciar Nun Lok ativo e corrigir problema do ponto no Wine ::</strong></p>
<pre class="remontti-code">$ sudo apt install numlockx</pre>
<p>Crie um arquivo com:</p>
<pre class="remontti-code">$ vim ~/.config/autostart-scripts/inicializar.sh</pre>
<p>Adicione</p>
<pre class="remontti-code">#!/bin/bash
# Liga o nunlok
/usr/bin/numlockx on
# Corrige ponto do teclado numerico
/usr/bin/xmodmap -e &#039;keycode 129 = period&#039;</pre>
<pre class="remontti-code">$ chmod +x ~/.config/autostart-scripts/inicializar.sh</pre>
<p>Pronto na próxima inicialização ele já vai executar seu script.<br />
<strong>:: Possíveis Dificuldades ::</strong><br />
<strong>Ajuste na rede</strong></p>
<pre class="remontti-code">$ sudo sed -i &#039;s/plugins=ifupdown,keyfile/plugins=keyfile/&#039; /etc/NetworkManager/NetworkManager.conf
$ sudo addgroup $USER netdev
$ sudo /etc/init.d/network-manager restart</pre>
<p><strong>Impressora</strong></p>
<pre class="remontti-code">$ sudo tasksel
$ sudo apt install printer-driver-hpijs printer-driver-hplip hpcups system-config-printer printer-driver-all</pre>
<p><strong>Solução para o volume que fica indo para 100% sozinho.</strong></p>
<pre class="remontti-code">$ echo &#039;flat-volumes = no&#039; &gt;&gt; ~/.config/pulse/daemon.conf
$ sudo sed -i &#039;s/; flat-volumes = yes/flat-volumes = no/&#039; /etc/pulse/daemon.conf
$ pulseaudio -k ; pulseaudio --start</pre>
<p>Parabéns! Você concluiu! Gostou?</p>
<p><center><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></center></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/3322">Como é meu desktop #2? Debian 10 + KDE Plasma Minimalista + Extras</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3322/feed</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação do SpeedTest/OoklaServer + Speedtest Custom no Debian 10 Buster</title>
		<link>https://blog.remontti.com.br/3218</link>
					<comments>https://blog.remontti.com.br/3218#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 26 Jul 2019 20:01:06 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[account]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 10]]></category>
		<category><![CDATA[debian buster]]></category>
		<category><![CDATA[ookla]]></category>
		<category><![CDATA[ooklaserver]]></category>
		<category><![CDATA[php7]]></category>
		<category><![CDATA[php7.3]]></category>
		<category><![CDATA[speedtest]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3218</guid>

					<description><![CDATA[<p>Instalação do SpeedTest (OoklaServer) no Debian 11/12 gerenciado pelo systemd 👆👆👆👆 Versão mais atualizada. Requisitos do servidor Speedtest de acordo com base nas informações: support.ookla.com Capacidade de Rede: &#8211; 1 Gbps de Up e&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3218">Instalação do SpeedTest/OoklaServer + Speedtest Custom no Debian 10 Buster</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<blockquote class="wp-embedded-content" data-secret="hyQwkVUt1w"><p><a href="https://blog.remontti.com.br/6051">Instalação do SpeedTest (OoklaServer) no Debian 11/12 gerenciado pelo systemd</a></p></blockquote>
<p><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Instalação do SpeedTest (OoklaServer) no Debian 11/12 gerenciado pelo systemd&#8221; &#8212; Remontti" src="https://blog.remontti.com.br/6051/embed#?secret=aru74vP5WC#?secret=hyQwkVUt1w" data-secret="hyQwkVUt1w" width="500" height="282" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><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;" /><br />
Versão mais atualizada.</p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-ooklaserver.png" alt="" width="720" height="340" class="alignnone size-full wp-image-3295" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-ooklaserver.png 720w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-ooklaserver-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-ooklaserver-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>Requisitos do servidor Speedtest de acordo com base nas informações: <a href="https://support.ookla.com/hc/en-us/articles/234578628-Speedtest-Server-Requirements" rel="noopener noreferrer" target="_blank">support.ookla.com</a></p>
<h4>Capacidade de Rede:</h4>
<p> &#8211; 1 Gbps de Up e Down<br />
 &#8211; Exceções raras são feitas para regiões subdesenvolvidas e carentes.</p>
<h4>Hardware</h4>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-requesitos.png" alt="" width="579" height="306" class="alignnone size-full wp-image-3220" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-requesitos.png 579w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-requesitos-300x159.png 300w" sizes="auto, (max-width: 579px) 100vw, 579px" /></p>
<h4>Portas:</h4>
<p> &#8211; TCP/UDP 8080 (OoklaServer)<br />
 &#8211; TCP/UDP 5060 (OoklaServer)<br />
 &#8211; TCP 80 (HTTP Legacy)<br />
Todas as portas devem estar abertas para qualquer IP público da Internet, pois os usuários se conectarão diretamente.</p>
<h4>DNS:</h4>
<p>No exemplo vou usar o domínio teste.remontti.com.br, logo é necessário configurar seu subdomínio &#8220;teste&#8221; <a href="https://blog.remontti.com.br/308" rel="noopener noreferrer" target="_blank">em seu DNS Server</a>.</p>
<pre class="remontti-code">[...]

teste       A       45.80.50.2
            AAAA    2804:f123:bebe:cafe::2

[...]</pre>
<p><strong>Distribuição utilizada:</strong> <a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Debian 10 (Instalação limpa)</a><br />
Funciona também com Debian 9</p>
<p>Pacotes necessários</p>
<pre class="remontti-code"># su -
# apt install vim  wget unzip apt-transport-https</pre>
<p>Por segurança do servidor é recomendamos usar um usuário sem poderes de root para executar o servidor da ookla.<br />
Para isso vamos criar o usuário chamado speedtest.</p>
<pre class="remontti-code"># addgroup speedtest
# useradd -d /etc/speedtest -m -g speedtest -s /bin/bash speedtest</pre>
<p>Transforme-se no usuário speedtest que acabamos de criar.</p>
<pre class="remontti-code"># su - speedtest</pre>
<p>Vamos baixar nosso script de instalação em /etc/speedtest e executa-lo.</p>
<pre class="remontti-code">$ cd ~
$ wget https://install.speedtest.net/ooklaserver/ooklaserver.sh --no-check-certificate
$ chmod +x ooklaserver.sh
$ ./ooklaserver.sh install</pre>
<p><em>Please confirm (y/n) ></em> <strong>y</strong></p>
<pre class="remontti-code">Server Platform is linux64
This will install the Ookla server for linux64 to the current folder. Please confirm (y/n) &gt; y
Checking Directory Structure
Downloading Server Files
--2019-07-26 10:33:50--  https://install.speedtest.net/ooklaserver/stable/OoklaServer-linux64.tgz
Resolvendo install.speedtest.net (install.speedtest.net)... 2a04:4e42::731, 2a04:4e42:200::731, 2a04:4e42:400::731, ...
Conectando-se a install.speedtest.net (install.speedtest.net)|2a04:4e42::731|:443... conectado.
A requisição HTTP foi enviada, aguardando resposta... 200 OK
Tamanho: 6093436 (5,8M) [binary/octet-stream]
Salvando em: “OoklaServer-linux64.tgz”

OoklaServer-linux64.tgz                 100%[============================================================================&gt;]   5,81M  2,71MB/s    em 2,1s    

2019-07-26 10:33:52 (2,71 MB/s) - “OoklaServer-linux64.tgz” salvo [6093436/6093436]

Extracting Server Files
OoklaServer
OoklaServer.properties.default
Starting OoklaServer
Daemon Started (9531)
NOTE:

We strongly recommend following instructions at

   https://www.ookla.com/support/a87011938/

to ensure your daemon starts automatically when the system reboots</pre>
<p>Neste momento o servidor ookla já iniciou, acesse em seu navegado <strong>http://teste.{DOMINIO}:8080</strong> e <strong>http://teste.{DOMINIO}:5060</strong> e verifique se o mesmo esta rodando (OoklaServer &#8211; It worked!)</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-it-worked.png" data-rel="lightbox-gallery-MqCPbKYA" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-it-worked-300x202.png" alt="" width="300" height="202" class="alignnone size-medium wp-image-3221" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-it-worked-300x202.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-it-worked-768x518.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-it-worked.png 829w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Volte para o usuário root</p>
<pre class="remontti-code">$ exit</pre>
<p>Para que o Ooklaserver seja iniciado em segundo plano automaticamente, criaremos o arquivo /etc/rc.local como o comando já para iniciar nosso serviço.</p>
<pre class="remontti-code"># ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
# printf &#039;%s\n&#039; &#039;#!/bin/bash&#039; &#039;/usr/bin/su - speedtest -c &quot;/etc/speedtest/OoklaServer --daemon&quot;&#039; &#039;exit 0&#039; | tee -a /etc/rc.local</pre>
<p>De permissão para execução e ative sua inicialização</p>
<pre class="remontti-code"># chmod +x /etc/rc.local</pre>
<p>Para testarmos vamos reiniciar e verificar se o ooklaserver iniciou após reboot.</p>
<pre class="remontti-code"># reboot</pre>
<p>Acesse: <strong>http://teste.{DOMINIO}:8080</strong> para ver se o mesmo foi executado na inicialização.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-it-worked.png" data-rel="lightbox-gallery-MqCPbKYA" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-it-worked-300x202.png" alt="" width="300" height="202" class="alignnone size-medium wp-image-3221" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-it-worked-300x202.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-it-worked-768x518.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-it-worked.png 829w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<h4>Servidor Web</h4>
<p>Precisamos ter um serviço web rodando e PHP, para isso vamos instalar o Apache2 + PHP7</p>
<pre class="remontti-code"># su -
# apt install apache2 libapache2-mod-php php </pre>
<p><strong> :: Dominio Virtual :: </strong></p>
<p>Crie a configuração do domínio virtual, no meu exemplo teste.remontti.com.br, qual diretório raiz será &#8220;/var/www/teste/&#8221;</p>
<pre class="remontti-code"># vim /etc/apache2/sites-available/teste.conf</pre>
<pre class="remontti-code">&lt;virtualhost *:80&gt;
        ServerName teste.remontti.com.br
        ServerAdmin noc@remontti.com.br
        DocumentRoot /var/www/teste 
        &lt;directory /var/www/teste/ &gt;
                Options FollowSymLinks
                AllowOverride All
        &lt;/directory&gt; 
        LogLevel warn 
        ErrorLog ${APACHE_LOG_DIR}/error_teste.log
        CustomLog ${APACHE_LOG_DIR}/access_teste.log combined
&lt;/virtualhost&gt;</pre>
<p>Vamos criar nosso diretório raiz:</p>
<pre class="remontti-code"># mkdir /var/www/teste/
# echo &quot;MEU FUTURO CODIGO HTML&quot; &gt; /var/www/teste/index.php
</pre>
<p>Agora precisamos fazer o acesso web para visualizar as informações.<br />
Ajustes de segurança para o apache:</p>
<pre class="remontti-code"># sed -i &#039;s/ServerTokens OS/ServerTokens Prod/&#039; /etc/apache2/conf-available/security.conf
# sed -i &#039;s/ServerSignature On/ServerSignature Off/&#039; /etc/apache2/conf-available/security.conf</pre>
<p>Ativamos o arquivo teste.conf e restartamos o apache2</p>
<pre class="remontti-code"># a2ensite teste
# systemctl restart apache2</pre>
<p>Acesse: <strong>http://teste.{DOMINIO}</strong>, se retornar uma tela &#8220;MEU FUTURO CODIGO HTML&#8221;.</p>
<h4>Certificado Válido</h4>
<p>Usamos o letsencrypt para gerar o certificado certificado gratuitamente.</p>
<pre class="remontti-code"># apt install letsencrypt python-certbot-apache</pre>
<p>Antes de gerar nossa configuração pare o apache</p>
<pre class="remontti-code"># systemctl stop apache2</pre>
<p>Altere teste.remontti.com.br para SEU.DOMINIO!</p>
<pre class="remontti-code"># letsencrypt --authenticator standalone --installer apache -d teste.remontti.com.br</pre>
<p>Responda como abaixo:</p>
<pre class="remontti-code">Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter &#039;c&#039; to
cancel): seu@email.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 at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing 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
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for teste.remontti.com.br
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/teste-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/teste-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/teste-le-ssl.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you&#039;re confident your site works on HTTPS. You can undo this
change by editing your web server&#039;s configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press &#039;c&#039; to cancel): 1

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://teste.remontti.com.br

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=teste.remontti.com.br
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/teste.remontti.com.br/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/teste.remontti.com.br/privkey.pem
   Your cert will expire on 2019-10-24. 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;
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Lets Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le</pre>
<p>Acesse seu domínio agora com https: <strong>https://teste.{DOMINIO}</strong>. Você não pode receber erro de certificado!</p>
<p>Para evitar que o certificado expire colocaremos o certbot para renovar o certificado, fazendo um script e colocando ele no cron.</p>
<pre class="remontti-code"># vim  /etc/speedtest/renovassl.sh</pre>
<p>Adicione</p>
<pre class="remontti-code">#!/bin/bash
# Para o apache 
/usr/bin/systemctl stop apache2

# Aguarda 10 seg (tempo do apache parar) 
sleep 10

# Renova o certificado
/usr/bin/certbot -q renew

# Aguarda o certificado renovar
sleep 30

# Altera as permissoes para o usuário speedtest conseguir ler os certificados
/usr/bin/chown speedtest. /etc/letsencrypt/ -R

# Aguarda 2 seg
sleep 2

# Restarta o apache 
/usr/bin/systemctl restart apache2
sleep 10
# Restarta o apache mais uma vez so por garantia (opcional)
/usr/bin/systemctl restart apache2

# Para o ooklaserver
/etc/speedtest/ooklaserver.sh stop 
sleep 120
# Inicia o ooklaserver
/usr/bin/su - speedtest -c &quot;/etc/speedtest/OoklaServer --daemon&quot;
</pre>
<pre class="remontti-code"># chmod +x /etc/speedtest/renovassl.sh
# chown speedtest. /etc/speedtest/renovassl.sh</pre>
<pre class="remontti-code"># echo &#039;00 00   1 * *   root    /etc/speedtest/renovassl.sh&#039; &gt;&gt; /etc/crontab</pre>
<p>Verifique se a última linha está nosso script.</p>
<pre class="remontti-code"># cat /etc/crontab</pre>
<pre class="remontti-code"># /etc/crontab: system-wide crontab
# Unlike any other crontab you don&#039;t have to run the `crontab&#039;
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
17 *    * * *   root    cd / &amp;&amp; run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / &amp;&amp; run-parts --report /etc/cron.monthly )
#
00 00   * * *   root    /etc/speedtest/renovassl.sh</pre>
<p>Restarte o cron</p>
<pre class="remontti-code"># systemctl restart cron</pre>
<p>Agora que temos nosso certificado válido e funcionando vamos utiliza-lo nas configurações do OoklaServer.</p>
<pre class="remontti-code"># vim /etc/speedtest/OoklaServer.properties</pre>
<p>Descomente a variável: <strong>OoklaServer.allowedDomains</strong> e inclua seu domínio também, em seguida procure <strong>openSSL</strong>, temos duas variáveis comentadas, descomente e aponte para o arquivo do certificado criado pelo letsencrypt.  </p>
<pre class="remontti-code"># OoklaServer.allowedDomains = *.ookla.com, *.speedtest.net
# altere ¬
OoklaServer.allowedDomains = *.ookla.com, *.speedtest.net, *.SEUDOMINIO.com.br

# ...

# openSSL.server.certificateFile = cert.pem
# openSSL.server.privateKeyFile = key.pem
# altere ¬
openSSL.server.certificateFile = /etc/letsencrypt/live/teste.SEUDOMINIO.com.br/fullchain.pem
openSSL.server.privateKeyFile = /etc/letsencrypt/live/teste.SEUDOMINIO.com.br/privkey.pem</pre>
<p>Se você tem IPv6 configurado em seu servidor, ainda no OoklaServer.properties descomente alinha &#8220;OoklaServer.useIPv6&#8221;</p>
<pre class="remontti-code"># Uncomment to bind OoklaServer to IPv6
#
OoklaServer.useIPv6 = true</pre>
<p>Vamos sobrescrevemos o arquivo default também, pois o Ooklaserver atualiza-se automaticamente e ele é o arquivo base.</p>
<pre class="remontti-code"># cp /etc/speedtest/OoklaServer.properties /etc/speedtest/OoklaServer.properties.default</pre>
<p>Também é necessário dar acesso (permissão) ao usuário speedtest a ler os arquivos do certificado em /etc/letsencrypt.</p>
<pre class="remontti-code"># chown speedtest. /etc/letsencrypt/ -R</pre>
<p>Reinicie seu servidor.</p>
<pre class="remontti-code"># reboot</pre>
<p>Agora acessamos nossa porta 8080 utilizando http: <strong>https://teste.{DOMINIO}:8080</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-https-speedtest.png" data-rel="lightbox-gallery-MqCPbKYA" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-https-speedtest-300x202.png" alt="" width="300" height="202" class="alignnone size-medium wp-image-3257" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-https-speedtest-300x202.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-https-speedtest-768x518.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-https-speedtest.png 829w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Crie uma index.php onde posteriormente iremos configurar nosso SpeedtestCustom</p>
<pre class="remontti-code"># echo &quot;IFRAME SPEEDTESTCUSTOM&quot; &gt; /var/www/teste/index.php</pre>
<pre class="remontti-code"># vim /var/www/teste/crossdomain.xml</pre>
<pre class="remontti-code">&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;cross-domain-policy&gt;
  &lt;allow-access-from domain=&quot;*.speedtest.net&quot; /&gt;
  &lt;allow-access-from domain=&quot;*.ookla.com&quot; /&gt;
  &lt;allow-access-from domain=&quot;*.SEUDOMINIO.com.br&quot; /&gt;
  &lt;allow-access-from domain=&quot;*.OUTRO_SETIVER_OU_DELETE_ESSALINHA&quot; /&gt;
&lt;/cross-domain-policy&gt;</pre>
<p>Servidor esta pronto para passar nos testes! <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>Testes</h4>
<p>Acesse <a href="https://www.ookla.com/pt/host-tester" rel="noopener noreferrer" target="_blank">https://www.ookla.com/pt/host-tester</a> e preencha com as informações do seu servidor:</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest.png" data-rel="lightbox-gallery-MqCPbKYA" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest.png" alt="" width="883" height="690" class="alignnone size-full wp-image-5358" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest.png 883w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-300x234.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-768x600.png 768w" sizes="auto, (max-width: 883px) 100vw, 883px" /></a></p>
<p><strong>Submit!</strong></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest_result.png" data-rel="lightbox-gallery-MqCPbKYA" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest_result.png" alt="" width="1008" height="750" class="alignnone size-full wp-image-5359" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest_result.png 1008w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest_result-300x223.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest_result-768x571.png 768w" sizes="auto, (max-width: 1008px) 100vw, 1008px" /></a></p>
<h4>Criando uma conta</h4>
<p>Se você passou nos testes é hora de criar sua conta no <a href="https://account.ookla.com/register/servers" rel="noopener noreferrer" target="_blank">ookla.com</a> e fazer a solicitação para virar um host! <a href="https://account.ookla.com/register/servers" rel="noopener noreferrer" target="_blank">https://account.ookla.com/register/servers</a><br />
Se você já tem conta acesse: <a href="https://account.ookla.com/servers/create" rel="noopener noreferrer" target="_blank">https://account.ookla.com/servers/create</a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-register.png" data-rel="lightbox-gallery-MqCPbKYA" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-register-150x150.png" alt="" width="150" height="150" class="alignnone size-thumbnail wp-image-3270" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-register-150x150.png 150w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-register-160x160.png 160w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-register-320x320.png 320w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-register2.png" data-rel="lightbox-gallery-MqCPbKYA" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-register2-150x150.png" alt="" width="150" height="150" class="alignnone size-thumbnail wp-image-3271" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-register2-150x150.png 150w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-register2-160x160.png 160w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-register2-320x320.png 320w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-register3.png" data-rel="lightbox-gallery-MqCPbKYA" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-register3-150x150.png" alt="" width="150" height="150" class="alignnone size-thumbnail wp-image-3272" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-register3-150x150.png 150w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-register3-160x160.png 160w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-register3-320x320.png 320w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a></p>
<h4>Cadastro</h4>
<p>Criado sua conta responta seu e-mail de verificação e logue em sua conta: <a href="https://account.ookla.com/" rel="noopener noreferrer" target="_blank">https://account.ookla.com/</a></p>
<p>Clique em <strong>Go To Servers</strong>, e <strong>aceite os Termos</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-go-to-server.png" data-rel="lightbox-gallery-MqCPbKYA" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-go-to-server-300x172.png" alt="" width="300" height="172" class="alignnone size-medium wp-image-3276" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-go-to-server-300x172.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-go-to-server-768x441.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-go-to-server-1024x588.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-go-to-server.png 1223w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Clique em <strong>Add Server</strong> preencha com os seus dados e do servidor. </p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-add-server-1.png" data-rel="lightbox-gallery-MqCPbKYA" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-add-server-1.png" alt="" width="1234" height="1297" class="alignnone size-full wp-image-5360" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-add-server-1.png 1234w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-add-server-1-285x300.png 285w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-add-server-1-974x1024.png 974w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-add-server-1-768x807.png 768w" sizes="auto, (max-width: 1234px) 100vw, 1234px" /></a><br />
Agora basta aguardar alguns dias pela aprovação, você receberá um e-mail lhe avisado (se não for aprovado eles lhe dirão porque). Boa sorte!</p>
<h4>SpeedtestCustom</h4>
<p>Acesse <a href="https://account.speedtestcustom.com" rel="noopener noreferrer" target="_blank">https://account.speedtestcustom.com</a> e resgistre um &#8220;Free Plan&#8221;<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-1.png" data-rel="lightbox-gallery-MqCPbKYA" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-1-1024x736.png" alt="" width="1024" height="736" class="alignnone size-large wp-image-3283" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-1-1024x736.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-1-300x216.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-1-768x552.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-1.png 1235w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-2.png" data-rel="lightbox-gallery-MqCPbKYA" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-2-1024x715.png" alt="" width="1024" height="715" class="alignnone size-large wp-image-3284" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-2-1024x715.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-2-300x209.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-2-768x536.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-2.png 1265w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-3.png" data-rel="lightbox-gallery-MqCPbKYA" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-3-1024x707.png" alt="" width="1024" height="707" class="alignnone size-large wp-image-3285" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-3-1024x707.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-3-300x207.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-3-768x530.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-3.png 1257w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></p>
<p>Finalizando ajustamos o arquivo index.php</p>
<pre class="remontti-code">#  vim /var/www/teste/index.php </pre>
<p>WordPress ta bugando ao ler o codigo html pegue ele aqui: <a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/index.zip">index</a></p>
<pre class="remontti-code">&lt;?php
#Altere as variáveis
$titulo = &quot;Remontti - SpeedTest&quot;;
$cor_fundo = &quot;1D1D1D&quot;; //A mesma que vc anotou la do custom
$cor_texto = &quot;067980&quot;; //A mesma que vc anotou la do custom
$url_custom = &quot;https://remontti.speedtestcustom.com&quot;; // Seu link no custom
?&gt;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;?php echo &quot;$titulo &quot;; ?&gt;&lt;/title&gt;
&lt;meta charset=&quot;utf-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
&lt;link rel=&quot;shortcut icon&quot; href=&quot;/favicon.ico&quot; type=&quot;image/x-icon&quot;&gt;
&lt;link rel=&quot;icon&quot; href=&quot;/favicon.ico&quot; type=&quot;image/x-icon&quot;&gt;
&lt;style type=&quot;text/css&quot;&gt;
  html, body {
    font-family: Lucida Grande, sans-serif;
    color: #&lt;?php echo &quot;$cor_texto&quot;; ?&gt;;
    background: #&lt;?php echo &quot;$cor_fundo&quot;; ?&gt;;
  }
  .iframe-placeholder {
    background: url(&#039;data:image/svg+xml;charset=utf-8,&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;100%&quot; height=&quot;100%&quot; viewBox=&quot;0 0 100% 100%&quot;&gt;&lt;text fill=&quot;%23&lt;?php echo &quot;$cor_texto&quot;; ?&gt;&quot; x=&quot;50%&quot; y=&quot;50%&quot; font-family=&quot;\&#039;Lucida Grande\&#039;, sans-serif&quot; font-size=&quot;38&quot; text-anchor=&quot;middle&quot;&gt;Carregando&lt;/text&gt;&lt;/svg&gt;&#039;) 0px 0px no-repeat;
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;iframe class=&quot;iframe-placeholder&quot; width=&quot;100%&quot; height=&quot;600px&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; src=&quot;&lt;?php echo &quot;$url_custom&quot;; ?&gt;&quot;&gt;&lt;/iframe&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>https://teste.DOMINIO/<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-4.png" data-rel="lightbox-gallery-MqCPbKYA" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-4-300x212.png" alt="" width="300" height="212" class="alignnone size-medium wp-image-3291" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-4-300x212.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-4-768x542.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-4-1024x722.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/speedtest-debian-10-buster-custom-4.png 1048w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Parabéns! Você concluiu! Gostou?</p>
<p><center><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></center></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/3218">Instalação do SpeedTest/OoklaServer + Speedtest Custom no Debian 10 Buster</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3218/feed</wfw:commentRss>
			<slash:comments>145</slash:comments>
		
		
			</item>
		<item>
		<title>Servidor DNS seguro com Bind9  (Recursivo, Autoritativo e Reverso) + Fail2ban + nftables no Debian 10 Buster [Descontinuado]</title>
		<link>https://blog.remontti.com.br/3086</link>
					<comments>https://blog.remontti.com.br/3086#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Thu, 18 Jul 2019 19:17:51 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[allow-transfer]]></category>
		<category><![CDATA[Autoritativo]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[bind9]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 10]]></category>
		<category><![CDATA[debian buster]]></category>
		<category><![CDATA[debian stretch]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[ipv4]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[Recursivo]]></category>
		<category><![CDATA[Reverso]]></category>
		<category><![CDATA[seguro]]></category>
		<category><![CDATA[Servidor]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3086</guid>

					<description><![CDATA[<p>Este tutorial foi atualizado: Acesse Servidor DNS Bind9 &#8211; Recursivo + Autoritativo DNSSEC + Reverso + RPZ + Fail2ban + nftables + Zabbix no Debian 11 Bullseye Não utilize este tutorial! Não apaguei o&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3086">Servidor DNS seguro com Bind9  (Recursivo, Autoritativo e Reverso) + Fail2ban + nftables no Debian 10 Buster [Descontinuado]</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1><font color="red"><strong>Este tutorial foi atualizado: </strong></font></h1>
<h3>Acesse <a href="https://blog.remontti.com.br/5958">Servidor DNS Bind9 &#8211; Recursivo + Autoritativo DNSSEC + Reverso + RPZ + Fail2ban + nftables + Zabbix no Debian 11 Bullseye</a></h3>
<h4><font color="red"><strong>Não utilize este tutorial! Não apaguei o mesmo para deixa-lo para fins de estudos em cima do Debian 10.</strong></font></h4>
<hr>
<p>(Descontinuado)</p>
<hr>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/bind9-debina-10-buster-nftables-fail2ban.png" alt="" width="720" height="340" class="alignnone size-full wp-image-3206" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/bind9-debina-10-buster-nftables-fail2ban.png 720w, https://blog.remontti.com.br/wp-content/uploads/2019/07/bind9-debina-10-buster-nftables-fail2ban-300x142.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/bind9-debina-10-buster-nftables-fail2ban-520x245.png 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p><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>Requesitos:</strong><br />
<strong><a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Debian 10 Stretch &#8211; Instalação Limpa</a></strong></p>
<p><strong>DNS RECURSIVO</strong><br />
O DNS recursivo é responsável pela resolução de nomes, começando sempre com consultar recursivas nos servidores raízes. Para melhorar a eficiência e reduzir o tráfego DNS na Internet e aumentar o desempenho em aplicativos de usuário final, fazendo o cache DNS, armazenando resultados de 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 AUTORITIVO</strong><br />
É o serviço DNS que possui autoridade sob um domínio. Assim como servidor ns1.remontti.com.br é o DNS autoritativo de meu domínio remontti.com.br, é ele que sempre vai responder qualquer subdomínio &#8220;hosts&#8221; ex blog.remontti.com.br.<br />
E esse servidor que você vai apontar nas configurações de um domínio, exemplo registrado no registro.br.</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 ele resolve o endereço IP buscando o nome de domínio associado ao host.<br />
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 (pois isso que ele é importante para servidores de e-mail).</p>
<p><strong>DICAS</strong><br />
&#8211; Para que o DNS Reverso funcione no registro.br é importante que você já tenha configurado o DNS autoritativo, e aguarde sua publicação antes de fazer a designação. (Normalmente demoram 4 horas)<br />
&#8211; Se você é um provedor, o correto seria você ter dois servidores DNS em sua rede, uma Master e outro Slave. Neste tutoria foi explicar como criar os dois!</p>
<p><strong>PERGUNTAS FREQUENTES:</strong><br />
&#8211; <strong>Preciso montar dois servidores?</strong><br />
  Sim/Não, para a configuração do DNS autoritativo/reverso são necessários apontar dois endereços, no entanto nada impede de configurar dois IPs no mesmo servidor. Em alguns caso vejo as pessoas virtualizar 2 servidores (apenas DNS) na mesma maquina de virtualização, se pensarmos que se o servidor de virtualização para nada adianta ter 2 servidores, neste caso quem sabe seria mais interessante ter alguma outra aplicação rodando com o servido slave (pensando pelo lado aproveitamento de hardware). Então vai da sua realidade.</p>
<p>&#8211; <strong>Preciso separar o recusivo do autoritativo/reverso?</strong><br />
  Não! Ao não ser que você seja um grande data center com centenas de domínios autoritativos não vejo o motivo para separa-los. Na maioria das vezes que vi isso acontecer quem fez isso é porque não sabe como fechar as consultas recursivas para o mundo. E é ai que neste tutorial entra o fail2ban como a cereja do bolo.</p>
<p>Vamos iniciar com a instalação do servidor Master, lembrando que para isso estou usando a Distribuição linux Debian 10, com uma instalação que eu chamo de limpa.</p>
<h3>Ex.: ASN &#8211; CIDR/22 </h3>
<p>Nesse exemplo vou usar um bloco /22, porém mais a baixo vou deixar um exemplo também para você que é dono destes &#8220;/22&#8221; e vai delegar um bloco menor que /24 para outra empresa que queira ter seu próprio servidor DNS resolvendo o reverso desse bloco delegado.</p>
<p><strong>Bloco recebido</strong>:  IPv4 &#8211; 45.80.48.0/22  IPv6 &#8211; 2804:f123::/32<br />
<strong>Domínio autoritativo:</strong>: remontti.net.br</p>
<p>Antes de mais nada o mínimo de conhecimento é saber realizar cálculos de sub-redes.</p>
<p>:: ipcalc ::</p>
<pre class="remontti-code">root@remontti:~#  apt install ipcalc
root@remontti:~# ipcalc 45.80.48.0/22
Address:   45.80.48.0           00101101.01010000.001100 00.00000000
Netmask:   255.255.252.0 = 22   11111111.11111111.111111 00.00000000
Wildcard:  0.0.3.255            00000000.00000000.000000 11.11111111
=&gt;
Network:   45.80.48.0/22        00101101.01010000.001100 00.00000000
HostMin:   45.80.48.1           00101101.01010000.001100 00.00000001
HostMax:   45.80.51.254         00101101.01010000.001100 11.11111110
Broadcast: 45.80.51.255         00101101.01010000.001100 11.11111111
Hosts/Net: 1022                  Class A</pre>
<p>:: ip6calc ::</p>
<pre class="remontti-code">root@remontti:~# apt install python-ipaddr wget
root@remontti:~# wget https://blog.remontti.com.br/arquivos/Home/ip6calc -O /bin/ip6calc
root@remontti:~# chmod +x /bin/ip6calc
root@remontti:~# ip6calc 2804:f123::/32
Address:
  (Compressed)  2804:f123::/32
    (Exploded)  2804:f123:0000:0000:0000:0000:0000:0000/32
      (Binary)  0010100000000100:1111000100100011:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000/32
                ↑          ↑                 ↑  ↑                ↑        ↑       ↑                                                  ↑                ↑
                /1         /12              /29 /32              /48      /56     /64                                                /112             /128
Address type is: global unicast

Netmask:
  (Compressed)  ffff:ffff::
    (Exploded)  ffff:ffff:0000:0000:0000:0000:0000:0000
      (Binary)  1111111111111111:1111111111111111:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000
First address assignable:
  (Compressed)  2804:f123::
    (Exploded)  2804:f123:0000:0000:0000:0000:0000:0000
      (Binary)  0010100000000100:1111000100100011:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000
Last address assignable:
  (Compressed)  2804:f123:ffff:ffff:ffff:ffff:ffff:ffff
    (Exploded)  2804:f123:ffff:ffff:ffff:ffff:ffff:ffff
      (Binary)  0010100000000100:1111000100100011:1111111111111111:1111111111111111:1111111111111111:1111111111111111:1111111111111111:1111111111111111

Total number of addresses: 79228162514264337593543950336 (2^96 or 7.9e+28)

First address assignable (excluding &quot;subnet-router anycast&quot; of RFC 2526):
  (Compressed)  2804:f123::1
    (Exploded)  2804:f123:0000:0000:0000:0000:0000:0001
      (Binary)  0010100000000100:1111000100100011:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000001
Total number of addresses (Excluding &quot;reserved&quot; addresses): 79228162514264337593543950335 (7.9e+28)

This prefix can contain one of the following:
   * 4294967296 (2^32 or 4.3e+09) subnets /64
   * 16777216 (2^24 or 1.7e+07) subnets /56
   * 65536 (2^16 or 6.6e+04) subnets /48</pre>
<p>Para ilustrar &#8220;nossa rede&#8221; conto com os seguintes servidore:</p>
<p>45.80.48.0/22  IPv6 &#8211; 2804:f123::/32</p>
<p><strong>ROUTER GW</strong> -> 45.80.48.1 / 2804:f123:bebe:cafe::1 (cpd)<br />
<strong>SERV DNS MASTER</strong> -> 45.80.48.2 / 2804:f123:bebe:cafe::2 (ns1)<br />
<strong>SERV DNS SLAVE </strong>-> 45.80.48.3 / 2804:f123:bebe:cafe::3 (ns2)<br />
<strong>SERV WEB + FTP</strong> -> 45.80.48.4 / 2804:f123:bebe:cafe::4 (www,ftp)<br />
<strong>SERV ZABBIX + phpIPam</strong> -> 45.80.48.5 / 2804:f123:bebe:cafe::5 (zabbix,phpipam)<br />
<strong>SERV E-MAILS</strong> -> 45.80.48.6 / 2804:f123:bebe:cafe::6 (mail,imap,pop,smtp,mx,dkim)</p>
<p>Dentro da rede ainda conto com alguns blocos de IPs inválidos <strong>192.168.0.0/16,  172.16.0.0/12, 100.64.0.0/10 e 10.0.0.0/8 </strong> utilizando NAT que por ventura também preciso autoriza-los a fazer consultas recursivas no servidores.</p>
<p>Tenha sua interface de rede configurada corretamente.</p>
<pre class="remontti-code"># vim /etc/network/interfaces</pre>
<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 enp0s3
iface enp0s3 inet static
        address 45.80.48.2/28
        gateway 45.80.48.1
        dns-nameservers 127.0.0.1
        dns-search localhost

iface enp0s3 inet6 static
        pre-up modprobe ipv6
        address 2804:f123:bebe:cafe::2
        netmask 64
        gateway 2804:f123:bebe:cafe::1</pre>
<h3>MASTER (NS1)</h3>
<pre class="remontti-code"> # su -
# apt install bind9 dnsutils</pre>
<p>Pronto! O servidor recursivo já está funcionando, porém ele está aberto, e isso não é nada legal!<br />
Você não vai querer &#8220;qualquer um&#8221; utilizando seu servidor para resolver nomes. Resolveremos isso mais a frente no arquivo named.conf.options.</p>
<p>Alteramos o DNS do servidor fazendo com que ele consulte em si próprio. 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 </pre>
<p>Para descobrir se seu servidor esta resolvendo nomes use o comando dig.</p>
<pre class="remontti-code"># dig google.com @localhost</pre>
<p>Retornará algo como:</p>
<pre class="remontti-code">[...]

;; ANSWER SECTION:
google.com.             300     IN      A       172.217.162.110

[...]</pre>
<p>Os arquivos de configuração do bind ficam no diretório <strong>/etc/bind/</strong> e agora no Debian 10 Buster também separando os root servers em <strong>/usr/share/dns/</strong></p>
<pre class="remontti-code"># cd /etc/bind</pre>
<p>Iremos alterar o <strong>named.conf.options</strong>, o próprio nome já se auto descreve o que vamos encontrar nele.<br />
Sempre gosto de preservar o arquivo original, então fizemos um backup antes de modifica-lo.</p>
<pre class="remontti-code"># cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bkp
# echo &gt; named.conf.options</pre>
<p>Aqui vai uma dica para que usa Windows + Putty, tome cuidado ao colar, principalmente quem usa Windows 10 &#8220;ele copia caracteres imaginários que você não vê!&#8221;.<br />
Recomento usar o <a href="https://www.bitvise.com/ssh-client-download" rel="noopener noreferrer" target="_blank">Bitvise SSH Client</a> que é muito superior</p>
<p>Explicação comentada no arquivo.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<pre class="remontti-code">// ACL &quot;autorizados&quot; vão ficar 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 IPs privados
acl autorizados {
        127.0.0.1;
        ::1;
        45.80.48.0/22;
        2804:f123::/32;
        192.168.0.0/16;
        172.16.0.0/12;
        100.64.0.0/10;
        10.0.0.0/8;
};

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-enable yes;
    dnssec-validation auto;

    // Conforme RFC1035
    // https://www.ietf.org/rfc/rfc1035.txt
    auth-nxdomain no;

    // Respondendo para IPv4 e IPv6
    // Porta 53 estará aberta para ambos v4 e v6
    listen-on { any; };
    listen-on-v6 { any; };

    // Limitação da taxa de resposta no sistema de nomes de domínio (https://kb.isc.org/docs/aa-00994)
    // Se você esta montando um servido apenas para autoritativo descomente as linhas a baixo.
    //rate-limit {
    //    responses-per-second 15;
    //    window 5;
    //};

    // Melhora o desempenho do servidor, reduzindo os volumes de dados de saída.
    // O padrão BIND é (no) não.
    minimal-responses yes;

    // 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 DNS comuns.
    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 não compile o arquivo, assim no outro servidor o arquivo
    // da zona terá um texto &quot;puro&quot;
    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&quot;;
};</pre>
<p>Legal agora o servidor Recursivo já está funcionando e limitando os IPs que poderão realizar consultas ao mesmo.<br />
Caso você não queria seu servidor sendo recursivo altere na ACL autorizados deixando apenas 127.0.0.1 e ::1.</p>
<p>Se seu servidor não tiver IPv6? (Que triste rsrsrs) Recomendo que desative o ipv6 no bind.</p>
<pre class="remontti-code"># vim /etc/default/bind9</pre>
<p>Adicione um -4 em OPTIONS.</p>
<pre class="remontti-code">OPTIONS=&quot;-u bind&quot;
#para
OPTIONS=&quot;-4 -u bind&quot;</pre>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<p>Altere listen-on-v6 para none.</p>
<pre class="remontti-code">listen-on-v6 { any; };
#para:
listen-on-v6 { none; };</pre>
<p>Toda alteração feita no bind para ter efeito é necessário restartar o serviço.</p>
<pre class="remontti-code"># systemctl restart bind9</pre>
<p>Se desejar remover os comentários do named.conf.options execute:</p>
<pre class="remontti-code"># cat /etc/bind/named.conf.options |grep -v &quot;//&quot; &gt; /tmp/named.conf.options ; mv /tmp/named.conf.options /etc/bind/</pre>
<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>Se nada retornar é porque não tem nenhum erro.<br />
Vou deixar proposital mente faltando um &#8220;;&#8221; depois do 45.80.48.0/22. Veja o que retornou um altera dizendo que falta ponto virgula antes do  IPv6, ou seja onde esta o IPv4/22.</p>
<pre class="remontti-code">/etc/bind/named.conf.options:5: missing &#039;;&#039; before &#039;2804:f123::&#039;</pre>
<p>Verifique também o status do bind para ver se o mesmo era rodando.</p>
<pre class="remontti-code"># systemctl restart bind9
# systemctl status bind9</pre>
<p>Verifique se está: &#8220;active (running)&#8221;</p>
<pre class="remontti-code">● bind9.service - BIND Domain Name Server
   Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-07-19 14:17:09 -03; 4s ago
     Docs: man:named(8)
  Process: 706 ExecStart=/usr/sbin/named $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 707 (named)
    Tasks: 4 (limit: 2359)
   Memory: 11.9M
   CGroup: /system.slice/bind9.service
           └─707 /usr/sbin/named -u bind</pre>
<p>Antes configurar o Autoritativo e Reverso precisamos pensar na segurança do Recursivo.<br />
Para isso utilizaremos o Fail2Ban e fazer algumas alterações para deixa-lo bem &#8220;nervoso&#8221;!</p>
<h3>Fail2Ban + nftables</h3>
<p>Fail2Ban é uma estrutura de software de prevenção de intrusões que protege os servidores de computadores contra ataques de força bruta, que opera monitorando arquivos de logs. Sendo o mais comum usado para bloquear endereços IPs selecionados que podem pertencer a hosts que estão tentando violar a segurança.</p>
<pre class="remontti-code"># apt install nftables fail2ban</pre>
<p>Como o iptables está sendo substituído por nftables começando com o Debian Buster, vamos configurar o Fail2Ban para usar o nftables como padrão.<br />
Mas vou ir além em vez de usar o filtro multiport vou setar allports e modifica-lo para que quando uma tentativa de violação acontecer o Fail2Ban crie uma regra de firewall que dropa definitivamente o IP e não apenas fechando a porta do serviço para &#8220;invasor&#8221;.</p>
<pre class="remontti-code"># vim /etc/fail2ban/jail.conf</pre>
<p>Procure por &#8220;banaction = iptables-multiport&#8221; e &#8220;banaction_allports = iptables-allports&#8221; e altere seu valor para &#8220;nftables-allports&#8221;:</p>
<pre class="remontti-code">#banaction = iptables-multiport
#banaction_allports = iptables-allports
banaction = nftables-allports
banaction_allports = nftables-allports</pre>
<p>Altere o modo de bloqueio em nftables-allports.conf para fazer que ele de um &#8220;drop all&#8221;.</p>
<pre class="remontti-code"># vim /etc/fail2ban/action.d/nftables-allports.conf</pre>
<p>Procure por nftables_mode = meta l4proto <protocol> e altere deixando seu valor vazio:</p>
<pre class="remontti-code">#nftables_mode = meta l4proto &lt;protocol&gt;
nftables_mode =</pre>
<p>Em nftables-common.conf alteraremos o padrão de reject para drop</p>
<pre class="remontti-code"># vim /etc/fail2ban/action.d/nftables-common.conf</pre>
<p>Procure por &#8220;blocktype = reject&#8221; e altere seu valor para &#8220;drop&#8221;.</p>
<pre class="remontti-code">#blocktype = reject
blocktype = drop</pre>
<p>Melhorias feitas, precisamos ativar o filtro para ler os logs do bind, porém ao ativar o filtro named-refused me deparei com seu não funcionamento, e quebrando a cabeça descobri que os logs do bind estão diferente e a expressão regular do filtro está errada. Os desenvolvedores do fail2ban já <a href="https://github.com/fail2ban/fail2ban/commit/5a65d9fa1e7713643059b8969981b5df431c4e8c" rel="noopener noreferrer" target="_blank">fizeram a correção</a>, mas acredito que irá levar um tempo para o pessoal do Debian fazer um novo empacotamento.<br />
A correção pode ser feita editando o arquivo /etc/fail2ban/filter.d/named-refused.conf</p>
<pre class="remontti-code">- prefregex = ^%(__line_prefix)s( error:)?\s*client &lt;HOST&gt;#\S+( \([\S.]+\))?: &lt;F-CONTENT&gt;.+&lt;/F-CONTENT&gt;$
+ prefregex = ^%(__line_prefix)s( error:)?\s*client( @[0-9a-z]+)? &lt;HOST&gt;#\S+( \([\S.]+\))?: &lt;F-CONTENT&gt;.+&lt;/F-CONTENT&gt;$</pre>
<p>Porém como eu vou ser mais &#8220;bruto&#8221; no filtro. Vou criar nosso próprio filtro bind9, vamos lá!</p>
<pre class="remontti-code"># vim /etc/fail2ban/filter.d/bind9.conf</pre>
<p>Adicone no arquivo:</p>
<pre class="remontti-code"># Fail2Ban filter file for named (bind9.11).
#

[Definition]

# Daemon name
_daemon=named

# 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?:)

#       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+)?

prefregex = ^%(__line_prefix)s( error:)?\s*client( @[0-9a-z]+)? &lt;HOST&gt;#\S+( \([\S.]+\))?: &lt;F-CONTENT&gt;.+&lt;/F-CONTENT&gt;$

failregex = ^(view (internal|external): )?query(?: \(cache\))? &#039;.*&#039; denied\s*$
            ^zone transfer &#039;\S+/AXFR/\w+&#039; denied\s*$
            ^bad zone transfer request: &#039;\S+/IN&#039;: non-authoritative zone \(NOTAUTH\)\s*$

ignoreregex =

# DEV Notes:
# Author: Rudimar Remontti</pre>
<p>Ativamos o filtro que criamos, e definir um tempo de banimento por 24h você pode ajustar para mais se achar necessário. E &#8220;maxretry&#8221; que é a quantidade de tentativas para 1.</p>
<pre class="remontti-code"># vim /etc/fail2ban/jail.d/bind9.conf</pre>
<p>Adicione no arquivo:</p>
<pre class="remontti-code">[bind9]
enabled  = true
port     = domain,953
protocol = tcp
logpath  = /var/log/named/security.log
bantime  = 24h
maxretry = 1</pre>
<p>Vale lembrar que o filtro de SSH já vem ativo por padrão em &#8220;/etc/fail2ban/jail.d/defaults-debian.conf&#8221;.</p>
<p>Precisamos fazer o bind gerar os logs com tentativas de consultas negadas (denied), incluído logging {&#8230;} no arquivo named.conf.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf</pre>
<pre class="remontti-code">// 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/named.log&quot; versions 2 size 50k;
        severity info;
        print-time yes;
        print-severity yes;
        print-category yes;
    };

    channel errors_syslog {
        syslog daemon;
        severity warning;
    };

    category security { security_file; };
    category dnssec { errors_syslog; };
    category default { file_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 de permissão para que possa gravar nesta pasta.</p>
<pre class="remontti-code"># mkdir /var/log/named/
# chown bind. /var/log/named/</pre>
<p>É importante ativar o nftables na inicialização e restartar os serviços para que nossas configurações sejam interpretadas.</p>
<pre class="remontti-code"># systemctl enable nftables
# systemctl restart bind9
# systemctl restart nftables
# systemctl restart fail2ban</pre>
<p>Para visualizar seu firewall use o comando:</p>
<pre class="remontti-code"># nft list ruleset</pre>
<p>Note que ja temos alguns IPs sendo dropado por tentativas de consulta no DNS e SSH.</p>
<pre class="remontti-code">table inet filter {
        set f2b-sshd {
                type ipv4_addr
                elements = { 92.63.194.90, 142.44.130.186,
                             191.54.227.13 }
        }

        set f2b-bind9 {
                type ipv4_addr
                elements = { 71.6.199.23, 185.94.111.1 }
        }

        chain input {
                type filter hook input priority 0; policy accept;
                ip saddr @f2b-bind9 drop
                ip saddr @f2b-sshd drop
        }

        chain forward {
                type filter hook forward priority 0; policy accept;
        }

        chain output {
                type filter hook output priority 0; policy accept;
        }
}</pre>
<p>Alguns comandos legais do fail2ban</p>
<pre class="remontti-code"># fail2ban-client status</pre>
<p>Veja quais filtros estão ativos</p>
<pre class="remontti-code">Status
|- Number of jail:      2
`- Jail list:   bind9, sshd</pre>
<pre class="remontti-code">fail2ban-client status NOME_FILTRO</pre>
<p>Ex:</p>
<pre class="remontti-code"># fail2ban-client status bind9
Status for the jail: bind9
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     2
|  `- File list:        /var/log/named/security.log
`- Actions
   |- Currently banned: 2
   |- Total banned:     2
   `- Banned IP list:   71.6.199.23 185.94.111.1

# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 3
   |- Total banned:     3
   `- Banned IP list:   142.44.130.186 191.54.227.13 92.63.194.90</pre>
<p>Para remover um IP que foi bloqueado basta:</p>
<pre class="remontti-code"># fail2ban-client set bind9 unbanip IPADDRESS</pre>
<p>Pronto agora já temos um servidor DNS com um nível de segurança bem elevado!</p>
<h3>Autoritativo (ns1)</h3>
<p>Agora é aquela hora que precisamos ter planejado o que iríamos fazer com nosso IPs recebidos.</p>
<pre class="remontti-code">No meu exemplo vai ficar assim:
- 45.80.48.0/27   - Servidores
- 45.80.48.32/27  - Roteamento
- 45.80.48.64/26  - Clientes com IP Fixo
- 45.80.48.128/25 - CGNAT
- 45.80.49.0/26   - NOC (Gerência)
- 45.80.49.64/26  - Clientes Delegação
- 45.80.49.128/25 - Clientes dinâmico
- 45.80.50.0/24   - Clientes dinâmico
- 45.80.51.0/24   - Clientes dinâmico

# Quebrei meu ex de forma q não fique simples para que possamos dar nomes sugestivos aos IPs, adapte a sua realidade</pre>
<p>Para ficar organizado vou criar a pasta master-aut onde ficará os arquivos de hosts dos domínios autoritativos.</p>
<pre class="remontti-code"># mkdir /var/cache/bind/master-aut</pre>
<p>Crie o arquivo remontti.net.br.hosts na pasta master-rev. Ajuste remontti.net.br para seu domínio.</p>
<pre class="remontti-code"># vim /var/cache/bind/master-aut/remontti.net.br.hosts</pre>
<pre class="remontti-code">$ORIGIN .
$TTL 86400      ; 1 day
remontti.net.br        IN SOA  ns1.remontti.net.br. hostmaster.remontti.net.br. (
                            2020062300 ; serial
                            10800      ; refresh (3 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
                        MX      10 mail.remontti.net.br.
                        TXT     &quot;v=spf1 a mx -all&quot;
                        SPF     &quot;v=spf1 a mx -all&quot;
$ORIGIN remontti.net.br.
$TTL 10800      ; 3 hours

45-80-48-0                      A       45.80.48.0
45-80-48-1                      A       45.80.48.1
                                AAAA    2804:f123:bebe:cafe::1

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

zabbix                          A       45.80.48.5
                                AAAA    2804:f123:bebe:cafe::5
phpipam                         A       45.80.48.5
                                AAAA    2804:f123:bebe:cafe::5

mail                            A       45.80.48.6
                                AAAA    2804:f123:bebe:cafe::6
imap                            A       45.80.48.6
                                AAAA    2804:f123:bebe:cafe::6
pop                             A       45.80.48.6
                                AAAA    2804:f123:bebe:cafe::6
smtp                            A       45.80.48.6
                                AAAA    2804:f123:bebe:cafe::6

$ORIGIN remontti.net.br.
$GENERATE 7-31   ns-$         A   45.80.48.$

$ORIGIN remontti.net.br.
$GENERATE 32-255 45-80-48-$   A   45.80.48.$

$ORIGIN remontti.net.br.
$GENERATE 0-255 45-80-49-$    A   45.80.49.$
 
$ORIGIN remontti.net.br.
$GENERATE 0-255 45-80-50-$    A   45.80.50.$
 
$ORIGIN remontti.net.br.
$GENERATE 0-255 45-80-51-$    A   45.80.51.$
</pre>
<p>Chamaremos a zone remontti.net.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">// Zonas Master
zone &quot;remontti.net.br&quot; {
        type master;
        file &quot;/var/cache/bind/master-aut/remontti.net.br.hosts&quot;;
};</pre>
<p>De permissões ao diretório/arquivo criados</p>
<pre class="remontti-code"># chown  bind. /var/cache/bind/master-aut -R</pre>
<p>Restart o serviço.</p>
<pre class="remontti-code"># systemctl restart bind9</pre>
<p>Testamos agora para ver se está resolvendo nosso domínio.</p>
<pre class="remontti-code"># dig ANY remontti.net.br @localhost</pre>
<pre class="remontti-code">; &lt;&lt;&gt;&gt; DiG 9.11.5-P4-5.1-Debian &lt;&lt;&gt;&gt; ANY remontti.net.br @localhost
;; global options: +cmd
;; Got answer:
;; -&gt;HEADER&lt;- opcode: QUERY, status: NOERROR, id: 52255
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 3148faada350a11c7aeaf3835d32238e495995289566b021 (good)
;; QUESTION SECTION:
;remontti.net.br.               IN      ANY

;; ANSWER SECTION:
remontti.net.br.        86400   IN      SOA     ns1.remontti.net.br. hostmaster.remontti.net.br. 2020062300 10800 3600 2419200 300
remontti.net.br.        86400   IN      NS      ns2.remontti.net.br.
remontti.net.br.        86400   IN      NS      ns1.remontti.net.br.
remontti.net.br.        86400   IN      A       45.80.48.4
remontti.net.br.        86400   IN      AAAA    2804:f123:bebe:cafe::4
remontti.net.br.        86400   IN      MX      10 mail.remontti.net.br.
remontti.net.br.        86400   IN      TXT     &quot;v=spf1 a mx -all&quot;

;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: sex jul 19 17:09:50 -03 2019
;; MSG SIZE  rcvd: 263</pre>
<p>Testes:</p>
<pre class="remontti-code"># host remontti.net.br
remontti.net.br has address 45.80.48.4
remontti.net.br has IPv6 address 2804:f123:bebe:cafe::4
remontti.net.br mail is handled by 20 mail.remontti.net.br.

# 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

# host mail.remontti.net.br
mail.remontti.net.br has address 45.80.48.6
mail.remontti.net.br has IPv6 address 2804:f123:bebe:cafe::6

# host zabbix.remontti.net.br
zabbix.remontti.net.br has address 45.80.48.5
zabbix.remontti.net.br has IPv6 address 2804:f123:bebe:cafe::5

</pre>
<p>Seu autoritativo já está funcionado, você já é possível registrar seu domínio (claro ainda falta o slave).</p>
<p>Neste momento você pode verificar no registro.br se seu servidor já tem autoridade sobre o domínio que configurou.<br />
Mas antes vamos ajustar o fail2ban para ignorar os ips do Registro.br pois muitas pessoas acabam configurando errado seu DNS e na hora de verificar acabam bloqueando o registro.br (Isso acontece porque quando você for validar se o seu DNS não estiver certo, ele vai achar que o registro.br esta tentando resolver o "dominio qualquer" que você não é autoritativo), para isso faça:</p>
<pre class="remontti-code"># vim /etc/fail2ban/jail.conf</pre>
<p>Localize "<strong>ignoreip =</strong>" e adicione os blocos do registro.br (200.160.0.0/20 200.219.148.0/24 2001:12ff::/32 2001:12f8:6::/47) se desajar pode incluir seu bloco de ips dos servidores, principalmente o ip do servidor Slave para evitar que ele também seja bloqueado (no meu ex. os 45.80.48.3 e 2804:f123:bebe:cafe::3)</p>
<pre class="remontti-code"># &quot;ignoreip&quot; can be a list of IP addresses, CIDR masks or DNS hosts. Fail2ban
# will not ban a host which matches an address in this list. Several addresses
# can be defined using space (and/or comma) separator.
ignoreip = 127.0.0.1/8 ::1 200.160.0.0/20 200.219.148.0/24 2001:12ff::/32 2001:12f8:6::/47 45.80.48.3 2804:f123:bebe:cafe::3</pre>
<p>Reinicie o fail2ban</p>
<pre class="remontti-code"># systemctl restart fail2ban</pre>
<p>Acessando: <a href="https://registro.br/tecnologia/ferramentas/verificacao-de-dns/" rel="noopener noreferrer" target="_blank">Ferramentas Registro BR</a></p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/dns-bind9-debian10-buster-registrobr.png" data-rel="lightbox-gallery-5xqZLqZS" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/dns-bind9-debian10-buster-registrobr.png" alt="" width="933" height="834" class="alignnone size-full wp-image-3128" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/dns-bind9-debian10-buster-registrobr.png 933w, https://blog.remontti.com.br/wp-content/uploads/2019/07/dns-bind9-debian10-buster-registrobr-300x268.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/dns-bind9-debian10-buster-registrobr-768x687.png 768w" sizes="auto, (max-width: 933px) 100vw, 933px" /></a></p>
<p>Se o <strong>STATUS</strong> for "<strong>Autoridade sobre o domínio</strong>" parabéns suas configurações estão respondendo corretamente.</p>
<h3>Reverso (ns1)</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>
<pre class="remontti-code"># mkdir /var/cache/bind/master-rev</pre>
<p>O bloco 45.80.48.0/22 será necessário quebrar em 4 blocos /24 tendo uma configuração para cada /24 Como já planejado no autoritativo vamos ter que dar nomes a todos os IPs. Vale lembrar que todos esses nomes de hosts é permitido apenas um nome por IP, e cada nome desses deve ser configurado no autoritativo.</p>
<p>Primeiro arquivo/24 45.80.48.rev</p>
<pre class="remontti-code"># vim /var/cache/bind/master-rev/45.80.48.rev</pre>
<p>Preste atenção em <strong>48.80.45.in-addr.arpa.</strong> essa linha ela deve ser alterada com o inverso do seu IP.<br />
Outra coisa importante é o serial (2020062300) ele esta 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>
<pre class="remontti-code">$ORIGIN .
$TTL 86400      ; 1 day
48.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                    2020062300 ; serial
                    10800      ; refresh (3 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.
0         PTR     45.80.48.0.remontti.net.br.
1         PTR     cpd.remontti.net.br.
2         PTR     ns1.remontti.net.br.
3         PTR     ns2.remontti.net.br.
4         PTR     www.remontti.net.br.
5         PTR     zabbix.remontti.net.br.
6         PTR     mail.remontti.net.br.

; Servidores não utilizados
$ORIGIN 48.80.45.in-addr.arpa.
$GENERATE 7-31   $ PTR ns-$.remontti.net.br.

$ORIGIN 48.80.45.in-addr.arpa.
$GENERATE 32-255 $ PTR 45-80-48-$.remontti.net.br.</pre>
<pre class="remontti-code"># vim /var/cache/bind/master-rev/45.80.49.rev</pre>
<pre class="remontti-code">$ORIGIN .
$TTL 86400      ; 1 day
49.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                    2020062300 ; serial
                    10800      ; refresh (3 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">$ORIGIN .
$TTL 86400      ; 1 day
50.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                    2020062300 ; serial
                    10800      ; refresh (3 hours)
                    3600       ; retry (1 hour)
                    2419200    ; expire (4 weeks)
                    300        ; minimum (5 minutes)
                    )
                NS      ns1.remontti.net.br.
                NS      ns2.remontti.net.br.

; Clientes dinâmicos
$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">$ORIGIN .
$TTL 86400      ; 1 day
51.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                    2020062300 ; serial
                    10800      ; refresh (3 hours)
                    3600       ; retry (1 hour)
                    2419200    ; expire (4 weeks)
                    300        ; minimum (5 minutes)
                    )
                NS      ns1.remontti.net.br.
                NS      ns2.remontti.net.br.

; Clientes dinâmicos
$ORIGIN 51.80.45.in-addr.arpa.
$GENERATE 0-255 $ PTR 45-80-51-$.remontti.net.br.</pre>
<p>Não  podemos esquecer nosso reverso do IPv6! Antes que alguém pergunte (novamente) posso configurar o reverso de todos os IPv6? Bom você precisa saber que precisa resolver 79.228.162.514.264.337.593.543.950.336 (2^96) endereços IPv6, e isso é algo quase impossível! Informaremos apenas os nomes a ipv6 fixos.</p>
<pre class="remontti-code"># vim /var/cache/bind/master-rev/2000.f123.rev</pre>
<pre class="remontti-code">$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. (
                                2020062300 ; serial
                                3600       ; refresh (1 hour)
                                900        ; retry (15 minutes)
                                604800     ; expire (1 week)
                                3600       ; minimum (1 hour)
                                )
                        NS      ns1.remontti.net.br.
                        NS      ns2.remontti.net.br.


1.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. IN PTR cpd.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. IN 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. IN PTR ns2.remontti.net.br.
4.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. IN PTR www.remontti.net.br.
5.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. IN PTR zabbix.remontti.net.br.
6.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. IN PTR mail.remontti.net.br.</pre>
<p>Este site <a href="http://rdns6.com/hostRecord">http://rdns6.com/hostRecord</a> pode ser bem útil para gerar seus PTRs.<br />
Para finalizar acertando as permissões.</p>
<pre class="remontti-code"># chown  bind. /var/cache/bind/master-rev  -R</pre>
<p>Precisamos informar nossas zonas reversas no named.conf.local, como estamos configurando nosso servidor master essas zonas serão do tipo (type) master e para informar o arquivo onde está a configuração da zone usamos o parâmetro file /caminho-completo/arquivo</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<p>Adicione ao final do arquivo:</p>
<pre class="remontti-code">
// Reverso IPv4

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;;
};

// Reverso IPv6

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>Para ficar fácil acesso criamos uma atalhos das nossas pastas master-* dentro de /etc/bind</p>
<pre class="remontti-code"># ln -s /var/cache/bind/master-aut /etc/bind/master-aut
# ln -s /var/cache/bind/master-rev /etc/bind/master-rev</pre>
<p>Restart o serviço e veja se esta rodando sem erros.</p>
<pre class="remontti-code"># systemctl restart bind9
# systemctl status bind9</pre>
<p>Vamos ver se ele já está resolvendo nosso IP então?</p>
<pre class="remontti-code"># dig -x 45.80.48.2 @localhost
; &lt;&lt;&gt;&gt; DiG 9.11.5-P4-5.1-Debian &lt;&lt;&gt;&gt; -x 45.80.48.2 @localhost
;; global options: +cmd
;; Got answer:
;; -&gt;HEADER&lt;- opcode: QUERY, status: NOERROR, id: 59398
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: cc1f5b76ca8135b2f442ab295d35a916dcb3bf8066886af9 (good)
;; QUESTION SECTION:
;2.48.80.45.in-addr.arpa.       IN      PTR

;; ANSWER SECTION:
2.48.80.45.in-addr.arpa. 86400  IN      PTR     ns1.remontti.net.br.

;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: seg jul 22 09:16:22 -03 2019
;; MSG SIZE  rcvd: 113

# dig -x 2804:f123:bebe:cafe::2 @localhost
&lt;&lt;&gt;&gt; DiG 9.11.5-P4-5.1-Debian &lt;&lt;&gt;&gt; -x 2804:f123:bebe:cafe::2 @localhost
;; global options: +cmd
;; Got answer:
;; -&gt;HEADER&lt;- opcode: QUERY, status: NOERROR, id: 5580
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: ec8e4c0bfbec98025b39d4965d35a90be152e9b837af0575 (good)
;; QUESTION SECTION:
;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. IN PTR

;; ANSWER SECTION:
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. 3600 IN PTR ns1.remontti.net.br.

;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: seg jul 22 09:16:11 -03 2019
;; MSG SIZE  rcvd: 162

# host 45.80.48.2
2.48.80.45.in-addr.arpa domain name pointer ns1.remontti.net.br.

# host 2804:f123:bebe:cafe::2
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 domain name pointer ns1.remontti.net.br.

# host 2804:f123:bebe:cafe::1
1.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 domain name pointer cpd.remontti.net.br.

# host 45.80.48.3
3.48.80.45.in-addr.arpa domain name pointer ns2.remontti.net.br.

# host 45.80.48.10
10.48.80.45.in-addr.arpa domain name pointer serv-10.remontti.net.br.

# host 45.80.48.100
100.48.80.45.in-addr.arpa domain name pointer fixo-100.remontti.net.br.

# host 45.80.48.200
200.48.80.45.in-addr.arpa domain name pointer cgnat-200.remontti.net.br.

# host 45.80.49.0
0.49.80.45.in-addr.arpa domain name pointer noc-0.remontti.net.br.

# host 45.80.49.2
2.49.80.45.in-addr.arpa domain name pointer noc-2.remontti.net.br.

# host 45.80.49.20
20.49.80.45.in-addr.arpa domain name pointer noc-20.remontti.net.br.

# host 45.80.49.64
64.49.80.45.in-addr.arpa domain name pointer dd-64.remontti.net.br.

# host 45.80.49.128
128.49.80.45.in-addr.arpa domain name pointer 45-80-49-128.remontti.net.br.

# host 45.80.49.129
129.49.80.45.in-addr.arpa domain name pointer 45-80-49-129.remontti.net.br.

# host 45.80.50.50
50.50.80.45.in-addr.arpa domain name pointer 45-80-50-50.remontti.net.br.

# host 45.80.51.50
50.51.80.45.in-addr.arpa domain name pointer 45-80-51-50.remontti.net.br.</pre>
<p>Como pode ver todos os endereços estão resolvendo seus nomes.</p>
<p>Reverso pronto!</p>
<h3>Atualizando ROOT SERVERS</h3>
<p>Para finalizar o master vamos fazer uma atualização no root server que na versão do debian 10 buster passou a ser /usr/share/dns/root.hints. A vesão instalada é de 13/03/2019 <em>"last update: March 13, 2019"</em></p>
<p>Para obter uma versão mais recente, iremos mover nosso arquivo root.hints e baixar um novo.</p>
<pre class="remontti-code">mv /usr/share/dns/root.hints /usr/share/dns/root.hints.`date +%Y%m%d`
wget https://www.internic.net/domain/named.root -O /usr/share/dns/root.hints --no-check-certificate</pre>
<p>Pode editar o arquivo /usr/share/dns/root.hints e verificar qual é a ultima atualização, (hoje 19/07/2019) ele esta: "last update: July 03, 2019". Reinicie o serviço para ter efeito.</p>
<pre class="remontti-code">systemctl restart bind9
systemctl status bind9</pre>
<p>Parabéns! Seu servidor master está pronto!</p>
<h3>SLAVE (ns2)</h3>
<p>Praticamente o processo se repete, com algumas alterações sendo necessário apenas configurar:<br />
  named.conf (Gerar log)<br />
  named.conf.local (Incluir as zonas)<br />
  named.conf.options (Setar nossas opções)</p>
<pre class="remontti-code"># apt install bind9 dnsutils</pre>
<p>Alterar o DNS do servidor:</p>
<pre class="remontti-code"># # echo &quot;nameserver 127.0.0.1&quot; &gt; /etc/resolv.conf </pre>
<pre class="remontti-code"># cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bkp</pre>
<p>No named.conf.options unica coisa em relação ao master é que vai alterar allow-transfer para none e remover o also-notify.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<pre class="remontti-code">acl autorizados {
        127.0.0.1;
        ::1;
        45.80.48.0/23;
        2804:f123::/32;
        192.168.0.0/16;
        172.16.0.0/12;
        100.64.0.0/10;
        10.0.0.0/8;
};

options {
    directory &quot;/var/cache/bind&quot;;

    dnssec-enable yes;
    dnssec-validation auto;

    auth-nxdomain no;

    listen-on { any; };
    listen-on-v6 { any; };

    minimal-responses yes;

    allow-recursion {
        autorizados;
    };

    allow-query-cache {
        autorizados;
    };

    allow-query { any; };

    allow-transfer { none; };

    masterfile-format text;

    version &quot;RR DNS Server&quot;;
};</pre>
<p>Para organizar criamos duas pastas slave-rev e slave-aut é importante dar <b>permissões para o usuário bind, pois ele precisa importar as configurações do master e vai escrever nelas.</p>
<pre class="remontti-code"># mkdir /var/cache/bind/slave-aut
# mkdir /var/cache/bind/slave-rev
# chown  bind. -R /var/cache/bind/slave-*</pre>
<p>Não é mais necessário criar os arquivos, esses serão transferidos do servidor master. Basta informarmos em nossas zonas do arquivo named.conf.local, que serão do tipo (slave) e apontaremos o IP do <strong>master</strong> para que nosso servidor slave faça a transferência do master.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<pre class="remontti-code">// Reverso IPv4

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; };
};

// Reverso IPv6

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; };
};

// Zonas Slave

zone &quot;remontti.net.br&quot; IN {
        type slave;
        file &quot;/var/cache/bind/slave-aut/remontti.net.br.hosts&quot;;
        masters { 45.80.48.2; };
        allow-notify { 45.80.48.2; };
};</pre>
<p>Restart o serviço verifique se não teve nenhum erro e verifique dentro dos diretórios slave-aut/slave-rev se os arquivos foram criados.</p>
<pre class="remontti-code"># systemctl  restart bind9
# systemctl  status bind9
# ls -lh /var/cache/bind/slave-*</pre>
<p>Para ficar fácil acesso criamos uma atalhos das nossas pastas slave-* dentro de /etc/bind</p>
<pre class="remontti-code"># ln -s /var/cache/bind/slave-aut /etc/bind/slave-aut
# ln -s /var/cache/bind/slave-rev /etc/bind/slave-rev</pre>
<p>Se os mesmo foram criados seu DNS já está praticamente pronto!</p>
<p>Volte o tutorial e refaça a parte:<br />
  -<strong> Fail2Ban + nftables</strong><br />
  -<strong> Atualizando ROOT SERVERS</strong><br />
Isso é primordial para segurança do servidor!</p>
<p>Gostou? </p>
<p>Se você tiver interesse no Curso de DNS <a href="https://blog.remontti.com.br/curso-bind9" rel="noopener noreferrer" target="_blank">clique aqui</a>, quem sabe você de sorte de ter uma turma aberta. </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>Ahhh não terminei, ainda falta a configuração do nosso /28.</p>
<h3>Reverso de blocos menores que /24 - Ex.: CIDR/28 </h3>
<p>Antes de mais nada você deve ler ao menos como foi configurado o /22, pois será necessários que você compreenda e faça também o procedimentos:<br />
  -<strong> Fail2Ban + nftables</strong><br />
  -<strong> Atualizando ROOT SERVERS</strong></p>
<p>Vamos supor que você recebeu um /28 e queira ter seu reverso respondendo sobre esses bloco.<br />
A primeira coisa que você precisa saber que isso só será possivel se o dono do ASN fizer a configurações em seu servidor DNS (rfc2317), não basta ele simplismente ir la no registro.br e delegar esse /28 para você, e é claro que ele também precisa fazer isso!<br />
Se ficar em dúvidas recomendo ver que assista: <a href="https://www.youtube.com/watch?v=VIa1dHtmQ4U" rel="noopener noreferrer" target="_blank">DNS e DNS Reverso</a> (~20min fala sobre isso)</p>
<p>Então se você é o responsável pelo ASN você deve fazer o seguinte na configuração no seu arquivo reverso. No exemplo anterior deixamos já o 45.80.49.64/26 para esses casos, e no exemplo vamos delegar um /28 para o "Provedor do José".</p>
<pre class="remontti-code">$ ipcalc  45.80.49.64/28
Address:   45.80.49.64          00101101.01010000.00110011.0100 0000
Netmask:   255.255.255.240 = 28 11111111.11111111.11111111.1111 0000
Wildcard:  0.0.0.15             00000000.00000000.00000000.0000 1111
=&gt;
Network:   45.80.49.64/28       00101101.01010000.00110011.0100 0000
HostMin:   45.80.49.65          00101101.01010000.00110011.0100 0001
HostMax:   45.80.49.78          00101101.01010000.00110011.0100 1110
Broadcast: 45.80.49.79          00101101.01010000.00110011.0100 1111
Hosts/Net: 14                    Class A</pre>
<pre class="remontti-code">vim /var/cache/bind/master-rev/45.80.49.rev</pre>
<pre class="remontti-code">$ORIGIN .
$TTL 86400      ; 1 day
49.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                    2020062300 ; serial
                    10800      ; refresh (3 hours)
                    3600       ; retry (1 hour)
                    2419200    ; expire (4 weeks)
                    300        ; minimum (5 minutes)
                    )
                NS      ns1.remontti.net.br.
                NS      ns2.remontti.net.br.

; NOC (Gerência)
$ORIGIN 49.80.45.in-addr.arpa.
$GENERATE 0-63 $ PTR noc-$.remontti.net.br.

; Clientes delegação

;  &lt;&lt;64-79&gt;&gt; /28
; Aponte para os DNS do Servidor
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.

; Clientes delegação (reservado)
$ORIGIN 49.80.45.in-addr.arpa.
$GENERATE 80-127 $ PTR dd-$.remontti.net.br.

; Clientes dinâmicos
$ORIGIN 49.80.45.in-addr.arpa.
$GENERATE 128-255 $ PTR 45-80-49-$.remontti.net.br.</pre>
<p>Configuração feita pelo o dono do ASN, vamos as configurações do José que recebeu o bloco /28, e quer seus DNS respondendo por eles. Vamos supor que 45.80.49.66 e 45.80.49.67 sejam seu servidores DNS Master/Slave.</p>
<pre class="remontti-code"># mkdir /var/cache/bind/master-aut
# mkdir /var/cache/bind/master-rev</pre>
<p><strong>:: Autoritativo ::</strong></p>
<pre class="remontti-code">vim /var/cache/bind/master-aut/provedordojose.com.br.hosts</pre>
<pre class="remontti-code">$ORIGIN .
$TTL 86400      ; 1 day
provedordojose.com.br        IN SOA  ns1.provedordojose.com.br. root.provedordojose.com.br. (
                2020062300 ; serial
                10800      ; refresh (3 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.68
            MX      10 mail.provedordojose.com.br.
      TXT     &quot;v=spf1 a mx ip4:45.80.49.68?all&quot;

$ORIGIN provedordojose.com.br.
$TTL 10800      ; 3 hours

45-80-49-64     A       45.80.49.64
cpd         A       45.80.49.65
ns1         A       45.80.49.66
ns2         A       45.80.49.67
mail        A       45.80.49.68
zabbix        A       45.80.49.69
45-80-49-70     A       45.80.49.70
45-80-49-71     A       45.80.49.71
45-80-49-72     A       45.80.49.72
45-80-49-73     A       45.80.49.73
45-80-49-74     A       45.80.49.74
45-80-49-75     A       45.80.49.75
45-80-49-76     A       45.80.49.76
45-80-49-77     A       45.80.49.77
45-80-49-78     A       45.80.49.78
45-80-49-79     A       45.80.49.79</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">; 45.80.49.64/28
$TTL 1h
@               IN      SOA     ns1.provedordojose.com.br. root.provedordojose.com.br. (
                        2020062300 ; serial
                        2h         ; refresh
                        15m        ; update retry
                        2w         ; expiry
                        3h         ; nx = nxdomain ttl
                        )

        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     cpd.provedordojose.com.br.
66      IN      PTR     ns1.provedordojose.com.br.
67      IN      PTR     ns2.provedordojose.com.br.
68      IN      PTR     mail.provedordojose.com.br.
69      IN      PTR     zabbix.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>
<p><strong>:: Zonas ::</strong></p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<pre class="remontti-code">zone &quot;provedordojose.com.br&quot; {
  type master;
  file &quot;/var/cache/bind/master-aut/provedordojose.com.br.hosts&quot;;
};

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>
<pre class="remontti-code"># systemctl  restart bind9
# systemctl  status bind9</pre>
<h4>Dica extra - Ativando um proxy DNS</h4>
<p>Vamos supor que você deseja fazer as consultar DNS em um DNS como o 8.8.8.8 entre outros em vezes de ir direto aos roots como seria?</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<pre class="remontti-code">acl autorizados {
        127.0.0.1;
        ::1;
        45.80.48.0/23;
        2804:f123::/32;
        192.168.0.0/16;
        172.16.0.0/12;
        100.64.0.0/10;
        10.0.0.0/8;
};
 
options {
    directory &quot;/var/cache/bind&quot;;
 
    dnssec-enable yes;
    dnssec-validation auto;
 
    auth-nxdomain no;
 
    listen-on { any; };
    listen-on-v6 { any; };
 
    // DNS PROXY
    // Em vez de ir pedir aos roots servers irá buscar de outros DNS.
    recursion yes;
    forwarders {
        8.8.8.8;
        1.1.1.1;
        1.0.0.1;
        8.8.4.4;
    };
    forward only;

    minimal-responses yes;
 
    allow-recursion {
        autorizados;
    };
 
    allow-query-cache {
        autorizados;
    };
 
    allow-query { any; };
 
    allow-transfer { none; };
 
    masterfile-format text;
 
    version &quot;RR DNS Server&quot;;
};</pre>
<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></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/3086">Servidor DNS seguro com Bind9  (Recursivo, Autoritativo e Reverso) + Fail2ban + nftables no Debian 10 Buster [Descontinuado]</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3086/feed</wfw:commentRss>
			<slash:comments>102</slash:comments>
		
		
			</item>
		<item>
		<title>Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster &#8220;LAMP&#8221;</title>
		<link>https://blog.remontti.com.br/3006</link>
					<comments>https://blog.remontti.com.br/3006#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 16 Jul 2019 19:05:12 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian 10]]></category>
		<category><![CDATA[debian buster]]></category>
		<category><![CDATA[debian10]]></category>
		<category><![CDATA[lamp]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3006</guid>

					<description><![CDATA[<p>Distribuição utilizada: Debian 10 Stretch / Instalação Limpa Vale lembrar que desde o Debian 9 o PHP foi atualizado para a versão 7 e agora para 7.3, e o MySQL foi substituído pelo seu&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3006">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster &#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/2019/07/debian10-lamp.jpg" alt="" width="800" height="376" class="alignnone size-full wp-image-3028" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/debian10-lamp.jpg 800w, https://blog.remontti.com.br/wp-content/uploads/2019/07/debian10-lamp-300x141.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/debian10-lamp-768x361.jpg 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/debian10-lamp-520x245.jpg 520w" sizes="auto, (max-width: 800px) 100vw, 800px" /><br />
Distribuição utilizada: <strong><a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Debian 10 Stretch / Instalação Limpa</a></strong><br />
Vale lembrar que desde o Debian 9 o PHP foi atualizado para a versão 7 e agora para 7.3, e o MySQL foi substituído pelo seu fork MariaBD<br />
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 2.4 ::</h3>
<pre class="remontti-code"># apt install apache2 apache2-utils</pre>
<p>Vamos habilitar o mod_rewrite do Apache que é muito utilizado.<br />
Este é um módulo do Apache que utiliza um mecanismo baseado em regras de reescrita.<br />
Vamos ao comando para habilita-lo:</p>
<pre class="remontti-code"># a2enmod rewrite</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 funcione corretamente será necessário adicionar alguma linhas.</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">	&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/2019/07/apache2-deb10-rewrite.png" data-rel="lightbox-gallery-AvSFJyjI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite-300x251.png" alt="" width="300" height="251" class="alignnone size-medium wp-image-3012" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite-300x251.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite-768x642.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache2-deb10-rewrite.png 887w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
Agora precisamos restartar o apache2 para que tenha efeito as alterações.</p>
<pre class="remontti-code"># systemctl restart apache2</pre>
<p>http://[SERVER_IP]/<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster.png" data-rel="lightbox-gallery-AvSFJyjI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-230x300.png" alt="" width="230" height="300" class="alignnone size-medium wp-image-3010" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-230x300.png 230w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-768x1003.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster-784x1024.png 784w, https://blog.remontti.com.br/wp-content/uploads/2019/07/apache-debian-10-buster.png 941w" sizes="auto, (max-width: 230px) 100vw, 230px" /></a><br />
Por segurança remova a assinatura do apache.</p>
<pre class="remontti-code"># sed -i &#039;s/ServerTokens OS/ServerTokens Prod/&#039; /etc/apache2/conf-available/security.conf
# sed -i &#039;s/ServerSignature On/ServerSignature Off/&#039; /etc/apache2/conf-available/security.conf</pre>
<h3>:: Instalação do MariaDB 10.3 ::</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. Mas isso é estranho, pois minha senha do root do MariaDB é diferente do meu usuário unix.<br />
Bom se você é meio paranoico com segurança, para alterar a senha do usuário root do MariaDB de forma bruta faça o seguinte:</p>
<pre class="remontti-code"># mariadb -u root</pre>
<pre class="remontti-code">USE mysql;
UPDATE user SET password=PASSWORD(&#039;SENHA.db.ROOT&#039;) WHERE User=&#039;root&#039;;
UPDATE user SET plugin=&quot;mysql_native_password&quot;;
FLUSH PRIVILEGES;
quit;</pre>
<h3>:: Instalação do PHP 7.3 ::</h3>
<p>Vou incluir algumas extensões do PHP que são normalmente utilizada</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">PHP 7.3.4-2 (cli) (built: Apr 13 2019 19:05:48) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.4-2, Copyright (c) 1999-2018, 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>http://[SERVER_IP]/phpinfo.php<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpinfo-debian-10-buster.png" data-rel="lightbox-gallery-AvSFJyjI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpinfo-debian-10-buster-300x261.png" alt="" width="300" height="261" class="alignnone size-medium wp-image-3018" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpinfo-debian-10-buster-300x261.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpinfo-debian-10-buster-768x668.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpinfo-debian-10-buster.png 994w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<h3>:: phpMyAdmin ::</h3>
<p>Cade ele do repositório?<br />
O PHPMyAdmin não está mais disponível como pacote .deb no Debian 10. Fazendo um pesquisa o motivo é que o &#8220;pessoal&#8221; que faz empacotamento não tem uma versão estável. <a href="https://security-tracker.debian.org/tracker/CVE-2018-19968" rel="noopener noreferrer" target="_blank">https://security-tracker.debian.org/tracker/CVE-2018-19968</a><br />
Desta forma debian &#8220;obriga&#8221; com que o usuário instale-o a partir da fonte. <a href="https://www.phpmyadmin.net/downloads/" rel="noopener noreferrer" target="_blank">https://www.phpmyadmin.net/downloads/</a></p>
<pre class="remontti-code"># apt install wget</pre>
<p>Escolha qual versão do irá utilizar phpMyAdmin 5.x.x ou 4.x.x</p>
<pre class="remontti-code"># cd /tmp/</pre>
<p>Para <strong>phpMyAdmin 5</strong> (06/04/2020)</p>
<pre class="remontti-code"># wget https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.tar.gz
# tar -vxzf phpMyAdmin-5.0.4-all-languages.tar.gz -C /usr/share/
# mv /usr/share/phpMyAdmin-5.0.4-all-languages /usr/share/phpmyadmin</pre>
<p>Para <strong>phpMyAdmin 4</strong> (06/04/2020)</p>
<pre class="remontti-code"># wget https://files.phpmyadmin.net/phpMyAdmin/4.9.5/phpMyAdmin-4.9.5-all-languages.tar.gz
# tar -vxzf phpMyAdmin-4.9.5-all-languages.tar.gz -C /usr/share/
# mv /usr/share/phpMyAdmin-4.9.5-all-languages /usr/share/phpmyadmin</pre>
<p>Seguimos para <strong>phpMyAdmin 5 ou 4</strong> </p>
<pre class="remontti-code"># mkdir /etc/phpmyadmin
# touch /etc/phpmyadmin/htpasswd.setup
# mkdir -p /var/lib/phpmyadmin/tmp
# chown www-data. /var/lib/phpmyadmin/ -R</pre>
<p>Criaremos o arquivo de configuração do Apache.</p>
<pre class="remontti-code"># vim /etc/apache2/conf-available/phpmyadmin.conf</pre>
<pre class="remontti-code"># phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

&lt;Directory /usr/share/phpmyadmin&gt;
 Options FollowSymLinks
 DirectoryIndex index.php

 &lt;IfModule mod_php7.c&gt;
 AddType application/x-httpd-php .php

 php_flag magic_quotes_gpc Off
 php_flag track_vars On
 php_flag register_globals Off
 php_value include_path .
 &lt;/IfModule&gt;

&lt;/Directory&gt;

# Authorize for setup
&lt;Directory /usr/share/phpmyadmin/setup&gt;
 &lt;IfModule mod_authn_file.c&gt;
 AuthType Basic
 AuthName &quot;phpMyAdmin Setup&quot;
 AuthUserFile /etc/phpmyadmin/htpasswd.setup
 &lt;/IfModule&gt;
 Require valid-user
&lt;/Directory&gt;

# Disallow web access to directories that don&#039;t need it
&lt;Directory /usr/share/phpmyadmin/libraries&gt;
 Order Deny,Allow
 Deny from All
&lt;/Directory&gt;
&lt;Directory /usr/share/phpmyadmin/setup/lib&gt;
 Order Deny,Allow
 Deny from All
&lt;/Directory&gt;</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 FollowSymLinks
 DirectoryIndex index.php

 AllowOverride All
 Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8:cafe:d0ce::/64

 &lt;IfModule mod_php7.c&gt;
 AddType application/x-httpd-php .php
 
 php_flag magic_quotes_gpc Off
 php_flag track_vars On
 php_flag register_globals Off
 php_value include_path .
 &lt;/IfModule&gt;
 
&lt;/Directory&gt;
 
# Authorize for setup
&lt;Directory /usr/share/phpmyadmin/setup&gt;
 AllowOverride All
 Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8:cafe:d0ce::/64
 &lt;IfModule mod_authn_file.c&gt;
 AuthType Basic
 AuthName &quot;phpMyAdmin Setup&quot;
 AuthUserFile /etc/phpmyadmin/htpasswd.setup
 &lt;/IfModule&gt;
 Require valid-user
&lt;/Directory&gt;
 
# Disallow web access to directories that don&#039;t need it
&lt;Directory /usr/share/phpmyadmin/libraries&gt;
 AllowOverride All
 Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8:cafe:d0ce::/64
 Order Deny,Allow
 Deny from All
&lt;/Directory&gt;
&lt;Directory /usr/share/phpmyadmin/setup/lib&gt;
 AllowOverride All
 Require ip 127.0.0.1 ::1 200.200.200.0/26 2001:db8:cafe:d0ce::/64
 Order Deny,Allow
 Deny from All
&lt;/Directory&gt;
</pre>
<p>Ative a configuração e reinicie o Apache.</p>
<pre class="remontti-code"># a2enconf phpmyadmin
# systemctl restart apache2
# systemctl status apache2</pre>
<p>Na próxima etapa, vamos configurar o armazenamento de configuração do phpMyadmin (banco de dados).<br />
Faça o login no MariaDB como usuário root:</p>
<pre class="remontti-code"># mariadb -p</pre>
<p>Criamos um novo banco de dados para o chamado phpmyadmin e um usuario pma (altere para sua senha). Em seguida, concedemos as permissões do banco de dados.<br />
Você pode gerar uma senha acessando <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 phpmyadmin;
CREATE USER &#039;pma&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039;;
GRANT ALL PRIVILEGES ON phpmyadmin.* TO &#039;pma&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SUA_SENHA&#039; WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;</pre>
<p>Carregue as tabelas do banco de dados: (Informe a senha do root do MariaDB)</p>
<pre class="remontti-code"># mariadb -u root -p phpmyadmin &lt; /usr/share/phpmyadmin/sql/create_tables.sql</pre>
<p>Agora é necessário ajustar o arquivo de configuração do phpmyadmin.<br />
Definir:<br />
* senha segura (blowfish secret) que deve ter 32 caracteres. Não use o meu exemplo blowfish secreto, defina o seu próprio! Use o gerador <a href="https://senhasegura.remontti.com.br" rel="noopener noreferrer" target="_blank">https://senhasegura.remontti.com.br</a><br />
* diretório que o PHPMyAdmin deve usar para armazenar arquivos temporários.<br />
* Descomentar as linhas $cfg['Servers']<br />
- controlhost : localhost<br />
- controlpass : SUA_SENHA</p>
<pre class="remontti-code"># cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
# vim /usr/share/phpmyadmin/config.inc.php</pre>
<pre class="remontti-code">$cfg[&#039;blowfish_secret&#039;] = &#039;dkJhGx83XR3JjuFrDn8kPp9NtXnkLptl&#039;;
/* Adicione esta linha */
$cfg[&#039;TempDir&#039;] = &#039;/var/lib/phpmyadmin/tmp&#039;;

/* User used to manipulate with storage */
$cfg[&#039;Servers&#039;][$i][&#039;controlhost&#039;] = &#039;localhost&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;controlport&#039;] = &#039;&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;controluser&#039;] = &#039;pma&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;controlpass&#039;] = &#039;SUA_SENHA&#039;;

/* Storage database and tables */
$cfg[&#039;Servers&#039;][$i][&#039;pmadb&#039;] = &#039;phpmyadmin&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;bookmarktable&#039;] = &#039;pma__bookmark&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;relation&#039;] = &#039;pma__relation&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;table_info&#039;] = &#039;pma__table_info&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;table_coords&#039;] = &#039;pma__table_coords&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;pdf_pages&#039;] = &#039;pma__pdf_pages&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;column_info&#039;] = &#039;pma__column_info&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;history&#039;] = &#039;pma__history&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;table_uiprefs&#039;] = &#039;pma__table_uiprefs&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;tracking&#039;] = &#039;pma__tracking&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;userconfig&#039;] = &#039;pma__userconfig&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;recent&#039;] = &#039;pma__recent&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;favorite&#039;] = &#039;pma__favorite&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;users&#039;] = &#039;pma__users&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;usergroups&#039;] = &#039;pma__usergroups&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;navigationhiding&#039;] = &#039;pma__navigationhiding&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;savedsearches&#039;] = &#039;pma__savedsearches&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;central_columns&#039;] = &#039;pma__central_columns&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;designer_settings&#039;] = &#039;pma__designer_settings&#039;;
$cfg[&#039;Servers&#039;][$i][&#039;export_templates&#039;] = &#039;pma__export_templates&#039;;</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster.png" data-rel="lightbox-gallery-AvSFJyjI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-300x296.png" alt="" width="300" height="296" class="alignnone size-medium wp-image-3021" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-300x296.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-768x757.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster.png 901w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><br />
http://[SERVER_IP]/phpmyadmin/<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1.png" data-rel="lightbox-gallery-AvSFJyjI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1-300x155.png" alt="" width="300" height="155" class="alignnone size-medium wp-image-3022" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1-300x155.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1-768x397.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1-1024x530.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-1.png 1680w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a><a href="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2.png" data-rel="lightbox-gallery-AvSFJyjI" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2-300x156.png" alt="" width="300" height="156" class="alignnone size-medium wp-image-3023" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2-300x156.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2-768x399.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2-1024x532.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/07/phpmyadmin-debian-10-buster-2.png 1680w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Gostou?</p>
<p><center><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></center></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/3006">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster &#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/3006/feed</wfw:commentRss>
			<slash:comments>70</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação Debian 10 Buster LIMPA Passo-a-passo</title>
		<link>https://blog.remontti.com.br/2966</link>
					<comments>https://blog.remontti.com.br/2966#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Mon, 15 Jul 2019 19:03:41 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debain]]></category>
		<category><![CDATA[debian10]]></category>
		<category><![CDATA[instalação limpa]]></category>
		<category><![CDATA[passo a passo]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualização]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=2966</guid>

					<description><![CDATA[<p>Vamos precisar da imagem ISO do Debian 10, vou utilizar a ISO netinst, é necessário conexão com a internet para fazer este tipo de instalação. O motivo para utilizar a versão netinst é que&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/2966">Instalação Debian 10 Buster LIMPA Passo-a-passo</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Vamos precisar da imagem ISO do Debian 10, vou utilizar a ISO netinst, é necessário conexão com a internet para fazer este tipo de instalação. <br>
O motivo para utilizar a versão netinst é que não irei instalar nenhum pacote pois minha instalação será limpa! Desta forma apenas será instalados os pacotes que eu realmente preciso.</p>



<p>Donwload em: https://www.debian.org/distrib/netinst utilizei a versão amd64</p>



<p>OBS: No exemplo minha rede pertence a classe 192.168.100.0/24 e não possui DHCP ativa.</p>


<p>Graphical Install<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/01.png">
</p>
<p>
Portuguese (Brazil) &#8211; Portugues do Brasil<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/02.png">
</p>
<p>
Brasil<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/03.png">
</p>
<p>
Protuguês Brasileiro<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/04.png">
</p>
<p>
Neste momento ele irá identificar sua conexão de rede, e receber seus IP automaticamente via DHCP, porém no nosso caso não existe DHCP configurado na rede.<br>
No entanto se sua rede tiver configurada para entregar IP via DHCP você já deve ter caido para tela da configuração do &#8220;Nome de Máquia:&#8221; então clique em voltar e selecione &#8220;Configurar a rede manualmente&#8221;.<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/07.png">
</p>
<p>
Aviso caso sua rede não tiver o DHCP configurado.<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/08.png">
</p>
<p>
Configurar a rede manualmente<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/09.png">
</p>
<p>
Informe seu IP/Máscara<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/10.png">
</p>
<p>
Seu Gateway<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/11.png">
</p>
<p>
Seu DNS<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/12.png">
</p>
<p>
Nome para sua maquina (Se você tiver o DNS reverso configurado ele já trará o nome do reverso do seu IP)<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/13.png">
</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 decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/14.png">
</p>
<p>
Defina a senha do usuário root<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/15.png">
</p>
<p>
Infome seu nome completo<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/16.png">
</p>
<p>
Crie um nome de usuário<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/17.png">
</p>
<p>
Defina a senha para seu usuário<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/18.png">
</p>
<p>
Selecione seu estado<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/19.png">
</p>
<p>
Chegamos ao particionamento. Para mim é interessante particionar quando você possuir mais de um disco ou então estar fazendo algum tipo de RAID via software.<br>
Neste exemplo como é uma maquina virtual não faz muito sentido em particionar.<br>
Selecione Assistido &#8211; usar o disco inteiro<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/20.png">
</p>
<p>
Selecione seu disco<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/21.png">
</p>
<p>
Selecione &#8220;Todos os arquivos em uma partição (para iniciantes)&#8221;, se você selecionar alguma das outras opções é muito importante que você realmente saiba oq está fazendo!<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/22.png">
</p>
<p>
Finalizar o particionamento e escrever as mudanças no disco<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/23.png">
</p>
<p>
Sim<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/24-s.png">
</p>
<p>
Aguarde a formatação do disco<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/25.png">
</p>
<p>
O sistestema irá comecar a instalação<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/26.png"></p>
<p>
Não (Pois estamos usando a versão netinst, onde todos os pacotes são atualizado do resositório mais recente da internet)<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/27.png"></p>
<p>
Brasil<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/28.png"></p>
<p>
deb.debian.org<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/29.png"></p>
<p>
Deixe em branco. Acredito que ninguem mais use proxy, mas se for seu caso informe seu usuario e senha da conexao HTTP.<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/30.png"></p>
<p>
Aguarde enquanto o espelho (repositório é lido) é fundamental ter internet, caso contrário irá apresentar erro, e prosseguir a instalação vai deixar seu sistema praticamente quebrado.<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/31.png"></p>
<p>
Sim. É sempre importante ajudar a comundade 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 vc precisa compliar na próxima versão já esteja disponível via repositório.<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/33-s.png"></p>
<p>
ESSE É A PARTE MAIS IMPORTANTE PARA A INSTALAÇÃO LIMPA.<br>
Pois não vamos instalar nenhum pacote, e sim apenas o sistema base. O único pacote que é bem provavél 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 instalçao com intuito de usar alguma interface gráfica faça sua escolha e prossiga.<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/34.png"></p>
<p>
Sim<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/35.png"></p>
<p>
Seleciona o disco qual sera configurado o GRUB. (normalmente /dev/sda)<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/36.png"></p>
<p>
Aguarde finalização e uma tela irá informa que a instalção foi finalizada. Clique em continuar para reiniciar.<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/39.png"></p>
<p>
Seu sistema foi instalado!<br>
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/40.png"></p>

Gostou?
<br><br>
<center><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong>
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></center>
<br><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>
<br><br>
Abraço!<p>O post <a href="https://blog.remontti.com.br/2966">Instalação Debian 10 Buster 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/2966/feed</wfw:commentRss>
			<slash:comments>30</slash:comments>
		
		
			</item>
		<item>
		<title>Script para limpar memória cache/swap do Linux</title>
		<link>https://blog.remontti.com.br/92</link>
					<comments>https://blog.remontti.com.br/92#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 17 Apr 2009 04:51:57 +0000</pubDate>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[cheio]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[jessie]]></category>
		<category><![CDATA[memoria]]></category>
		<category><![CDATA[Stretch]]></category>
		<guid isPermaLink="false">http://remontti.com.br/blog/?p=92</guid>

					<description><![CDATA[<p>Distribuição Testada: Debian 8/9/10/11/12 Vamos criar um arquivinho para checar nossa memória e limpar ela. Comandos: # vim /bin/limpamemoria #!/bin/sh # ********************** # # remontti.com.br # # ********************** # # Porcentagem máxima (mude se&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/92">Script para limpar memória cache/swap do Linux</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Distribuição Testada: Debian 8/9/10/11/12</p>
<p>Vamos criar um arquivinho para checar nossa memória e limpar ela.<br />
Comandos:</p>
<pre class="remontti-code"># vim /bin/limpamemoria</pre>
<p><span id="more-92"></span></p>
<pre class="remontti-code">#!/bin/sh

# ********************** #
#    remontti.com.br     #
# ********************** #

# Porcentagem máxima (mude se você achar necessário)
percent=85

# Total da memoria:
ramtotal=`grep -F &quot;MemTotal:&quot; &lt; /proc/meminfo | awk &#039;{print $2}&#039;`
# Memoria livre:
ramlivre=`grep -F &quot;MemFree:&quot; &lt; /proc/meminfo | awk &#039;{print $2}&#039;`

# RAM utilizada pelo sistema:
ramusada=`expr $ramtotal - $ramlivre`

# Porcentagem de RAM utilizada pelo sistema:
putil=`expr $ramusada \* 100 / $ramtotal`

echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
date
echo
echo &quot;Mem. utilizada: $putil %&quot;;

if [ $putil -gt $percent ]
then
date=`date`
echo $date &gt;&gt; /var/log/memoria.log
echo &quot;Mem. utilizada: $putil %&quot; &gt;&gt; /var/log/memoria.log

echo &quot;Memoria acima de $percent %, cache foi limpado!&quot;;
sync
# &#039;Dropando&#039; cache:
echo 3 &gt; /proc/sys/vm/drop_caches
# Caso nao esteja utilizanod debian, descomente a linha abaixo
# sysctl -w vm.drop_caches=3 
# Zera SWAP
swapoff -a
swapon -a
echo
free -m
echo
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
else
echo &quot;Cache não foi limpado!&quot;;
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
unset percent ramtotal ramlivre ramusada putil
exit $?
fi</pre>
<p>De permissão para executá-lo:</p>
<pre class="remontti-code"># chmod +x /bin/limpamemoria</pre>
<p><strong>Agendando no CRON</strong></p>
<p>Vamos adicionar ao cron para rodar a cada 30 min.<br />
Adicione ao final de /etc/crontab:</p>
<pre class="remontti-code"># echo &#039;# Limpa memoria a cada 30min&#039; &gt;&gt; /etc/crontab
# echo &#039;*/30 *  * * *   root   /bin/limpamemoria&#039; &gt;&gt; /etc/crontab</pre>
<p>Verifique se inseriu</p>
<pre class="remontti-code"># cat /etc/crontab</pre>
<p>Reinicie o CRON</p>
<pre class="remontti-code"># systemctl restart cron</pre>
<p>Para distribuição mais antigas</p>
<pre class="remontti-code"># /etc/init.d/cron restart</pre>
<p>Feito, cada vez q ele limpar vai gerar um log em <strong>/var/log/memoria.log</strong></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>O post <a href="https://blog.remontti.com.br/92">Script para limpar memória cache/swap do Linux</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/92/feed</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
	</channel>
</rss>
