SAD

Unidad Didáctica 5: Proxy

.

🌐 Tipos de Proxy, Características y Funciones

Un proxy es un intermediario entre un cliente (como un navegador web) y el servidor al que quiere acceder. Sirve para enrutar, filtrar, ocultar, registrar o modificar el tráfico de red según el tipo de proxy y su configuración.

Funciones principales de un proxy

  • Ocultación de identidad: El servidor remoto no ve la IP real del cliente, sino la del proxy.
  • Control de acceso: Permite aplicar políticas de uso de internet (por usuarios, IPs, horarios…).
  • Filtrado de contenido: Puede bloquear webs, tipos de archivos o categorías de contenido.
  • Caché: Guarda copias locales de páginas visitadas frecuentemente para acelerar el acceso.
  • Registro y monitoreo: Registra todo el tráfico que pasa por él (quién accede, cuándo y a qué).
  • Anonimato: Algunos proxies están diseñados para ocultar por completo la identidad del usuario.

Tipos de Proxy

1. Proxy directo o normal (forward proxy)

El cliente se conecta directamente al proxy, que a su vez hace las peticiones al servidor final. Se usa para controlar el acceso a internet desde una red interna.

Ejemplo: Una empresa usa un proxy para filtrar contenido web y registrar navegación de empleados.

2. Proxy inverso (reverse proxy)

El cliente no sabe que hay un proxy. El proxy está delante de uno o varios servidores web. Sirve para equilibrar carga, acelerar respuestas, añadir seguridad y ocultar estructura interna.

Ejemplo: Nginx o HAProxy funcionando como reverse proxy para varios servidores web.

3. Proxy transparente

No requiere configuración del cliente. El tráfico se redirige automáticamente al proxy. Se usa para aplicar políticas sin que el usuario lo note.

Ejemplo: Un proxy en una escuela que filtra contenido sin necesidad de configurar los navegadores.

4. Proxy anónimo

Oculta la IP del cliente, pero puede identificarse como proxy al servidor remoto.

5. Proxy de alto anonimato (elite)

No revela que es un proxy, ni la IP del cliente. Ideal para navegación anónima.

6. Proxy SOCKS

No interpreta el tráfico, solo lo enruta (nivel más bajo que HTTP). Útil para torrents, juegos online, apps que no usan HTTP.

7. Proxy HTTP/HTTPS

Diseñado específicamente para manejar tráfico web. Puede hacer inspección de contenido, filtrado por URL, caché, etc.

📌 Características generales

  • Puede aumentar la seguridad, pero también introducir riesgos si está mal configurado.
  • Necesita mantenimiento: actualizaciones, revisión de logs, ajustes de rendimiento.
  • Ayuda a mejorar rendimiento cuando se usa caché y balanceo de carga.
  • Proporciona visibilidad del tráfico: ideal para auditoría y monitoreo.

🛠️ Cómo instalar un Proxy-Cache con Squid (en Linux)

Un proxy-cache permite almacenar en caché (temporalmente) contenido web para acelerar el acceso a sitios web frecuentemente visitados y reducir el uso de ancho de banda. Squid es uno de los software más usados para esto.

🔧 Requisitos previos

  • Un servidor con Linux (Debian, Ubuntu, CentOS, etc.).
  • Acceso como superusuario (root o sudo).
  • Conexión a Internet.

📦 1. Instalar Squid

En Debian/Ubuntu:

sudo apt update
sudo apt install squid -y

En CentOS/RHEL:

sudo yum install squid -y

⚙️ 2. Configurar Squid

El archivo principal de configuración está en:

/etc/squid/squid.conf

Cambios básicos recomendados:

  • Cambiar el puerto del proxy (opcional):
    http_port 3128
  • Definir red de acceso permitida (ejemplo para 192.168.1.0/24):
    
    acl red_local src 192.168.1.0/24
    http_access allow red_local
  • Activar la caché:
    cache_dir ufs /var/spool/squid 100 16 256

📁 3. Inicializar directorios de caché

