Poniendo un proxy en cascada con otro que pide autenticación

LinuxHacía tiempo que no necesitaba poner un proxy en cascada, y esta vez debía ponerlo en cascada con otro que pide autenticación. Por suerte estamos lidiando con Squid, un magnífico paquete que provee una detallada documentación.

Listo para recordar y también aprender, claro está, monté un Squid de prueba (el actual es mucho más complicado!) con esto:

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid-passwd

acl password proxy_auth REQUIRED
acl prohibidas url_regex -i “/etc/squid/prohibidas”
acl cuba dstdomain .cu localhost
acl internet src “/etc/squid/internet”
acl nacional src “/etc/squid/nacional”
acl olimpo src “/etc/squid/olimpo”
#Solo 5 hilos por usuario
acl limitusercon maxconn 5
http_access deny prohibidas
http_access deny limitusercon !olimpo
http_access allow cuba internet
http_access allow cuba nacional password
http_access allow !cuba internet password
# And finally deny all other access to this proxy
http_access deny all

Los usuarios de prueba con acceso a Internet estaría en el fichero de igual nombre; los cubanos 100% en el fichero cuba. Cada usuario puede tener hasta 5 hilos, excepto los relacionados en la acl “olimpo”, que no tienen esa restricción. Los sitios prohibidos están en el fichero prohibidos.

Las contraseñas van en el fichero /etc/squid/squid-passwd; fueron creadas con el programa auxiliar htpasswd (use man htpasswd para ver la opciones) que provee Apache. Un ejemplo de entrada en este fichero pudiera ser:

mediopollito:EaIwS7mlmr8Qc

(por supuesto, acá muestro un nombre y valor ficticios…)

Por supuesto que esto es solo una configuración como para empezar; hay que considerar la posibilidad de que algún usuario se salte la bardas accediendo por https a algún sitio resbaloso y conviene aceitar bien el mecanismo . Pero como aún acá no hay Internet,  ni parece que lo vaya a haber, el apuro es menor… 😉

Ahora viene la segunda parte: ¿cómo hacer que se pase de un squid a otro el login y la contraseña? El propio fichero de configuración squid.conf nos explica cómo hacerlo:

cache_peer 192.168.0.200 parent 3128 0 no-query login=PASS

Con esto se le indica a proxy que “tiene que engancharse” al que ya hemos declarado, que deberás conectarse a ese, que no hará intentos de conexión directa, sino únicamene “proxeadas” y que en lo tocante a login y contraseña, pues le pase la pelota al proxy “padre”.

 

Esta entrada fue publicada en Software Libre. Guarda el enlace permanente.

6 respuestas a Poniendo un proxy en cascada con otro que pide autenticación

  1. A. dijo:

    ODIO squid, por culpa de esa cosa es que nos tienen todo restringido y todas las conexiones de internet controladas y contabilizadas

    • mayralberto dijo:

      A ver. Los proxies no son necesariamente para restringir; su función es cachear las páginas para cuando se pide la misma no tener que volver a solicitarla al servidor remoto. También para subdividir el ancho (o el estrecho…) de banda con el fin de distribuirlo mejor entre las distintas tareas. Puede usarse también para evitar la descarga de tipos de ficheros que no convienen.
      También te asegura el anonimato de la comunicación. Esta función es especialmente necesaria en redes con acceso precario a Internet, aunque los usuarios lo perciban a menudo como una intromisión que limita su privacidad frente a conexiones individuales directas. El proxy puede ser configurado para bloquear direcciones y Cookies, para modificar cabeceras de las peticiones o quitar javascript que se considere peligroso.

      • victor dijo:

        saludos mayralberto,

        Tengo un problema con proxyes en cascada….
        Navego en mi trabajo atravez de una vpn nacional que une todas las sucursales de la entidad, pasando por un proxy squid al cual se le debe pasar user y password, ademas tienen prohibido el uso de internet explorer (a mi me funciona los navegadores como el chrome y mozillaF)..hasta ahora todo bien con los navegadores, pero necesito poner un proxy hijo en mi laptop, (olvide decirte que solo tienen derecho ciertos IPs para navegar a internet, el resto de los IPs deben usar otro proxy de salida .cu nadamas) pues necesito conectar mi tablet a internet y ademas debe ser de manera directa (es decir, que pueda definir proxy en la config wifi de mi tablet pero no necesite usuario.passwd) pues lo necesito para apps que no asimilan conecciones proxyadas con autenticacion…
        Para esto me he montado un squid en debian simulado en una virtual en mi laptop con red virtual en modo puente, y le doy el ip (que tiene acceso a salir a internet)…esto funcionaba bien tiempos atras, pero ahora al parecer han hecho cambios en los servicios y ahora no puedo usar ningun proxy en cascada (ni ccproxy y demas en windows, ni squid en mi debian)..he re-puesto y revisado las configuraciones segun he leido en internet para como debe ser posible esto en squid, pero usando:
        cache_peer x.x.x.x parent 3128 0 default no-query login=user:pass
        me pide en el navegador que apunte a mi proxy personal las credenciales de usuario y aunque se las doy correctamente me las vuelve a pedir y asi se mantiene.

        Sabras algo sobre este tema?

        • mayralberto dijo:

          Buenas tardes.
          Comprendo tu problema, pero supongo que estás consciente de que me pides orientarte sobre cómo saltarte restricciones de quienes están sobre ti… restricciones intencionadas o no.

          Consideremos que se trata de un problema de configuración mala de ellos (para tener la conciencia tranquila) y pensemos un poco sobre el problema. Habría que saber cómo están autenticando allá, digo yo.

          En los viejos tiempos cuando una aplicación no me aceptaba proxies recurría a un proxy SOCKS como dante o con más suerte, a proxychains . Declaraba las opciones convenientes en proxychains.conf y luego usaba, por ejemplo,
          proxychains wget http://www.sitio.cu
          Prueba y crucemos los dedos.

  2. A. dijo:

    bueno pero el uso que se le da aquí en nuestro país, ya tú sabes 🙁

    • mayralberto dijo:

      Hermano, ¿por qué mejor no hablamos de cuestiones técnicas, que en fin de cuentas, es el objetivo de este blog? Lo publico para compartir lo poco que sé con colegas que pueden tener todavía más dificultades que yo para su trabajo. Mi fin es ayudar, aportar; para discusiones de otros temas hay otros blogs. Éste no.

      Si tienes interés en los aspectos técnicos y puedes aportar/opinar/presentar más elementos, serás bienvenido.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *