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.2. Proxy padre.
2.3. Caché.
2.4. Autenticación.
2.5. Patrones de refrescamiento.
2.6. Declaración de reglas (ACLs).
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.
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.
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
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36
Podrías actualizarlo para 5.7 (estable), ya que antes de eso son versiones inestables.
http://www.squid-cache.org/Versions/v5/squid-5.7.tar.gz
gracias
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
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.
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
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
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!!!
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
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
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????
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
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….