Búsqueda de sitios web

Cómo crear un proxy HTTP usando Squid en CentOS 7/8


Los servidores proxy web existen desde hace bastante tiempo y han sido utilizados por millones de usuarios en todo el mundo. Tienen una amplia gama de propósitos, siendo el más popular el anonimato en línea, pero hay otras formas de aprovechar los servidores proxy web. Aquí hay algunas ideas:

  • Anonimato en línea
  • Mejorar la seguridad en línea
  • Mejorar los tiempos de carga
  • Bloquear el tráfico malicioso
  • Registra tu actividad en línea
  • Para eludir las restricciones regionales
  • En algunos casos puede reducir el uso del ancho de banda.

Cómo funciona el servidor proxy

El servidor proxy es una computadora que se utiliza como intermediario entre el cliente y otros servidores desde los cuales el cliente puede solicitar recursos. Un ejemplo simple de esto es cuando un cliente realiza solicitudes en línea (por ejemplo, quiere abrir una página web), se conecta primero al servidor proxy.

Luego, el servidor proxy verifica su caché de disco local y, si los datos se pueden encontrar allí, los devolverá al cliente; si no están almacenados en caché, realizará la solicitud en nombre del cliente utilizando la dirección IP del proxy (diferente de la clientes) y luego devolver los datos al cliente. El servidor proxy intentará almacenar en caché los nuevos datos y los utilizará para futuras solicitudes realizadas al mismo servidor.

¿Qué es el proxy de calamar?

Squid es un proxy web que utilizó una amplia gama de organizaciones. A menudo se utiliza como proxy de almacenamiento en caché y mejora los tiempos de respuesta y reduce el uso de ancho de banda.

A los efectos de este artículo, instalaré Squid en un VPS Linode CentOS 7 y lo usaré como servidor proxy HTTP.

Cómo instalar Squid en CentOS 7/8

Antes de comenzar, debes saber que Squid no tiene requisitos mínimos, pero la cantidad de uso de RAM puede variar dependiendo de los clientes que naveguen por Internet a través del servidor proxy.

Squid está incluido en el repositorio base y, por tanto, la instalación es sencilla y directa. Sin embargo, antes de instalarlo, asegúrese de que sus paquetes estén actualizados ejecutando.

yum -y update

Continúe instalando squid, inícielo y habilítelo al iniciar el sistema usando los siguientes comandos.

yum -y install squid
systemctl start squid
systemctl  enable squid

En este punto, su proxy web Squid ya debería estar ejecutándose y podrá verificar el estado del servicio.

systemctl status squid
Salida de muestra
 squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-09-20 10:07:23 UTC; 5min ago
 Main PID: 2005 (squid)
   CGroup: /system.slice/squid.service
           ├─2005 /usr/sbin/squid -f /etc/squid/squid.conf
           ├─2007 (squid-1) -f /etc/squid/squid.conf
           └─2008 (logfile-daemon) /var/log/squid/access.log

Sep 20 10:07:23 tecmint systemd[1]: Starting Squid caching proxy...
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: will start 1 kids
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: (squid-1) process 2007 started
Sep 20 10:07:23 tecmint systemd[1]: Started Squid caching proxy.

Aquí hay algunas ubicaciones de archivos importantes que debe tener en cuenta:

  • Archivo de configuración de Squid: /etc/squid/squid.conf
  • Registro de acceso de Squid: /var/log/squid/access.log
  • Registro de caché de Squid: /var/log/squid/cache.log

Un archivo de configuración mínimo squid.conf (sin comentarios) se ve así:

acl localnet src 10.0.0.0/8	# RFC1918 possible internal network
acl localnet src 172.16.0.0/12	# RFC1918 possible internal network
acl localnet src 192.168.0.0/16	# RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern .		0	20%	4320

Configurar Squid como proxy HTTP

Aquí, le mostraremos cómo configurar squid como un proxy HTTP utilizando solo la dirección IP del cliente para la autenticación.

Agregar ACL de Squid

Si desea permitir que la dirección IP acceda a la web a través de su nuevo servidor proxy, deberá agregar una nueva línea ACL (lista de control de acceso) en el archivo de configuración. .

vim /etc/squid/squid.conf

La línea que debes agregar es:

acl localnet src XX.XX.XX.XX

Donde XX.XX.XX.XX es la dirección IP real del cliente que desea agregar. La línea debe agregarse al principio del archivo donde se definen las ACL. Es una buena práctica agregar un comentario junto a ACL que describa quién usa esta dirección IP.

Es importante tener en cuenta que si Squid está ubicado fuera de su red local, debe agregar la dirección IP pública del cliente.

Deberá reiniciar Squid para que los nuevos cambios surtan efecto.

systemctl  restart squid

Abrir puertos proxy de Squid

Como habrás visto en el archivo de configuración, solo se permiten ciertos puertos para la conexión. Puede agregar más editando el archivo de configuración.

acl Safe_ports port XXX

Donde XXX es el puerto real que desea cargar. Nuevamente es una buena idea dejar un comentario al lado que describa para qué se utilizará el puerto.

Para que los cambios surtan efecto, deberá reiniciar Squid una vez más.

systemctl  restart squid

Autenticación del cliente proxy Squid

Lo más probable es que desee que sus usuarios se autentiquen antes de utilizar el proxy. Para ello, puede habilitar la autenticación HTTP básica. Es fácil y rápido de configurar.

Primero, necesitará tener httpd-tools instalados.

yum -y install httpd-tools

Ahora creemos un archivo que luego almacenará el nombre de usuario para la autenticación. Squid se ejecuta con el usuario “squid ” por lo que el archivo debería ser propiedad de ese usuario.

touch /etc/squid/passwd
chown squid: /etc/squid/passwd

Ahora crearemos un nuevo usuario llamado “proxyclient” y configuraremos su contraseña.

htpasswd /etc/squid/passwd proxyclient

New password:
Re-type new password:
Adding password for user proxyclient

Ahora para configurar la autenticación, abra el archivo de configuración.

vim /etc/squid/squid.conf

Después de las ACL de los puertos, agregue las siguientes líneas:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

Guarde el archivo y reinicie Squid para que los nuevos cambios surtan efecto:

systemctl restart squid

Bloquear sitios web en Squid Proxy

Finalmente crearemos una última ACL que nos ayudará a bloquear sitios web no deseados. Primero, cree el archivo que almacenará los sitios en la lista negra.

touch /etc/squid/blacklisted_sites.acl

Puede agregar algunos dominios que desee bloquear. Por ejemplo:

.badsite1.com
.badsite2.com

El punto siguiente le indica a squid que bloquee todas las referencias a esos sitios, incluidos www.badsite1, subsite.badsite1.com, etc.

Ahora abra el archivo de configuración de Squid.

vim /etc/squid/squid.conf

Justo después de las ACL de los puertos, agregue las dos líneas siguientes:

acl bad_urls dstdomain "/etc/squid/blacklisted_sites.acl"
http_access deny bad_urls

Ahora guarde el archivo y reinicie Squid:

systemctl restart squid

Una vez que todo esté configurado correctamente, ahora puede configurar el navegador de su cliente local o la configuración de red del sistema operativo para usar su proxy HTTP squid.

Conclusión

En este tutorial, aprendió cómo instalar, proteger y configurar un servidor proxy HTTP Squid por su cuenta. Con la información que acaba de obtener, ahora puede agregar algunos filtros básicos para el tráfico entrante y saliente a través de Squid.

Si desea hacer un esfuerzo adicional, incluso puede configurar Squid para bloquear algunos sitios web durante el horario laboral para evitar distracciones. Si tiene alguna pregunta o comentario, publíquelo en la sección de comentarios a continuación.