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. Squid se utiliza principalmente 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 lo guiará a través del proceso de configuración de Squid Proxy en Ubuntu 18.04 y configuración de los navegadores web Firefox y Google Chrome para usarlo.
Instalando Squid en Ubuntu #
El paquete Squid está incluido en los repositorios predeterminados de Ubuntu 18.04. Para instalarlo ingrese los siguientes comandos como usuario sudo:
sudo apt update
sudo apt install squid
Una vez completada la instalación, el servicio Squid se iniciará automáticamente.
Para verificar que la instalación fue exitosa y que el servicio Squid se está ejecutando, escriba el siguiente comando que imprimirá el estado del servicio:
sudo systemctl status squid
● squid.service - LSB: Squid HTTP Proxy version 3.x
Loaded: loaded (/etc/init.d/squid; generated)
Active: active (running) since Thu 2019-06-27 11:45:17 UTC
...
Configurando Squid #
Squid se puede configurar editando /etc/squid/squid.conf
expediente. También puede usar archivos separados con opciones de configuración que se pueden incluir usando la directiva "incluir".
El archivo de configuración contiene comentarios que describen lo que hace cada opción de configuración.
Antes de realizar cualquier cambio, es una buena idea hacer una copia de seguridad del archivo de configuración original:
sudo cp /etc/squid/squid.conf{,.orginal}
Para editar el archivo, ábralo en su editor de texto:
sudo nano /etc/squid/squid.conf
De forma predeterminada, Squid está configurado para escuchar en el puerto 3128
en todas las interfaces de red del servidor.
Si desea cambiar el puerto y establecer una interfaz de escucha, busque la línea que comienza con http_port
y especifique la dirección IP de la interfaz y el nuevo puerto. Si no se especifica ninguna interfaz, Squid escuchará en todas las interfaces.
# 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.
En Squid, puede controlar cómo los clientes pueden acceder a los recursos web utilizando las Listas de control de acceso (ACL).
De forma predeterminada, Squid permite el acceso solo desde el servidor local.
Si todos los clientes que utilizarán el proxy tienen una dirección IP estática, puede crear una ACL que incluirá las IP permitidas.
En lugar de agregar las direcciones IP en el archivo de configuración principal, crearemos un nuevo archivo dedicado que contendrá las IP:
/etc/squid/allowed_ips.txt192.168.33.1
# All other allowed IPs
Una vez hecho esto, abra el archivo de configuración principal y cree una nueva ACL llamada allowed_ips
(primera línea resaltada) y permita el acceso a esa ACL usando el http_access
directiva (segunda línea resaltada):
# ...
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 del http_access
reglas es importante. Asegúrese de agregar la línea antes de http_access deny all
.
El http_access
La directiva 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
N.º de autenticación de Squid
Squid puede usar diferentes back-ends, incluidos Samba, LDAP y autenticación básica HTTP para usuarios autenticados.
En este tutorial, configuraremos Squid para usar autenticación básica. Es un método de autenticación simple integrado en el protocolo HTTP.
Usaremos el openssl
para generar las contraseñas y agregar el username:password
empareje con /etc/squid/htpasswd
archivo usando el tee
comando como se muestra a continuación:
printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd
Vamos a crear un usuario llamado "josh" con contraseña "Sz$Zdg69
":
printf "josh:$(openssl passwd -crypt 'Sz$Zdg69')\n" | sudo tee -a /etc/squid/htpasswd
josh:RrvgO7NxY86VM
Ahora que se creó el usuario, el siguiente paso es habilitar la autenticación básica HTTP e incluir el htpasswd
archivo.
Abra la configuración principal y agregue lo siguiente:
/etc/squid/squid.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 primeras tres líneas resaltadas están creando una nueva ACL llamada authenticated
y la última línea resaltada permite el acceso a usuarios autenticados.
Reinicie el servicio Squid:
sudo systemctl restart squid
Configurando cortafuegos #
Suponiendo que está utilizando UFW
para administrar su firewall, deberá abrir el puerto Squid. Para eso, habilite el perfil 'Squid' que incluye reglas para los puertos predeterminados de Squid.
sudo ufw allow 'Squid'
Para verificar el tipo de estado:
sudo ufw status
La salida será algo como lo siguiente:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
Squid ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
Squid (v6) ALLOW Anywhere (v6)
Si Squid se ejecuta en otro puerto no predeterminado, por ejemplo, 8888
puede permitir el tráfico en ese puerto con:sudo ufw allow 8888/tcp
. Configurando 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.
-
En la esquina superior derecha, haz clic en el ícono de la hamburguesa
☰
para abrir el menú de Firefox: -
Haz clic en
⚙ Preferences
enlace. -
Desplácese hacia abajo hasta
Network Settings
y haz clic enSettings...
botón. -
Se abrirá una nueva ventana.
- Seleccione la
Manual proxy configuration
botón de opción. - Ingrese la dirección IP de su servidor Squid en el
HTTP Host
campo y3128
en elPort
campo. - Seleccione
Use this proxy server for all protocols
casilla de verificación. - Haga clic en
OK
botón para guardar la configuración.
- Seleccione la
En este punto, su Firefox está configurado y puede navegar por Internet a través del proxy Squid. Para verificarlo, abre 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 Use system proxy settings
botón de opción y guarde la configuración.
Hay varios complementos que también pueden ayudarte a configurar los ajustes de 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:
/usr/bin/google-chrome \
--user-data-dir="$HOME/proxy-profile" \
--proxy-server="http://SQUID_IP:3128"
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--user-data-dir="$HOME/proxy-profile" \
--proxy-server="http://SQUID_IP:3128"
"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 forma, puede ejecutar varias instancias de Chrome al mismo tiempo.
Para confirmar que el servidor proxy funciona correctamente, abre google.com
, y escriba "cuál es mi ip". La IP que se muestra en su navegador debe ser la dirección IP de su servidor.