Cómo instalar el servidor proxy Squid en Ubuntu 20.04

Squid es una completa aplicación proxy basada en Linux que se utiliza principalmente para filtrar tráfico, seguridad y búsquedas DNS. También se utiliza para mejorar el rendimiento del servidor web almacenando recursos en caché. En términos sencillos, un servidor Squid es un ordenador que actúa como intermediario entre un ordenador de sobremesa e Internet y que redirige las peticiones entrantes de los clientes a un servidor donde se almacenan los datos para facilitar su recuperación. Soporta varios protocolos, como HTTP, FTP, TLS, SSL, Internet Gopher y HTTPS.

En este tutorial, te mostraremos cómo instalar y configurar el servidor proxy Squid en un servidor Ubuntu 20.04.

Requisitos previos

  • Un servidor que ejecute Ubuntu 20.04.
  • Una contraseña de root está configurado el servidor.

Cómo empezar

Antes de empezar, tendrás que actualizar los paquetes de tu sistema a la última versión. Puedes actualizarlos con el siguiente comando:

apt-get update -y

Una vez actualizados todos los paquetes, reinicia tu sistema para aplicar los cambios.

Instalar Squid Proxy

Por defecto, el paquete Squid está disponible en el repositorio por defecto de Ubuntu 20.04. Puedes instalarlo utilizando el siguiente comando:

apt-get install squid -y

Una vez instalado Squid, puedes comprobar el estado del servicio Squid con el siguiente comando:

systemctl status squid

Deberías obtener la siguiente salida:

? squid.service - Squid Web Proxy Server
     Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-08-23 12:00:24 UTC; 11s ago
       Docs: man:squid(8)
    Process: 49265 ExecStartPre=/usr/sbin/squid --foreground -z (code=exited, status=0/SUCCESS)
    Process: 49282 ExecStart=/usr/sbin/squid -sYC (code=exited, status=0/SUCCESS)
   Main PID: 49283 (squid)
      Tasks: 4 (limit: 2353)
     Memory: 16.4M
     CGroup: /system.slice/squid.service
             ??49283 /usr/sbin/squid -sYC
             ??49285 (squid-1) --kid squid-1 -sYC
             ??49287 (logfile-daemon) /var/log/squid/access.log
             ??49288 (pinger)

Aug 23 12:00:24 ubuntu2004 squid[49285]: Max Swap size: 0 KB
Aug 23 12:00:24 ubuntu2004 squid[49285]: Using Least Load store dir selection
Aug 23 12:00:24 ubuntu2004 squid[49285]: Set Current Directory to /var/spool/squid
Aug 23 12:00:24 ubuntu2004 squid[49285]: Finished loading MIME types and icons.
Aug 23 12:00:24 ubuntu2004 squid[49285]: HTCP Disabled.
Aug 23 12:00:24 ubuntu2004 squid[49285]: Pinger socket opened on FD 14
Aug 23 12:00:24 ubuntu2004 squid[49285]: Squid plugin modules loaded: 0
Aug 23 12:00:24 ubuntu2004 squid[49285]: Adaptation support is off.
Aug 23 12:00:24 ubuntu2004 squid[49285]: Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 12 flags=9
Aug 23 12:00:25 ubuntu2004 squid[49285]: storeLateRelease: released 0 objects

Por defecto, Squid está escuchando en el puerto 3128. Puedes comprobarlo con el siguiente comando:

netstat -plunt | grep 3128

Deberías ver la siguiente salida:

tcp6       0      0 :::3128                 :::*                    LISTEN      50017/(squid-1)

Cuando hayas terminado, puedes pasar al siguiente paso.

Configurar la autenticación basada en IP

Hay varias formas de restringir el acceso del cliente a Internet. En esta sección, configuraremos Squid para que autentique basándose en la dirección IP del cliente.

Puedes hacerlo editando el archivo de configuración por defecto de Squid:

nano /etc/squid/squid.conf

Añade la siguiente línea al principio del archivo:

acl client1 src 192.168.10.10
acl client2 src 192.168.10.11
http_access allow client1 client2

Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia el servicio Squid para aplicar los cambios:

systemctl restart squid

Donde

  • cliente1 y cliente2 es el nombre que identifica a los ordenadores cliente.
  • 192.168.10.10 y 192.168.10. 11 es la dirección IP del ordenador cliente.

