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


Los proxies 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, el más popular es el anonimato en línea, pero hay otras formas de aprovechar los proxies web. Aquí tienes algunas ideas:

  • Anonimato en línea
  • Mejore la seguridad en línea
  • Mejore los tiempos de carga
  • Bloquear el tráfico malicioso
  • Registre su actividad en línea
  • Para eludir las restricciones regionales
  • En algunos casos, puede reducir el uso de ancho de banda

El servidor proxy es una computadora que se utiliza como intermediario entre el cliente y otros servidores a los que 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), primero se conecta al servidor proxy.

El servidor proxy luego verifica su caché de disco local y si los datos se pueden encontrar allí, devolverá los datos al cliente, si no se almacenan en caché, hará 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.

Squid es un proxy web que utilizó mi 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.

Para el propósito de este artículo, instalaré Squid en un VPS Linode CentOS 7 y lo usaré como un 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 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 lo tanto, la instalación es simple 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 puede verificar el estado del servicio con.

# systemctl status squid
 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 conocer:

  • Archivo de configuración de Squid: /etc/squid/squid.conf
  • Registro de acceso de Squid: /var/log/squid/access.log
  • Registro de Squid Cache: /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

Configuración de 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.

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 debe 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 se encuentra 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

Como puede haber visto en el archivo de configuración, solo se permiten ciertos puertos para conectarse. 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 el calamar una vez más.

# systemctl  restart squid

Lo más probable es que desee que sus usuarios se autentiquen antes de usar 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 instalado.

# 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 debe 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

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

# touch /etc/squid/blacklisted_sites.acl

Puede agregar algunos dominios que desee bloquear. Por ejemplo:

.badsite1.com
.badsite2.com

El punto de procedimiento le dice 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 siguientes dos líneas:

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.

En este tutorial, aprendió a instalar, asegurar y configurar un servidor proxy HTTP Squid por su cuenta. Con la información que acaba de recibir, 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íquelos en la sección de comentarios a continuación.