sexta-feira, 5 de maio de 2023

Tutorial Servidor DNS Recursivo Unbound Debian 11 Bullseye



Saudações, hoje vou deixar aqui como criar um proxy-cache utilizando o Debian Bullseye junto com unbound para consultas dns recursivo.


Atualize o servidor com os comandos:


apt update
apt upgrade


Instalar pacotes necessários para o funcionamento do servidor:

apt install dnsutils build-essential libssl-dev wget

Instale o unbound:

apt install unbound

Agora acesse o diretório do servidor unbound:

cd /etc/unbound

 Faça o download do arquivo "named.cache" com a lista atualizada dos "root servers".

wget ftp://ftp.internic.net/domain/named.cache

Execute o comando "unbound-control-setup" para gerar os arquivos de chaves necessárias para o TLS.

unbound-control-setup

Altere o proprietário da pasta "/etc/unbound" e também as permissões:

chown unbound:root unbound_* ; chmod 440 unbound_*

Agora vamos editar as configurações do unbound.conf, necessário para permitir o funcionamento do mesmo:

nano unbound.conf

Inclua o conteúdo no arquivo, edite conforme a necessidade (numero de processadores e blocos de ips):

include-toplevel: "/etc/unbound/unbound.conf.d/*.conf"
server:
chroot: ""
logfile: /var/log/unbound.log
verbosity: 0
num-threads: 4
log-queries: no
directory: "/etc/unbound"
username: unbound
interface: ::0
interface: 0.0.0.0
interface: 127.0.0.1
interface: ::1
access-control: 0.0.0.0/0 refuse
access-control: 127.0.0.0/8 allow
access-control: 100.64.0.0/10 allow
access-control: 192.168.0.0/16 allow
access-control: 172.16.0.0/12 allow
access-control: 10.0.0.0/8 allow
access-control: 198.18.0.0/22 allow
access-control: 2001:db8::/32 allow
port: 53
do-udp: yes
do-tcp: yes
do-ip4: yes
do-ip6: yes

auth-zone:
 name: "."
 master: 192.228.79.201 # b.root-servers.net
 master: 192.33.4.12 # c.root-servers.net
 master: 192.5.5.241 # f.root-servers.net
 master: 192.112.36.4 # g.root-servers.net
 master: 193.0.14.129 # k.root-servers.net
 master: 192.0.47.132 # xfr.cjr.dns.icann.org
 master: 192.0.32.132 # xfr.lax.dns.icann.org
 master: 2001:500:84::b # b.root-servers.net
 master: 2001:500:2f::f # f.root-servers.net
 master: 2001:7fd::1 # k.root-servers.net
 master: 2620:0:2830:202::132 # xfr.cjr.dns.icann.org
 master: 2620:0:2d0:202::132 # xfr.lax.dns.icann.org
 fallback-enabled: yes
 for-downstream: no
 for-upstream: yes
for-upstream: yes
 zonefile: "root.zone"
 forward-zone:
    name: "."
    forward-addr: 1.0.0.1
    forward-addr: 8.8.4.4


Verifique se encontra algum erro em seu "unbound.conf" com o comando:


unbound-checkconf /etc/unbound/unbound.conf


Caso esteja em um container no proxmox, que usa uma configuração diferente para entrega do DNS, rode os comandos a seguir, caso não utilize, pode pular esta etapa dos dois comandos e reiniciar o serviço do unbound:

systemctl stop systemd-resolved

systemctl disable systemd-resolved



Reiniciar o serviço do unbound:

service unbound restart


Altere o arquivo de DNS, apontando a loopback (local) do servidor:

nano /etc/resolv.conf


deixe somente assim:

nameserver 127.0.0.1


Firewall:

Edite o arquivo do NFtables:

nano /etc/nftables.conf


Inclua o conteúdo no arquivo:

#!/usr/sbin/nft -f

  

flush ruleset

 

table inet filter {

 

    set acesso-dns4 {

        flags interval

        type ipv4_addr

        elements = { 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, 198.18.0.0/22 }

    }

    set acesso-dns6 {

        flags interval

        type ipv6_addr

        elements = { ::1, 2001:db8::/32 }

    }

    chain input {

        type filter hook input priority 0;

 

        # Permite Acesso DNS na porta 53

        ip saddr  @acesso-dns4 udp dport 53 counter accept

        ip saddr  @acesso-dns4 tcp dport 53 counter accept

        ip6 saddr @acesso-dns6 udp dport 53 counter accept

        ip6 saddr @acesso-dns6 tcp dport 53 counter accept

        udp dport 53 counter drop

        tcp dport 53 counter drop

 

        type filter hook input priority 0;

    }

    chain forward {

        type filter hook forward priority 0;

    }

    chain output {

        type filter hook output priority 0;

    }

}



Reiniciar o firewall:

systemctl enable nftables
systemctl restart nftables


[BONUS]: REDIRECIONAMENTO DE SITES BLOQUEADOS POR ORDEM JUDICIAL:

apt install nginx

edite arquivo nano /etc/nginx/sites-available/default, adicionando a configuração abaixo:

########Configuração Ngnix arquivo Default

server {
    listen 80;
    listen [::]:80;
    server_name site.bloqueado.com.br;

    return 301 https://www.pcdf.df.gov.br/alerta-de-golpe$request_uri;
}

server {
    listen 80;
    listen [::]:80;
    server_name outrositebloqueado.com.br;

    return 301 https://www.pcdf.df.gov.br/alerta-de-golpe$request_uri;
}


Editar arquivo unbound.conf adicionando os parâmetros abaixo;


##############Zonas Estáticas Unbound#################
forward-zone:
    name: "."
    forward-addr: 172.16.251.53   # my DNS server
    forward-addr: 8.8.8.8   # my other DNS server
server:
    local-data: "site.bloqueado.com.br IN A 172.16.251.53"
    local-data-ptr: "172.16.251.53 site.bloqueado.com.br"

server:
    local-data: "outrositebloqueado.com.br. IN A 172.16.251.53"
    local-data-ptr: "172.16.251.53 outrositebloqueado.com.br"


Obs: troque o 172.16.251.53 em todas configurações pelo ip do seu servidor DNS.

Créditos e agradecimentos

Juliano Oliveira por trocar ideias e configurações do unbound.
Rudimar Remontti pela etapa do firewall NFTables

Desbloqueio OLT Huawei

 Além da antiga linha MA56XX R017 e R018, desbloqueamos OLTs da linha MA5800 sendo a X2 X7 X15 ou X17. Todas as controladoras MPLA, MPLB, MP...