sábado, 20 de noviembre de 2021

Servidor Proxy transparente con Squid en Circle Linux 8, Rocky Linux 8, Alma Linux 8, Navy Linux 8, Oracle Linux 8, RHEL 8, CentOS 8

En alguna oportunidad se tiene la necesidad de mejorar el navegar en internet y para ello se puede utilizar un servidor Proxy con Squid, este tutorial es una actualización a un tutorial de hace mucho tiempo, se realizó un proxy en NetBSD, la configuración es similar en el archivo principal, squid.conf, lo que varía es en el firewall que se usa, en este caso utilizaremos el software nativo en derivados RHEL 8, FirewallD nos ayudará a redirigir el puerto entre otros detalles.

Explicar detalladamente los parámetros tomaría tiempo, se mostrará los pasos necesarios para hacer funcionar el servidor Proxy en modo Transparente al usuario, citaremos al final los sitios web de referencia para leer más acerca de Squid.

Cabe mencionar que nuestro servidor es un enrutador y puerta de enlace a la vez que también es un servidor proxy transparente a los clientes.

Paso 1: tener instalado un clon binario de RHEL 8, en este caso se ha utilizado Circle Linux, le damos la bienvenida a una distribución GNU/Linux que se une a la familia de dereivados RHEL, en mi canal de Youtube muestro la instalación completa, mira mi video. Se observa varias interfaces ethernet y en una interfaz tiene tres ipv4.

Paso 2: instalamos el equipamiento lógico necesario.

#dnf install squid

Paso 3: configuramos el archivo principal con el editor vi, la ruta es /etc/squid/squid.conf, ya nos muestra una configuración mínima, ajustamos a nuestro requerimiento.

#vi /etc/squid/squid.conf

Comentamos los segmentos de red que por defecto squid habilita en la parte de ACL y creamos nuestras propias reglas, todo lo referente a localnet debe ser comentado.


Como se observa tenemos 5 Reglas ACL, tres permiten utilizar proxy con squid, las otras dos reglas son para expresiones regulares a ser denegadas y dominios denegados, recordar que solamente se tratará con protocolo http.

Paso 4: permitir o denegar a nuestras ACLs

 

Prestar atención en donde se inserta nuestra configuración, como se observa estamos denegando expersiones regulares y dominios, aceptamos o permitimos el uso de proxy a tres segmentos de red, por último observar que se deniega a todo (ya estaba escrito por defecto).

Nota: los archivos expno y dono son archivos de texto donde se escribe las expresiones línea a línea, de igual manera los dominios.

Paso 5: escribimos otros parámetros, como http_port, utilizaremos dos puertos, uno es propio de squid 3128 y el 3129 lo utilizaremos para hacer transparente el proxy, ambas líneas son necesarias, si se quita una no funcionará; otros parámetros como cache_dir, cache_mem son auto explicativos.

Como observas estoy haciendo explícito una ipv4, con ello se evita que se usen otras ips en otras interfaces, recordar que nuestro servidor tiene tres interfaces ethernet y en una tiene 3 ipv4.

 
 

Paso 6: construimos los directorios con el comando (man squid).

#squid -z

Si todo ha salido bien presionas enter y ya está no hubo errores, ahora si iniciar el servicio

#systemctl enable squid

#systemctl start squid

Tiempo de utilizar a FirewallD para ser enrutador y gateway

Paso 7: utilizaremos las zonas external para el segmento de red de nuestro proveedor de internet, la interfaz es enp0s3; para los segmentos "internos" utilizaremos internal (enp0s8) y home (enp0s9), dichas zonas ya están preparadas en FirewallD.

#firewall-cmd --change-interface=enp0s3 --zone=external --permanent

#firewall-cmd --change-interface=enp0s8 --zone=internal --permanent

#firewall-cmd --change-interface=enp0s9 --zone=home --permanent

Recordar que en la zona internal que tiene la interfaz enp0s8 hay tres ipv4, el objetivo es que dará acceso a tres segmentos de red utilizando la ipv4 que corresponda como puerta de enlace, interesante!

Paso 8: es tiempo de hacer por defecto una zona, en nuestro caso será la zona internal.

#firewall-cmd --set-default-zone=internal

No necesita hacer --reload, en derivados RHEL incluido Fedora no es necesario. La zona external ya enmascara la interface, ya se hace NAT.

Paso 9: retomamos a squid y escribimos la reglas necesarias, en primer lugar haremos que en la zona internal esté presente el servicio squid.

#firewall-cmd --add-service=squid --zone=internal --permanent 

Paso 10: redirigimos el purto 80 (sitios web http) hacia el puerto 3129 definido en squid.conf

#firewall-cmd --add-forward-port=port=80:proto=tcp:toport=3129 --zone=internal --permanent

Ya debe funcionar 😀

Como mencionaba en algún escrito, el escenario es el siguiente:

Internet---(enp0s3)Circle Linux(enp0s8 y enp0s9)---Switch empresarial capa 2 de 24 puerto o más----Segmentos de red (clientes)

Se hace mención que es switch capa 2, entonces no trabaja a nivel de capa 3 (enrutamiento y direccionamiento ip), solamente utiliza direcciones físicas, puedes conectar muchas pcs a cualquier puerto del switch, el quien va a enrutar es nuestro servidor Circle Linux o cualquier otro derivado de RHEL 8. Se puede hacer más configuraciones, por el momento lo dejamos aquí, hace el papel de proxy caché para sitios web estáticos http y se restringe expresiones y dominios que usen protocolo http, no todos los sitios web utilizan protocolo https.

Sitios web de referencia:

https://www.alcancelibre.org/staticpages/index.php/19-0-como-squid-general

https://wiki.squid-cache.org/ConfigExamples/Intercept/LinuxRedirect

Pruebas de funcionamiento:

Zona internal

 

Puedes mirar los accesos en la ruta con tail -f  /var/log/squid/access.log (presionas ctrl+c para salir)

Zona home, sin restricciones


Gracias por visitar mi blog, todo procedimiento es propio del autor de éste blog.

No hay comentarios.:

Publicar un comentario

Cambiar el puerto de SSH en Derivados Red Hat Enterprise Linux 8

 En esta entrada mostraremos una forma de cambiar el puerto por defecto del servicio ssh en Rocky Linux 8. En primer lugar debemos de editar...