Tinyproxy es un servidor proxy HTTP/HTTPS ligero y de código abierto diseñado para un consumo mínimo de recursos en sistemas Linux. Proporciona una funcionalidad proxy básica adecuada para dispositivos embebidos, uso personal o entornos de red de pequeña escala donde la eficiencia de recursos es crítica.
Descripción general y casos de uso
Tinyproxy prioriza una huella pequeña y una configuración sencilla sobre características extensas como el almacenamiento en caché avanzado, métodos de autenticación completos o capacidades de proxy SOCKS que se encuentran en soluciones proxy más grandes. Funciona principalmente como un proxy HTTP/HTTPS (método CONNECT).
Los casos de uso típicos para Tinyproxy incluyen:
- Proxy personal: Proteger las direcciones IP del cliente o eludir restricciones geográficas básicas para usuarios individuales.
- Sistemas embebidos: Proporcionar servicios proxy en dispositivos con CPU, RAM y recursos de almacenamiento limitados.
- Entornos de desarrollo: Pruebas locales de aplicaciones conscientes del proxy o inspección del tráfico de red.
- Gateway de red pequeña: Un proxy simple y sin caché para un número limitado de clientes.
- Encadenamiento de proxies: Actuar como intermediario en una configuración de múltiples proxies.
Instalación
Tinyproxy está disponible en los repositorios de paquetes estándar de la mayoría de las distribuciones de Linux.
Debian/Ubuntu
sudo apt update
sudo apt install tinyproxy
RHEL/CentOS/Fedora
sudo dnf install tinyproxy
# O para CentOS/RHEL más antiguos:
# sudo yum install tinyproxy
Después de la instalación, Tinyproxy normalmente se inicia automáticamente y escucha en el puerto 8888.
Configuración
La configuración de Tinyproxy se gestiona a través de un único archivo, típicamente ubicado en /etc/tinyproxy/tinyproxy.conf. Todas las directivas están comentadas dentro del archivo predeterminado, proporcionando autodocumentación.
Directivas esenciales
-
Port: Especifica el puerto en el que Tinyproxy escucha.
Port 8888
Cambiar esto requiere reiniciar el servicio Tinyproxy. -
Listen: Vincula Tinyproxy a una dirección IP específica. Por defecto, escucha en todas las interfaces disponibles (0.0.0.0). Especificar una dirección restringe el acceso.
Listen 192.168.1.10 -
Allow: Define las direcciones IP o subredes permitidas para conectarse al proxy. Se pueden usar múltiples directivasAllow. Si no se especifican directivasAllow, Tinyproxy permite conexiones de todos los hosts. Denegar explícitamente todo y luego permitir rangos específicos es una práctica de seguridad común.
# Denegar todo por defecto (si no hay directivas Allow presentes, esto es implícitamente falso) # Allow 127.0.0.1 # Allow 192.168.1.0/24 -
Timeout: Establece el tiempo de espera de inactividad para las conexiones en segundos.
Timeout 600 -
User/Group: Especifica el usuario y grupo a los que Tinyproxy debe reducir los privilegios después del inicio. Ejecutar como un usuario no root es una buena práctica de seguridad.
User tinyproxy Group tinyproxy -
LogLevel: Controla la verbosidad del registro. Las opciones incluyenCritical,Error,Warning,Notice,Info,Debug.
LogLevel Info -
LogFile: Especifica la ruta al archivo de registro.
LogFile "/var/log/tinyproxy/tinyproxy.log" -
MaxClients: Establece el número máximo de conexiones de clientes simultáneas que Tinyproxy manejará. Exceder este límite resulta en el rechazo de la conexión.
MaxClients 100 -
DisableViaHeader: Cuando está habilitado, Tinyproxy no agregará un encabezadoViaa las solicitudes salientes. Esto puede mejorar la privacidad al evitar la divulgación de la presencia del proxy.
DisableViaHeader Yes -
ConnectPort: Especifica qué puertos permitirá Tinyproxy para las solicitudesCONNECT(utilizadas para el túnel HTTPS). Se pueden usar múltiples directivasConnectPort.
ConnectPort 443 ConnectPort 563
Directivas de configuración avanzadas
-
Upstream: Encadena Tinyproxy a otro servidor proxy. Esta directiva especifica un proxy upstream para dominios específicos o todo el tráfico.
```
# Usar upstream_proxy.example.com:8080 para todas las solicitudes
Upstream http upstream_proxy.example.com:8080Usar un upstream diferente para dominios específicos
Upstream http 10.0.0.1:3128 "example.com"
Upstream http 10.0.0.1:3128 ".example.org"
`` La palabra clavehttpindica un proxy HTTP. Las directivasUpstream` se procesan en orden; la primera coincidencia se aplica. -
NoCache: Evita que Tinyproxy envíe encabezados HTTP específicos que podrían causar el almacenamiento en caché del lado del cliente. Esto no implica que Tinyproxy tenga un mecanismo de almacenamiento en caché.
NoCache -
Filter/FilterURLs/FilterBypass: Proporciona filtrado básico de contenido basado en expresiones regulares.Filter "/etc/tinyproxy/filter.txt": Especifica un archivo que contiene expresiones regulares para las URL a bloquear.FilterURLs Yes: Habilita el filtrado de URL.FilterBypass "192.168.1.0/24": Permite a los clientes especificados omitir el filtrado.
El archivo
filter.txtcontendría una expresión regular por línea. Por ejemplo, para bloquear Facebook:
.*facebook\.com.*
Este es un mecanismo de filtrado rudimentario y no un reemplazo para soluciones dedicadas de filtrado de contenido.
Gestión de servicios
Después de modificar tinyproxy.conf, el servicio Tinyproxy debe reiniciarse para que los cambios surtan efecto.
Systemd (distribuciones modernas de Linux)
sudo systemctl restart tinyproxy
sudo systemctl enable tinyproxy # Asegura que se inicie al arrancar
sudo systemctl status tinyproxy
SysVinit (distribuciones antiguas de Linux)
sudo /etc/init.d/tinyproxy restart
sudo /etc/init.d/tinyproxy status
Prueba del proxy
Después de la configuración y el reinicio del servicio, se puede probar el proxy.
Usando curl
curl -x http://localhost:8888 http://ipinfo.io/ip
Reemplace localhost:8888 con la IP y el puerto del servidor Tinyproxy si está probando desde una máquina diferente. La salida debe reflejar la dirección IP pública del servidor Tinyproxy, no la del cliente.
Configuración del navegador
Configure su navegador web (por ejemplo, Firefox, Chrome) para usar un proxy HTTP en la dirección IP y el puerto del servidor Tinyproxy. Acceda a un sitio web para confirmar la conectividad.
Consideraciones de seguridad
- Control de acceso: Siempre restrinja el acceso al proxy usando la directiva
Allow. Por defecto, Tinyproxy puede permitir conexiones de todos los hosts si no hay directivasAllowpresentes. - Firewall: Configure el firewall de su sistema (por ejemplo,
ufw,firewalld) para permitir solo conexiones entrantes al puerto de Tinyproxy desde rangos de IP confiables.
bash # Ejemplo usando ufw sudo ufw allow from 192.168.1.0/24 to any port 8888 sudo ufw enable - Usuario no root: Asegúrese de que Tinyproxy se ejecute como un usuario no root (directivas
UseryGroup) para minimizar posibles riesgos de seguridad. - Registro: Monitoree los registros de Tinyproxy en busca de actividad inusual.
DisableViaHeader: Considere habilitar esto para una mayor privacidad, aunque no proporciona anonimato.
Comparación con Squid
Tinyproxy y Squid son ambos servidores proxy HTTP para Linux, pero apuntan a diferentes casos de uso y ofrecen conjuntos de características distintos.
| Característica | Tinyproxy | Squid |
|---|---|---|
| Objetivo principal | Uso mínimo de recursos, simplicidad | Alto rendimiento, características extensas, almacenamiento en caché |
| Uso de recursos | Huella de CPU/RAM muy baja | CPU/RAM moderada a alta, especialmente con cachés grandes y alto tráfico |
| Almacenamiento en caché | Sin almacenamiento en caché incorporado | Almacenamiento en caché extenso y configurable para objetos HTTP |
| Autenticación | Ninguna nativamente | Básica, Digest, NTLM, Kerberos, ayudantes externos |
| Control de acceso | Basado en IP (directiva Allow) |
ACLs altamente granulares basadas en IP, dominio, URL, usuario, tiempo, métodos, etc. |
| Protocolos | HTTP, HTTPS (CONNECT) | HTTP, HTTPS (CONNECT), FTP, Gopher, SOCKS (lado del cliente para upstream) |
| Transparencia | Sin soporte de proxy transparente | Soporte completo de proxy transparente |
| Complejidad | Configuración simple, pocas directivas | Configuración compleja, muchas directivas, potentes capacidades de scripting |
| Uso típico | Sistemas embebidos, proxy personal, LAN pequeña | Redes empresariales, ISPs, grandes organizaciones, filtrado de contenido, seguridad |
Solución de problemas
- Verificar registros: La directiva
LogFileespecifica dónde Tinyproxy escribe sus registros. AumenteLogLevelaDebugpara una salida más detallada durante la solución de problemas.
bash sudo tail -f /var/log/tinyproxy/tinyproxy.log - Estado del servicio: Verifique que Tinyproxy esté en ejecución usando
systemctl status tinyproxyo/etc/init.d/tinyproxy status. - Firewall: Confirme que su firewall no está bloqueando las conexiones al puerto de Tinyproxy. Deshabilite temporalmente el firewall para realizar pruebas si es necesario.
- Sintaxis de configuración: Revise
tinyproxy.confen busca de errores de sintaxis. Tinyproxy a menudo no se iniciará o informará errores en sus registros si la configuración está mal formada. - Conectividad de red: Asegúrese de que el servidor Tinyproxy tenga conectividad de red a sus destinos previstos.