Squid es un proxy de almacenamiento en caché con todas las funciones que admite protocolos de red populares como HTTP, HTTPS, FTP y más. Se puede utilizar para mejorar el rendimiento del servidor web almacenando en caché solicitudes repetidas, filtrando el tráfico web y accediendo a contenido restringido geográficamente.

Este tutorial explica cómo configurar un Squid Proxy en Ubuntu 20.04 y configurar los navegadores web Firefox y Google Chrome para usarlo.

Instalando Squid en Ubuntu

El paquete squid está incluido en los repositorios estándar de Ubuntu 20.04. Para instalarlo, ejecute los siguientes comandos como usuario sudo:

sudo apt updatesudo apt install squid

Una vez que se complete la instalación, el servicio Squid se iniciará automáticamente. Para verificarlo, verifique el estado del servicio:

sudo systemctl status squid

La salida se verá algo como esto:

● squid.service - Squid Web Proxy Server
     Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-10-23 19:02:43 UTC; 14s ago
       Docs: man:squid(8)
...

Configurando Calamar

El servicio squid se puede configurar editando el /etc/squid/squid.confarchivo. El archivo de configuración contiene comentarios que describen lo que hace cada opción de configuración. También puede colocar sus ajustes de configuración en archivos separados, que se pueden incluir en el archivo de configuración principal mediante la directiva "incluir".

Antes de realizar cualquier cambio, se recomienda hacer una copia de seguridad del archivo de configuración original:

sudo cp /etc/squid/squid.conf{,.orginal}

Para comenzar a configurar su instancia de squid, abra el archivo en su editor de texto:

sudo nano /etc/squid/squid.conf

De forma predeterminada, squid está configurado para escuchar en el puerto 3128en todas las interfaces de red en el servidor.

Si desea cambiar el puerto y configurar una interfaz de escucha, ubique la línea que comienza con http_porty especifique la dirección IP de la interfaz y el nuevo puerto. Si no se especifica ninguna interfaz, Squid escuchará en todas las interfaces.

/etc/calamar/calamar.conf
# Squid normally listens to port 3128
http_port IP_ADDR:PORT

Ejecutar Squid en todas las interfaces y en el puerto predeterminado debería estar bien para la mayoría de los usuarios.

Squid le permite controlar cómo los clientes pueden acceder a los recursos web mediante listas de control de acceso (ACL). De forma predeterminada, solo se permite el acceso desde el host local.

Si todos los clientes que utilizan el proxy tienen una dirección IP estática, la opción más sencilla para restringir el acceso al servidor proxy es crear una ACL que incluya las IP permitidas. De lo contrario, puede configurar squid para usar la autenticación.

En lugar de agregar las direcciones IP en el archivo de configuración principal, cree un nuevo archivo dedicado que contendrá las IP permitidas:

/etc/squid/allowed_ips.txt
192.168.33.1
# All other allowed IPs

Una vez hecho esto, abra el archivo de configuración principal y cree una nueva ACL con el nombre allowed_ips(primera línea resaltada) y permita el acceso a esa ACL usando la http_accessdirectiva (segunda línea resaltada):

/etc/calamar/calamar.conf
# ...
acl allowed_ips src "/etc/squid/allowed_ips.txt"
# ...
#http_access allow localnet
http_access allow localhost
http_access allow allowed_ips
# And finally deny all other access to this proxy
http_access deny all

El orden de las http_accessreglas es importante. Asegúrese de agregar la línea antes de http_access deny all.

La http_accessdirectiva funciona de manera similar a las reglas del cortafuegos. Squid lee las reglas de arriba a abajo, y cuando una regla coincide, las siguientes reglas no se procesan.

Cada vez que realice cambios en el archivo de configuración, debe reiniciar el servicio Squid para que los cambios surtan efecto:

sudo systemctl restart squid

Autenticación de calamar

Si restringir el acceso según la IP no funciona para su caso de uso, puede configurar squid para usar un back-end para autenticar a los usuarios. Squid es compatible con la autenticación básica de Samba, LDAP y HTTP.

En esta guía, usaremos la autenticación básica. Es un método de autenticación simple integrado en el protocolo HTTP.

