MEGATUTORIAL Squid 5. Segunda Parte.

En esta segunda parte trataremos la compilación y la instalación de squid en Debian 10.

ÍNDICE

Servidor Proxy. Conceptos y datos para el ejemplo a desarrollar.

1. Instalación de squid-5.0.2 por compilado.

1.1. Generando e instalando empaquetado “.deb” de squid-5.0.2.

2. Configuraciones en Squid.

2.1. Configuraciones básicas.

2.2. Proxy padre.

2.3. Caché.

2.4. Autenticación.

2.5. Patrones de refrescamiento.

2.6. Declaración de reglas (ACLs).

2.7. Aplicación de reglas.

2.8. Declaración y aplicación de otras reglas especiales.

2.8.1. Retardo con Delay Pools.

2.8.2. MITM con SSL Bump.

3. Integración de Squid-ADDC mediante Kerberos.

3.1. Configuraciones necesarias en el ADDC Samba4.

3.2. Sincronización de tiempo.

3.3. timesyncd.

3.4. ntpd & ntpdate.

3.5. Integración Squid-ADDC por Kerberos, mediante Ticket.

4. Ejemplo integrador de configuración de Squid.

4.1. Configuraciones del ejemplo.

Referencias Bibliográficas.

En la primera parte definimos la configuración a usar, como sistema operativo usaremos Debian 10. Como la mayoría usamos virtualizadores crearemos un CT(contenedor) con Debian 10.4 al cual le daremos los siguientes recursos:

CPU: 4 Cores
RAM: 2 GB

Le proporcionaremos estas características para que el proceso de compilación no sea tan largo. Una vez que tengamos nuestro Squid compilado y funcionando cambiaremos a 2 Cores la CPU y 1GB de RAM que son suficientes. En cuanto al tamaño del disco duro recomiendo 15 GB (en dependencia del tamaño de cache que crearemos), en mi caso use 5GB.

1. Instalación de squid-5.0.2 por compilado.

apt update
apt upgrade

Prerrequisitos:

apt -y install build-essential devscripts fakeroot debhelper dh-autoreconf dh-apparmor cdbs smbclient

Ante la pregunta de si queremos modificar el fichero «smb.conf» para la configuración WINS que proviene de DHCP, seleccionamos «NO». El “smbclient” es necesario para evitar un “Warning” durante la compilación de Squid5.

Herramientas de administración (opcionales):

apt -y install mc htop

Dependencias para la debianización de Squid5, según la documentación oficial:

apt -y install \
libcppunit-dev \
libsasl2-dev \
libxml2-dev \
libkrb5-dev \
libdb-dev \
libnetfilter-conntrack-dev \
libexpat1-dev \
libcap2-dev \
libldap2-dev \
libpam0g-dev \
libgnutls28-dev \
libssl-dev \
libdbi-perl \
libecap3 \
libecap3-dev \
libsystemd-dev \
libtdb-dev

Nota: En este punto deberiamos hacer una salva.

Configurando el sistema, si alguno de estos pasos da error de que existe o que ya está, no hay problemas, continuar adelante:

mkdir -p /var/spool/squid
mkdir -p /var/log/squid
chown proxy:proxy /var/spool/squid
chown proxy:proxy /var/log/squid

Descargamos Squid5, la desempaquetamos y accedemos a su directorio:

mkdir /opt/instaladores
cd /opt/instaladores
wget -c http://www.squid-cache.org/Versions/v5/squid-5.0.2.tar.gz
tar xfv squid-5.0.2.tar.gz
cd squid-5.0.2/

Configuramos las opciones básicas que podamos necesitar (se habilitan las opciones para SSL Bump):