Ahora, sólo los ordenadores configurados con la IP 192.168.10.10 y 192.168.10.11 pueden acceder a Internet.

Configurar la autenticación basada en el usuario

También puedes configurar Squid para que se autentique basándose en el usuario y la contraseña. Para ello, necesitarás instalar el paquete Apache utils en tu sistema.

Ejecuta el siguiente comando para instalar el paquete Apache utils:

apt install apache2-utils -y

Una vez instalado, crea un primer usuario con el siguiente comando:

htpasswd /etc/squid/passwd client1

Se te pedirá que establezcas una contraseña como se muestra a continuación:

New password: 
Re-type new password: 
Adding password for user client1

A continuación, crea un segundo usuario con el siguiente comando:

htpasswd /etc/squid/passwd client2

Establece la contraseña como se muestra a continuación:

New password: 
Re-type new password: 
Adding password for user client2

A continuación, puedes verificar ambos usuarios con el siguiente comando:

cat /etc/squid/passwd

Deberías obtener la siguiente salida:

client1:$apr1$CPlx8eVt$NJq3CT/hzfDCnAZRypIq5/
client2:$apr1$XYxQ2npc$IW0Nqjp15O5WYCo/wCFlB0

A continuación, abre el archivo de configuración por defecto de Squid:

nano /etc/squid/squid.conf

Elimina las tres primeras líneas que has añadido en la sección anterior y añade las siguientes líneas al principio del archivo:

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users

Guarda y cierra el archivo. A continuación, reinicia el servicio proxy Squid para aplicar los cambios:

systemctl restart squid

Ahora, tendrás que proporcionar un nombre de usuario y una contraseña para poder acceder a Internet.

Configurar la autenticación combinada

También puedes configurar un Squid para que autentique a un cliente basándose en la dirección IP y el nombre de usuario / contraseña.

Abre el archivo de configuración por defecto de Squid:

nano /etc/squid/squid.conf

Busca las siguientes líneas que has añadido en la sección anterior:

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users

Y, sustitúyelas por las siguientes líneas:

acl client1 src 192.168.10.10
acl client2 src 192.168.10.11
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow client1 client2 ncsa_users

Guarda y cierra el archivo cuando hayas terminado y reinicia el servicio Squid para aplicar los cambios:

systemctl restart squid

Configurar Squid para anonimizar el tráfico

A continuación, tendrás que añadir algunas reglas para enmascarar las direcciones IP de los clientes de los servidores que reciben tráfico de tu proxy HTTP Squid.

Puedes hacerlo editando el archivo de configuración por defecto de Squid:

nano /etc/squid/squid.conf

Añade las siguientes líneas al principio del archivo:

forwarded_for off
request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all

Guarda y cierra el archivo cuando hayas terminado y reinicia el servicio Squid para aplicar los cambios:

systemctl restart squid

Verificar Squid Proxy

A continuación, tendrás que definir tu servidor Proxy en tu navegador web Mozilla.

Ve al sistema cliente, abre el navegador web Mozilla y haz clic en Editar => Preferencias, como se muestra a continuación:

Comprueba el proxy squid

Haz clic en la sección Configuración de Red y en Configuración. Deberías ver la siguiente página:

Configuración del servidor proxy

Selecciona el botón de opción Configuración proxy manual, introduce la dirección IP de tu servidor Squid en el campo Host HTTP y 3128 en el campo Puerto y selecciona la casilla Utilizar este servidor proxy para todos los protocolos y haz clic en el botón Aceptar para guardar la configuración.

Ahora, tu navegador está configurado para navegar por Internet a través del proxy Squid.

Para verificarlo, escribe la URL https://www.whatismyip.com/. Se te pedirá que proporciones un nombre de usuario y una contraseña, como se muestra a continuación:

Autentificarse en el servidor proxy

Proporciona tu nombre de usuario y contraseña del servidor proxy Squid que has creado anteriormente y pulsa el botón Aceptar. Deberías ver la siguiente página:

Sitio web de Axxess mediante proxy squid

En la página anterior, deberías ver la dirección IP de tu servidor Squid en lugar de la dirección IP de tu ordenador cliente.

Conclusión

Enhorabuena! has instalado y configurado correctamente el servidor proxy Squid en el servidor Ubuntu 20.04. También puedes configurar el proxy Squid para restringir el sitio web específico en función de la palabra, el dominio y las IP. Para más información, visita la documentación oficial de Squid.

También te podría gustar...