Uso de dns-suffix para redirecionamento informativo

Em vez de bloquear um domínio com NXDOMAIN, pode-se configurar uma política do tipo dns-suffix que redirecione o usuário para uma página informativa (por exemplo, um portal governamental).

Esse mecanismo funciona em duas partes:

  1. Configuração no resolvedor (RPZ): Define-se uma política do tipo add-suffix na seção Blackhole Domains. Por exemplo, para uma consulta a badsite.com, o resolvedor responderá com um CNAME como:

    badsite.com.prohibited.domain.com.
    
  2. Configuración en la zona DNS del dominio receptor: En la zona prohibited.domain.com, se debe crear la siguiente entrada wildcard:

    * IN A xxx.xxx.xxx.xxx
    

    Isso garante que qualquer subdomínio como badsite.com.prohibited.domain.com resolva para o IP do servidor web que irá gerenciar o redirecionamento.

  3. Configuração do servidor web (nginx): No servidor web que responde em xxx.xxx.xxx.xxx, deve-se criar um vhost do nginx que capture qualquer subdomínio sob prohibited.domain.com e redirecione para o site desejado.

    A seguir, é mostrado um exemplo completo do nginx.conf:

    server {
        listen 80;
        server_name .prohibited.domain.com;
        location / {
            return 301 https://government-portal.com;
        }
    }
    
    server {
        listen 443 ssl;
        server_name .prohibited.domain.com;
        ssl_certificate     /etc/nginx/ssl/fullchain.pem;
        ssl_certificate_key /etc/nginx/ssl/privkey.pem;
        location / {
            return 301 https://government-portal.com;
        }
    }
    

Com essa configuração, os usuários que tentarem acessar domínios proibidos serão redirecionados para uma página explicativa, em vez de simplesmente receberem um erro DNS.

Configurar certbot para la generacion de certificados

Se detallan los pasos a seguir en Debian para la generacion de certificados SSL para ser puestos en Nginx

apt install certbot

Instalar un servidor en una IP p.ej. 1.2.3.4

Poner un registro A de servidor.dominio.com apuntando a 1.2.3.4

Poner un registro CAA que diga «issue 0 letsencrypt.org»

El puerto 80 debe estar libre de firewall

Ejecutar:

systemctl list-timers | grep certbot

Esto es para para asegurarse que haya un timer de renovación de certbot.

Editar el siguiente archivo:

/etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh
chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

Dentro de ese archivo poner:

#!/bin/bash
cp /etc/letsencrypt/live/servidor.dominio.com/fullchain.pem /etc/ssl/certs/fullchain.pem
cp /etc/letsencrypt/live/servidor.dominio.com/privkey.pem /etc/ssl/private/privkey.pem
systemctl reload nginx

Dentro del nginx configurar:

server {
    listen 443 ssl;
    server_name ~^(.+\.)*servidor\.dominio\.com$;

    ssl_certificate     /etc/ssl/certs/fullchain.pem;
    ssl_certificate_key /etc/ssl/private/privkey.pem;

    return 301 https://servidor.dominio.com$request_uri;
}


server {
    listen 443 ssl http2;
    server_name servidor.dominio.com;

    ssl_certificate     /etc/ssl/certs/fullchain.pem;
    ssl_certificate_key /etc/ssl/private/privkey.pem;

    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256';
    ssl_prefer_server_ciphers on;

    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 10m;

    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

    location / {
       root /var/www/html;
       index index.html index.htm;
       }
 }