./configure --srcdir=. --prefix=/usr --localstatedir=/var/lib/squid --libexecdir=/usr/lib/squid \
--datadir=/usr/share/squid --sysconfdir=/etc/squid --with-default-user=proxy --with-logdir=/var/log/squid \
--with-open-ssl=/etc/ssl/openssl.cnf --with-openssl --enable-ssl --enable-ssl-crtd --build=x86_64-linux-gnu \
--with-pidfile=/var/run/squid.pid --enable-removal-policies=lru,heap \
--enable-delay-pools --enable-cache-digests --enable-icap-client --enable-ecap --enable-follow-x-forwarded-for \
--with-large-files --with-filedescriptors=65536 \
--enable-auth-basic=DB,fake,getpwnam,LDAP,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB \
--enable-auth-digest=file,LDAP --enable-auth-negotiate="kerberos,wrapper" --enable-auth-ntlm=fake,SMB_LM \
--enable-linux-netfilter --with-swapdir=/var/spool/squid --enable-useragent-log --enable-htpc \
--infodir=/usr/share/info --mandir=/usr/share/man --includedir=/usr/include --disable-maintainer-mode \
--disable-dependency-tracking --disable-silent-rules --enable-inline --with-aufs-threads=16 \
--enable-storeio=ufs,aufs,diskd,rock --enable-eui --enable-esi --enable-icmp --enable-zph-qos \
--enable-external-acl-helpers="file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,time_quota,unix_group,wbinfo_group" \
--enable-url-rewrite-helpers="fake" --enable-translation --enable-epoll --enable-snmp --enable-wccpv2 \
--with-aio --with-pthreads --enable-arp --enable-arp-acl --enable-default-err-language=es \
--enable-security-cert-validators="fake" --enable-storeid-rewrite-helpers="file" --disable-arch-native \
--with-build-environment=default

Si necesitamos saber que significa cada opción, agregar lo siguiente:

./configure –help

Compilamos con multiprocesamiento:

make -j `nproc`

Instalando:

make install

Nota: En este punto deberiamos hacer una salva.

Ahora debemos crear un archivo de inicio (squid o squid5) para el squid:

nano /etc/init.d/squid

Agregamos lo siguiente:

#!/bin/sh

########################################################################
# squid5 Startup script for the SQUID HTTP proxy-cache.
#
# Version: @(#)squid5 init script 1.0 20-Feb-2019 
########################################################################

### BEGIN INIT INFO
# Provides: squid
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Should-Start: $named
# Should-Stop: $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Squid HTTP Proxy version 5.0.2
### END INIT INFO

NAME=squid
DESC="Squid HTTP Proxy 5.0.2"
DAEMON=/usr/sbin/squid
PIDFILE=/var/run/$NAME.pid
CONFIG=/etc/squid/squid.conf
SQUID_ARGS="-YC -f $CONFIG"

[ ! -f /etc/default/squid ] || . /etc/default/squid

. /lib/lsb/init-functions

PATH=/bin:/usr/bin:/sbin:/usr/sbin

[ -x $DAEMON ] || exit 0

ulimit -n 65535

find_cache_dir () {
w=" " # space tab
res=`sed -ne '
s/^'$1'['"$w"']\+[^'"$w"']\+['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
t end;
d;
:end q' < $CONFIG`
[ -n "$res" ] || res=$2
echo "$res"
}

find_cache_type () {
w=" " # space tab
res=`sed -ne '
s/^'$1'['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
t end;
d;
:end q' < $CONFIG`
[ -n "$res" ] || res=$2
echo "$res"
}

start () {
cache_dir=`find_cache_dir cache_dir`
cache_type=`find_cache_type cache_dir`

#
# Create spool dirs if they don't exist.
#
if [ "$cache_type" = "coss" -a -d "$cache_dir" -a ! -f "$cache_dir/stripe" ] || [ "$cache_type" != "coss" -a -d "$cache_dir" -a ! -d "$cache_dir/00" ]
then
log_warning_msg "Creating $DESC cache structure"
$DAEMON -z -f $CONFIG
fi

umask 027
ulimit -n 65535
cd $cache_dir
start-stop-daemon --quiet --start \
--pidfile $PIDFILE \
--exec $DAEMON -- $SQUID_ARGS < /dev/null
return $?
}

stop () {
PID=`cat $PIDFILE 2>/dev/null`
start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
#
# Now we have to wait until squid has _really_ stopped.
#
sleep 2
if test -n "$PID" && kill -0 $PID 2>/dev/null
then
log_action_begin_msg " Waiting"
cnt=0
while kill -0 $PID 2>/dev/null
do
cnt=`expr $cnt + 1`
if [ $cnt -gt 24 ]
then
log_action_end_msg 1
return 1
fi
sleep 5
log_action_cont_msg ""
done
log_action_end_msg 0
return 0
else
return 0
fi
}

case "$1" in
start)
log_daemon_msg "Starting $DESC" "$NAME"
if start ; then
log_end_msg $?
else
log_end_msg $?
fi
;;
stop)
log_daemon_msg "Stopping $DESC" "$NAME"
if stop ; then
log_end_msg $?
else
log_end_msg $?
fi
;;
reload|force-reload)
log_action_msg "Reloading $DESC configuration files"
start-stop-daemon --stop --signal 1 \
--pidfile $PIDFILE --quiet --exec $DAEMON
log_action_end_msg 0
;;
restart)
log_daemon_msg "Restarting $DESC" "$NAME"
stop
if start ; then
log_end_msg $?
else
log_end_msg $?
fi
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit 3
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart|status}"
exit 3
;;
esac

exit 0

Damos los permisos de ejecución:

chmod +x /etc/init.d/squid

Hacemos que inicie con el sistema:

update-rc.d squid defaults

NOTA: Por defecto Squid usa GMT como zona horaria en sus mensajes de error. Esto se puede editar y especificarle a Squid que use la zona horaria local.

Para ello, edite todos los mensajes de error que aparecen en el directorio:

"/usr/share/squid/errors/es-es/" y cambiamos la variable "%T" por "%t"

1.1  Generando e instalando empaquetado “.deb” de squid-5.0.2

Es posible que se tenga que volver a instalar squid en algún otro momento o algún amigo necesito hacer lo mismo. Podemos hacer que el proceso sea mucho menos tedioso si se tiene un empaqueta “.deb” generado a partir del compilado de squid-5.0.2. El método descrito a continuación, es sólo una de las posibles variantes y se basa en el método de “checkinstall”. No se instalarán las dependencias necesarias para squid-5.0.2, se deben tener previamente instaladas, pero si no se tienen instaladas, se publicará el error con las dependencias que deben instalarse.

Instalar el paquete “checkinstall”:

apt -y install checkinstall

Accedemos al directorio donde se encuentra el código fuente de squid-5.0.2 que se acabó de compilar en el apartado anterior:

cd /opt/instaladores/squid-5.0.2/

NOTA: Si se acaba de instalar “squid-5.0.2,” es necesario desintalarlo:

make uninstall

Generaremos el paquete sin instalarlo, parseando las siguientes opciones:

checkinstall \
--install=no \
--default \
--pkgname=squid \
--provides=squid \
--pkgversion=5.0.2 \
--pkgarch=amd64 \
--pkgrelease=16052020 \
--pakdir=/opt/instaladores \
--maintainer=SysAdmindeCuba \
--conflicts="squid3" \
--requires="libcppunit-dev, libsasl2-dev, libxml2-dev, libkrb5-dev, libdb-dev, libnetfilter-conntrack-dev, libexpat1-dev, libcap2-dev, libldap2-dev, libpam0g-dev, libgnutls28-dev, libssl-dev, libdbi-perl, libecap3, libecap3-dev, libsystemd-dev, libtdb-dev"

Al final debe obtener un mensaje, como el siguiente:

**********************************************************************

Done. The new package has been saved to

/opt/instaladores/squid_5.0.2-16052020_amd64.deb

You can install it in your system anytime using:

dpkg -i squid_5.0.2-16052020_amd64.deb

**********************************************************************

El mensaje anterior indica cómo instalar el paquete. Si se va a instalar, sin haber instalado ninguna de las dependencias, nos devolverá el siguiente mensaje:

