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:
Haz clic en la sección Configuración de Red y en Configuración. Deberías ver la siguiente página:
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:
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:
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.