<?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 debian10 - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/debian10/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/debian10</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Sat, 19 Oct 2024 00:56:50 +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 debian10 - Remontti</title>
	<link>https://blog.remontti.com.br/tag/debian10</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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 fetchpriority="high" 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="(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-yXv6J3UE" data-rl_title="" data-rl_caption="" title=""><img 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="(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-yXv6J3UE" data-rl_title="" data-rl_caption="" title=""><img 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="(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-yXv6J3UE" 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-yXv6J3UE" 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-yXv6J3UE" 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-yXv6J3UE" 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-yXv6J3UE" 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-yXv6J3UE" 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-yXv6J3UE" 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-yXv6J3UE" 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-yXv6J3UE" 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-yXv6J3UE" 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-yXv6J3UE" 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-yXv6J3UE" 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-yXv6J3UE" 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-yXv6J3UE" 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-nCiSXjk8" 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>Instalação do Elastic Stack 7 + ElastiFlow no Debian 10 Buster (Bônus Traffic Flow Mikrotik/RouterOS)</title>
		<link>https://blog.remontti.com.br/3368</link>
					<comments>https://blog.remontti.com.br/3368#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 16 Aug 2019 18:06:41 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian buster]]></category>
		<category><![CDATA[debian10]]></category>
		<category><![CDATA[Elasticsearch]]></category>
		<category><![CDATA[ElastiFlow]]></category>
		<category><![CDATA[IPFIX]]></category>
		<category><![CDATA[Kibana]]></category>
		<category><![CDATA[Logstash]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Netflow]]></category>
		<category><![CDATA[routeros]]></category>
		<category><![CDATA[sFlow]]></category>
		<category><![CDATA[Traffic Flow]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3368</guid>

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