dpkg: problemas de dependencias impiden la configuración de squid:
squid depende de libcppunit-dev; sin embargo:
El paquete `libcppunit-dev' no está instalado.
squid depende de libsasl2-dev; sin embargo:
El paquete `libsasl2-dev' no está instalado.
...............
..........
....
squid depende de libtdb-dev; sin embargo:
El paquete `libtdb-dev' no está instalado.
dpkg: error al procesar el paquete squid (--install):
problemas de dependencias - se deja sin configurar
Se encontraron errores al procesar:
squid

Para solucionar esto, ejecutamos la siguiente línea:

apt install -fy 

NOTA: Para lograr que el recién paquete instalado “squid” sea reconocido como un servicio y que inicie con el sistema, seguimos el mismo procedimiento del script que se hizo durante el método instalación por compilado.

 

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 5 / 5. Recuento de votos: 17

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sobre Alexander Rivas Alpizar 61 artículos
Administrador de Redes IDEAR Cienfuegos

12 comentarios

  1. Google Chrome 106.0.0.0 Google Chrome 106.0.0.0 GNU/Linux x64 GNU/Linux x64
    Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36

    v5.7 para ubuntu 22.04 empaquetado .deb supergracias

  2. Firefox 82.0 Firefox 82.0 Windows 7 Windows 7
    Mozilla/5.0 (Windows NT 6.1; rv:82.0) Gecko/20100101 Firefox/82.0

    Buenos días disculpen soy nueva en esto tengo problemas con la hora de reinicio de las cuotas de navegación antes me reiniciaba a la 9 am todos los días y ahora lo esta haciendo a la 11am lo cual me genera problemas x cuotas consumidas del día anterior como puedo arreglar esto…..saludos y decirles que su página es una excelente ayuda
    ah yo gestiono mis servidores mediante el MobaXterm

  3. Google Chrome 84.0.4147.125 Google Chrome 84.0.4147.125 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36

    hola admins… En esta saga siguen a la espera de las otras partes? Estaba pensando probar esta version de squid. Algun problema detectado? saludos.

    • Firefox 78.0 Firefox 78.0 Windows 10 x64 Edition Windows 10 x64 Edition
      Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0

      El unico problema es la falta de tiempo..la 3ra parte en modo borrador y saldra pronto. No desesperen.El muy extesno y hay q revisarlo todo. Estoy de vacaciones pronto retomo todo
      alex out

  4. Google Chrome 83.0.4103.97 Google Chrome 83.0.4103.97 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36

    cuando las otras partes??slds

  5. Firefox 75.0 Firefox 75.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0

    Suban las otras partes…esto se ve bien!!!

    • Firefox 72.0 Firefox 72.0 Windows 10 x64 Edition Windows 10 x64 Edition
      Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0

      Claro que s eve bien…es el aporte de varios buenos amigos trabajando arduamente en este tutorial de Squid. La sproximas partes estan en revision y prueba, pero saldran dentro de poco.
      SL2

  6. Firefox 77.0 Firefox 77.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0

    Esta bueno el aporte, me sirvió de mucho estoy en espera de los siguientes tutoreales

  7. Google Chrome 83.0.4103.97 Google Chrome 83.0.4103.97 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36

    BUENAS TARDES…disculpen la confucion..hasta «»/usr/share/squid/errors/es-es/» y cambiamos la variable «%T» por «%t»,, todo bien..me siento un poco confuso a partir del 1.1 hasta su final.
    Si desde el inicio ocurrio todo bien…..para mi es necesario hacer todo los del 1.1 hasta su final????

    • Firefox 77.0 Firefox 77.0 Windows 10 x64 Edition Windows 10 x64 Edition
      Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0

      Si leistes bien todo el tutorial, entonces esta parte te lo aclara:
      Es posible que se tenga que volver a instalar squid en algún otro momento o algún amigo necesito hacer lo mismo. Podemos hacer que el proceso sea mucho menos tedioso si se tiene un empaqueta “.deb” generado a partir del compilado de squid-5.0.2.
      No tienes q empaquetar obligado te lo mostramos opcionalmente.
      alex out

      • Google Chrome 83.0.4103.97 Google Chrome 83.0.4103.97 Windows 10 x64 Edition Windows 10 x64 Edition
        Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36

        muchas gracias….

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*