En esta guía comprensiva, le guiaremos a través del proceso de instalación y configuración del Servidor Proxy Squid en un servidor Rocky Linux o Alma Linux 9. Cubriremos todo, desde la configuración inicial hasta las configuraciones avanzadas, asegurando que tenga un sólido entendimiento de cómo aprovechar efectivamente Squid Proxy.

Prerrequisitos

Antes de sumergirnos en el proceso de instalación y configuración, asegurémonos de tener todos los prerrequisitos necesarios:

  1. Un servidor ejecutando Rocky Linux 9 o Alma Linux 9.
  2. Una cuenta de usuario no root con privilegios sudo.

Asegúrese de que su sistema esté actualizado ejecutando el siguiente comando:

sudo dnf update

Además, necesitaremos instalar algunos paquetes de utilidades básicas. Aunque algunos de ellos pueden ya estar instalados, es una buena práctica asegurarse de que estén disponibles:

sudo dnf install wget curl nano unzip yum-utils -y

Con los prerrequisitos resueltos, podemos proceder a la instalación de Squid Proxy.

Paso 1 – Instalación de Squid Proxy

Para instalar Squid Proxy, necesitamos habilitar primero el repositorio Epel. Ejecute el siguiente comando para instalar el repositorio:

sudo dnf install epel-release

Una vez instalado el repositorio, podemos proceder con la instalación de Squid Proxy:

sudo dnf install squid

Para verificar que Squid Proxy se ha instalado correctamente, ejecute el siguiente comando:

squid --version

Debería ver la versión de Squid Cache y otra información relevante.

A continuación, necesitamos habilitar y empezar el servicio Squid:

sudo systemctl enable squid --now

Para revisar el estado del servicio, utilice el siguiente comando:

sudo systemctl status squid

Esto mostrará el estado actual del servicio Squid e indicará si está en ejecución.

Paso 2 – Configuración de Squid Proxy

Ahora que Squid Proxy está instalado, es momento de configurarlo según sus necesidades. Squid almacena su configuración en el archivo /etc/squid/squid.conf. Empecemos echando un vistazo al contenido de este archivo:

sudo grep -vE "^#|^$" /etc/squid/squid.conf

Este comando filtra todos los comentarios y líneas vacías, proporcionándole una vista clara de la configuración.

2.1 Configuración de políticas de acceso Squid

Las Listas de Control de Acceso (ACL) definen quién puede usar Squid como un proxy en su red local. Para configurar las ACL, podemos añadir reglas al archivo de configuración. Por ejemplo, para permitir el acceso a los hosts en la subred 192.168.204.0/24, agregue la siguiente regla ACL:

acl newlocalnet src 192.168.204.0/24

Para permitir el acceso a esta ACL, añada la siguiente línea debajo de la línea http_access deny all:

http_access allow newlocalnet

Recuerde que Squid lee el archivo de configuración de arriba a abajo, por lo que el orden de las reglas es importante.

2.2 Bloqueo de sitios web

Squid Proxy le permite bloquear el acceso a sitios web específicos creando una lista de dominios bloqueados. Para hacer esto, cree un archivo para almacenar los dominios que desea bloquear:

sudo nano /etc/squid/blocked-sites

Añada los sitios web que quiere bloquear a este archivo, un dominio por línea. Por ejemplo:

example.com
example.net
example.org

Guarde el archivo y luego abra el archivo de configuración de Squid:

sudo nano /etc/squid/squid.conf

Añada las siguientes líneas al archivo de configuración:

acl blocked_sites dstdomain "/etc/squid/blocked-sites"
http_access deny blocked_sites

Esto negará el acceso a cualquier sitio web listado en el archivo blocked-sites.

2.3 Bloquear descargas de archivos específicos

Además de bloquear sitios web, Squid Proxy también puede bloquear descargas de tipos de archivos específicos. Para lograr esto, necesitamos crear un archivo para almacenar las extensiones de archivo que queremos bloquear:

sudo nano /etc/squid/blocked-filextensions

En este archivo, liste las extensiones de archivo que desea bloquear, una extensión por línea. Por ejemplo:

.exe(?.*)?$
.bat(?.*)?$
.tar(?.*)?$
.mp3(?.*)?$
.mp4(?.*)?$

Guarde el archivo y abra el archivo de configuración de Squid:

sudo nano /etc/squid/squid.conf

Añada las siguientes líneas al archivo de configuración:

acl blockfiles urlpath_regex -i "/etc/squid/blocked-filextensions"
http_access deny blockfiles

Esto negará la descarga de cualquier archivo con una extensión coincidente.

2.4 Bloquear sitios web utilizando palabras clave

Otra forma de controlar el acceso a sitios web es bloqueándolos basándose en palabras clave. Para implementar esto, necesitamos crear un archivo de configuración para almacenar las palabras clave que queremos bloquear:

sudo nano /etc/squid/banned-keywords

En este archivo, liste las palabras clave que desea bloquear, una palabra clave por línea. Por ejemplo:

porn
gamble
ads
movie

Guarde el archivo y haga los siguientes cambios en el archivo de configuración de Squid:

acl keyword-ban url_regex "/etc/squid/banned-keywords"
http_access deny keyword-ban

Esto negará el acceso a cualquier sitio web que contenga una palabra clave bloqueada.

2.5 Máscara de la dirección IP del cliente

Para anonimizar el tráfico y proteger la dirección IP del cliente, podemos configurar Squid Proxy para ocultarla. Añada las siguientes líneas al archivo de configuración de Squid:

via off
forwarded_for off

Estas líneas desactivan los encabezados Via y X-Forwarded-For, evitando que la dirección IP del cliente sea expuesta.

2.6 Cambiar el puerto del Proxy Squid

Por defecto, Squid Proxy escucha en el puerto 3128. Si desea cambiar el puerto, puede hacerlo modificando el archivo de configuración de Squid. Abra el archivo para editar:

sudo nano /etc/squid/squid.conf

Localice la línea http_port 3128 y reemplácela por el número de puerto deseado. Por ejemplo:

http_port 7035

Guarde el archivo y valide la configuración:

sudo squid -k parse

Este comando verifica el archivo de configuración en busca de cualquier error.

Finalmente, reinicie el servicio Squid para que los cambios surtan efecto:

sudo systemctl restart squid

2.7 Configurar Firewall / SELinux

Si está utilizando el puerto predeterminado (3128), necesita permitirlo a través del firewall:

sudo firewall-cmd --add-service=squid --permanent
sudo firewall-cmd --reload

Si ha habilitado un puerto personalizado, utilice los siguientes comandos en su lugar. Reemplace  [port_number] con el número de puerto personalizado:

sudo firewall-cmd --permanent --add-port=[port_number]/tcp
sudo firewall-cmd --reload

También necesita habilitar el puerto personalizado en SELinux utilizando el siguiente comando:

sudo semanage port -a -t squid_port_t -p tcp [port_number]

Con el servidor Squid Proxy configurado según sus especificaciones, es hora de configurar la autenticación básica para mayor seguridad.

Paso 3 – Configuración de la autenticación básica para Squid

Para configurar Squid Proxy para aceptar autenticación, utilizaremos la utilidad htpasswd del paquete de herramientas de Apache. Instale el paquete ejecutando el siguiente comando:

sudo dnf install httpd-tools

A continuación, cree un par de nombre de usuario y contraseña utilizando el siguiente comando:

sudo htpasswd -c /etc/squid/squid_passwd shapehost

Se le pedirá que introduzca y confirme la contraseña.

Para asegurarse de que Squid pueda leer el archivo de contraseñas, cambie la propiedad del archivo al usuario Squid:

sudo chown squid /etc/squid/squid_passwd

