<?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 Policy - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/policy/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/policy</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Tue, 09 Nov 2021 12:35:06 +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 Policy - Remontti</title>
	<link>https://blog.remontti.com.br/tag/policy</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Como configurar um servidor DNS Response Policy Zone (RPZ) + Shallalist</title>
		<link>https://blog.remontti.com.br/3692</link>
					<comments>https://blog.remontti.com.br/3692#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 15 Oct 2019 00:07:53 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[bind9]]></category>
		<category><![CDATA[buster]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian10]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[isc]]></category>
		<category><![CDATA[Policy]]></category>
		<category><![CDATA[Response]]></category>
		<category><![CDATA[Response Policy Zone]]></category>
		<category><![CDATA[rpz]]></category>
		<category><![CDATA[umbrella]]></category>
		<category><![CDATA[Zone]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3692</guid>

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