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 upgradePrerrequisitos:
apt -y install build-essential devscripts fakeroot debhelper dh-autoreconf dh-apparmor cdbs smbclientAnte 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 htopDependencias 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-devNota: 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=defaultSi necesitamos saber que significa cada opción, agregar lo siguiente:
./configure –helpCompilamos con multiprocesamiento:
make -j `nproc`Instalando:
make installNota: En este punto deberiamos hacer una salva.
Ahora debemos crear un archivo de inicio (squid o squid5) para el squid:
nano /etc/init.d/squidAgregamos 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 0Damos los permisos de ejecución:
chmod +x /etc/init.d/squidHacemos que inicie con el sistema:
update-rc.d squid defaultsNOTA: 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 checkinstallAccedemos 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 uninstallGeneraremos 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:
squidPara 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.







No comments yet