.. \_requerimientos\_resolvers: Requerimientos para resolvers on-premise ======================================== Planisys se encargará de preparar servidores on-premise para formar parte de su infraestructura ligada a un Reseller o Tenant de PDNS. .. note:: Se requiere instalar un servidor Debian12 en inglés con locale UTF-8, NO instalar ningún paquete, y en la medida que no contradiga las políticas de la empresa, NO instalar Firewall. .. warning:: Planisys se hará cargo de la instalación y segurización del server una vez entregado a Planisys con acceso root. En caso de contar con firewall externo -------------------------------------- En principio se deberá permitir acceso a las IPs 190.185.104.222, 209.127.217.3, 190.185.104.132, 190.185.107.248, 179.63.248.252, 179.63.248.250, 179.63.248.92, 2803:bc00::81 en puertos **22022** y 53 (entrante) mínimamente. Luego el servidor resolver deberá tener abierto siempre al mundo los siguientes puertos entrantes y salientes: * 53 TCP/UDP - DNS puro * 853 TCP - DoT (RFC 7858) * 443 TCP - DoH (RFC 8484) * 8443 TCP saliente iniciador de la conexión * TCP 80 si no se dispone de certificados, para ACME HTTP-01 challenge de Let’s Encrypt * TCP 22022 para ssh en vez de puerto 22 default Las restricciones de acceso al resolver a nivel aplicación en los puertos 53/853/443 estarán dadas en cuanto se declare en la interfaz web los puertos permitidos. Si el cliente desea agregar estas mismas restricciones declaradas en el portal PDNS a nivel firewall externo , puede hacerlo pero se perdería la información **SIEM** si es que se quisiese utilizarla. Locale ------ * el locale de Debian debe ser **en_US.UTF-8** , instalar en **inglés americano (US)** Selección del hardware para un resolver --------------------------------------- dado que el resolver debe computar hashes **DNSSEC** cada vez que resuelve un dominio partiendo de los root-nameservers, es importante seleccionar un hardware adecuado. Para éso, en linux recomendamos correr el comando: .. code-block:: bash grep -o -w 'aes|sha\_ni|pclmulqdq|rdseed|rdrand|avx|avx2|avx512' /proc/cpuinfo | sort | uniq El resultado ideal en 2024 sería , teniendo en cuenta SIMD (Single Instruction Multiple Data, o manejo paralelo de lotes de datos) * **sha\_ni** (hashing DNSSEC: DS/NSEC/NSEC3 en SHA-256) * **aes** (para DoT/DoH) * **avx** (ideal para lotes de validaciones) * **avx2** (ideal para lotes de validaciones) * **pclmulqdq** (helpful in DoT/DoH) * **rdrand** (DNS cookies, NSEC3 randoms) * **rdseed** (RNG , fuente de entropia) * **avx512** (para SIMD a gran escala, resolvers de alta capacidad) Escala de requisitos de hardware -------------------------------- * Hasta 20.000 clientes 2 x VPS de 16GB RAM / 4 vCPU / 20GB SSD * Hasta 100.000 clientes 2 x VPS de 32GB RAM / 8 vCPU / 30GB SSD * Hasta 500.000 clientes 2 x VPS de 64GB RAM / 16 vCPU / 40GB SSD .. warning:: En caso de configurar la VM en un entorno PROXMOX es necesario que el modelo de CPU sea **HOST** para poder utilizar la cripto-aceleracion propia de la CPU en operaciones DNSSEC (modo “CPU passthrough”). Como lo puede ver en el siguiente print: .. image:: proxmox1.png Para la instalación existen varias modalidades ---------------------------------------------- 1. en caso de proveer acceso a un Dell iDrac con IP pública, se necesitará user y password para que Planisys realice la instalación del Sistema Operativo sobre el bare metal y podrá realizar todos los pasos del punto 2 sin necesidad de involucrar al cliente. El firewall en este caso deberá estar completamente abierto al mundo: * TCP 443 # HTTPS Web UI and Redfish * TCP 5900 # Virtual Console (KVM) * TCP 5901 # (sometimes used by KVM viewer) * UDP 623 # IPMI over LAN * TCP 22 # Optional SSH access * TCP 5120 # Virtual Media (if needed) Una vez realizada la operación de instalación, todo esto se puede volver a cerrar, recomendando ubicar la IP del iDrac en una DMZ o LAN interna. 2. en caso de tener un **bare-metal** o **KVM** o **LXC** ya instalado , los requerimientos son: * el sistema operativo a instalar por el cliente será **Debian12** headless (sin interfaz gráfica) para acceso **ssh puerto 22022** con un usuario y clave, aunque luego Planisys ingresará como root con clave pública . * En caso de proveer un usuario distinto de root, este deberá poder convertirse en root via sudo (o su - root en caso de proveer la clave de root). * De esta manera , Planisys podrá ingresar al sistema remotamente como root, ejecutar ciertas operaciones manuales como ssh-keygen, agregar IPs en /root/.ssh/authorized\_keys, generar un nuevo machine-id y ejecutar un playbook ansible para el setup del resolver. Por otro lado, es necesario que la dirección IP pública tenga reverso en el DNS, y que dicho reverso resuelva a la dirección IP pública. Esto vale tanto para ipv4 como ipv6. .. warning:: el puerto 22022 deberá estar abierto a las IPs listadas más arriba. Una vez realizada la instalación, el puerto 22 en caso de tener firewall externo se puede volver a cerrar. * El cliente puede seguir estos tutoriales para la creacion de la vm. Puede optar por la instalacion mediante una imagen .iso o usando cloud-init. .. nota:: https://docs.planisys.net/pdns/instalacion.html <---Para imagenes .iso .. nota:: https://docs.planisys.net/pdns/instalacion-cloud.html <---Para instalaciones tipo cloud-init 3. en caso de haber contratado un cluster **VRRP** de dos o más resolvers, las opciones serán únicamente **bare-metal** o **KVM** (no **LXC**) , y adicionalmente se nos deberá proveer una dirección IP virtual. El resto es como en el punto anterior. El cluster actuará en modo hot/standby a nivel network, pero utilizará dnsdist para realizar load-balancing a nivel aplicación entre ambos servidores en la medida que ambos estén vivos, y así utilizar toda la potencia computacional del cluster completo. 4. en caso de haber contratado un **SIEM**, Planisys deberá estimar el volumen de datos para realizar una evaluación de cuál hardware conviene, y el cliente además deberá especificar si quiere o no clusterizar la base de datos del **SIEM**. Se recomienda un un **SIEM** local a los resolvers para poder transferir lotes de **DNSTAP** (logs comprimidos de DNS) hacia el consumidor que inyecta los datos en la base de datos, sin necesidad de utilizar ancho de banda externo. Seguridad de la aplicacion ========================== .. warning:: Planisys no corre ningún webserver que amerite protección WAF, simplemente se abre el puerto 80 por unos pocos segundos para la renovación de letsencrypt una vez a la semana, en caso que el proveedor no tenga certificados TLS, que son necesarios para DoT y DoH. .. warning:: En cuanto al puerto ssh, se ubica en el puerto 22022 y se defiende con fail2ban contra bruteforce attacks, aunque las cuentas carecen de password (solo al principio para instalar) y solo se accede via public keys". Los ataques de fuerza bruta no tienen ninguna chance de tener éxito ni de agotar recursos del servidor. .. warning:: Tampoco es necesario ningún firewall en los puertos 53 ni 853 (DoT) ni 443 (DoH) , ya que desde la consola PDNS se configuran las redes permitidas, y el software reacciona con firewall backoff exponencial en caso de que se lo intente utilizar como resolver con insistencia. Es importante entender que el backoff exponencial se hace extensivo a la /24 de la IP que está tratando de resolver sin permiso. Por éso es fundamental listar las redes permitidas con cuidado y no olvidar ninguna. .. |date| date:: Last Updated on |date|