<?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 seguro - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/seguro/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/seguro</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Wed, 11 Jan 2023 13:38:22 +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 seguro - Remontti</title>
	<link>https://blog.remontti.com.br/tag/seguro</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados (MariaDB) usando Debian 10</title>
		<link>https://blog.remontti.com.br/3865</link>
					<comments>https://blog.remontti.com.br/3865#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 18 Dec 2019 00:50:02 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[certificado]]></category>
		<category><![CDATA[criptografado]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debina buster]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[pure-ftpd]]></category>
		<category><![CDATA[seguro]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[tls]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3865</guid>

					<description><![CDATA[<p>Neste tutorial vamos montar um servidor FTP utilizando o PureFTPd com usuários no banco de dados Mysql ao invés de usar usuários do sistema, vamos ainda poder configurar quotas e limites de upload e download. Requisito: Debian 10&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3865">Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados (MariaDB) usando Debian 10</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: left;">Neste tutorial vamos montar um servidor FTP utilizando o PureFTPd com usuários no banco de dados Mysql ao invés de usar usuários do sistema, vamos ainda poder configurar quotas e limites de upload e download.</p>
<p><span id="more-3865"></span><br />
<img fetchpriority="high" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp.jpg" alt="" width="1000" height="474" class="alignnone size-full wp-image-3876" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp.jpg 1000w, https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp-768x364.jpg 768w, https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp-520x245.jpg 520w, https://blog.remontti.com.br/wp-content/uploads/2019/12/ftp-720x340.jpg 720w" sizes="(max-width: 1000px) 100vw, 1000px" /></p>
<p><strong>Requisito:</strong><br />
<a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">Debian 10 Stretch / Instalação Limpa</a></p>
<p>Vire root de maneira correta no Debian 10!</p>
<pre class="remontti-code"># su -</pre>
<h3>Instalação do banco de dados MariaDB</h3>
<pre class="remontti-code"># apt install mariadb-server mariadb-client </pre>
<p>Por padrão o pacote MaraiDB no Debian usa unix_socket para autenticar o login do usuário, o que basicamente significa que você pode usar o nome de usuário e a senha do sistema operacional para efetuar login no console do MariaDB.<br />
Assim, você pode logar diretamente sem fornecer a senha root do MariaDB. Mas isso é estranho, pois minha senha do root do MariaDB é diferente do meu usuário unix.<br />
Bom se você é meio paranoico com segurança, para alterar a senha do usuário root do MariaDB de forma bruta faça o seguinte:</p>
<pre class="remontti-code"># mariadb -u root</pre>
<pre class="remontti-code">USE mysql;
UPDATE user SET password=PASSWORD(&#039;SENHA_DB_ROOT&#039;) WHERE User=&#039;root&#039;;
UPDATE user SET plugin=&quot;mysql_native_password&quot;;
FLUSH PRIVILEGES;
quit;</pre>
<h3>Instalação do Pure FTP</h3>
<pre class="remontti-code"># apt install pure-ftpd-mysql</pre>
<p>Agora criaremos nosso grupo FTP (<em>grupoftp</em>) e usuário (<em>pureftpd</em>) para que nosso usuários virtuais sejam mapeados.</p>
<pre class="remontti-code"># groupadd -g 2001 ftpgroup
# useradd -u 2001 -s /bin/false -d /bin/null -c &quot;pureftpd user&quot; -g ftpgroup ftpuser</pre>
<pre class="remontti-code"># vim /etc/default/pure-ftpd-common</pre>
<p>altere</p>
<pre class="remontti-code">UPLOADUID=
UPLOADGID=</pre>
<p>para </p>
<pre class="remontti-code">UPLOADUID=2001
UPLOADGID=2001</pre>
<p>Próximo passo criar a nossa base de dados, onde ficaram armazenado as informações dos nossos usuários.</p>
<pre class="remontti-code"># mariadb -u root -p</pre>
<p>Entre com a senha de root criada anteriormente.  Não esqueça de alterar senha <strong>(SENHA_FTP_USER)</strong>.</p>
<pre class="remontti-code">CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO &#039;pureftpd&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;SENHA_FTP_USER&#039;;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO &#039;pureftpd&#039;@&#039;localhost.localdomain&#039; IDENTIFIED BY &#039;SENHA_FTP_USER&#039;;
FLUSH PRIVILEGES;
</pre>
<p>Crie a tabela</p>
<pre class="remontti-code">USE pureftpd;

CREATE TABLE ftpd (
User varchar(16) NOT NULL default &#039;&#039;,
status enum(&#039;0&#039;,&#039;1&#039;) NOT NULL default &#039;0&#039;,
Password varchar(64) NOT NULL default &#039;&#039;,
Uid varchar(11) NOT NULL default &#039;-1&#039;,
Gid varchar(11) NOT NULL default &#039;-1&#039;,
Dir varchar(128) NOT NULL default &#039;&#039;,
ULBandwidth smallint(5) NOT NULL default &#039;0&#039;,
DLBandwidth smallint(5) NOT NULL default &#039;0&#039;,
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default &#039;*&#039;,
QuotaSize smallint(5) NOT NULL default &#039;0&#039;,
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
);

quit; 
</pre>
<p>Salve o arquivo original /etc/pure-ftpd/db/mysql.conf e crie um novo com novas configurações, mais uma vez preste atenção a senha [SENHA_FTP_USER].</p>
<pre class="remontti-code"># mv /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
# vim /etc/pure-ftpd/db/mysql.conf</pre>
<p>Adicione:</p>
<pre class="remontti-code">MYSQLSocket /var/run/mysqld/mysqld.sock
MYSQLUser pureftpd
MYSQLPassword SENHA_FTP_USER
MYSQLDatabase pureftpd
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User=&quot;\L&quot; AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MYSQLGetUID SELECT Uid FROM ftpd WHERE User=&quot;\L&quot; AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MYSQLGetGID SELECT Gid FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MYSQLGetDir SELECT Dir FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User=&quot;\L&quot;AND status=&quot;1&quot; AND (ipaccess = &quot;*&quot; OR ipaccess LIKE &quot;\R&quot;)</pre>
<p>Esteja certo que você mudou o campo MYSQLPassword &#8216;SENHA_FTP_USER&#8217;</p>
<p>A configuração <strong>ChrootEveryone</strong> fará com que o PureFTPd faça chroot em todos os usuários virtuais em seu diretório pessoal, para que ele não consiga procurar diretórios e arquivos fora do diretório pessoal. A linha <strong>CreateHomeDir</strong> fará com que o PureFTPd crie o diretório inicial de um usuário quando o usuário efetuar login e o diretório inicial ainda não existir.</p>
<pre class="remontti-code"># echo yes &gt; /etc/pure-ftpd/conf/ChrootEveryone
# echo yes &gt; /etc/pure-ftpd/conf/CreateHomeDir
# echo 1 &gt; /etc/pure-ftpd/conf/TLS
# echo HIGH &gt; /etc/pure-ftpd/conf/TLSCipherSuite</pre>
<p>Gere os certificados.</p>
<pre class="remontti-code"># openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048
# openssl req -x509 -nodes -newkey rsa:2048 -sha256 -keyout \
  /etc/ssl/private/pure-ftpd.pem \
  -out /etc/ssl/private/pure-ftpd.pem
# chmod 600 /etc/ssl/private/*.pem</pre>
<p>Vamos criar agora um usuário, Qual ficará dentro do diretório <strong>/var/pure-ftpd/ </strong> onde vou deixar todos meus usuários criado, porém você pode escolher qualquer diretório, usarei a pasta /var/ pois seria o &#8220;lugar correto&#8221;.</p>
<p>Entre no mariadb com seu usuario pureftpd e senha para fazer a criação do usuário ftp, no meu ex vou criar o usuário chamado remontti.</p>
<pre class="remontti-code"># mysql -u pureftpd -p</pre>
<pre class="remontti-code">USE pureftpd;

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) 
VALUES (&#039;remontti&#039;, &#039;1&#039;, MD5(&#039;SUA_SENHA&#039;), &#039;2001&#039;, &#039;2001&#039;, &#039;/var/pure-ftpd/remontti&#039;, &#039;100&#039;, &#039;100&#039;, &#039;&#039;, &#039;*&#039;, &#039;50&#039;, &#039;0&#039;);

quit;</pre>
<p>Limpe o histórico do mariadb. Não queremos ninguém vendo o q digitamos lá <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<pre class="remontti-code"># echo &gt; /root/.mysql_history</pre>
<p>Ao fazer login o diretório /var/pure-ftpd/USUARIO será criado automaticamente.</p>
<p>Restarte o serviço e verifique o status do mesmo</p>
<pre class="remontti-code"># systemctl restart pure-ftpd-mysql
# systemctl status pure-ftpd-mysql</pre>
<p>Sempre que você queira criar um novo usuário, você tem que criar uma entrada na tabela ftpd.<br />
Explicando a estrutura da tabela:</p>
<p><strong>User:</strong> Seu usuário (ex. como no nosso usuário acima: teste).<br />
<strong>Status: </strong>0 ou 1. 0 deixará sua conta inativa, e o usuário não pode logar.<br />
<strong>Password:</strong> A senha do usuário. A senha está encriptada com MD5.<br />
<strong>UID:</strong> O userid do usuário ftp que você criou (ex: 2001)<br />
<strong>GID: </strong>O groupid do grupo ftp que você criou (ex: 2001).<br />
<strong>Dir:</strong> Diretório home do usuário (ex: /home/teste). Se não existir será criado quando logar pela primeira vez via FTP. O usuário será preso neste diretório home.<br />
<strong>ULBandwidth: </strong>Controle de Upload em KB/Sec. Use 0 para que seja ilimitado.<br />
<strong>DLBandwidth: </strong>Controle de Download em KB/sec. Use 0 para que seja ilimitado.<br />
<strong>Comment: </strong>Você pode inserir qualquer comentário (ex: Usuário da administração). Você deixa este campo limpo.<br />
<strong>Ipaccess: </strong>Você pode definir o ip que serão permitidos para conectar nesta conta FTP. Ou &#8216;*&#8217; para qualquer endereço IP.<br />
<strong>QuotaSize: </strong>Espaço de armazenamento em MB (não KB, como em ULBandwidth eDLBandwidth) Defina 0 como ilimitado.<br />
<strong>QuotaFiles:</strong> Número total de arquivos que este usuário poderá salvar. Defina 0 para ilimitado.</p>
<h3>Protegendo com Fail2ban</h3>
<pre class="remontti-code"># apt install fail2ban
# echo yes &gt; /etc/pure-ftpd/conf/DontResolve
# vim /etc/fail2ban/jail.d/defaults-debian.conf</pre>
<p>Adicione o filtro pure-ftpd.</p>
<pre class="remontti-code">[sshd]
enabled = true
[pure-ftpd]
enabled = true</pre>
<p>Restarte o fail2ban</p>
<pre class="remontti-code"># systemctl restart fail2ban</pre>
<p>Se você tiver interesse em ter uma interface web para gerenciamento recomendo:<br />
<a href="https://blog.remontti.com.br/3006" rel="noopener noreferrer" target="_blank">Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP”</a></p>
<p>Gostou?</p>
<p>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!<br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>Fonte:<a href="http://download.pureftpd.org/pub/pure-ftpd/doc/README.MySQL" rel="noopener noreferrer" target="_blank"> http://download.pureftpd.org/pub/pure-ftpd/doc/README.MySQL</a></p>
<p>O post <a href="https://blog.remontti.com.br/3865">Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados (MariaDB) usando Debian 10</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3865/feed</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Criando backup do RouterOS/Mikrotik via FTP</title>
		<link>https://blog.remontti.com.br/3878</link>
					<comments>https://blog.remontti.com.br/3878#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 18 Dec 2019 00:40:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[backuk]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[pure-ftpd]]></category>
		<category><![CDATA[routeos]]></category>
		<category><![CDATA[salvar]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[seguro]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3878</guid>

					<description><![CDATA[<p>Neste exemplo vou ensinar como fazer um backup do seu routerOS/Mikroitk via FTP. Testei com as versões > 6.48.x e > 7.6 Requisitos ter um servidor FTP 😛 Sugestão: Como criar um servidor FTP&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3878">Criando backup do RouterOS/Mikrotik via FTP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/12/mikrotik_backup_ftp.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-3886" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/12/mikrotik_backup_ftp.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2019/12/mikrotik_backup_ftp-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2019/12/mikrotik_backup_ftp-520x245.jpg 520w" sizes="(max-width: 720px) 100vw, 720px" /><br />
Neste exemplo vou ensinar como fazer um backup do seu routerOS/Mikroitk via FTP.</p>
<p>Testei com as versões > 6.48.x  e > 7.6</p>
<p>Requisitos ter um servidor FTP <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;" /><br />
Sugestão: <a href="https://blog.remontti.com.br/3865" rel="noopener noreferrer" target="_blank">Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados (MariaDB) usando Debian 10</a></p>
<p>Vamos ao script, você precisa alterar:<br />
:global host <strong>____IP/DNS_SERVIDOR_FTP____</strong><br />
:global usuario <strong>____USER____</strong><br />
:global senha<strong> ____SENHA____</strong><br />
:global diretorio<strong> ____pastaX____</strong></p>
<p>Acesse o menu: <strong>System</strong> >> <strong>Script</strong> e depois em [+]<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp.png" data-rel="lightbox-gallery-IBodBsAM" data-rl_title="" data-rl_caption="" title=""><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp.png" alt="" width="1680" height="909" class="alignnone size-full wp-image-3882" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp.png 1680w, https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp-300x162.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp-1024x554.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp-768x416.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp-1536x831.png 1536w" sizes="(max-width: 1680px) 100vw, 1680px" /></a></p>
<p>O nome do arquivo será o mesmo que você definiu em <strong>System</strong> >> <strong>Identity</strong>, serão criado dois arquivos, uma backup e um export (AAAA-MM-DD.NOME.backup AAAA-MM-DD.NOME.rsc) </p>
<pre class="remontti-code">:log warning &quot;***************************************&quot;
# Conexão FTP
:global host ____IP/DNS_SERVIDOR_FTP____
:global usuario ____USER____
:global senha ____SENHA____
:global diretorio ____pastaX____
# Pega o nome do Router
:global identifica [/system identity get name ];
# Gera data no formato AAAA-MM-DD
:global data [/system clock get date]
:global meses (&quot;jan&quot;,&quot;feb&quot;,&quot;mar&quot;,&quot;apr&quot;,&quot;may&quot;,&quot;jun&quot;,&quot;jul&quot;,&quot;aug&quot;,&quot;sep&quot;,&quot;oct&quot;,&quot;nov&quot;,&quot;dec&quot;);
:global ano ([:pick $data 7 11])
:global mestxt ([:pick $data 0 3])
:global mm ([ :find $meses $mestxt -1 ] + 1);
:if ($mm &lt; 10) do={ :set mm (&quot;0&quot; . $mm); }
:global mes ([:pick $ds 7 11] . $mm . [:pick $ds 4 6])
:global dia ([:pick $data 4 6])
:log info &quot;Gerando backup: $ano-$mes-$dia.$identifica.backup&quot;;
/system backup save name=&quot;$ano-$mes-$dia.$identifica&quot;;
:log info &quot;Gerando export: $ano-$mes-$dia.$identifica.rsc&quot;;
/export file=&quot;$ano-$mes-$dia.$identifica&quot;
:log info &quot;Processando...&quot;;
:delay 5s
:log info &quot;Conectando FTP Server...&quot;;
:log info &quot;Enviando Backup [$ano-$mes-$dia.$identifica.backup] ...&quot;;
/tool fetch address=$host src-path=&quot;$ano-$mes-$dia.$identifica.backup&quot; user=&quot;$usuario&quot; password=&quot;$senha&quot; port=21 upload=yes mode=ftp dst-path=&quot;$diretorio/$ano-$mes-$dia.$identifica.backup&quot;
:log info &quot;Enviando Export [$ano-$mes-$dia.$identifica.rsc] ...&quot;;
/tool fetch address=$host src-path=&quot;$ano-$mes-$dia.$identifica.rsc&quot; user=&quot;$usuario&quot; password=&quot;$senha&quot; port=21 upload=yes mode=ftp dst-path=&quot;$diretorio/$ano-$mes-$dia.$identifica.rsc&quot;
:delay 1
:log info &quot;Backup enviado com sucesso...&quot;;
:log info &quot;Removendo arquivos...&quot;;
 /file remove &quot;$ano-$mes-$dia.$identifica.backup&quot;
 /file remove &quot;$ano-$mes-$dia.$identifica.rsc&quot;
:log info &quot;Rotina de backup finalizada...&quot;;
:log warning &quot;***************************************&quot;;</pre>
<p>Agora será preciso agenda-lo para execução a cada X período, no meu exemplo vou definir que todos os meio dias a cada 3 dias. Ajuste de acordo com suas necessidades:<br />
Acesse o menu: <strong>System</strong> >> <strong>Scheduler</strong> [+]<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp2.png" data-rel="lightbox-gallery-IBodBsAM" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp2.png" alt="" width="1353" height="785" class="alignnone size-full wp-image-3884" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp2.png 1353w, https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp2-300x174.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp2-1024x594.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/12/backup_mk_ftp2-768x446.png 768w" sizes="auto, (max-width: 1353px) 100vw, 1353px" /></a></p>
<p>Se estiver com preguiça <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> pode copiar as linhas abaixo e colar no terminal, depois só alterar as variáveis.</p>
<pre class="remontti-code">/system script
add dont-require-permissions=no name=backup_ftp owner=remontti policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=&quot;:log warning \&quot;***************************************\&quot;\r\
    \n# Conex\E3o FTP\r\
    \n:global host ____IP/DNS_SERVIDOR_FTP____\r\
    \n:global usuario ___USUARIO___\r\
    \n:global senha ___SENHA___\r\
    \n:global diretorio ___NOME_DA_PASTA___\r\
    \n# Pega o nome do Router\r\
    \n:global identifica [/system identity get name ];\r\
    \n# Gera data no formato AAAA-MM-DD\r\
    \n:global data [/system clock get date]\r\
    \n:global meses (\&quot;jan\&quot;,\&quot;feb\&quot;,\&quot;mar\&quot;,\&quot;apr\&quot;,\&quot;may\&quot;,\&quot;jun\&quot;,\&quot;jul\&quot;,\&quot;aug\&quot;,\&quot;sep\&quot;,\&quot;oct\&quot;,\&quot;nov\&quot;,\&quot;dec\&quot;);\r\
    \n:global ano ([:pick \$data 7 11])\r\
    \n:global mestxt ([:pick \$data 0 3])\r\
    \n:global mm ([ :find \$meses \$mestxt -1 ] + 1);\r\
    \n:if (\$mm &lt; 10) do={ :set mm (\&quot;0\&quot; . \$mm); }\r\
    \n:global mes ([:pick \$ds 7 11] . \$mm . [:pick \$ds 4 6])\r\
    \n:global dia ([:pick \$data 4 6])\r\
    \n:log info \&quot;Gerando backup: \$ano-\$mes-\$dia.\$identifica.backup\&quot;;\r\
    \n/system backup save name=\&quot;\$ano-\$mes-\$dia.\$identifica\&quot;;\r\
    \n:log info \&quot;Gerando export: \$ano-\$mes-\$dia.\$identifica.rsc\&quot;;\r\
    \n/export file=\&quot;\$ano-\$mes-\$dia.\$identifica\&quot;\r\
    \n:log info \&quot;Processando...\&quot;;\r\
    \n:delay 5s\r\
    \n:log info \&quot;Conectando FTP Server...\&quot;;\r\
    \n:log info \&quot;Enviando Backup [\$ano-\$mes-\$dia.\$identifica.backup] ...\&quot;;\r\
    \n/tool fetch address=\$host src-path=\&quot;\$ano-\$mes-\$dia.\$identifica.backup\&quot; user=\&quot;\$usuario\&quot; password=\&quot;\$senha\&quot; port=21 upload=yes mode=ftp dst-path=\&quot;\$diretorio/\$ano-\$mes-\$dia.\$identifica.backup\&quot;\
    \r\
    \n:log info \&quot;Enviando Export [\$ano-\$mes-\$dia.\$identifica.rsc] ...\&quot;;\r\
    \n/tool fetch address=\$host src-path=\&quot;\$ano-\$mes-\$dia.\$identifica.rsc\&quot; user=\&quot;\$usuario\&quot; password=\&quot;\$senha\&quot; port=21 upload=yes mode=ftp dst-path=\&quot;\$diretorio/\$ano-\$mes-\$dia.\$identifica.rsc\&quot;\r\
    \n:delay 1\r\
    \n:log info \&quot;Backup enviado com sucesso...\&quot;;\r\
    \n:log info \&quot;Removendo arquivos...\&quot;;\r\
    \n /file remove \&quot;\$ano-\$mes-\$dia.\$identifica.backup\&quot;\r\
    \n /file remove \&quot;\$ano-\$mes-\$dia.\$identifica.rsc\&quot;\r\
    \n:log info \&quot;Rotina de backup finalizada...\&quot;;\r\
    \n:log warning \&quot;***************************************\&quot;;&quot;

/system scheduler
add interval=3d name=backup_ftp on-event=backup_ftp policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=dec/17/2019 start-time=12:00:00</pre>
<p>Simples né! Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!<br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/3878">Criando backup do RouterOS/Mikrotik via FTP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3878/feed</wfw:commentRss>
			<slash:comments>19</slash:comments>
		
		
			</item>
		<item>
		<title>Servidor DNS seguro com Bind9  (Recursivo, Autoritativo e Reverso) + Fail2ban + nftables no Debian 10 Buster [Descontinuado]</title>
		<link>https://blog.remontti.com.br/3086</link>
					<comments>https://blog.remontti.com.br/3086#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Thu, 18 Jul 2019 19:17:51 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[allow-transfer]]></category>
		<category><![CDATA[Autoritativo]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[bind9]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 10]]></category>
		<category><![CDATA[debian buster]]></category>
		<category><![CDATA[debian stretch]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[ipv4]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[Recursivo]]></category>
		<category><![CDATA[Reverso]]></category>
		<category><![CDATA[seguro]]></category>
		<category><![CDATA[Servidor]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3086</guid>

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

					<description><![CDATA[<p>Este tutorial foi atualizado: Acesse Servidor DNS seguro com Bind9 (Recursivo, Autoritativo e Reverso) + Fail2ban + nftables no Debian 10 Buster Não utilize este tutorial! Não apaguei o mesmo para deixa-lo para fins&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/1397">Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9)  [Descontinuado]</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1><font color="red"><strong>Este tutorial foi atualizado: </strong></font></h1>
<h3>Acesse <a href="https://blog.remontti.com.br/3086">Servidor DNS seguro com Bind9 (Recursivo, Autoritativo e Reverso) + Fail2ban + nftables no Debian 10 Buster</a></h3>
<h4><font color="red"><strong>Não utilize este tutorial! Não apaguei o mesmo para deixa-lo para fins de estudos.</strong></font></h4>
<hr>
<p>(Descontinuado)</p>
<hr>
<p>Distribuição utilizada: <strong>Debian 8 Jessie / Debian 9 Stretch &#8211; Instalação Limpa</strong> <a href="https://blog.remontti.com.br/1152" target="_blank" rel="noopener noreferrer">(Tutorial de instalação aqui)</a></p>
<p><strong>DNS RECURSIVO</strong><br />
O DNS recursivo é responsável por procurar os endereços IPs de servidor que você solicitou acesso. Exemplo o DNS que esta configurado na sua máquina. </p>
<p><strong>DNS AUTORITIVO</strong><br />
É o que possui autoridade sobre um nome de domínio, assim como ns1.remontti.net.br é o DNS autoritativo de seu domínio remontti.net.br.<br />
O DNS autoritativo dita qual será o apontamento da tabela de DNS do seu site. Ele vai responder por o domínio que você configurou nele.</p>
<p><strong>DNS REVERSO</strong><br />
Normalmente o DNS atua resolvendo o nome do domínio de um host para um endereço IP correspondente. Já o DNS Reverso resolve o endereço IP, buscando o nome de domínio associado ao host. Ou seja, quando temos disponível o endereço IP de um host e não sabemos o endereço do domínio(nome dado à máquina ou outro equipamento que acesse uma rede), tentamos resolver o endereço IP através do DNS reverso que procura qual nome de domínio está associado aquele endereço. Os servidores que utilizam o DNS Reverso conseguem verificar a autenticidade de endereços, verificando se o endereço IP atual corresponde ao endereço IP informado pelo servidor DNS. Isto evita que alguém utilize um domínio que não lhe pertence para enviar spam, por exemplo.</p>
<p>Para que o DNS Reverso funcione que no registro.br você designa seu bloco apontando para o(os) seu(s) servidor(es) DNS. Se você for um provedor o correto seria você ter ao menos dois servidores DNS em sua rede, uma Master e outro Slave. Neste tutoria foi explicar como criar os dois! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Vamos iniciar com a instalação do nosso servidor Master, lembrando que para isso estou usando a Distribuição linux Debian 8, com uma instalação que eu chamo de limpa, ou seja no processo de instalação foi instalado apenas o sistema básico. </p>
<p><strong>Cenário para nosso exemplo</strong></p>
<p>Domínio: <strong>remontti.net.br</strong><br />
Blocos que serei responsável <strong>IPv4 250.250.0.0/23 (255.255.254.0)</strong> / <strong>IPv6 2000:FFF::/32</strong> minha rede ainda conta com alguns blocos de IPs inválidos bem como <strong>192.168.0.0/16,  172.16.0.0/12 e 10.0.0.0/8</strong> que por ventura também irei autorizar consultas recursivas.</p>
<p>Tenho ainda meus servidores, quais ficarão configurado com os seguintes IPs IPv4/IPv6:<br />
<strong>ROUTER GW</strong> -> 250.250.0.1 / 2000:fff:250:250:0::1<br />
<strong>SERV DNS MASTER</strong> -> 250.250.0.2 / 2000:fff:250:250:0::2 (ns1)<br />
<strong>SERV DNS SLAVE </strong>-> 250.250.0.3 / 2000:fff:250:250:0::3 (ns2)<br />
<strong>SERV <a href="https://blog.remontti.com.br/1296" target="_blank" rel="noopener noreferrer">WEB</a> + <a href="https://blog.remontti.com.br/136" target="_blank" rel="noopener noreferrer">FTP</a></strong> -> 250.250.0.4 / 2000:fff:250:250:0::4 (www,ftp)<br />
<strong>SERV <a href="https://blog.remontti.com.br/1227" target="_blank" rel="noopener noreferrer">ZABBIX</a> </strong> -> 250.250.0.5 / 2000:fff:250:250:0::5 (zabbix)<br />
<strong>SERV <a href="https://blog.remontti.com.br/1485" target="_blank" rel="noopener noreferrer">E-MAILS</a> </strong> -> 250.250.0.6 / 2000:fff:250:250:0::6 (mail,imap,pop,smtp)<br />
<strong>SERV HOSPEDAGEM</a>  *</strong> -> 250.250.0.7 / 2000:fff:250:250:0::7 (ns3)</p>
<p><i>* Inclui outros servidor para demonstrar como irei apontar para eles alguns nos domínios que seremos autoritarivo, lá na frente você vai compreender melhor.</i></p>
<p><strong>INSTALAÇÃO SERVIDOR DNS MASTER (NS1)</strong></p>
<pre class="remontti-code"># apt install bind9 dnsutils</pre>
<p>Pronto! Nosso servidor recursivo já está funcionando, porém ele está aberto, e isso não é nada legal! Você não vai querer qualquer um utilizando seu servidor para resolver nomes. Vamos resolver isso bem simples. </p>
<p>Antes de mais nada vamos alterar o DNS do nosso servidor fazendo com que ele consulte em si próprio. Essa alteração deve ser feita no arquivo /etc/resolv.conf, eu irei utilizar o editor vim, mas fique a vontade de usar o seu preferido.</p>
<pre class="remontti-code"># vim  /etc/resolv.conf </pre>
<p>Altere para:</p>
<pre class="remontti-code">nameserver 127.0.0.1
search localhost</pre>
<p>Feito isso você pode fazer um ping para um domínio e ver se ele resolveu o host.<br />
Agora &#8220;mão na massa&#8221;! Vamos começar acessando nosso diretório de instalação do Bind que fica em /etc/bind/ </p>
<pre class="remontti-code"># cd /etc/bind</pre>
<p>As configurações principal é armazenado nos seguintes arquivos:<br />
<i>named.conf<br />
named.conf.local<br />
named.conf.options</i></p>
<p>Iremos alterar o <strong>named.conf.options</strong>, o próprio nome já se auto descreve o que vamos encontrar nele.<br />
Sempre gosto de preservar o arquivo original, então vamos fazer um backup antes de modifica-lo.</p>
<pre class="remontti-code"># cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bkp</pre>
<p>Agora vamos as alterações, vou deixar explicado como comentários dentro no nosso arquivo.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<pre class="remontti-code">
//ACLs (Access Control Lists)

// ACL &quot;permite-recursiva&quot; vão ficar os hosts estão autorizados a fazer 
// consultas recursivas através deste servidor.
acl permite-recursiva {
        127.0.0.1;
        ::1;
        250.250.0.0/23;
        2000:fff::/32;
        192.168.0.0/16;
        172.16.0.0/12;
        10.0.0.0/8;
};

options {
    // O diretório de trabalho do servidor
    // Quaisquer caminho não informado será tomado como  padrão este directório
    directory &quot;/var/cache/bind&quot;;

    //Suporte a DNSSEC
    dnssec-enable yes;
    dnssec-validation auto;

    // Conforme RFC1035
    // https://www.ietf.org/rfc/rfc1035.txt
    auth-nxdomain no;

    // Respondendo para IPv4 e IPv6
    // Porta 53 estará aberta para ambos v4 e v6
    listen-on { any; };
    listen-on-v6 { any; };

    // Limitação da taxa de resposta no sistema de nomes de domínio (DNS RRL)
    rate-limit {
        responses-per-second 15;
        window 5;
    };

    // Melhora o desempenho do servidor, reduzindo os volumes de dados de saída.
    // O padrão BIND é (no) não.
    minimal-responses yes;

    // Especifica quais hosts estão autorizados a fazer consultas 
    // recursivas através deste servidor.
    // Aqui que você vai informar os IPs da sua rede que você irá permitir consultar os DNS.
    allow-recursion {
        permite-recursiva;
    };

    // Endereço estão autorizados a emitir consultas ao cache local,
    // sem acesso ao cache local as consultas recursivas são inúteis.
    allow-query-cache {
        permite-recursiva;
    };

    // Especifica quais hosts estão autorizados a fazer perguntas DNS comuns.
    allow-query { any; };

    // Especifica quais hosts estão autorizados a receber transferências de zona a partir do servidor.
    // Seu servidor Secundário, no nosso caso vou deixar então o ips dos dois servidores v4 e v6.
    allow-transfer {
        250.250.0.3;
        2000:fff:250:250:0::3;
    };
    also-notify {
        250.250.0.3;
        2000:fff:250:250:0::3;
    };

    // Esta opção faz com que o servidor slave ao fazer a transferência de zonas
    // mastes deste servidor nao compile o arquivo, assim no outro servidor o arquivo 
    // da zona terá um texto &quot;puro&quot;
    masterfile-format text;

    // Para evitar que vase a versao do Bind, definimos um nome
    version &quot;RR DNS Server&quot;;
};
</pre>
<p>Pronto nosso servidor Recursivo já está funcionando! Caso você não queria seu servidor sendo recursivo apenas altere allow-recursion e allow-query-cache para apenas localhost. Esta também será feita no servidor Slave (ns2).</p>
<p>Agora precisamos apenas dar um restart no bind para que as opções tenham efeito.</p>
<pre class="remontti-code"># /etc/init.d/bind9 restart</pre>
<p><strong>IP REVERSO (NS1 Master)</strong><br />
Vamos a configuração do nosso reverso. Particularmente gosto de dentro da pasta /etc/bind/ criar alguns diretórios quais separo as configurações.</p>
<pre class="remontti-code"># mkdir /etc/bind/reverse</pre>
<p>Somos &#8220;donos&#8221; do bloco 250.250.0.0/23 que representam dois blocos /24 (250.250.0.0/24 + 250.250.1.0/24). Para facilitar vou fazer a configuração em dois arquivos separando cada bloco /24. É possível colocar tudo em um mesmo arquivo? Sim, mais eu particularmente não gosto <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
Vamos ter que dar nomes a todos nossos 512 IPs representado pelo nosso /23, no exemplo não vou criar todos, vou por um [&#8230;] q representa que você deve completar com os demais ips, também vou usar como parado o nome para os IP o próprio endereço IP porém com um abreviação &#8220;rev-250-250-X-Y&#8221; com exceção nossos servidor já conhecido, ns1, ns2, mail &#8230; Vale lembrar que todos esses nomes de hosts serão configurado exatamente posterior na configuração sobre o domínio. Para que quando vc consulte o nome de um IP ele resolva em um nome e ao você consultar este nome ele resolva em um IP, por isso o nome de reverso!<br />
Primeiro arquivo 250.250.0.rev</p>
<pre class="remontti-code"># vim /etc/bind/reverse/250.250.0.rev</pre>
<p>Preste atenção em <strong>0.250.250.in-addr.arpa.</strong> essa linha (são duas no arquivo a baixo)  ela deve ser alterada com o inverso do seu IP, se seu bloco fosse ex.: 100.200.300.0/24 ficaria 300.200.100.in-addr.arpa. fica ligado <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;" /><br />
Outra coisa importante é o serial (2017010100) ele esta presente em todos os arquivos e deve ser alterado toda vez que for alterado. Ele segue o padrão [ano-mes-dia-sequencial].</p>
<pre class="remontti-code">
$ORIGIN .
$TTL 86400      ; 1 day
0.250.250.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                            2017010100 ; 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 0.250.250.in-addr.arpa.
0         PTR     250-250-0-000.remontti.net.br.
1         PTR     router-gw.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.
7         PTR     ns3.remontti.net.br.
8         PTR     250-250-0-8.remontti.net.br.
9         PTR     250-250-0-9.remontti.net.br.
10        PTR     250-250-0-10.remontti.net.br.
11        PTR     250-250-0-11.remontti.net.br.
;
; [...] complete com todos os IPs/Nomes
;
254       PTR     250-250-0-254.remontti.net.br.
255       PTR     250-250-0-255.remontti.net.br.
; fim
</pre>
<p>Segundo arquivo 250.250.1.rev <em>(observe 1.250.250.in-addr.arpa)</em></p>
<pre class="remontti-code"># vim /etc/bind/reverse/250.250.1.rev</pre>
<pre class="remontti-code">
$ORIGIN .
$TTL 86400      ; 1 day
1.250.250.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                            2017010100 ; 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 1.250.250.in-addr.arpa.
0         PTR     250-250-1-0.remontti.net.br.
1         PTR     250-250-1-1.remontti.net.br.
2         PTR     250-250-1-2.remontti.net.br.
3         PTR     250-250-1-3.remontti.net.br.
4         PTR     250-250-1-4.remontti.net.br.
5         PTR     250-250-1-5.remontti.net.br.
6         PTR     250-250-1-6.remontti.net.br.
7         PTR     250-250-1-7.remontti.net.br.
8         PTR     250-250-1-8.remontti.net.br.
9         PTR     250-250-1-9.remontti.net.br.
10        PTR     250-250-1-10.remontti.net.br.
;
; [...] complete com todos os IPs/Nomes
;
253       PTR     250-250-1-253.remontti.net.br.
254       PTR     250-250-1-254.remontti.net.br.
255       PTR     250-250-1-255.remontti.net.br.
; fim
</pre>
<p>Se possui bloco maiores e diferente, e com um padrão de nomes iguais o modo GENERATE ajuda muito, ficando da seguinte forma:</p>
<pre class="remontti-code">
;;;;;;;;;;;;;;;;;;;;;;;
;;;; 250.250.0.rev ;;;; 
;;;;;;;;;;;;;;;;;;;;;;;

$ORIGIN .
$TTL 86400      ; 1 day
0.250.250.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                            2017010100 ; 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 0.250.250.in-addr.arpa.
0         PTR     250-250-0-000.remontti.net.br.
1         PTR     router-gw.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.
7         PTR     ns3.remontti.net.br.

; Os gerados auto
$ORIGIN 0.250.250.in-addr.arpa.
$GENERATE 8-255 $ PTR 250-250-0-$.remontti.net.br.

;;;;;;;;;;;;;;;;;;;;;;;
;;;; 250.250.1.rev ;;;; 
;;;;;;;;;;;;;;;;;;;;;;;

$ORIGIN .
$TTL 86400      ; 1 day
1.250.250.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
                            2017010100 ; 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 1.250.250.in-addr.arpa.
$GENERATE 0-255 $ PTR 250-250-1-$.remontti.net.br.</pre>
<p>Barabada não!? <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>Não  podemos esquecer nosso reverso do IPv6! </strong></p>
<p>Terceiro arquivo 2000.fff.rev</p>
<pre class="remontti-code"># vim /etc/bind/reverse/2000.fff.rev</pre>
<pre class="remontti-code">
$TTL 86400      ; 1 day
@       IN      SOA     ns1.remontti.net.br. hostmaster.remontti.net.br. (
                                2017010100 ; 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.

1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa. IN PTR router-gw.remontti.net.br.
2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa. IN PTR ns1.remontti.net.br.
3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa. IN PTR ns2.remontti.net.br.
4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa. IN PTR www.remontti.net.br.
5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa. IN PTR zabbix.remontti.net.br.
6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa. IN PTR mail.remontti.net.br.
7.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa. IN PTR ns3.remontti.net.br.

;
; OU Mais compacto.
;

;$ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa.
;1	PTR 	router-gw.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.
;7   	PTR 	ns3.remontti.net.br.

</pre>
<p>Este site <a href="http://rdns6.com/hostRecord">http://rdns6.com/hostRecord</a> pode ser bem útil para gerar seus PTRs.<br />
Para finalizar acertando as permissões. </p>
<pre class="remontti-code"># chown  bind. -R /etc/bind/reverse</pre>
<p>Precisamos informar nossas zones &#8220;lincar nossos arquivos&#8221; para serem interpretado pelo bind, esse arquivo é o named.conf.local, como estamos configurando nosso servidor master essas zonas serão do tipo (type) master e para informar o arquivo onde está a configuração da zone usamos o parâmetro file /caminho-completo/arquivo</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<p>Adicione nele:</p>
<pre class="remontti-code">
// Reverso IPv4

zone &quot;0.250.250.in-addr.arpa&quot; {
        type master;
        file &quot;/etc/bind/reverse/250.250.0.rev&quot;;
};

zone &quot;1.250.250.in-addr.arpa&quot; {
        type master;
        file &quot;/etc/bind/reverse/250.250.1.rev&quot;;
};

// Reverso IPv6

zone &quot;f.f.f.0.0.0.0.2.ip6.arpa&quot; {
        type master;
        file &quot;/etc/bind/reverse/2000.fff.rev&quot;;
};
</pre>
<p>Restart o serviço.</p>
<pre class="remontti-code"># /etc/init.d/bind9 restart</pre>
<p>Vamos ver se ele já está resolvendo nosso IP então!</p>
<pre class="remontti-code"># dig -x 250.250.0.2 @localhost
# dig -x 2000:fff:250:250:0::2 @localhost
</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_151657.png" data-rel="lightbox-gallery-7uG9Y1g4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_151657-300x197.png" alt="screenshot_20161001_151657" width="300" height="197" class="alignnone size-medium wp-image-1461" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_151657-300x197.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_151657-768x504.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_151657-1024x672.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_151657.png 1148w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Vamos configurar agora nosso domínio autoritativo remontti.net.br.<br />
Para ficar organizado vou criar a pasta master também.</p>
<pre class="remontti-code"># mkdir /etc/bind/master
# chown  bind. -R /etc/bind/master</pre>
<p>Criamos então nosso arquivo remontti.net.br.hosts na pasta master.</p>
<pre class="remontti-code"># vim /etc/bind/master/remontti.net.br.hosts</pre>
<pre class="remontti-code">
$ORIGIN .
$TTL 86400      ; 1 day
remontti.net.br        IN SOA  ns1.remontti.net.br. hostmaster.remontti.net.br. (                                
                            2017010100 ; 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       250.250.0.4
                        AAAA    2000:fff:250:250:0::4
                        MX      20 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

rev-250-250-0-000      A       250.250.0.0
router-gw              A       250.250.0.1
                       AAAA    2000:fff:250:250:0::1
ns1                    A       250.250.0.2
                       AAAA    2000:fff:250:250:0::2
hostmaster             A       250.250.0.2
                       AAAA    2000:fff:250:250:0::2
ns2                    A       250.250.0.3
                       AAAA    2000:fff:250:250:0::3
www                    A       250.250.0.4
                       AAAA    2000:fff:250:250:0::4
ipv6                   AAAA    2000:fff:250:250:0::4
ftp                    A       250.250.0.4
                       AAAA    2000:fff:250:250:0::4
zabbix                 A       250.250.0.5
                       AAAA    2000:fff:250:250:0::5
mail                   A       250.250.0.6
                       AAAA    2000:fff:250:250:0::6
imap                   A       250.250.0.6
                       AAAA    2000:fff:250:250:0::6
pop                    A       250.250.0.6
                       AAAA    2000:fff:250:250:0::6
smtp                   A       250.250.0.6
                       AAAA    2000:fff:250:250:0::6
ns3                    A       250.250.0.7
                       AAAA    2000:fff:250:250:0::7
250-250-0-8      	A       250.250.0.8
250-250-0-9      	A       250.250.0.9
250-250-0-10      	A       250.250.0.10
;[...]
;[...]
; complete com toda a faixa do seu bloco 
; no nosso exemplo 250.250.0.0/23
;[...]
;[...]
250-250-0-254      	A       250.250.0.254
250-250-0-255      	A       250.250.0.255
250-250-1-0      	A       250.250.1.0
250-250-1-1      	A       250.250.1.1
;[...]
;[...]
250-250-1-254      	A       250.250.1.254
250-250-1-255      	A       250.250.1.255
; final
</pre>
<p><em><em>Usando GENERATE:</em> </em></p>
<pre class="remontti-code">$ORIGIN .
$TTL 86400      ; 1 day
remontti.net.br        IN SOA  ns1.remontti.net.br. hostmaster.remontti.net.br. (                                
                            2017010100 ; 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       250.250.0.4
                        AAAA    2000:fff:250:250:0::4
                        MX      20 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

250-250-0-0            A       250.250.0.0
router-gw              A       250.250.0.1
                       AAAA    2000:fff:250:250:0::1
ns1                    A       250.250.0.2
                       AAAA    2000:fff:250:250:0::2
hostmaster             A       250.250.0.2
                       AAAA    2000:fff:250:250:0::2
ns2                    A       250.250.0.3
                       AAAA    2000:fff:250:250:0::3
www                    A       250.250.0.4
                       AAAA    2000:fff:250:250:0::4
ipv6                   AAAA    2000:fff:250:250:0::4
ftp                    A       250.250.0.4
                       AAAA    2000:fff:250:250:0::4
zabbix                 A       250.250.0.5
                       AAAA    2000:fff:250:250:0::5
mail                   A       250.250.0.6
                       AAAA    2000:fff:250:250:0::6
imap                   A       250.250.0.6
                       AAAA    2000:fff:250:250:0::6
pop                    A       250.250.0.6
                       AAAA    2000:fff:250:250:0::6
smtp                   A       250.250.0.6
                       AAAA    2000:fff:250:250:0::6
ns3                    A       250.250.0.7
                       AAAA    2000:fff:250:250:0::7

; Os gerados auto
$ORIGIN remontti.net.br.
$GENERATE 8-255 250-250-0-$ A 250.250.0.$

; Os gerados auto
$ORIGIN remontti.net.br.
$GENERATE 8-255 250-250-1-$ A 250.250.1.$</pre>
<p>Criamos uma zone para nosso dominio remontti.net.br em named.conf.local</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<p>Adicione ao final do arquivo:</p>
<pre class="remontti-code">
// Zonas Master

zone &quot;remontti.net.br&quot; IN {
        type master;
        file &quot;/etc/bind/master/remontti.net.br.hosts&quot;;
};
</pre>
<p>Restart o serviço.</p>
<pre class="remontti-code"># /etc/init.d/bind9 restart</pre>
<p>Testamos agora para ver se está resolvendo nosso nomes</p>
<pre class="remontti-code"># dig ANY ns1.remontti.net.br @localhost
# host remontti.net.br
</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_152458.png" data-rel="lightbox-gallery-7uG9Y1g4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_152458-300x197.png" alt="screenshot_20161001_152458" width="300" height="197" class="alignnone size-medium wp-image-1463" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_152458-300x197.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_152458-768x504.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_152458-1024x672.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_152458.png 1148w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Parabéns! Seu servidor master está pronto!</p>
<p><strong>INSTALAÇÃO SERVIDOR DNS SLAVE (NS2)</strong></p>
<p>Praticamente o processo se repete, com algumas alterações.</p>
<pre class="remontti-code"># apt install bind9 dnsutils</pre>
<p>Alterar o DNS do servidor:</p>
<pre class="remontti-code"># vim  /etc/resolv.conf </pre>
<p>Altere para:</p>
<pre class="remontti-code">nameserver 127.0.0.1
search localhost</pre>
<p>Criamos um backup do named.conf.options</p>
<pre class="remontti-code"># cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bkp</pre>
<p>No named.conf.options unica coisa que vai alterar é em allow-transfer, como esse servidor é slave, ele não não tem a necessidade de informar o IP de outro(s) servidores que slaves. Como dito antes, se você não quiser que seu servidor seja recursivo apenas altere allow-recursion e allow-query-cache para localhost.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<pre class="remontti-code">
//ACLs (Access Control Lists)

// ACL &quot;permite-recursiva&quot; vão ficar os hosts estão autorizados a fazer consultas 
// recursivas através deste servidor.
acl permite-recursiva {
        127.0.0.1;
        ::1;
        250.250.0.0/23;
        2000:fff::/32;
        192.168.0.0/16;
        172.16.0.0/12;
        10.0.0.0/8;
};

options {
    // O diretório de trabalho do servidor
    // Quaisquer caminho não informado será tomado como  padrão este directório
    directory &quot;/var/cache/bind&quot;;

    //Suporte a DNSSEC
    dnssec-enable yes;
    dnssec-validation auto;

    // Conforme RFC1035
    // https://www.ietf.org/rfc/rfc1035.txt
    auth-nxdomain no;

    // Respondendo para IPv4 e IPv6
    // Porta 53 estará aberta para ambos v4 e v6
    listen-on { any; };
    listen-on-v6 { any; };

    // Limitação da taxa de resposta no sistema de nomes de domínio (DNS RRL)
    rate-limit {
        responses-per-second 15;
        window 5;
    };

    // Melhora o desempenho do servidor, reduzindo os volumes de dados de saída.
    // O padrão BIND é (no) não.
    minimal-responses yes;

    // Especifica quais hosts estão autorizados a fazer consultas recursivas através deste servidor.
    // Aqui que você vai informar os IPs da sua rede que você irá permitir consultar os DNS.
    allow-recursion {
        permite-recursiva;
    };

    // Endereço estão autorizados a emitir consultas ao cache local,
    // sem acesso ao cache local as consultas recursivas são inúteis.
    allow-query-cache {
        permite-recursiva;
    };

    // Especifica quais hosts estão autorizados a fazer perguntas DNS comuns.
    allow-query { any; };

    // Especifica quais hosts estão autorizados a receber transferências de zona a partir do servidor. 
    // Como esse já é o secundário, vamos deixar como none.
    allow-transfer { none; };

    // Esta opção faz com que o servidor slave ao fazer a transferência de zonas
    // mastes deste servidor nao compile o arquivo, assim no outro servidor o 
    // arquivo da zona tera um texto &quot;puro&quot;
    masterfile-format text;

    // Para evitar que vase a versao do Bind, definimos um nome
    version &quot;RR DNS Server&quot;;
};
</pre>
<p><strong>IP REVERSO (SLAVE)</strong></p>
<p>Para organizar criamos duas pastas slave-rev para nossos reveros e slave para nossos dominios slave e alteramos as <b>permissões para nosso user bind poder escrever nelas</b>.</p>
<pre class="remontti-code"># mkdir /etc/bind/slave-rev
# mkdir /etc/bind/slave
# chown  bind. -R /etc/bind/slave*</pre>
<p>Não é mais necessário criar os arquivos pois esses serão transferidos do nosso servidor master. Basta informarmos em nossas zonas do arquivo named.conf.local, que serão do tipo (slave) e apontaremos o IP do <strong>master</strong> para que nosso servidor slave faça a transferência do master.</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<p>Adicione nele:</p>
<pre class="remontti-code">
// Reverso IPv4

zone &quot;0.250.250.in-addr.arpa&quot; {
        type slave;
        file &quot;/etc/bind/slave-rev/250.250.0.rev&quot;;
        masters { 250.250.0.2; };
        allow-notify { 250.250.0.2; };

};

zone &quot;1.250.250.in-addr.arpa&quot; {
        type slave;
        file &quot;/etc/bind/slave-rev/250.250.1.rev&quot;;
        masters { 250.250.0.2; };
        allow-notify { 250.250.0.2; };
};

// Reverso IPv6

zone &quot;f.f.f.0.0.0.0.2.ip6.arpa&quot; {
        type slave;
        file &quot;/etc/bind/slave-rev/2000.fff.rev&quot;;
        masters { 2000:fff:250:250:0::2; };
        allow-notify { 2000:fff:250:250:0::2; };
};

// Zonas Slave

zone &quot;remontti.net.br&quot; IN {
        type slave;
        file &quot;/etc/bind/slave/remontti.net.br.hosts&quot;;
        masters { 250.250.0.2; };
        allow-notify { 250.250.0.2; };
};
</pre>
<p>Restart o serviço e veja se dentro dos diretórios slave e slave-rev os arquivos foram criados. </p>
<pre class="remontti-code"># /etc/init.d/bind9 restart
# ls -lh slave*
</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_154900.png" data-rel="lightbox-gallery-7uG9Y1g4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_154900.png" alt="screenshot_20161001_154900" width="702" height="178" class="alignnone size-full wp-image-1470" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_154900.png 702w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_154900-300x76.png 300w" sizes="auto, (max-width: 702px) 100vw, 702px" /></a></p>
<p>Vamos aos testes.</p>
<pre class="remontti-code"># dig -x 250.250.0.4 @localhost
# dig ANY ns1.remontti.net.br @localhost</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_155323.png" data-rel="lightbox-gallery-7uG9Y1g4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_155323-300x185.png" alt="screenshot_20161001_155323" width="300" height="185" class="alignnone size-medium wp-image-1471" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_155323-300x185.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_155323-768x473.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_155323-1024x630.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20161001_155323.png 1079w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>No nosso cenário temos um servidor de hospedagem nesse terei dois domínios, então também quero que meu servidor slave responda por eles. Para isso basta nos adicionar no nosso arquivo named.conf.local:</p>
<pre class="remontti-code"># vim /etc/bind/named.conf.local</pre>
<pre class="remontti-code">
// Zonas Slave do servidor de Hospedagem 

zone &quot;meudominio1.net.br&quot; {
        type slave;
        file &quot;/etc/bind/slave/meudominio1.com.br.hosts&quot;;
        masters { 250.250.0.7; };
        allow-notify { 250.250.0.7; };
};

zone &quot;meudominio2.net.br&quot; {
        type slave;
        file &quot;/etc/bind/slave/meudominio2.com.br.hosts&quot;;
        masters { 250.250.0.7; };
        allow-notify { 250.250.0.7; };
};
</pre>
<p>Restarte o bind e não esqueça que é necessário que seu servidor de hospedagem tenha o IP do seu servidor slave para poder fazer os allow-transfer.</p>
<p>Não esqueça também de alterar nas configurações da sua placa de rede dos seus servidores (dns-nameservers e dns-search).</p>
<pre class="remontti-code">
#
# /etc/network/interfaces
#
auto eth0
iface eth0 inet static
        address 186.250.168.14
        netmask 255.255.255.224
        network 186.250.168.0
        broadcast 186.250.168.31
        gateway 186.250.168.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 127.0.0.1
        dns-search localhost

iface eth0 inet6 static
        pre-up modprobe ipv6
        address 2000:fff:250:250:0::2
        netmask 64
        gateway 2000:fff:250:250:0::1
</pre>
<p><strong>DICA DE SEGURANÇA:</strong></p>
<p>As consultas recursivas são fechada para outros IPs que não esteja na sua ACL permetidos, porém esses IPs tem resposta com negação. Para visualizar esses logs faça o seguinte:</p>
<pre class="remontti-code"># vim /etc/bind/named.conf</pre>
<pre class="remontti-code">// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

logging {
    channel security_file {
        file &quot;/var/log/named/security.log&quot; versions 3 size 30m;
        severity dynamic;
        print-time yes;
    };
    category security {
        security_file;
    };
};

include &quot;/etc/bind/named.conf.options&quot;;
include &quot;/etc/bind/named.conf.local&quot;;
include &quot;/etc/bind/named.conf.default-zones&quot;;
</pre>
<p>Agora crie o diretório que ficarão os logs e de permissão:</p>
<pre class="remontti-code"># mkdir /var/log/named/
# chown bind. /var/log/named/
# /etc/init.d/bind9 restart</pre>
<p>Agora quando alguem não autorizado tentar usar seu DNS sera gerado um log.</p>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20170914_142429.png" data-rel="lightbox-gallery-7uG9Y1g4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20170914_142429-300x48.png" alt="" width="300" height="48" class="alignnone size-medium wp-image-2211" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20170914_142429-300x48.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20170914_142429-768x122.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20170914_142429-1024x163.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/10/Screenshot_20170914_142429.png 1143w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p>Agora vamos a instalação do fail2ban para coloca ordem na casa. </p>
<pre class="remontti-code"># apt install fail2ban</pre>
<p>Vamos habilitar o modulo para começar a proteção, vale lembrar que o modulo SSH já vem ativo por padrão. </p>
<p><strong>Debian 9</strong></p>
<pre class="remontti-code">#vim /etc/fail2ban/jail.d/defaults-debian.conf</pre>
<pre class="remontti-code">
	[sshd]
	enabled = true

	[named-refused]
	enabled = true</pre>
<p>Para debian 8 altere as linhas no arquivo <em>/etc/fail2ban/jail.conf</em>.</p>
<p>Se você gosta da coisa &#8220;violenta&#8221; como eu mude o padrão para DROP!</p>
<pre class="remontti-code"># vim /etc/fail2ban/action.d/iptables-multiport.conf</pre>
<p>Procure:</p>
<pre class="remontti-code">
actionban = &lt;iptables&gt; -I f2b-&lt;name&gt; 1 -s &lt;ip&gt; -j &lt;blocktype&gt;
# Altere para:
actionban = iptables -A INPUT -s &lt;ip&gt; -j DROP

actionunban = &lt;iptables&gt; -D f2b-&lt;name&gt; -s &lt;ip&gt; -j &lt;blocktype&gt;
# Altere para:
actionunban = iptables -D INPUT -s &lt;ip&gt; -j DROP
</pre>
<p>Agora reinicie o serviço</p>
<pre class="remontti-code"># /etc/init.d/fail2ban restart</pre>
<p>Os IPs que tiverem tentando usar seu DNS serão avisado 5x depois irão tomar um DROP <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;" /><br />
Para ver as regras do iptables use:</p>
<pre class="remontti-code"># iptables -nL</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2016/10/fail2ban.png" data-rel="lightbox-gallery-7uG9Y1g4" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2016/10/fail2ban-300x156.png" alt="" width="300" height="156" class="alignnone size-medium wp-image-2219" srcset="https://blog.remontti.com.br/wp-content/uploads/2016/10/fail2ban-300x156.png 300w, https://blog.remontti.com.br/wp-content/uploads/2016/10/fail2ban-768x398.png 768w, https://blog.remontti.com.br/wp-content/uploads/2016/10/fail2ban-1024x531.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2016/10/fail2ban.png 1118w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p><strong>DICA <a href="https://www.iana.org/domains/root/servers" rel="noopener noreferrer" target="_blank">ROOT SERVERS</a> E <a href="https://tools.ietf.org/html/rfc5011" rel="noopener noreferrer" target="_blank">KEYs</a> ATUALIZADO:</strong><br />
Atualize os root servers ele é a alma do seu servidor. Faça isso tanto nos Master quanto no Slave.</p>
<pre class="remontti-code"># mv /etc/bind/db.root /etc/bind/db.root.`date +%Y%m%d`
# wget https://www.internic.net/domain/named.root -O /etc/bind/db.root --no-check-certificate
# mv /etc/bind/bind.keys /etc/bind/bind.keys.`date +%Y%m%d`
# wget https://ftp.isc.org/isc/bind9/keys/9.11/bind.keys.v9_11 -O /etc/bind/bind.keys --no-check-certificate
# /etc/init.d/bind9 restart</pre>
<p>Dica de leitura:<br />
<em><a href="https://pt.wikipedia.org/wiki/Servidor-raiz" rel="noopener noreferrer" target="_blank">https://pt.wikipedia.org/wiki/Servidor-raiz</a></em></p>
<p><strong>NÃO TEM IPv6 CONFIGURADO?:</strong><br />
Se seu servidor não tiver IPv6 configurado recomendo que desative o ipv6 no bind (o que é triste) mas se não tem&#8230; </p>
<pre class="remontti-code"># vim /etc/default/bind9</pre>
<p>em <strong>OPTIONS=&#8221;-u bind&#8221;</strong> adicione um -4 <strong>OPTIONS=&#8221;<font color=red>-4</font> -u bind&#8221;</strong></p>
<pre class="remontti-code"># vim /etc/bind/named.conf.options</pre>
<p>listen-on-v6 { any; };<br />
#para:<br />
listen-on-v6 { none; };</p>
<p><strong>FIM! <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;" /></strong></p>
<p>Gostou? Deixe seu comentário ficarei feliz em saber que lhe ajudei, e se tiver qualquer pergunta deixe-a também, se preferir acesse o menu <a href="https://blog.remontti.com.br/meucontato">Consultoria</a> lá você encontra meios de falar comigo!</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>Abraço!</p>
<p>Fonte: <a href="https://ftp.isc.org/isc/bind/9.9.5/doc/arm/">https://ftp.isc.org/isc/bind/9.9.5/doc/arm/</a><br />
<a href="http://www.zytrax.com/books/dns/ch7/statements.html" rel="noopener noreferrer" target="_blank">http://www.zytrax.com/books/dns/ch7/statements.html</a></p>
<p><strong>EXEMPLOS EXTRAS:</strong><br />
Delegando um bloco menor ex /26 para outros servidor.</p>
<p>Entenda melhor. Assista: https://www.youtube.com/watch?v=VIa1dHtmQ4U (~20min)</p>
<p>Base: rfc2317:</p>
<pre class="remontti-code">
$ORIGIN 2.0.192.in-addr.arpa.
@       IN      SOA     my-ns.my.domain. hostmaster.my.domain. (...)
;...
;  &lt;&lt;0-127&gt;&gt; /25
0/25            NS      ns.A.domain.
0/25            NS      some.other.name.server.
;
1               CNAME   1.0/25.2.0.192.in-addr.arpa.
2               CNAME   2.0/25.2.0.192.in-addr.arpa.
3               CNAME   3.0/25.2.0.192.in-addr.arpa.
;
;  &lt;&lt;128-191&gt;&gt; /26
128/26          NS      ns.B.domain.
128/26          NS      some.other.name.server.too.
;
129             CNAME   129.128/26.2.0.192.in-addr.arpa.
130             CNAME   130.128/26.2.0.192.in-addr.arpa.
131             CNAME   131.128/26.2.0.192.in-addr.arpa.
;
;  &lt;&lt;192-255&gt;&gt; /26
192/26          NS      ns.C.domain.
192/26          NS      some.other.third.name.server.
;
193             CNAME   193.192/26.2.0.192.in-addr.arpa.
194             CNAME   194.192/26.2.0.192.in-addr.arpa.
195             CNAME   195.192/26.2.0.192.in-addr.arpa.

$ORIGIN 0/25.2.0.192.in-addr.arpa.
@       IN      SOA     ns.A.domain. hostmaster.A.domain. (...)
@               NS      ns.A.domain.
@               NS      some.other.name.server.
;
1               PTR     host1.A.domain.
2               PTR     host2.A.domain.
3               PTR     host3.A.domain.
</pre>
<p>O post <a href="https://blog.remontti.com.br/1397">Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9)  [Descontinuado]</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/1397/feed</wfw:commentRss>
			<slash:comments>160</slash:comments>
		
		
			</item>
	</channel>
</rss>
