Uso de `dns-suffix` para redirección informativa ================================================= Para poder llegar a esta opcion debemos dirigirnos a la opcion **Blackhole Domains** que se encuentra en el panel izquierdo dentro de Resolvers. Y desde ahi hacer click en el boton **+RPZ-Policy**. .. image:: _images/2-add-suffix.png En lugar de bloquear un dominio con `NXDOMAIN`, puede configurarse una política de tipo `add-suffix` que permita redirigir al usuario a una página informativa (por ejemplo, un portal gubernamental). .. image:: _images/3-add-suffix.png Este mecanismo funciona en dos partes: 1. **Configuración en el resolver (RPZ)**: Se define una política de tipo `add-suffix` en la sección *Blackhole Domains*. Por ejemplo, ante una consulta a `badsite.com`, el resolver responderá con un 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 <--(ip del servidor web) Esto asegura que cualquier subdominio como `badsite.com.prohibited.domain.com` resuelva a la IP del servidor web que gestionará la redirección. 3. **Configuración del servidor web (nginx)**: En el servidor web que responde en `xxx.xxx.xxx.xxx`, se debe crear un *vhost* de nginx que capture cualquier subdominio bajo `prohibited.domain.com` y redirija al sitio deseado. A continuación se muestra un ejemplo completo del `nginx.conf`: .. code-block:: nginx 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; } } Con esta configuración, los usuarios que intenten acceder a dominios prohibidos serán redirigidos a una página explicativa, en lugar de recibir simplemente un error 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 .. code:: bash 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" .. code:: bash sudo certbot certonly --standalone -d servidor.dominio.com El puerto 80 debe estar libre de firewall Ejecutar: .. code:: bash systemctl list-timers | grep certbot Esto es para para asegurarse que haya un timer de renovación de certbot. Editar el siguiente archivo: .. code:: bash /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh Dentro de ese archivo poner: .. code:: bash #!/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 .. warning:: NO configurar el puerto 80 en nginx, dado que se utiliza para certbot letsencrypt. Dentro del nginx configurar: .. code:: bash 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; } }