Para generar una contraseña cifrada, utilice la opensslherramienta. El siguiente comando agrega el USERNAME:PASSWORDpar al /etc/squid/htpasswdarchivo:

printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd

Por ejemplo, para crear un usuario “josh” con contraseña “ P@ssvv0rT”, ejecutaría:

printf "josh:$(openssl passwd -crypt 'P@ssvv0rd')\n" | sudo tee -a /etc/squid/htpasswd
josh:QMxVjdyPchJl6

El siguiente paso es habilitar la autenticación básica HTTP e incluir el archivo que contiene las credenciales de usuario en el archivo de configuración de squid.

Abra la configuración principal y agregue lo siguiente:

sudo nano /etc/squid/squid.conf
/etc/calamar/calamar.conf
# ...
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/htpasswd
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
# ...
#http_access allow localnet
http_access allow localhost
http_access allow authenticated
# And finally deny all other access to this proxy
http_access deny all

Las tres primeras líneas resaltadas crean una nueva ACL denominada authenticated, y la última línea resaltada permite el acceso a usuarios autenticados.

Reinicie el servicio Squid:

sudo systemctl restart squid

Configuración del cortafuegos

Para abrir los puertos de Squid, habilite el UFW perfil 'Squid':

sudo ufw allow 'Squid'

Si Squid se ejecuta en otro puerto no predeterminado, por ejemplo, 8888puede permitir el tráfico en ese puerto con: sudo ufw allow 8888/tcp.

Configuración de su navegador para usar proxy

Ahora que ha configurado Squid, el último paso es configurar su navegador preferido para usarlo.

Firefox

Los pasos a continuación son los mismos para Windows, macOS y Linux.

  1. En la esquina superior derecha, haz clic en el ícono de la hamburguesa para abrir el menú de Firefox:

  2. Haz clic en el ⚙ Preferencesenlace.

  3. Desplácese hacia abajo hasta la Network Settingssección y haga clic en el Settings...botón.

  4. Una nueva ventana se abrirá.

    • Seleccione el Manual proxy configurationbotón de opción.
    • Ingrese la dirección IP de su servidor Squid en el HTTP Hostcampo y 3128en el Portcampo.
    • Seleccione la Use this proxy server for all protocolscasilla de verificación.
    • Haga clic en el OKbotón para guardar la configuración.

En este punto, su Firefox está configurado y puede navegar por Internet a través del proxy Squid. Para verificarlo, abra google.com, escriba "cuál es mi ip" y debería ver la dirección IP de su servidor Squid.

Para volver a la configuración predeterminada, vaya a Network Settings, seleccione el Use system proxy settingsbotón de opción y guarde la configuración.

Hay varios complementos que también pueden ayudarte a configurar los ajustes del proxy de Firefox, como FoxyProxy .

Google Chrome

Google Chrome utiliza la configuración de proxy del sistema predeterminada. En lugar de cambiar la configuración del proxy de su sistema operativo, puede usar un complemento como SwitchyOmega o iniciar el navegador web Chrome desde la línea de comandos.

Para iniciar Chrome usando un nuevo perfil y conectarse al servidor Squid, use el siguiente comando:

linux:

/usr/bin/google-chrome \
    --user-data-dir="$HOME/proxy-profile" \
    --proxy-server="http://SQUID_IP:3128"

Mac OS :

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
    --user-data-dir="$HOME/proxy-profile" \
    --proxy-server="http://SQUID_IP:3128"

ventanas:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" ^
    --user-data-dir="%USERPROFILE%\proxy-profile" ^
    --proxy-server="http://SQUID_IP:3128"

El perfil se creará automáticamente si no existe. De esta manera, puede ejecutar varias instancias de Chrome al mismo tiempo.

Para confirmar que el servidor proxy funciona correctamente, abra google.comy escriba "cuál es mi IP". La IP que se muestra en su navegador debe ser la dirección IP de su servidor.

Conclusión

Squid es uno de los servidores proxy de almacenamiento en caché más populares. Mejora la velocidad del servidor web y puede ayudarlo a restringir el acceso de los usuarios a Internet.

Le mostramos cómo instalar y configurar Squid en Ubuntu 20.04 y configurar su navegador para usarlo.

Si encuentra un problema o tiene comentarios, deje un comentario a continuación.