DNS over TLS

Automatización completa de servidor DoT desde cero

Bash Scripting DevOps Security

Resumen del Proyecto

Objetivo

Crear un sistema automatizado para desplegar servidores DNS over TLS (DoT) desde cero, integrando certificados SSL, proxy reverso y configuración de seguridad.

Resultado

11 scripts que automatizan completamente la instalación y configuración de un servidor DoT funcional con SSL/TLS y monitoreo.

Stack Tecnológico

Tecnologías utilizadas en el proyecto:

Linux
Nginx
Let's Encrypt
Stubby

Arquitectura del Sistema

Flujo de Datos

Cliente
Nginx (443/853)
TLS Proxy
Stubby (5300)

Frontend (Nginx)

  • • Proxy reverso SSL/TLS
  • • Certificados Let's Encrypt
  • • Redirección HTTP → HTTPS
  • • Stream proxy para DoT

Backend (Stubby)

  • • Resolución DNS over TLS
  • • Upstream: Cloudflare DNS
  • • Validación DNSSEC
  • • Logging configurado

Seguridad

  • • Firewall automatizado
  • • Fail2ban integrado
  • • Certificados renovables
  • • Monitoreo SNMP

Módulos del Sistema

main.sh

Script principal que coordina toda la instalación

Core

common.sh

Funciones compartidas, colores y utilidades

Library

detect_system.sh

Detecta SO, gestores de paquetes y servicios

System

check_dns.sh

Verifica propagación DNS antes de continuar

Network

setup_nginx.sh

Instala y configura Nginx como proxy

Web Server

setup_certbot.sh

Obtiene certificados SSL de Let's Encrypt

SSL/TLS

setup_stubby.sh

Compila e instala Stubby desde fuente

DNS Core

setup_nginx_dot.sh

Configura stream proxy para DoT

DoT Config

setup_firewall.sh

Configura UFW/FirewallD/iptables

Security

setup_extras.sh

Instala SNMP y Fail2ban para monitoreo

Monitoring

config.sh

Configuración global del sistema

Config

Características Técnicas

Automatización

  • • Detección automática de SO (Debian/Ubuntu/CentOS/RHEL)
  • • Gestión inteligente de paquetes (apt/dnf/yum)
  • • Configuración automática de servicios
  • • Rollback automático en caso de fallo

Seguridad

  • • Certificados SSL/TLS automáticos
  • • Configuración de firewall integrada
  • • Protección contra ataques (Fail2ban)
  • • Validación DNSSEC

Monitoreo

  • • Integración SNMP para métricas
  • • Logs centralizados de Stubby
  • • Verificación de servicios
  • • Alertas de sistema

Performance

  • • Compilación optimizada de Stubby
  • • Configuración TLS moderna
  • • Balanceo de carga DNS
  • • Cacheo inteligente

Ejemplo de Código

main.sh - Orquestador Principal
#!/bin/bash
# Script principal para automatizar la instalación de DoT
function cleanup_on_exit() {
    source common.sh
    if [ "$INSTALL_COMPLETE" = false ]; then
        print_warning "¡Instalación cancelada o fallida!"
        run_cleanup_tasks
        print_info "Limpieza completada."
    else
        print_success "¡Instalación completada con éxito!"
    fi
    rm -f config.sh
    exit 0
}

scripts=(
    "./detect_system.sh"
    "./check_dns.sh"
    "./setup_nginx.sh"
    "./setup_certbot.sh"
    "./setup_stubby.sh"
    "./setup_nginx_dot.sh"
    "./setup_firewall.sh"
    "./setup_extras.sh"
)

for script in "${scripts[@]}"; do
    if [ -f "$script" ]; then
        print_info "Ejecutando: ${BOLD}$script${NC}"
        if ! bash "$script"; then
            print_error_and_exit "La instalación falló en: $script"
        fi
        print_success "${BOLD}$script${NC} completado."
    fi
done

Métricas del Proyecto

11
Scripts Modulares
850+
Líneas de Código
3
Distribuciones Soportadas
100%
Automatización

Logros Técnicos

Desarrollo

  • • Arquitectura modular y escalable
  • • Gestión de errores robusta
  • • Interfaz de usuario intuitiva
  • • Documentación integrada

Operaciones

  • • Instalación en menos de 10 minutos
  • • Configuración cero-touch
  • • Rollback automático
  • • Monitoreo integrado