sudo squid -z

▶️ 4. Iniciar y habilitar el servicio

sudo systemctl start squid
sudo systemctl enable squid

🔍 5. Verificar funcionamiento

  • Probar desde un navegador configurando el proxy a la IP del servidor y puerto 3128.
  • Comprobar logs:
    tail -f /var/log/squid/access.log

🧠 Opciones útiles

  • cache_mem: Memoria RAM reservada para caché.
    cache_mem 256 MB
  • maximum_object_size: Tamaño máximo de archivo en caché.
    maximum_object_size 4096 KB
  • cache_log / access_log: Archivos donde se registran errores y accesos.

🧼 Para borrar la caché manualmente

sudo systemctl stop squid
sudo rm -rf /var/spool/squid/*
sudo squid -z
sudo systemctl start squid

🔐 Autenticación en Proxys

La autenticación en un proxy consiste en requerir que el usuario proporcione credenciales (usuario y contraseña) antes de permitir el acceso a Internet o ciertos recursos.

¿Por qué usar autenticación en un proxy?

  • Restringir el acceso solo a usuarios autorizados.
  • Aplicar políticas personalizadas por usuario o grupo.
  • Obtener registros de navegación por persona.
  • Aumentar la seguridad y evitar el uso no controlado.

Métodos de autenticación comunes

1. Básica (Basic Authentication)

El navegador pide usuario y contraseña. Se transmite en base64, por lo que se recomienda usar HTTPS.

2. Digest Authentication

Usa hash, más segura que la básica. Menos compatibilidad.

3. NTLM / Kerberos (SSO)

Autenticación integrada con Windows/Active Directory. No requiere credenciales visibles.

4. LDAP

Basada en directorios como OpenLDAP o Active Directory.

5. Autenticación externa personalizada

Validación con scripts, bases de datos o APIs propias.

🧪 Ejemplo: Autenticación básica con Squid

  1. Crear archivo de usuarios:
    sudo apt install apache2-utils
          sudo htpasswd -c /etc/squid/usuarios_proxy usuario1
  2. Editar squid.conf:
    auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/usuarios_proxy
          auth_param basic realm Proxy Privado
          acl usuarios_autenticados proxy_auth REQUIRED
          http_access allow usuarios_autenticados
  3. Reiniciar Squid:
    sudo systemctl restart squid

⚠️ Recomendaciones

  • Usar HTTPS entre cliente y proxy si se usa autenticación básica.
  • Limitar intentos fallidos si es posible.
  • Registrar accesos en logs para auditoría.
  • Integrar con LDAP o AD en ambientes corporativos.

🧼 ¿Qué es un Proxy Transparente?

Un proxy transparente es un servidor proxy que intercepta el tráfico de red sin necesidad de configuración en el cliente.

¿Cómo funciona?

  1. El cliente solicita una página como siempre.
  2. El router/firewall redirige la petición al proxy.
  3. El proxy analiza, filtra o cachea el contenido.
  4. El proxy responde al cliente sin que este lo note.

¿Por qué se llama “transparente”?

Porque el cliente no necesita configurar nada. Todo se hace de forma automática.

✅ Ventajas

  • Sin configuración en el cliente.
  • Ideal para redes públicas o educativas.
  • Control de acceso, registro y caché sin intervención.
  • Compatible con cualquier dispositivo.

❌ Desventajas

  • No permite autenticación individual fácilmente.
  • Dificultades con conexiones HTTPS.
  • Más difícil de monitorear por usuario.
  • Requiere reglas avanzadas en el firewall/router.

🛠️ Configuración básica con Squid

1. Activar el modo transparente en squid.conf:

http_port 3128 transparent

2. Redirigir tráfico HTTP con iptables:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

3. Reiniciar Squid:

sudo systemctl restart squid

👀 ¿Y el tráfico HTTPS?

Requiere SSL Bump, certificados instalados en los clientes y una configuración más avanzada.

🧭 ¿Qué es un Proxy Web?

Un proxy web es un servidor intermedio entre tu dispositivo (navegador, app, etc.) y el sitio web o servicio que quieres visitar.

⚙️ ¿Cómo Funciona?

  1. Tú haces una solicitud (por ejemplo, quieres visitar example.com).
  2. Tu solicitud va al servidor proxy en lugar de ir directamente a la web.
  3. El proxy reenvía la solicitud al sitio web real.
  4. El sitio responde al proxy.
  5. El proxy te envía la respuesta (la página web) como si viniera directamente de él.

¿Para Qué Sirve un Proxy Web?

  • Privacidad: Oculta tu IP real y puede ayudarte a navegar de forma más anónima.
  • Acceso a contenido restringido: Puedes saltarte bloqueos geográficos o censura.
  • Seguridad y filtrado: Muchas empresas usan proxies para bloquear webs maliciosas o inapropiadas.
  • Caché y velocidad: Algunos proxies almacenan versiones de páginas ya visitadas para cargarlas más rápido.

🧪 Ejemplo Gráfico (simplificado):

      Tú (IP real)
         ↓
      [ Proxy Web ] (IP visible)
         ↓
      Sitio Web Destino
        

¿Qué es un Proxy Inverso?

Un proxy inverso es un servidor que se ubica frente a uno o más servidores web, y actúa como intermediario para las solicitudes que llegan desde los clientes (usuarios).

⚙️ ¿Cómo Funciona?

  1. Un usuario hace una solicitud para acceder a un sitio web (por ejemplo, example.com).
  2. La solicitud llega al proxy inverso en lugar de ir directamente al servidor web.
  3. El proxy inverso determina a qué servidor del backend debe enviar la solicitud (si hay varios).
  4. El servidor web responde al proxy inverso.
  5. El proxy inverso reenvía la respuesta al usuario como si viniera directamente del servidor web.

¿Para Qué Sirve un Proxy Inverso?

  • Seguridad: Oculta la estructura interna y protege los servidores reales del acceso directo.
  • Balanceo de carga: Distribuye las solicitudes entre varios servidores para mejorar el rendimiento.
  • Compresión y caché: Almacena respuestas frecuentes para acelerar el acceso a recursos.
  • Monitoreo: Permite controlar y registrar el tráfico de entrada.
  • Descifrado SSL: Puede manejar el cifrado HTTPS para liberar carga a los servidores web reales.

🧪 Ejemplo Gráfico (simplificado):

      Usuario
         ↓
      [ Proxy Inverso ]
         ↓
      Servidor Web Real
        

🛠️ Soluciones a Problemas Comunes de Clientes con Proxys

Los clientes que navegan a través de un proxy web pueden experimentar una serie de inconvenientes. A continuación, se describen los problemas más comunes y sus soluciones:

  • Acceso denegado o errores 403/407: Esto ocurre cuando el proxy requiere autenticación o hay restricciones.
    • Solución: Verifica las credenciales de autenticación del proxy o contacta al administrador para confirmar permisos.
  • 🐌 Lentitud en la navegación: Puede deberse a saturación del proxy o configuraciones ineficientes.
    • Solución: Prueba otra configuración de proxy, reinicia la red o verifica si hay congestión de tráfico.
  • Problemas de caché: El proxy puede estar entregando contenido desactualizado almacenado en su caché.
    • Solución: Fuerza la recarga del contenido desde el servidor (Ctrl+F5) o solicita limpieza de caché al administrador del proxy.
  • 🔒 Problemas con HTTPS o certificados: Algunos proxys no gestionan bien conexiones cifradas.
    • Solución: Usa un proxy que soporte conexiones HTTPS con certificados válidos o instala el certificado del proxy en el cliente.
  • 🌐 No se puede navegar: Puede deberse a mala configuración del proxy en el navegador o sistema.
    • Solución: Verifica la configuración del proxy (IP, puerto, autenticación) y asegúrate de que esté habilitado correctamente.
  • Redirecciones infinitas o bucles: A veces mal configurados, los proxys generan bucles de solicitud.
    • Solución: Corrige la lógica de redirección en la configuración del proxy o actualiza el software.

🧩 Identificar correctamente el tipo de problema y su causa ayuda a aplicar la solución adecuada.

🔍 Herramientas Gráficas de Monitorización de Proxys

🖥️ Squid Web Proxy + Webmin / Sarg / Lightsquid

Descripción: Squid es un proxy muy popular, y aunque funciona en modo consola, existen herramientas gráficas como:

  • Webmin: interfaz web para gestionar servidores, incluyendo Squid.
  • SARG (Squid Analysis Report Generator): genera informes HTML detallados sobre uso de Squid.
  • Lightsquid: otra alternativa gráfica para informes visuales, con colores y gráficos.

Ventajas: Gratuito, ampliamente usado, extensible.

Ideal para: Redes educativas o empresariales.

📊 Grafana + Prometheus (o Telegraf)

Descripción: Grafana es un panel visual moderno que, con plugins adecuados y un recolector como Prometheus, puede mostrar estadísticas de proxies y tráfico en tiempo real.

Ventajas: Muy visual, configurable, soporta alertas.

Ideal para: Usuarios avanzados o redes grandes.

📉 Zabbix

Descripción: Plataforma de monitorización general que también puede observar servicios de red como proxies. Permite ver el estado, alertas, tiempo de respuesta, etc.

Ventajas: Escalable, interfaz gráfica completa, soporte de red.

Ideal para: Empresas y centros con múltiples servidores.

🧩 ntopng

Descripción: Monitoriza el tráfico de red en tiempo real, ideal si quieres ver el comportamiento del proxy en cuanto a consumo de ancho de banda, sesiones activas, etc.

Ventajas: Gráficos en tiempo real, muy visual.

Ideal para: Análisis profundo del tráfico que pasa por un proxy.

🌐 Web Proxy Sniffer Tools (como Fiddler o Charles Proxy)

Descripción: Aunque se usan más para depuración, pueden monitorizar el tráfico HTTP/HTTPS que pasa a través de un proxy configurado.

Ventajas: Muy detallado, visualización de cabeceras, cuerpos de solicitud/respuesta.

Ideal para: Desarrolladores o análisis puntual.

📚 Documentación en los Proxies

La documentación en los proxies se refiere al registro, análisis y control de toda la actividad que pasa a través del servidor proxy. Esta documentación es fundamental para propósitos de seguridad, auditoría, control de acceso y diagnóstico.

📝 ¿Qué se documenta?

  • Solicitudes y respuestas HTTP/HTTPS: qué páginas se visitan, cuándo y por quién.
  • Direcciones IP de origen y destino: quién hace la solicitud y hacia dónde va.
  • ⏱️ Tiempos de respuesta: medición del tiempo y estado de las conexiones.
  • 🔐 Usuarios autenticados: si hay login, quién accedió a qué.
  • Tamaño del contenido: datos transferidos por solicitud.

📂 ¿Dónde se guarda esta documentación?

  • 🗃️ Archivos de logs: guardados en texto plano por el sistema proxy.
  • 💾 Bases de datos: para búsquedas y análisis más avanzados.
  • 📊 Herramientas de análisis: como SARG o Lightsquid para generar informes.

¿Por qué es importante documentar?

  • 🕵️ Seguridad: detectar accesos no autorizados.
  • 📋 Auditoría: cumplir normativas legales.
  • ⚙️ Optimización: mejorar rendimiento.
  • 🔧 Solución de problemas: detectar y resolver fallos.

🛠️ Configuración de Logs en Squid

Squid permite registrar información detallada sobre las peticiones y el comportamiento del proxy. La configuración de los logs se realiza principalmente en el archivo squid.conf.

📁 Ubicación del archivo de configuración

El archivo de configuración suele encontrarse en:

  • 📄 /etc/squid/squid.conf (Debian/Ubuntu)
  • 📄 /etc/squid3/squid.conf (versiones antiguas)
  • 📄 /usr/local/squid/etc/squid.conf (instalación manual)

🧾 Tipos de logs en Squid

  • 📜 access.log: registro de cada solicitud HTTP.
  • ⚠️ cache.log: eventos del sistema y errores.
  • 📦 store.log: almacenamiento de objetos en caché.

⚙️ Configuración básica en squid.conf

      # Nivel de detalle (0 a 9)
      debug_options ALL,1
      
      # Formato de logs personalizados (opcional)
      logformat customformat %ts.%03tu %6tr %>A %Ss/%03Hs %<st %rm %ru ...
      
      # Habilitar logs
      access_log /var/log/squid/access.log squid
      cache_log /var/log/squid/cache.log
      store_log /var/log/squid/store.log
        

🔄 Reiniciar Squid para aplicar cambios

  • ▶️ sudo systemctl restart squid (systemd)
  • ▶️ sudo service squid restart (init.d)

📊 Herramientas para visualizar logs

  • 📈 SARG: genera informes en HTML desde access.log
  • 📊 Lightsquid: alternativa visual para navegación web
  • 🔍 grep, awk, less: para análisis manual en consola

🔍 Análisis de Logs de Squid

Analizar los logs de Squid es fundamental para monitorear el tráfico de la red, identificar posibles problemas o detectar accesos no autorizados. Aquí te explicamos cómo hacerlo usando herramientas como grep y SARG.

⚡ Análisis con `grep`

El comando grep es una herramienta potente para buscar patrones específicos dentro de los logs. Aquí algunos ejemplos de cómo usarlo para analizar los logs de Squid.

📝 Ejemplos prácticos con `grep`:

  • 🔍 grep "TCP_MISS" /var/log/squid/access.log - Muestra todas las solicitudes que no estaban en caché.
  • 🔍 grep "200 OK" /var/log/squid/access.log - Muestra todas las solicitudes que fueron completadas con éxito.
  • 🔍 grep -i "error" /var/log/squid/cache.log - Busca todas las entradas que contienen la palabra "error".
  • 🔍 grep -E "TCP_DENIED|ERR" /var/log/squid/access.log - Encuentra accesos denegados o errores en las solicitudes.
  • 🔍 grep "GET" /var/log/squid/access.log | wc -l - Cuenta el número de solicitudes GET realizadas.

El comando grep permite realizar búsquedas detalladas en los logs, lo que facilita la identificación de problemas específicos y patrones en el tráfico.

🔨 Instalación y uso de SARG

SARG (Squid Analysis Report Generator) es una herramienta que permite generar informes visuales a partir de los logs de Squid, facilitando la interpretación de los mismos.

🛠️ Instalación de SARG

Para instalar SARG en un sistema basado en Debian/Ubuntu:

      # Actualizar los repositorios
      sudo apt update
      
      # Instalar SARG
      sudo apt install sarg
        

📊 Configuración básica de SARG

Después de la instalación, puedes configurar SARG editando su archivo de configuración, que generalmente se encuentra en /etc/sarg/sarg.conf.

      # Editar el archivo de configuración
      sudo nano /etc/sarg/sarg.conf
      
      # Aquí puedes configurar rutas de logs, reportes, etc.
        

▶️ Generar un informe con SARG

Una vez configurado SARG, para generar un informe a partir de los logs de Squid, ejecuta el siguiente comando:

      sudo sarg
        

Esto creará un informe visual en formato HTML que puedes abrir con cualquier navegador web. El informe incluye detalles sobre las páginas visitadas, el tráfico generado y las horas de acceso.

📈 Ver los informes de SARG

Los informes generados por SARG se suelen almacenar en el directorio /var/www/sarg o en la ruta que hayas configurado en el archivo de configuración.

📑 Conclusión

El uso de grep y herramientas como SARG hace que el análisis de los logs de Squid sea más accesible y eficaz, proporcionando una forma sencilla de interpretar el tráfico y detectar posibles problemas.