Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 7. Configuración del servidor proxy de caché Squid

Squid es un servidor proxy que almacena en caché el contenido para reducir el ancho de banda y cargar las páginas web más rápidamente. Este capítulo describe cómo configurar Squid como proxy para el protocolo HTTP, HTTPS y FTP, así como la autenticación y la restricción de acceso.

7.1. Configuración de Squid como proxy de caché sin autenticación

Esta sección describe una configuración básica de Squid como proxy de caché sin autenticación. El procedimiento limita el acceso al proxy basándose en rangos de IP.

Requisitos previos

  • El procedimiento asume que el archivo /etc/squid/squid.conf es el proporcionado por el paquete squid. Si ha editado este archivo anteriormente, elimine el archivo y vuelva a instalar el paquete.

Procedimiento

  1. Instale el paquete squid:

    # yum install squid
  2. Edite el archivo /etc/squid/squid.conf:

    1. Adapte las listas de control de acceso (ACL) de localnet para que coincidan con los rangos de IP a los que se debe permitir el uso del proxy:

      acl localnet src 192.0.2.0/24
      acl localnet 2001:db8:1::/64

      Por defecto, el archivo /etc/squid/squid.conf contiene la regla http_access allow localnet que permite utilizar el proxy desde todos los rangos de IP especificados en las ACLs localnet. Tenga en cuenta que debe especificar todas las ACL de localnet antes de la regla de http_access allow localnet.

      Importante

      Elimine todas las entradas existentes en acl localnet que no coincidan con su entorno.

    2. La siguiente ACL existe en la configuración por defecto y define 443 como un puerto que utiliza el protocolo HTTPS:

      acl puertos_SSL puerto 443

      Si los usuarios deben poder utilizar el protocolo HTTPS también en otros puertos, añada una ACL para cada uno de estos puertos:

      acl Puerto SSL port_number
    3. Actualice la lista de reglas de acl Safe_ports para configurar a qué puertos puede establecer una conexión Squid. Por ejemplo, para configurar que los clientes que utilicen el proxy sólo puedan acceder a los recursos del puerto 21 (FTP), 80 (HTTP) y 443 (HTTPS), mantenga sólo las siguientes declaraciones de acl Safe_ports en la configuración:

      acl Safe_ports port 21
      acl Safe_ports port 80
      acl Safe_ports port 443

      Por defecto, la configuración contiene la regla http_access deny !Safe_ports que define la denegación de acceso a los puertos que no están definidos en las ACL de Safe_ports.

    4. Configure el tipo de caché, la ruta del directorio de la caché, el tamaño de la caché y otros ajustes específicos del tipo de caché en el parámetro cache_dir:

      cache_dir ufs /var/spool/squid 10000 16 256

      Con estos ajustes:

      • Squid utiliza el tipo de caché ufs.
      • Squid almacena su caché en el directorio /var/spool/squid/.
      • El caché crece hasta 10000 MB.
      • Squid crea 16 subdirectorios de nivel 1 en el directorio /var/spool/squid/.
      • Squid crea subdirectorios 256 en cada directorio de nivel 1.

        Si no se establece una directiva cache_dir, Squid almacena la caché en la memoria.

  3. Si establece un directorio de caché diferente a /var/spool/squid/ en el parámetro cache_dir:

    1. Crear el directorio de la caché:

      # mkdir -p path_to_cache_directory
    2. Configure los permisos para el directorio de la caché:

      # chown squid:squid path_to_cache_directory
    3. Si ejecuta SELinux en modo enforcing, establezca el contexto squid_cache_t para el directorio de la caché:

      # semanage fcontext -a -t squid_cache_t "path_to_cache_directory(/.*)?"
      # restorecon -Rv path_to_cache_directory

      Si la utilidad semanage no está disponible en su sistema, instale el paquete policycoreutils-python-utils.

  4. Abra el puerto 3128 en el cortafuegos:

    # firewall-cmd --permanent --add-port=3128/tcp
    # firewall-cmd --reload
  5. Habilite e inicie el servicio squid:

    # systemctl enable --now squid

Pasos de verificación

Para comprobar que el proxy funciona correctamente, descargue una página web utilizando la utilidad curl:

# curl -O -L "https://www.redhat.com/index.html" -x "proxy.example.com:3128"

Si curl no muestra ningún error y el archivo index.html se ha descargado en el directorio actual, el proxy funciona.