Un servidor proxy es una pieza fundamental en la infraestructura de redes Linux. Actúa como intermediario entre los clientes de una red y los servidores de Internet, proporcionando caché, filtrado de contenido, control de acceso y anonimato. En esta guía aprenderás a configurar los tres tipos principales de proxy en Linux: Squid como forward proxy, Nginx como reverse proxy y SSH/Dante como proxy SOCKS5.
🌐 Qué es un servidor proxy y por qué usarlo
Un servidor proxy es un equipo o software que actúa como intermediario entre los dispositivos de una red local y los recursos de Internet. Cuando un usuario solicita una página web, la petición no va directamente al servidor destino: pasa primero por el proxy, que la evalúa, la procesa y la reenvía.
Esta arquitectura tiene ventajas enormes en entornos profesionales. El proxy puede cachear contenido frecuentemente solicitado (reduciendo el ancho de banda), filtrar sitios web no deseados (control parental o corporativo), registrar toda la actividad de navegación (auditoría) y ocultar las direcciones IP internas de la red (seguridad).
Los casos de uso más habituales de un proxy en Linux incluyen:
| Caso de uso | Descripción | Software recomendado |
|---|---|---|
| Caché web corporativa | Almacenar copias locales de sitios visitados para reducir ancho de banda | Squid |
| Filtrado de contenido | Bloquear sitios no productivos o peligrosos en redes empresariales | Squid + SquidGuard |
| Balanceo de carga | Distribuir peticiones entrantes entre múltiples servidores backend | Nginx, HAProxy |
| Terminación SSL | Gestionar certificados HTTPS en un punto central | Nginx |
| Anonimato y privacidad | Ocultar la IP real del cliente al navegar | Dante, SSH SOCKS |
| Acceso remoto seguro | Tunelizar tráfico a través de conexiones cifradas | SSH + SOCKS5 |
🔀 Tipos de proxy: forward, reverse, transparente y SOCKS
No todos los proxies funcionan igual. Comprender las diferencias es esencial para elegir la solución correcta.
🔹 Forward proxy (proxy directo)
Es el tipo más clásico. Se sitúa del lado del cliente: intercepta las peticiones de los usuarios de la red local y las reenvía a Internet. El servidor de destino solo ve la IP del proxy, no la del cliente original.
🔹 Reverse proxy (proxy inverso)
Opera del lado del servidor. Recibe peticiones de Internet y las distribuye entre los servidores internos. Es fundamental para el balanceo de carga, la protección contra ataques DDoS y la terminación SSL. Nginx es el reverse proxy más utilizado del mundo.
🔹 Proxy transparente
Es un forward proxy que no requiere configuración en el cliente. El tráfico de la red se redirige automáticamente al proxy mediante reglas de firewall (iptables/nftables). El usuario ni siquiera sabe que existe. Se usa mucho en redes empresariales y educativas.
🔹 Proxy SOCKS (SOCKS4/SOCKS5)
A diferencia de los proxies HTTP que solo manejan tráfico web, SOCKS opera a nivel de socket y puede redirigir cualquier tipo de tráfico TCP y UDP. SOCKS5, la versión actual, añade autenticación y soporte para DNS remoto. Se puede montar fácilmente con un túnel SSH o con el servidor Dante.
🦑 Squid: el proxy de referencia en Linux
Squid es el servidor proxy más veterano y utilizado en el ecosistema Linux. Nació en 1996 como evolución del proyecto Harvest y desde entonces ha sido la columna vertebral de la caché web en miles de organizaciones.
Squid soporta los protocolos HTTP, HTTPS, FTP y funciona tanto como forward proxy como proxy transparente. Su sistema de ACL (listas de control de acceso) es extremadamente potente, permitiendo políticas de acceso basadas en IP, dominio, horario, tipo MIME, usuario autenticado y mucho más.
Entre las organizaciones que usan o han usado Squid se encuentran Wikipedia (para su CDN), la NASA, numerosas universidades y la mayoría de los proveedores de Internet que ofrecen servicios de caché.
📦 Instalación y configuración básica de Squid
Squid está disponible en los repositorios oficiales de todas las distribuciones principales. La instalación es directa:
Toda la configuración de Squid reside en un único archivo: /etc/squid/squid.conf. Este archivo puede tener más de 4.000 líneas (la mayoría comentarios explicativos), pero solo unas pocas directivas están activas por defecto.
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.backup
Configuración mínima funcional
Una configuración básica de Squid para permitir el acceso desde la red local y denegar todo lo demás:
Para probar que el proxy funciona desde un equipo cliente:
🛡️ Listas de control de acceso (ACL) en Squid
Las ACL son el corazón del sistema de políticas de Squid. Permiten definir quién puede acceder a qué, cuándo y cómo. El funcionamiento es sencillo: primero defines las ACL (condiciones) y luego las aplicas con directivas http_access.
Bloquear dominios específicos
Restricción por horario laboral
Bloquear tipos de archivo
http_access de arriba abajo y aplica la primera que coincide. Coloca siempre las reglas deny específicas antes de las reglas allow generales, y termina siempre con http_access deny all como última línea.
⚡ Optimización de caché y rendimiento
Una de las funciones más valiosas de Squid es su sistema de caché. Almacena copias locales del contenido web, de modo que las siguientes peticiones al mismo recurso se sirven desde disco local en lugar de descargarse de nuevo de Internet.
Con esta configuración, Squid usará hasta 256 MB de RAM y 10 GB de disco para almacenar contenido cacheado. Los subdirectorios L1 (16) y L2 (256) organizan la caché en disco para un acceso eficiente.
🔐 Autenticación de usuarios en el proxy
En entornos donde necesitas saber quién está navegando, Squid soporta varios métodos de autenticación. El más sencillo es NCSA (archivo de contraseñas), similar al .htpasswd de Apache.
🔄 Proxy inverso con Nginx
Mientras Squid es el rey del forward proxy, Nginx domina el mundo del proxy inverso. Un reverse proxy recibe todas las peticiones de Internet y las distribuye entre los servidores backend de tu infraestructura.
Los beneficios principales del proxy inverso son: balanceo de carga (distribuir tráfico entre múltiples servidores), terminación SSL (gestionar los certificados en un único punto), protección contra DDoS (el backend no está expuesto directamente) y caché de contenido estático.
Esta configuración distribuye las peticiones entre tres servidores backend usando round-robin (por defecto). Nginx también soporta algoritmos de balanceo como least_conn (menos conexiones), ip_hash (persistencia por IP) y weight (pesos personalizados).
🧦 Proxy SOCKS5 con SSH y Dante
Un proxy SOCKS5 trabaja a un nivel más bajo que HTTP: opera a nivel de socket y puede redirigir cualquier tipo de tráfico TCP/UDP, no solo web. Esto lo hace ideal para aplicaciones como clientes de correo, transferencias FTP, clientes de chat y herramientas de desarrollo.
Método rápido: túnel SSH como proxy SOCKS5
La forma más sencilla de crear un proxy SOCKS5 es con un túnel SSH. Solo necesitas un servidor Linux con OpenSSH:
Todo el tráfico que pase por localhost:1080 será reenviado cifrado a través del túnel SSH hasta el servidor remoto, que lo enviará a su destino. Es una VPN casera sencilla y efectiva.
Método profesional: servidor Dante
Para un proxy SOCKS5 permanente con autenticación y control granular, Dante es la solución profesional:
🔒 Seguridad y buenas prácticas
Un proxy mal configurado puede convertirse en una puerta abierta para atacantes. Estas son las medidas de seguridad fundamentales:
| Medida | Descripción | Configuración |
|---|---|---|
| Firewall | Permitir solo las IPs autorizadas al puerto del proxy | sudo ufw allow from 192.168.1.0/24 to any port 3128 |
| Deny all por defecto | La última regla de Squid siempre debe ser deny all | http_access deny all |
| No ser open proxy | Un proxy abierto será usado para spam y ataques | Restringir ACLs a redes conocidas |
| Logs y auditoría | Revisar regularmente los logs de acceso | tail -f /var/log/squid/access.log |
| Actualizar Squid | Mantener la versión actualizada contra vulnerabilidades | sudo apt upgrade squid |
| Ocultar versión | No revelar la versión de Squid en las cabeceras | httpd_suppress_version_string on |
📝 Ejercicios prácticos
curl -x http://IP_PROXY:3128 http://example.com. Verifica en los logs que la petición aparece registrada.
/etc/squid/sitios_bloqueados.txt con 5 dominios. Configura una ACL en Squid que los bloquee. Comprueba que al intentar acceder a uno de ellos obtienes un error 403 Forbidden. Luego añade una restricción horaria: los sitios solo se bloquean de lunes a viernes de 9:00 a 18:00.
python3 -m http.server 8080 y python3 -m http.server 8081 en directorios diferentes). Configura Nginx como reverse proxy con un bloque upstream que distribuya las peticiones entre ambos. Comprueba que las peticiones se alternan entre los dos backends.
ssh -D 1080 -N usuario@tu-servidor. Configura Firefox para usar el proxy SOCKS5 en localhost:1080. Visita ifconfig.me y comprueba que la IP que muestra es la del servidor remoto, no la tuya.
htpasswd. Configura el proxy para que solo permita navegar a usuarios autenticados. Prueba con curl: curl -x http://usuario1:password@IP_PROXY:3128 http://example.com.
❓ Preguntas frecuentes sobre Servidor proxy en Linux: guía completa con Squid, Nginx y SOCKS
Las dudas más comunes respondidas de forma clara y directa.
💬 Foro de discusión
¿Tienes dudas sobre Servidor proxy en Linux: guía completa con Squid, Nginx y SOCKS? Comparte tu pregunta con la comunidad.
Todavía no hay mensajes. ¡Sé el primero en participar!
Guía de iniciación a Linux
Las cuatro lecciones más consultadas del curso, en un PDF de 35 páginas que puedes leer sin conexión: qué es Linux, cómo descargarlo y verificar la descarga, qué distribución elegir y la instalación completa de Linux Mint paso a paso.
🎓 ¿Se puede aprender Linux con un curso bonificado por FUNDAE?
Sí. La administración de sistemas y servidores Linux es formación 100 % bonificable por FUNDAE para trabajadores de empresas españolas. Ciberaula, centro acreditado desde 1997, la imparte con tutor personal.
Administración de Servidores Linux para Empresas: de Cero a Nivel Avanzado (40 h) →
También te puede encajar: Administración de Sistemas Linux y Shell Script para Empresas → · Bash Scripting y Terminal Linux: Automatización de Sistemas →
Ver todos los cursos de Linux bonificados del catálogo → · Ciberaula · Centro acreditado FUNDAE (Reg. 99000171) · 91 530 33 87 · admision@ciberaula.com
💻 Formación en Linux y sistemas, bonificable por tu empresa
Si trabajas en una empresa española puedes formarte con coste bonificado a través del crédito de formación FUNDAE. Consulta el catálogo completo de cursos bonificados para empresas en Ciberaula, centro acreditado desde 1997.