Como configurar um servidor DNS Response Policy Zone (RPZ) + Shallalist
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 impedir exemplo que hosts infectados por malwares entre outros casos como sites pornográficos tenham a resolução de nomes bloqueando.
O DNS RPZ é uma tecnologia desenvolvida pelo ISC disponível desde a versão 9.8 do Bind.
Muitas pessoas se referem ao DNS RPZ como um “DNS Firewall”. ISPs estão testando e implementando isso para fornecer proteção adicional aos seus clientes. Um bom exemplo é o OpenDNS Family Shield que utiliza deste recurso.
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.
Instalação do servidor DNS será com base no tutorial: Servidor DNS seguro com Bind9 (Recursivo, Autoritativo e Reverso) + Fail2ban + nftables no Debian 10 Buster
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 citado acima.
# vim /etc/network/interfaces
Ajuste sua interface de rede:
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
Instalando Bind9
# su - # apt install bind9 dnsutils # echo "nameserver 127.0.0.1" > /etc/resolv.conf # cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bkp # echo > named.conf.options # vim /etc/bind/named.conf.options
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 "/var/cache/bind"; 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 "RR DNS Server"; };
Instalando Fail2ban
# apt install nftables fail2ban # vim /etc/fail2ban/jail.conf
Altere:
#banaction = iptables-multiport #banaction_allports = iptables-allports banaction = nftables-allports banaction_allports = nftables-allports
# vim /etc/fail2ban/action.d/nftables-allports.conf
Altere:
#nftables_mode = meta l4proto <protocol> nftables_mode =
# vim /etc/fail2ban/action.d/nftables-common.conf
Altere:
#blocktype = reject blocktype = drop
# vim /etc/fail2ban/filter.d/bind9.conf
Crie:
# 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]+)? <HOST>#\S+( \([\S.]+\))?: <F-CONTENT>.+</F-CONTENT>$ failregex = ^(view (internal|external): )?query(?: \(cache\))? '.*' denied\s*$ ^zone transfer '\S+/AXFR/\w+' denied\s*$ ^bad zone transfer request: '\S+/IN': non-authoritative zone \(NOTAUTH\)\s*$ ignoreregex = # DEV Notes: # Author: Rudimar Remontti
# vim /etc/fail2ban/jail.d/bind9.conf
Crie:
[bind9] enabled = true port = domain,953 protocol = tcp logpath = /var/log/named/security.log bantime = 24h maxretry = 1
# vim /etc/bind/named.conf
Adicione:
// 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 "/var/log/named/security.log" versions 3 size 30m; severity dynamic; print-time yes; }; channel file_log { file "/var/log/named/named.log" 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 "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones";
# 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
DNS configurado e seguro! Vamos as configurações do RPZ.
RPZ
Primeiramente vamos supor que o servidor DNS tenha o IP 45.80.50.5 / 2804:f123:bebe:cafe::5, Então acesse seu servidor DNS MASTER responsável pelo domínio autoritativo e crie um subdomínios chamado exemplo “umbrella“. Também pode alterar o nome no reverso.
# vim /var/cache/bind/master-aut/SEUDOMINIO.hosts
//... 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 //...
Voltando para o servidor DNS RPZ
Crie uma zona chamada rpz.zone
# vim /etc/bind/named.conf.local
Adicione:
// // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; zone "rpz.zone" { type master; file "/var/cache/bind/rpz/db.rpz.zone"; allow-query {none;}; };
# vim /etc/bind/named.conf.options
Adicione o response-policy
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 "/var/cache/bind"; dnssec-enable yes; dnssec-validation auto; auth-nxdomain no; listen-on { any; }; listen-on-v6 { any; }; response-policy { zone "rpz.zone" 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 "RR DNS Server"; };
Vamos criar o arquivo qual vai ter todos nossos hosts (Domínios) bloqueados.
# mkdir /var/cache/bind/rpz/ # ln -s /var/cache/bind/rpz/ /etc/bind/ # vim /var/cache/bind/rpz/db.rpz.zone
No exemplo vou adicionar alguns sites pornos.
$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 .
# chown bind. /var/cache/bind/rpz/ -R
Reinicie o serviço e verifique se o mesmo está rodando sem nenhum erro.
# systemctl restart bind9 # systemctl status bind9
Vamos fazer um teste para ver se os domínios acima estão sendo direcionado para o nosso IP:
# dig redtube.com @localhost
; <<>> DiG 9.11.5-P4-5.1-Debian <<>> redtube.com @localhost ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- 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
Testado subdomínios:
# 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
Seu DNS RPZ já está funcional.
Mas seria legal instalarmos um Serviço Web 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.
Você pode acessar os tutoriais para saber mais sobre servidor web e domínios virtuais:
– Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 Buster “LAMP”
– Como ter diversos sub/domínios no mesmo servidor? (Domínios virtuais com Apache2)
Instalando o Apache2+PHP
# apt install apache2 apache2-utils libapache2-mod-php php
Por segurança recomendo remover a assinatura do servidor:
# sed -i 's/ServerTokens OS/ServerTokens Prod/' /etc/apache2/conf-available/security.conf # sed -i 's/ServerSignature On/ServerSignature Off/' /etc/apache2/conf-available/security.conf
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.
# vim /etc/apache2/sites-available/000-default.conf
Faça as devidas alterações, não esqueça de alterar em Require ip alterar para os IPs que você vai autorizar as conexões. Seu arquivo 000-default.conf vai ficas assim:
<virtualhost *:80> 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 <Directory /var/www/html/> 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 </Directory> LogLevel warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </virtualhost>
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 tutorial usando letsencrypt), 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:
# vim /etc/apache2/sites-available/000-default-ssl.conf
Adicione:
<IfModule mod_ssl.c> <VirtualHost _default_:443> 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 <Directory /var/www/html/> 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 </Directory> 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 </VirtualHost> </IfModule>
# a2ensite 000-default-ssl.conf # a2enmod http2 rewrite ssl # systemctl restart apache2
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!
html.tar
# 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
Altere o nome da empresa/site, substitua também o arquivo do logo.
$empresa = "Remontti"; $site="http://www.remontti.com.br";
Caso você não gostou da página sinta-se livre para criar a sua própria, a ideia é apenas demonstrar como faze-la.
Hora de ver funcionar 🙂
Altere o DNS do seu computador para o IP do seu servidor RPZ e acesse um site proibido!
BINGO! 😛
Mas como fazer para saber tantos domínios? Bom existe uma lista chamada shallalist 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 donwload da lista teremos varias pastas divididas em categorias:
├── 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
Montei um script para ler esses arquivos e montar nosso arquivo db.rpz.zone com base na shallalist. 🙂 Aceito presente depois dessa!
Para ficar organizado vamos criar uma pasta chamada script-rpz
# mkdir /etc/bind/script-rpz # cd /etc/bind/script-rpz
Vamos criar um arquivo rpz.pl em linguagem perl para montar nosso arquivo db.rpz.zone.
No arquivo ajuste para as listas que desejar, no exemplo vou usar as: drugs, hacking, porn, spyware, violence, warez. Também seu domínios RPZ.
# vim /etc/bind/script-rpz/rpz.pl
#!/usr/bin/perl -w # # Shallalist DNS RPZ # # Ex de uso: # perl rpz.pl (no arg, creates NXDOMAIN CNAME ".") # perl rpz.pl A 192.168.2.1 (creates "A" redirect) # perl rpz.pl CNAME nowhere.local (creates "CNAME" redirect) # perl rpz.pl CNAME CATEGORY.local (creates category "CNAME" redirect) use strict; use warnings; my ($urls); my @categories = ('drugs','hacking','porn','spyware','violence','warez'); for my $c (0 .. (scalar(@categories) - 1)) { #open (my $list,'<',"blacklists/$categories[$c]/domains"); open (my $list,'<',"BL/$categories[$c]/domains"); chomp(my @domains = <$list>); close($list); for my $d (0 .. (scalar(@domains) - 1)) { $urls->{lc($domains[$d])} = $categories[$c]; } } open (my $db,'>',"./db.rpz.zone"); print $db '$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 . ; '; while (my ($key, $value) = each(%$urls) ) { my $redirect = 'CNAME .'; if (defined($ARGV[0]) and defined($ARGV[1])) { $redirect = uc($ARGV[0]) . ' ' . $ARGV[1]; if ($ARGV[1] =~ m/CATEGORY/) { $redirect =~ s/CATEGORY/$value/; } } if (substr($key,0,1) ne '.') { print $db $key . ' IN ' . $redirect . "\n"; print $db '*.' . $key . ' IN ' . $redirect . "\n"; } } close($db); exit; __END__
Próximo passo é criar o um shell script chamado gera.rpz.sh 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.
# vim /etc/bind/script-rpz/gera.rpz.sh
#!/bin/sh sleep 1 echo echo "Baixando lista shallalist" wget http://www.shallalist.de/Downloads/shallalist.tar.gz tar -zxf shallalist.tar.gz sleep 1 echo echo "Preparando Lista: DROGAS" 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 "^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}.*" >> /etc/bind/script-rpz/BL/drugs/domains sleep 1 echo "Preparando Lista: HACKING" 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 "^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}.*" >> /etc/bind/script-rpz/BL/hacking/domains sleep 1 echo "Preparando Lista: PORNOS" 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 "^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}.*" >> /etc/bind/script-rpz/BL/porn/domains sleep 1 echo "Preparando Lista: SPYWARE" 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 "^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}.*" >> /etc/bind/script-rpz/BL/spyware/domains sleep 1 echo "Preparando Lista: VIOLENCIA" 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 "^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}.*" >> /etc/bind/script-rpz/BL/violence/domains sleep 1 echo "Preparando Lista: PIRATARIA ILEGAL E VIRUS" 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 "^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}.*" >> /etc/bind/script-rpz/BL/warez/domains cd /etc/bind/script-rpz/ echo echo "Gerando db.rpz.zone" perl rpz.pl echo echo "Removendo arquivos desnecessarios" rm -rf BL/ rm -f shallalist.tar.gz echo echo "Corrigindo enderecos invalidos" sed -i -e 's/www.battleit.ee\/tpb/battleit.ee/' /etc/bind/script-rpz/db.rpz.zone sed -i -e 's/battleit.ee"/battleit.ee/' /etc/bind/script-rpz/db.rpz.zone sed -i -e 's/freebiggals.net./freebiggals.net/' /etc/bind/script-rpz/db.rpz.zone SEQUENCIAL=`date +%Y%m%d00` sed -i -e "s/9999999999/$SEQUENCIAL/" /etc/bind/script-rpz/db.rpz.zone echo echo "Verificando se tem algum erros no arquivo db.rpz.zone" named-checkzone localhost /etc/bind/script-rpz/db.rpz.zone echo echo "Caso tenha algum erro do tipo: ignoring out-of-zone edite este script e adicione ele como" echo "no exemplo dos dominios corrigindos com o comando sed -i -e ......" echo echo "Se voce recebeu um OK na verificacao" echo "Agora basta mover db.rpz.zone /var/cache/bind/rpz/ e reinicie o bind" echo echo "Comandos:" echo "# mv /var/cache/bind/rpz/db.rpz.zone /var/cache/bind/rpz/db.rpz.zone.`date +%Y%m%d`" echo "# mv /etc/bind/script-rpz/db.rpz.zone /var/cache/bind/rpz/" echo "# systemctl restart bind9"
De permissões entre no diretório do nosso script e execute o mesmo, fique atento se der algum erro!
# chmod +x /etc/bind/script-rpz/gera.rpz.sh # cd /etc/bind/script-rpz/ # sh gera.rpz.sh
Vai retornar:
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%[============================================================================>] 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
Note que a linha 28 recebemos um OK isso significa que nosso arquivo está apto para ser usado!
Como descrito vamos primeiro gerar um bkp do nosso antigo db.rpz.zone.DATA_HJ
# mv /var/cache/bind/rpz/db.rpz.zone /var/cache/bind/rpz/db.rpz.zone.`date +%Y%m%d`
Em seguida mover o novo db.rpz.zone e restartar o bind.
# mv /etc/bind/script-rpz/db.rpz.zone /var/cache/bind/rpz/ # systemctl restart bind9
Uau agora temos mais de um milhão de domínios em nosso RPZ!
Uma boa fonte de hosts você pode encontrar aqui.
Espero que tenha gostado! 🙂
Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!
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 clique aqui.
Abraço!
Primeiramente, ótimo artigo. Sempre bem explicado e bem ilustrado!
Tenho um autritativo aqui e não sei se serviria para o que gostaria de fazer. Tenho na rede “uma coleção” de URLs para acessar os equipamentos da infra. Gostaria de saber se, usando o recurso RPZ conseguiria fazer com que os clientes/internet (sou de um ISP) não conseguissem resolver essas URLs e só os host/redes autorizadas conseguissem essa resolução. Consigo fazer com o RPZ?
Desde já, muito obrigado pelas postagens.
pode ser configurado no mesmo servidor master?
“Sim”
Interessante, é possível redirecionar qualquer acesso para uma pagina, ex: no provedor o cliente não fez o pagamento então gostaria de exibir uma pagina de bloqueio para ele, então qualquer host que ele acessar iria exibir a pagina de bloqueio.
Uma ideia é bloquear os ADS. Lista https://github.com/AdAway/AdAway/wiki/HostsSources
Não consigo usar esses dois comandos
a2ensite 000-default-ssl.conf
# a2enmod http2 rewrite ssl
o sistema diz que não encontrou o comando, alguém mais se deparou com esse erro??
Você precisa virar root com
# su -
Vlw Rudimar consegui, realmente eu estava querendo usar o comando sem os privilégios de Root
Demonstro muito obrigado por mais um belíssimo tutorial, com certeza irei fazer bom proveito dele. Acompanho seu blog desde a postagem de como configurar o bind, e desde então a cada novo tutorial me surpreendo mais e mais com o conhecimento que você compartilha !!!