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:
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.
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.
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;
}
}