Ahora que hemos configurado el archivo de contraseñas, necesitamos configurar Squid para usarlo para la autenticación. Abra el archivo de configuración de Squid:

sudo nano /etc/squid/squid.conf

Añada las siguientes líneas al archivo de configuración:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/squid_passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users

Estas líneas configuran Squid para utilizar el programa auxiliar basic_ncsa_auth y especifican la ubicación del archivo de contraseñas.

Para habilitar la autenticación, reinicie el servicio Squid:

sudo systemctl restart squid

Con la autenticación básica en su lugar, sólo los usuarios con credenciales válidas podrán acceder al servidor Proxy Squid.

Paso 4 – Configuración de clientes Proxy Squid

Ahora que Squid Proxy está en funcionamiento, veamos cómo configurar los clientes para que se conecten al servidor proxy.

4.1 Configuración del Proxy en todo el sistema

Para configurar Squid Proxy para que funcione en todo su sistema, puede crear un archivo que defina la configuración del proxy. Abra el archivo para editarlo:

sudo nano /etc/profile.d/squid.sh

Añada las siguientes líneas al archivo, reemplazando 192.168.205.10:7035 por la dirección IP y el puerto de su servidor Proxy Squid:

PROXY_URL="192.168.205.10:7035"
HTTP_PROXY=$PROXY_URL
HTTPS_PROXY=$PROXY_URL
FTP_PROXY=$PROXY_URL
http_proxy=$PROXY_URL
https_proxy=$PROXY_URL
ftp_proxy=$PROXY_URL
export HTTP_PROXY HTTPS_PROXY FTP_PROXY http_proxy https_proxy ftp_proxy

Guarde el archivo y úselo para aplicar los cambios:

source /etc/profile.d/squid.sh

Para verificar la configuración, puede usar el comando wget para hacer una solicitud a un sitio web:

wget google.com

Si la solicitud se realiza con éxito, significa que la configuración del proxy está funcionando.

4.2 Configuración del Proxy en el Navegador

Para configurar Squid Proxy en navegadores web como Firefox o Chrome, puede utilizar extensiones de navegador que soporten la configuración del proxy. Una extensión popular para Firefox es “FoxyProxy Standard”, y para Chrome, puede utilizar “Proxy SwitchOmega”.

Vamos a ver cómo configurar Squid Proxy utilizando la extensión FoxyProxy Standard para Firefox.

  1. Instale la extensión FoxyProxy Standard desde la tienda de complementos de Firefox.
  2. Una vez instalado, abra las opciones de la extensión haciendo clic en el icono de FoxyProxy en la barra de herramientas de Firefox y seleccionando “Opciones”.
  3. En las opciones de FoxyProxy, haga clic en el botón “Añadir” para crear una nueva configuración de proxy.
  4. Introduzca un nombre para la configuración del proxy, la dirección IP y el puerto de su servidor Proxy Squid, y cualquier detalle de autenticación si es necesario.
  5. Habilite la opción “No usar para localhost y direcciones IP intranet/privadas” para prevenir conflictos con recursos locales.
  6. Haga clic en “Guardar” para guardar la configuración.

Con la configuración del proxy establecida, ahora puede navegar por la web utilizando el servidor Proxy Squid.

4.3 Uso de Squidclient

Si prefiere probar el servidor Proxy Squid desde la línea de comandos, puede utilizar el comando  squidclient. Este comando le permite hacer solicitudes web y ver la respuesta. Aquí tiene un ejemplo de cómo utilizarlo:

squidclient https://google.com

Esto hará una solicitud a https://google.com a través del servidor Proxy Squid y mostrará la respuesta.

Para las empresas que necesitan soluciones de hosting en la nube confiables, Shape.host ofrece servicios de Linux SSD VPS. Con Shape.host, puede disfrutar de una infraestructura de hosting escalable y segura, respaldada por soporte experto. Visite Shape.host para obtener más información sobre sus servicios.