Instalación y Configuración de Servidor Proxy Squid en CentOS 8.2

Introducción a Squid

Squid es un proxy web HTTP que funciona como caché y reenviador de solicitudes. Este software escrito en C++ bajo licencia GNU GPL ofrece múltiples funcionalidades para diversas situaciones, como acelerar servidores web mediante el almacenamiento en caché de solicitudes repetidas, cachear búsquedas web y DNS, filtrar tráfico y bloquear sitios web. Squid es considerado uno de los software más fiables para control de contenido y ha sido utilizado por numerosas organizaciones durante las últimas dos décadas.

Requisitos del Entorno

Nuestro entorno de prueba consiste en una máquina virtual CentOS 8.2 con las siguientes especificaciones:

  • CPU - 3.4 GHz (1 núcleo)
  • Memoria RAM - 1 GB
  • Almacenamiento - 20 GB
  • Sistema Operativo - CentOS 8.2
  • Nombre de Host - proxy-squid.ejemplo.local
  • Dirección IP - 192.168.10.50/24

Instalación de Squid en CentOS 8

Conéctese a su servidor mediante SSH como usuario root:

ssh root@proxy-squid.ejemplo.local

El paquete de Squid está disponible en los repositorios estándar de yum, por lo que procederemos con su instalación:

[root@proxy-squid ~]# dnf install -y squid
Last metadata expiration check: 2:12:45 ago on Thu 17 Dec 2020 09:03:48 PM CST.
Dependencies resolved.
============================================================================================
 Package      Arch        Version                                      Repository      Size
============================================================================================
Installing:
 squid        x86_64      7:4.4-8.module_el8.2.0+319+d18e041f.1        AppStream      3.5 M
Installing dependencies:
 libecap      x86_64      1.0.1-2.module_el8.2.0+319+d18e041f          AppStream       29 k
Enabling module streams:
 squid                    4                                                                

Transaction Summary
============================================================================================
Install  2 Packages

Total download size: 3.6 M
Installed size: 12 M
Downloading Packages:
(1/2): libecap-1.0.1-2.module_el8.2.0+319+d18e041f.x86_64.rpm  1.5 MB/s |  29 kB     00:00    
(2/2): squid-4.4-8.module_el8.2.0+319+d18e041f.1.x86_64.rpm  41 MB/s | 3.5 MB     00:00    
--------------------------------------------------------------------------------------------
Total                                                        40 MB/s | 3.6 MB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: squid-7:4.4-8.module_el8.2.0+319+d18e041f.1.x86_64                 1/1 
  Preparing        :                                                                    1/1 
  Installing       : libecap-1.0.1-2.module_el8.2.0+319+d18e041f.x86_64                 1/2 
  Running scriptlet: libecap-1.0.1-2.module_el8.2.0+319+d18e041f.x86_64                 1/2 
  Running scriptlet: squid-7:4.4-8.module_el8.2.0+319+d18e041f.1.x86_64                 2/2 
  Installing       : squid-7:4.4-8.module_el8.2.0+319+d18e041f.1.x86_64                 2/2 
  Running scriptlet: squid-7:4.4-8.module_el8.2.0+319+d18e041f.1.x86_64                 2/2 
  Verifying        : libecap-1.0.1-2.module_el8.2.0+319+d18e041f.x86_64                 1/2 
  Verifying        : squid-7:4.4-8.module_el8.2.0+319+d18e041f.1.x86_64                 2/2 
Installed products updated.

Installed:
  libecap-1.0.1-2.module_el8.2.0+319+d18e041f.x86_64                                        
  squid-7:4.4-8.module_el8.2.0+319+d18e041f.1.x86_64                                        

Complete!

Habilite e inicie el servicio de proxy Squid:

[root@proxy-squid ~]# systemctl enable --now squid.service
Created symlink /etc/systemd/system/multi-user.target.wants/squid.service → /usr/lib/systemd/system/squid.service.
[root@proxy-squid ~]# systemctl status  squid.service
● squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-12-17 23:17:24 CST; 8s ago
     Docs: man:squid(8)
  Process: 3894564 ExecStart=/usr/sbin/squid $SQUID_OPTS -f $SQUID_CONF (code=exited, statu>
  Process: 3894559 ExecStartPre=/usr/libexec/squid/cache_swap.sh (code=exited, status=0/SUC>
 Main PID: 3894566 (squid)
    Tasks: 3 (limit: 23840)
   Memory: 14.2M
   CGroup: /system.slice/squid.service
           ├─3894566 /usr/sbin/squid -f /etc/squid/squid.conf
           ├─3894573 (squid-1) --kid squid-1 -f /etc/squid/squid.conf
           └─3894582 (logfile-daemon) /var/log/squid/access.log

Dec 17 23:17:24 proxy-squid.ejemplo.local systemd[1]: Starting Squid caching proxy...

[root@proxy-squid ~]# netstat -antpl| grep squid
tcp6       0      0 :::3128                 :::*                    LISTEN      3894573/(squid-1)   
[root@proxy-squid ~]# ss -antpl| grep squid
LISTEN    0         4096                     *:3128                   *:*        users:(("squid",pid=3894573,fd=13))

Permita el servicio de proxy Squid en el firewall de CentOS 8:

[root@proxy-squid ~]# firewall-cmd --permanent --add-service=squid
success
[root@proxy-squid ~]# firewall-cmd --reload
success

Configuración del Proxy Web Squid

El archivo de configuración global de Squid Web Proxy es /etc/squid/squid.conf. Podemos personalizarlo según nuestras necesidades:

[root@proxy-squid ~]# vi /etc/squid/squid.conf

Añada las siguientes directivas en el archivo:

dns_v4_first on

Reinicie el servicio de proxy Squid para cargar los cambios:

[root@proxy-squid ~]# systemctl restart squid

Configuración del Navegador del Cliente

Para configurar el navegador del cliente para que utilice el proxy Squid, siga estos pasos:

  1. Abra su navegador web (Firefox, Chrome, etc.)
  2. Acceda a la configuración de red o conexión
  3. Ingrese la dirección IP del proxy Squid (192.168.10.50) y el puerto (3128)
  4. Guarde la configuración

Para verificar, visite un sitio web como https://www.ejemplo.com. El contenido debería servirse a través de su servidor proxy Squid.

Configuración de Autenticación de Clientes Squid

Puede configurar la autenticación basada en usuarios para su servidor proxy Squid utilizando autenticación HTTP básica. Primero, instale las herramientas necesarias:

[root@proxy-squid ~]# dnf install -y httpd-tools
Last metadata expiration check: 2:41:04 ago on Thu 17 Dec 2020 09:03:48 PM CST.
Dependencies resolved.
=======================================================================================================================
 Package                    Architecture     Version                                         Repository           Size
=======================================================================================================================
Installing:
 httpd-tools                x86_64           2.4.37-21.module_el8.2.0+494+1df74eae           AppStream           103 k
Installing dependencies:
 apr                        x86_64           1.6.3-9.el8                                     AppStream           125 k
 apr-util                   x86_64           1.6.1-6.el8                                     AppStream           105 k
Installing weak dependencies:
 apr-util-bdb               x86_64           1.6.1-6.el8                                     AppStream            25 k
 apr-util-openssl           x86_64           1.6.1-6.el8                                     AppStream            27 k
Enabling module streams:
 httpd                                       2.4                                                                      

Transaction Summary
=======================================================================================================================
Install  5 Packages

Total download size: 385 k
Installed size: 750 k
Downloading Packages:
(1/5): apr-util-bdb-1.6.1-6.el8.x86_64.rpm                                             9.8 MB/s |  25 kB     00:00    
(2/5): apr-1.6.3-9.el8.x86_64.rpm                                                       22 MB/s | 125 kB     00:00    
(3/5): apr-util-openssl-1.6.1-6.el8.x86_64.rpm                                          11 MB/s |  27 kB     00:00    
(4/5): apr-util-1.6.1-6.el8.x86_64.rpm                                                  15 MB/s | 105 kB     00:00    
(5/5): httpd-tools-2.4.37-21.module_el8.2.0+494+1df74eae.x86_64.rpm                     36 MB/s | 103 kB     00:00    
-----------------------------------------------------------------------------------------------------------------------
Total                                                                                   33 MB/s | 385 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                               1/1 
  Installing       : apr-1.6.3-9.el8.x86_64                                                                        1/5 
  Running scriptlet: apr-1.6.3-9.el8.x86_64                                                                        1/5 
  Installing       : apr-util-bdb-1.6.1-6.el8.x86_64                                                               2/5 
  Installing       : apr-util-openssl-1.6.1-6.el8.x86_64                                                           3/5 
  Installing       : apr-util-1.6.1-6.el8.x86_64                                                                   4/5 
  Running scriptlet: apr-util-1.6.1-6.el8.x86_64                                                                   4/5 
  Installing       : httpd-tools-2.4.37-21.module_el8.2.0+494+1df74eae.x86_64                                      5/5 
  Running scriptlet: httpd-tools-2.4.37-21.module_el8.2.0+494+1df74eae.x86_64                                      5/5 
  Verifying        : apr-1.6.3-9.el8.x86_64                                                                        1/5 
  Verifying        : apr-util-1.6.1-6.el8.x86_64                                                                   2/5 
  Verifying        : apr-util-bdb-1.6.1-6.el8.x86_64                                                               3/5 
  Verifying        : apr-util-openssl-1.6.1-6.el8.x86_64                                                           4/5 
  Verifying        : httpd-tools-2.4.37-21.module_el8.2.0+494+1df74eae.x86_64                                      5/5 
Installed products updated.

Installed:
  apr-1.6.3-9.el8.x86_64                                               apr-util-1.6.1-6.el8.x86_64                    
  apr-util-bdb-1.6.1-6.el8.x86_64                                      apr-util-openssl-1.6.1-6.el8.x86_64            
  httpd-tools-2.4.37-21.module_el8.2.0+494+1df74eae.x86_64            

Complete!

Cree un archivo de contraseñas y agregue un usuario llamado proxyuser:

[root@proxy-squid ~]# htpasswd -c /etc/squid/passwd proxyuser
New password: 
Re-type new password: 
Adding password for user proxyuser

Cambie el propietario del archivo de contraseñas:

[root@proxy-squid ~]# chown squid.squid /etc/squid/passwd

Edite el archivo de configuración de Squid para agregar la configuración de autenticación:

[root@proxy-squid ~]# vi /etc/squid/squid.conf

Añada las siguientes directivas después de las ACL de puerto:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Autenticación Básica de Squid
auth_param basic credentialsttl 2 horas
acl usuarios_autenticados proxy_auth REQUIRED
http_access allow usuarios_autenticados

Reinicie el servicio de proxy Squid para aplicar los cambios:

[root@proxy-squid ~]# systemctl restart squid

Al inetntar acceder a cualquier sitio web desde el cliente, ahora se le solicitará autenticación.

Creación de Lista Negra Personalizada

Para crear una lista de sitios bloqueados a través del proxy Squid:

[root@proxy-squid ~]# vi /etc/squid/bloqueados

Añada los siguientes dominios al archivo:

.redes-sociales.com
.noticias-sensacionalistas.com

Edite el archivo de configuración de Squid para agregar la configuración de la lista negra:

[root@proxy-squid ~]# vi /etc/squid/squid.conf

Añada las siguientes directrices después de las ACL de puerto:

acl sitios_bloqueados dstdomain "/etc/squid/bloqueados"
http_access deny sitios_bloqueados

Reinicie el servicio de proxy Squid para cargar los cambios:

[root@proxy-squid ~]# systemctl restart squid

Al intentar visitar http://www.redes-sociales.com desde el cliente, el acceso debería ser denegado.

Verificación de los Registros de Squid

Puede verificar los registros de Squid para confirmar el bloqueo de sitios:

[root@proxy-squid ~]# tail -f /var/log/squid/access.log

1608220657.698  15460 192.168.10.25 TCP_MISS/503 4192 GET http://www.redes-sociales.com/ proxyuser HIER_DIRECT/2408:4001:f10::8 text/html
1608220657.804      0 192.168.10.25 TCP_HIT/200 13102 GET http://proxy-squid.ejemplo.local:3128/squid-internal-static/icons/SN.png proxyuser HIER_NONE/- image/png
1608220676.642  15562 192.168.10.25 TCP_MISS/503 4262 GET http://www.redes-sociales.com/favicon.ico proxyuser HIER_DIRECT/2408:4001:f10::8 text/html
1608220729.378  15325 192.168.10.25 TCP_MISS/503 4192 GET http://www.redes-sociales.com/ proxyuser HIER_DIRECT/2408:4001:f10::8 text/html

Etiquetas: squid centos proxy linux autenticación

Publicado el 8-3 23:29