Administración del servidor

Servidor proxy de Linux (Squid)

El servidor proxy de Linux generalmente es un servidor que guarda las páginas web visitadas para solicitudes posteriores, por lo que, si intentas visitar la misma página web o cualquier otra, la página se traerá del servidor proxy.

Esto es muy útil, hace que la navegación en la web sea mucho más rápida y reduce el tráfico, lo que significa menor costo.


Los servidores de almacenamiento en caché pueden reducir el tráfico externo hasta en un 45%.

Otra ventaja principal para los servidores proxy es que puedes configurar el proxy para el control de acceso. Por ejemplo, puedes restringir el acceso a sitios web específicos.

Si has navegado por la Web antes desde un proxy anónimo, este es en realidad un servidor proxy.

Puedes elegir cualquiera de los servidores proxy Linux disponibles como, por ejemplo:

Squid, Varnish, Polipo, TinyProxy entre otros más.

En este post, discutiremos acerca del servidor proxy de Linux más común que es Squid.

 

 

Instalar Squid

Instalar el servidor proxy de Squid es muy simple. Para las distribuciones basadas en Red Hat, puede instalarlo de la siguiente forma:

$ dnf -y install squid

O si estás utilizando una distribución basada en Debian, puede instalarlo así:

$ apt-get -y install squid

Ahora puede iniciar el servicio de Squid y habilitarlo para que se ejecute la iniciar el sistema:

Para cachear el servidor proxy, puedes verificar el archivo de configuración en  /etc/squid/squid.conf

Antes de profundizar en la configuración, veamos el servidor proxy en acción.

Simplemente cambia la configuración del proxy en tu navegador a la dirección IP del proxy y el puerto 3128 ya que este es el puerto predeterminado de Squid. Puedes cambiar el puerto predeterminado cambiando la opción http_port en el archivo de configuración.

Linux Proxy Server set client

Como se muestra en la imagen, apunté mi navegador a mi servidor proxy Linux y puedo navegar por la web sin ningún problema.

Si estás utilizando el firewall de iptables, no olvides abrir el puerto del servidor squid.

 

Permitir la Conexión de un Rango de IPs

Si abres el archivo de configuración /etc/squid/squid.conf, verá las reglas que permiten que las direcciones IP se conecten al servidor proxy:

acl localnet src 192.168.0.0/16

Sin embargo, puede agregar una nueva entrada ACL para permitir que un rango de direcciones IP se conecte al servidor proxy:

acl localnet src 212.80.113.0/16

A continuación, guarda el archivo y reinicia el servicio Squid:

$ systemctl restart squid

Muy fácil, ¿verdad?

Además, si eliminas cualquier entrada ACL del archivo, todas las direcciones IP de ese rango no podrán conectarse al servidor proxy.

 



Permitir Puertos Específicos

Puedes encontrar todos los puertos que permitidos en el archivo de configuración que se muestra a continuación:

acl Safe_ports port 80

Considera agregar la regla Safe_ports ACL para cualquier puerto que necesiten tus clientes.

Puedes agregar un rango de puertos en lugar de escribir una regla para cada puerto de esta manera:

acl Safe_ports port 6000-7000

No olvides reiniciar el servidor proxy squid después de la modificación:

$ systemctl restart squid

 


Autenticación de Usuarios

Puedes obligar a tus usuarios a autenticarse antes de que utilicen tu servidor proxy de Linux utilizando la autenticación de Apache.

Primero, creamos un archivo que almacenará a los usuarios:

$ touch /etc/squid/passwd

Luego, permite que el demonio squid acceda al archivo de esta manera:

$ chown squid /etc/squid/passwd

Ahora crearemos un nuevo usuario utilizando el comando htpasswd:

$ htpasswd /etc/squid/passwd likegeeks

Te pedirá la contraseña dos veces.

Si abres el archivo creado, verás el usuario y la contraseña hash.

Luego cambias la configuración de Squid para decirle la autenticación que deberá utilizar.

Agrega las siguientes líneas debajo de los puertos ACL y en ningún otro lugar para habilitar la autenticación:

A continuación, reinicia el servicio squid e intenta abrir el navegador nuevamente.

$ systemctl restart squid

Linux proxy server authentication

Como puedes ver, si intentas conectarte al servidor proxy de Linux, te pedirá un nombre de usuario y contraseña.

 

Bloquear sitios web

Puedes bloquear sitios web a los usuarios del proxy, solo crea un archivo separado que será la lista de dominios que deseas bloquear y apunta ese archivo desde la configuración de Squid de la siguiente manera:

$ touch /etc/squid/blocked

Luego, escribe todos los sitios web que deseas bloquear uno por línea en ese archivo y guárdalo.

