Cómo configurar el proxy Squid para conexiones privadas en Ubuntu 20.04

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación de Squid Proxy
  • Paso 2: Asegurar el calamar
  • Paso 3: Conexión a través de Squid
  • Conclusión
  • Los servidores proxy son un tipo de aplicación de servidor que funciona como una puerta de enlace entre un usuario final y un recurso de Internet. A través de un servidor proxy, un usuario final puede controlar y supervisar su tráfico web para una amplia variedad de propósitos, incluidos la privacidad, la seguridad y el almacenamiento en caché. Por ejemplo, puede utilizar un servidor proxy para realizar solicitudes web desde una dirección IP diferente a la suya. También puede utilizar un servidor proxy para investigar cómo se sirve la web de forma diferente de una jurisdicción a otra, o evitar algunos métodos de vigilancia o limitación del tráfico web.

    Squid es un proxy HTTP estable, popular y de código abierto. En este tutorial, instalará y configurará Squid para proporcionar un proxy HTTP en un servidor Ubuntu 20.04.

    Implemente sus aplicaciones frontend desde GitHub con la plataforma de aplicaciones DigitalOcean . Deje que DigitalOcean se concentre en escalar su aplicación.

    Prerrequisitos

    Para completar esta guía, necesitarás:

    • Un servidor Ubuntu 20.04 y un usuario no root con privilegios sudo. Puede obtener más información sobre cómo configurar un usuario con estos privilegios en nuestra guía Configuración inicial del servidor con Ubuntu 20.04 .

    En este tutorial, utilizarás el nombre de dominio your_domain , pero deberás sustituirlo por tu propio nombre de dominio o dirección IP.

    Paso 1: Instalación de Squid Proxy

    Squid tiene muchos casos de uso más allá del enrutamiento del tráfico saliente de un usuario individual. En el contexto de implementaciones de servidores a gran escala, se puede utilizar como un mecanismo de almacenamiento en caché distribuido, un equilibrador de carga u otro componente de una pila de enrutamiento. Sin embargo, algunos métodos de escalado horizontal del tráfico del servidor que normalmente habrían involucrado un servidor proxy han sido superados en popularidad por los marcos de contenedorización como Kubernetes, que distribuyen más componentes de una aplicación. Al mismo tiempo, el uso de servidores proxy para redirigir las solicitudes web como un usuario individual se ha vuelto cada vez más popular para proteger su privacidad. Es útil tener esto en cuenta cuando se trabaja con servidores proxy de código abierto que pueden parecer tener muchas docenas de funciones en un modo de mantenimiento de menor prioridad. Los casos de uso de un proxy han cambiado con el tiempo, pero la tecnología fundamental no.

    Comience ejecutando los siguientes comandos como usuario no root para actualizar sus listados de paquetes e instalar Squid Proxy:

    1. sudo apt update
    2. sudo apt install squid

    Squid configurará automáticamente un servicio en segundo plano y se iniciará después de la instalación. Puedes comprobar que el servicio se está ejecutando correctamente:

    1. systemctl status squid.service
    Output● squid.service - Squid Web Proxy Server     Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled)     Active: active (running) since Wed 2021-12-15 21:45:15 UTC; 2min 11s ago

    De forma predeterminada, Squid no permite que ningún cliente se conecte a él desde fuera de este servidor. Para habilitarlo, deberá realizar algunos cambios en su archivo de configuración, que se almacena en /etc/squid/squid.conf. Ábralo en nanosu editor de texto favorito:

    1. sudo nano /etc/squid/squid.conf

    Tenga en cuenta que el archivo de configuración predeterminado de Squid es muy, muy largo y contiene una gran cantidad de opciones que se han deshabilitado temporalmente al colocar un #al comienzo de la línea en la que se encuentran, lo que también se denomina “comentar” . Lo más probable es que desee buscar en el archivo para encontrar las líneas que desea editar. En nano, esto se hace presionando Ctrl+W, ingresando su término de búsqueda, presionando Entery luego presionando repetidamente Alt+Wpara encontrar la siguiente instancia de ese término si es necesario.

    Comience navegando hasta la línea que contiene la frase http_access deny all. Debería ver un bloque de texto que explica las reglas de acceso predeterminadas de Squid:

    /etc/squid/squid.conf

    . . . ## INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS#include /etc/squid/conf.d/*# Example rule allowing access from your local networks.# Adapt localnet in the ACL section to list your (internal) IP networks# from where browsing should be allowed#http_access allow localnethttp_access allow localhost# And finally deny all other access to this proxyhttp_access deny all. . . 

    A partir de esto, puede ver el comportamiento actual: localhostestá permitido; otras conexiones no. Tenga en cuenta que estas reglas se analizan de forma secuencial, por lo que es una buena idea mantener la deny allregla en la parte inferior de este bloque de configuración. Puede cambiar esa regla a allow all, lo que permitiría que cualquier persona se conecte a su servidor proxy, pero probablemente no desee hacerlo. En su lugar, puede agregar una línea arriba http_access allow localhostque incluya su propia dirección IP, de la siguiente manera:

    /etc/squid/squid.conf

    ## INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS#include /etc/squid/conf.d/*# Example rule allowing access from your local networks.acl localnet src your_ip_address# Adapt localnet in the ACL section to list your (internal) IP networks# from where browsing should be allowed#http_access allow localnethttp_access allow localhost
    • acl significa Lista de control de acceso , un término común para las políticas de permisos.
    • localnet en este caso es el nombre de su ACL.
    • src es donde se originaría la solicitud bajo esta ACL, es decir, su dirección IP.

    Si no conoce su dirección IP local, lo más rápido es ir a un sitio como ¿Cuál es mi IP?, que puede indicarle desde dónde accedió a ella. Después de realizar ese cambio, guarde y cierre el archivo. Si está utilizando nano, presione Ctrl+X, y luego cuando se le solicite, Yy luego Enter.

    En este punto, puedes reiniciar Squid y conectarte a él, pero hay más cosas que puedes hacer para protegerlo primero.

    Paso 2: Asegurar el calamar

    La mayoría de los servidores proxy y la mayoría de las aplicaciones del lado del cliente que se conectan a ellos (por ejemplo, los navegadores web) admiten varios métodos de autenticación. Estos pueden incluir claves compartidas o servidores de autenticación independientes, pero lo más común es que impliquen pares de nombre de usuario y contraseña habituales. Squid te permite crear pares de nombre de usuario y contraseña utilizando la funcionalidad integrada de Linux, como un paso adicional o alternativo para restringir el acceso a tu servidor proxy por dirección IP. Para ello, crearás un archivo llamado /etc/squid/passwordsy apuntarás la configuración de Squid hacia él.

    Primero, necesitarás instalar algunas utilidades del proyecto Apache para poder tener acceso a un generador de contraseñas que le guste a Squid.

    1. sudo apt install apache2-utils

    Este paquete proporciona el htpasswdcomando que puede utilizar para generar una contraseña para un nuevo usuario de Squid. Los nombres de usuario de Squid no se superpondrán con los nombres de usuario del sistema de ninguna manera, por lo que puede utilizar el mismo nombre con el que inició sesión si lo desea. También se le solicitará que agregue una contraseña:

    1. sudo htpasswd -c /etc/squid/passwords your_squid_username

    Esto almacenará su nombre de usuario junto con un hash de su nueva contraseña en /etc/squid/passwords, que Squid utilizará como fuente de autenticación. Puede abrir catel archivo después para ver cómo se ve:

    1. sudo cat /etc/squid/passwords
    Outputsammy:$apr1$Dgl.Mtnd$vdqLYjBGdtoWA47w4q1Td.

    Después de verificar que se hayan almacenado su nombre de usuario y contraseña, puede actualizar la configuración de Squid para utilizar el nuevo /etc/squid/passwordsarchivo. Con nanosu editor de texto favorito, vuelva a abrir el archivo de configuración de Squid y agregue las siguientes líneas resaltadas:

    1. sudo nano /etc/squid/squid.conf

    /etc/squid/squid.conf

    …## INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS#include /etc/squid/conf.d/*auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwordsauth_param basic realm proxyacl authenticated proxy_auth REQUIRED# Example rule allowing access from your local networks.acl localnet src your_ip_address# Adapt localnet in the ACL section to list your (internal) IP networks# from where browsing should be allowed#http_access allow localnethttp_access allow localhosthttp_access allow authenticated# And finally deny all other access to this proxyhttp_access deny all…

    Estas directivas adicionales le indican a Squid que verifique en su nuevo passwordsarchivo los hashes de contraseñas que se pueden analizar mediante el basic_ncsa_authmecanismo y que solicite autenticación para acceder a su proxy. Puede revisar la documentación de Squid para obtener más información sobre este u otros métodos de autenticación. Después de eso, puede reiniciar Squid con los cambios de configuración. Esto puede tardar un momento en completarse.

    1. sudo systemctl restart squid.service

    Y no olvides abrir el puerto 3128 en tu firewall si estás usando ufw:

    1. sudo ufw allow 3128

    En el siguiente paso te conectarás finalmente a tu proxy.

    Paso 3: Conexión a través de Squid

    Para demostrar el funcionamiento de su servidor Squid, utilizará un programa de línea de comandos llamado curl, que es popular para realizar distintos tipos de solicitudes web. En general, si desea verificar si una conexión determinada debería funcionar en un navegador en circunstancias ideales, siempre debe probar primero con curl. Para ello, utilizará curl en su máquina local ; está instalado de forma predeterminada en todos los entornos modernos de Windows, Mac y Linux, por lo que puede abrir cualquier shell local para ejecutar este comando:

    1. curl -v -x http://your_squid_username:your_squid_password@your_server_ip:3128 http://www.google.com/

    El -xargumento pasa un servidor proxy a curl y, en este caso, estás usando el http://protocolo, especificando tu nombre de usuario y contraseña para este servidor y luego conectándote a un sitio web que funciona como google.com. Si el comando fue exitoso, deberías ver el siguiente resultado:

    Output*   Trying 138.197.103.77...* TCP_NODELAY set* Connected to 138.197.103.77 (138.197.103.77) port 3128 (#0)* Proxy auth using Basic with user 'sammy' GET http://www.google.com/ HTTP/1.1

    También es posible acceder https://a sitios web con su proxy Squid sin realizar cambios de configuración adicionales. Estos utilizan una directiva de proxy independiente llamada CONNECTpara preservar el SSL entre el cliente y el servidor:

    1. curl -v -x http://your_squid_username:your_squid_password@your_server_ip:3128 https://www.google.com/
    Output*   Trying 138.197.103.77...* TCP_NODELAY set* Connected to 138.197.103.77 (138.197.103.77) port 3128 (#0)* allocate connect buffer!* Establish HTTP proxy tunnel to www.google.com:443* Proxy auth using Basic with user 'sammy' CONNECT www.google.com:443 HTTP/1.1 Host: www.google.com:443 Proxy-Authorization: Basic c2FtbXk6c2FtbXk= User-Agent: curl/7.55.1 Proxy-Connection: Keep-Alive HTTP/1.1 200 Connection established* Proxy replied OK to CONNECT request* CONNECT phase completed!

    Las credenciales que utilizó curlahora deberían funcionar en cualquier otro lugar donde desee utilizar su nuevo servidor proxy.

    Conclusión

    En este tutorial, aprendiste a implementar un punto final de API de código abierto popular para redirigir el tráfico con poca o ninguna sobrecarga. Muchas aplicaciones tienen compatibilidad con servidores proxy integrada (a menudo a nivel del sistema operativo) desde hace décadas, lo que hace que esta pila de servidores proxy sea altamente reutilizable.

    A continuación, es posible que desee aprender cómo implementar Dante , un proxy SOCKS que puede ejecutarse junto con Squid para representar distintos tipos de tráfico web.

    Dado que uno de los casos de uso más comunes de los servidores proxy es el tráfico hacia y desde diferentes regiones globales, es posible que desees revisar cómo usar Ansible para automatizar las implementaciones de servidores a continuación, en caso de que desees duplicar esta configuración en otros centros de datos.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

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

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion