Red de conocimiento informático - Material del sitio web - Cómo construir un sistema proxy web transparente Squid en CentOS o RHEL

Cómo construir un sistema proxy web transparente Squid en CentOS o RHEL

Utilizar un proxy transparente tiene varios beneficios. En primer lugar, para los usuarios finales, los servidores proxy transparentes pueden mejorar la experiencia de navegación en Internet porque el contenido de los sitios web visitados con frecuencia se almacena en caché y les causa una sobrecarga de configuración mínima. Para los administradores, se pueden utilizar servidores proxy transparentes para aplicar diversas políticas de gestión, como filtrado de contenido/URL/IP y limitación de velocidad.

Un servidor proxy actúa como intermediario entre el cliente y el servidor de destino. El cliente envía la solicitud al servidor proxy, que luego la evalúa y toma las medidas necesarias. En este tutorial, crearemos un servidor proxy web utilizando Squid, que es un servidor proxy robusto, personalizable y estable. Personalmente, durante aproximadamente un año administré un servidor Squid con más de 400 estaciones de trabajo cliente. Aunque en promedio tengo que reiniciar el servicio aproximadamente una vez al mes, el uso del procesador y el almacenamiento, el rendimiento y los tiempos de respuesta del cliente son todos buenos.

Configuraremos Squid para obtener la siguiente topología. El dispositivo CentOS/RHEL tiene una tarjeta de red (eth0) conectada a la LAN privada y otra tarjeta de red (eth1) conectada a Internet.

Instalación de Squid

Para usar Squid para construir un sistema proxy transparente, primero debemos agregar las reglas de iptables necesarias. Estas reglas deberían ayudarle a comenzar, pero asegúrese de que no entren en conflicto con ninguna configuración existente.

# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

p>

La primera regla hará que todos los paquetes salientes de eth1 (interfaz WAN) tengan la dirección IP de origen de eth1 (es decir, habilitar NAT). La segunda regla redirigirá todos los paquetes HTTP entrantes (vinculados a TCP 80) desde eth0 (interfaz LAN) al puerto de escucha Squid (TCP 3128) en lugar de reenviarlos directamente a la interfaz WAN.

Usamos yum para comenzar a instalar Squid.

# yum install squid

Ahora, cambiaremos la configuración de Squid para convertirlo en un sistema proxy transparente. Definimos una subred LAN (como 10.10.10.0/24) como una red de cliente válida. Se denegará el acceso a cualquier tráfico que no se origine en esta subred LAN.

# vim /etc/squid/squid.conf visible_hostname proxy.example.tst / - DIRECT/173.194.39.178 text/html 1402987349.416 445 10.10.10.10 TCP_MISS/302 762 GET .bd/? - DIRECT/ 173.194.78.94 text/html

Según el archivo de registro, la máquina con la dirección IP 10.10.10.10 intentó acceder a google.com y Squid manejó la solicitud.

Un servidor proxy Squid básico ya está listo. En el resto de este tutorial, ajustaremos algunos parámetros de Squid para controlar el tráfico saliente. Tenga en cuenta: esto es sólo para demostración. La póliza real debe personalizarse para cumplir con sus requisitos específicos.

Preparación

Antes de iniciar la configuración, primero aclaramos algunos puntos.

Análisis de configuración de Squid

Al leer archivos de configuración, Squid analiza los archivos de arriba hacia abajo. Las reglas se analizan de arriba a abajo hasta que se encuentra una coincidencia. Una vez que se encuentra una coincidencia, la regla se ejecuta; cualquier otra regla debajo de ella se ignora. Por lo tanto, la mejor práctica al agregar reglas de filtrado es especificar las reglas en el siguiente orden.

permitir explícitamente

denegar explícitamente

permitir LAN completa

denegar todo

Reinicio de Squid y reconfiguración de Squid

Una vez que se cambia la configuración de Squid, es necesario reiniciar el servicio Squid. Reiniciar el servicio puede tardar algún tiempo, a veces varios minutos, dependiendo de la cantidad de conexiones activas. Durante este período, los usuarios de LAN no pueden acceder a Internet. Para evitar esta interrupción del servicio, podemos usar el siguiente comando en lugar de "reinicio del servicio squid".

# squid -k reconfigure

Este comando permitirá que Squid se ejecute con parámetros actualizados sin necesidad de reiniciar.

Filtrar hosts LAN por dirección IP

En esta demostración, queremos crear Squid que prohíba el acceso a Internet a los hosts con dirección IP 10.10.10.24 y a los hosts con dirección IP 10.10.10.25. Para hacer esto, creamos un archivo de texto "denied-ip-file" que contiene las direcciones IP de todos los hosts a los que se les niega el acceso, y luego agregamos este archivo a la configuración de Squid.

# vim /etc/squid/denied-ip-file 10.10.10.24 10.10.10.25 # vim /etc/squid/squid.conf ## Primero creamos la lista de control de acceso (ACL), el aislamiento es dirección IP de acceso denegado ##acl denegado-ip-list src "/etc/squid/denied-ip-file" ##Luego, aplicamos ACL ## y denysite.com para agregar estas dos URL al archivo, y agregamos el referencia a squid.conf.

# vim /etc/squid/badsite-file badsite denysite # vim /etc/squid/squid.conf ## Definición de ACL ##acl badsite-list url_regex "/etc/squid/badsite-file" ## Aplicaciones ACL ## u otherbadsite.net) las solicitudes están bloqueadas.

Fusionar varias ACL

Crearemos una lista de acceso que bloqueará el acceso de los clientes con la dirección IP 10.10.10.200 y de los clientes con la dirección IP 10.10.10.201 a custom-block-site.com. Cualquier otro cliente podrá acceder al sitio web. Para hacer esto, primero crearemos una lista de acceso para aislar estas dos direcciones IP y luego crearemos otra lista de acceso para aislar el sitio web deseado. Finalmente, utilizaremos ambas listas de acceso para satisfacer los requisitos.

# vim /etc/squid/custom-block-website-file 10.10.10.200 10.10.10.201 # vim /etc/squid/custom-block-website-file sitio-de-bloque personalizado # vim /etc /squid/squid.conf acl custom-denied-list src "/etc/squid/custom-denied-list-file" acl custom-block-site url_regex "/etc/squid/custom-block-website-file" ## Aplicación ACL ##. Sin el almacenamiento en caché, el logotipo o el doodle de Google se recuperarían por separado para cada solicitud. Squid puede almacenar logotipos o garabatos en el caché para poder publicarlos desde el caché. Esto no sólo mejora el rendimiento percibido por el usuario sino que también reduce el uso del ancho de banda. Se puede decir que esto es matar dos pájaros de un tiro.

Para habilitar el almacenamiento en caché, podemos cambiar el archivo de configuración squid.conf.

# vim /etc/squid/squid.conf cache_dir ufs /var/spool/squid 100 16 256

Los números 100, 16 y 256 tienen los siguientes significados. Asigne 100 MB de espacio de almacenamiento para el caché de Squid. Si lo deseas, puedes aumentar el espacio asignado. Se utilizarán 16 directorios (cada uno con 256 subdirectorios) para almacenar archivos de caché. Este parámetro no debe cambiarse.

Podemos confirmar si el caché de Squid está habilitado a través del archivo de registro /var/log/squid/access.log. Si el acierto de caché se realiza correctamente, deberíamos ver una entrada denominada "TCP_HIT".

En resumen, Squid es un potente servidor proxy web estándar de la industria que es ampliamente utilizado por administradores de sistemas de todo el mundo. Squid proporciona funciones simples de control de acceso que se pueden utilizar para gestionar el tráfico desde la LAN. Se puede implementar tanto en redes de grandes empresas como en redes de pequeñas empresas.