Ahora cambie la configuración de Squid para bloquear esos sitios web en la lista acl y http_access.

A continuación, reinicia el servicio squid:

$ systemctl restart squid

Hay muchas listas ya preparadas y clasificadas, puedes usarlas en squid, como las listas negras de MESD, listas negras de Shalla entre otras.

 


Modificar contenido

Dado que el servidor proxy de Linux se encuentra entre el navegador y el Internet, esta es una muy buena posición para modificar el contenido entregado.

Puede cambiar imágenes, anuncios o lo que sea. Esto se puede hacer utilizando el módulo url_rewrite_program.

En realidad, puedes hacer más que eso, pero no queremos ser malvados.

En nuestro ejemplo, voltearemos las imágenes y navegaremos por las imágenes volteadas en lugar de las originales.

Primero, necesitamos instalar ImageMagick:

$ dnf -y install imagemagick

Luego, escribiremos el script que hará la magia. El script estará escrito en Perl.

Puedes encontrar el script aquí

Este script de Perl busca imágenes JPG, GIF y PNG en el contenido publicado, una vez que lo encuentra, utiliza la utilidad mogrify que está incluida con ImageMagick para voltear las imágenes y poner las imágenes volteadas en /var/www/html/ el cual es el directorio raíz para el servidor Apache y el servicio apache que debería estar ejecutándose, por supuesto, y luego enviar las imágenes volteadas como respuesta.

Solo asegúrate de agregar la propiedad de squid para esta carpeta:

$ usermod -aG www-data squid

Finalmente, debes agregar el script a la configuración de Squid. Abre el archivo de configuración y escribe lo siguiente:

url_rewrite_program /home/likegeeks/flip.pl

Luego reinicia el servicio squid

$ systemctl restart squid

La web tiene muchos scripts de Perl que juegan con el contenido, algunos de ellos son buenos y otros son malvados.

 


Navegación anónima en servidor proxy de Linux

De forma predeterminada, el servidor proxy squid reenvía la dirección IP del cliente al sitio solicitado, si deseas que el proxy navegue de forma anónima entre los usuarios, debes enviar la IP de squid en lugar de la IP de los clientes.

Para hacer eso, cambie la opción forwarded_for a off en el archivo /etc/squid/squid.conf.

forwarded_for off

Y agrega las siguientes opciones mencionadas aquí al final del archivo de configuración.

Luego reinicia el servicio:

$ systemctl restart squid

Puedes verificar tu dirección IP pública, notarás que tu IP es la IP del servidor proxy Squid.

 

Conectando servidores de squid

La directiva cache_peer establece cachés de tus peers e informa a Squid cómo comunicarse con ellos.

La sintaxis es la siguiente:

cache_peer hostname Server-type http-port icp-port [options]

El primer argumento es el otro nombre de host squid o dirección IP.

El segundo argumento especifica el tipo del otro servidor.

El tercer argumento es el número de puerto.

El cuarto argumento especifica el puerto ICP (Internet Caching Protocol) que es 3130. Esto se usa para consultar otros servidores de caché.

El cache_peer tiene algunas opciones que puedes usar como:

proxy-only: esta opción evita que Squid guarde las respuestas que recibe del otro servidor squid.

no-delay: si hay algún retraso, será ignorado.

login= user:password: las credenciales de autenticación para el otro servidor. Llevan esta sintaxis

connect-timeout: esta opción especifica el tiempo de espera de conexión a otros servidores squid.

Escriba tus opciones, guarda el archivo de configuración y reinicia el servicio.

 

Archivos de registro de Squid

 

Los archivos de registro (logs) son tu fuente principal para el diagnóstico de problemas y diversas operaciones de squid.

Hay distintos archivos de registro como lo son cache.log, access.log y store.log. Puede encontrarlos en el directorion /var/log/squid.

Hay distintos archivos de registro como lo son cache.log, access.log y store.log. Puede encontrarlos en el directorio /var/log/squid.

El archivo cache.log contiene mensajes informativos acerca del funcionamiento de Squid. Todos los errores de proxy se escriben en este archivo.

El archivo access.log contiene todas las solicitudes HTTP realizadas por los clientes.

El archivo store.log contiene información sobre los objetos pasados.

Cada entrada en estos archivos se escribe con marcas de tiempo de cuando se generó el mensaje.

Espero que te guste trabajar con el servidor proxy de Linux ya que es muy fácil. Vuelve de nuevo.

Gracias.

Mokhtar Ebrahim
Estoy trabajando como administrador de sistemas Linux desde 2010. Soy responsable de mantener, proteger y solucionar problemas de servidores Linux para múltiples clientes de todo el mundo. Me encanta escribir guiones de shell y Python para automatizar mi trabajo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *