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


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

  • Online anonymity
  • Improve online security
  • Improve loading times
  • Block malicious traffic
  • Log your online activity
  • To circumvent regional restrictions
  • In some cases can reduce bandwidth usage

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, desea 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 encuentran allí, devolverá los datos al cliente; si no se almacena en caché, realizará la solicitud en nombre del cliente utilizando la dirección IP del proxy clientes) y luego devolver los datos al cliente. El servidor proxy intentará almacenar en caché los nuevos datos y los utilizará para futuras solicitudes al mismo servidor.

Squid es un proxy web que utiliza 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.

A los efectos 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

Antes de comenzar, debe saber que Squid no tiene requisitos mínimos, pero la cantidad de uso de RAM puede variar según los clientes que navegan 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 ejecutándose.

# yum -y update

Continúe instalando squid, inícielo y habilítelo en el inicio del sistema usando los siguientes comandos.

# yum -y install squid
# systemctl start squid
# systemctl  enable squid

En este punto, su proxy web de 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 tener en cuenta:

  • Squid configuration file: /etc/squid/squid.conf
  • Squid Access log: /var/log/squid/access.log
  • Squid Cache log: /var/log/squid/cache.log

Un archivo de configuración mínimo de 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

Configurando Squid como un 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 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 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 ciertos puertos están permitidos para la conexión. Puedes agregar más editando el archivo de configuración.

acl Safe_ports port XXX

Donde XXX es el puerto real que desea cargar. Una vez más, es una buena idea dejar un comentario al lado que describa para qué se usará el puerto.

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

# systemctl  restart squid

Probablemente querrá que sus usuarios se autentiquen antes de usar el proxy. Para ello, puede habilitar la autenticación básica de http. Es fácil y rápido de configurar.

Primero necesitarás que httpd-tools esté instalado.

# yum -y install httpd-tools

Ahora creamos 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 los puertos, las ACL agregan 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 en la lista negra.

# touch /etc/squid/blacklisted_sites.acl

Puedes agregar algunos dominios que quieras bloquear. Por ejemplo:

.badsite1.com
.badsite2.com

El punto de procedimiento le dice a squid que bloquee todas las referencias a esos sitios, incluyendo www.badsite1 , subsite.badsite1.com etc.

Ahora abre el archivo de configuración de Squid.

# vim /etc/squid/squid.conf

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

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

Ahora guarda el archivo y reinicia el calamar:

# 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 de squid.

En este tutorial, aprendió cómo instalar, asegurar y configurar un servidor Proxy HTTP de 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 ir más allá, incluso puede configurar el calamar para bloquear algunos sitios web durante las horas de trabajo para evitar distracciones. Si tiene alguna pregunta o comentario, por favor publíquelos en la sección de comentarios a continuación.