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.