Instalación y configuración de un PROXY con SQUID3

Este es mi primer tutorial grande, aquí veremos como instalar y configurar un proxy con squid3 en un sistema operativo linux que será el que va a hacer el papel de servidor.

En esta primera parte del tutorial, que iré añadiendo más temario, vamos a ver como configurar el squid3 para controlar el acceso a internet en los equipos de la red.

 

 

 

COMANDOS ÚTILES

  • Poner en marcha, resetear y parar Squid
 service squid3 start/reset/stop 
  • Validar configuración
 squid3 -k reconfigure 

 

Instalación:

sudo apt-get update && apt-get install squid3

Tener en cuenta que el equipo que hará de servidor proxy y los equipos deben tener ip fija.

 

Squid se instala en la carpeta “/etc” por lo que el archivo de configuración está en esa ubicación, abrimos el archivo squid.conf

 sudo gedit /etc/squid3/squid.conf 

El archivo de configuración es muy grande, y ya vienen configuradas por defecto muchas cosas, como por ejemplo el puerto por el que trabajará squid, por defecto el 3128.

Nuestras “reglas” o acl deben ir específicamente a partir de cierta línea en el archivo, si no nos dará problemas. Una vez abierto el archivo buscaremos ( con el mismo buscador de palabras del editor de texto) la línea que contenga “#INSERT YOUR OWN RULES HERE” (buscando INSERT bastara):

archivo squid.conf

Una vez localizada la línea sería recomendable insertar otra, comentada con “#”, con algo que nos ayude para la próxima vez que la busques, por ejemplo “#mis reglas”

Hasta aquí ya tenemos instalado el Squid y la línea donde empezar a poner las reglas identificada, ahora toca ir creando las acl que queramos.

1-RESTRICCIONES DE ACCESO

En esta parte del tutorial aprenderemos a configurar Squid para:

  • Permitir o denegar acceso a Internet
  • Permitir o denegar acceso a paginas web en concreto.
  • Restricciones de descarga de tipos de archivos ( restricciones por extensión de archivos).

1.1-ACCESO A INTERNET (HTTP_ACCESS)

CONFIGURACIÓN PARA ACCESO DE LOS EQUIPOS

Antes de nada debemos declarar una acl para toda la red, la sintaxis para declarar la red es la siguiente:

acl <NOMBRE_ACL> src <IP_red>/<MASCARA_RED>

Así que supongamos que nuestra red es 192.168.1.0 con mascara /24, nuestra acl sería la siguiente:

acl TODOS src 192.168.1.0/24

Y le damos acceso a toda la red

http_access allow TODOS

 

archivo squid.conf toda la red

Esto es muy importante,  el permitir a toda la red el acceso siempre será nuestra ultima linea de configuración para evitar problemas.

Una vez esto ya podemos ir creando las acl para los equipos de la red, para ello tenemos dos opciones, crear acl individuales para cada equipo o por “grupos”.

Para crear una acl para un equipo individual se crea de la siguiente forma:

acl <NOMBRE_ACL> src <IP_DEL_EQUIPO>

Ejemplo

acl PC1 src 192.168.1.117

En cambio, si optamos por crear un grupo donde van a haber una configuración en común para más de un equipo, Squid permite crear un archivo con una lista de ip’s de los equipos. Dicho archivo se debe ubicar en “/etc/squid3/”:

acl <NOMBRE_GRUPO_ACL> src “/etc/squid3/<NOMBRE ARCHIVO>”

Ejemplo

acl PORTATILES src “/etc/squid3/lista_portatiles.txt”

Ejemplo archivo:

ejemplo lista equipos

Una vez creadas ya podemos controlar el  acceso a internet del equipo o equipos configurados:

http_access <allow/deny> <NOMBRE_ACL>

 

Yo he creado el PC1 con ip 192.168.117 así que insertare las siguientes líneas:

declaro:

acl PC1 src 192.168.1.117

Y para probar le denegamos el permiso de acceso

http_access deny PC1

configuración para un equipo en proxy squid

 

Guardamos el archivo de configuración, lo cerramos y validamos la configuración:

 sudo squid3 -k reconfigure 

Si no nos da ningún error probamos el equipo al que supuestamente le ha sido denegado el acceso a internet

pantalla error IE sin acceso por squid3

Como vemos en la imagen nos dice que tenemos el acceso denegado por el Squid3

 

1.2-CONFIGURACIÓN ACCESO POR TIEMPO

Ahora que tenemos los equipos configurados, podemos controlar el acceso por periodos de tiempo, para declarar un periodo de tiempo se hace de la siguiente manera:

acl <NOMBRE> time <DIAS> hh:mm-hh:mm

DIAS:

M – Lunes

T – Martes

W – Miércoles

H – Jueves

F – Viernes

A – Sábado

S – Domingo

EJEMPLO:
acl LABORAL_MAÑANA time MTWHF 08:00-14:00

Para utilizar esta acl, no sirve por si sola, se debe usar junto a una acl de equipo

 

http_access <allow/deny> LABORAL_MAÑANA PC1

vemos un ejemplo:

ejemplo configuracion periodo tiempo

Guardamos archivo, lo cerramos y validamos la instalación:

 sudo squid3 -k reconfigure 

Si no nos da ningún error probamos el equipo.
Ahora el equipo PC1 solo va a tener acceso a internet por las tardes.

 

1.3-CONFIGURACIÓN ACCESO A PÁGINAS

Squid nos permite controlar el acceso a páginas web que queramos, para ello, al igual que para configurar un grupo de equipos, se hace uso de un archivo que hace de lista, en ella pondremos las webs que vamos a querer controlar su acceso. La ubicación del archivo es la misma que la de los equipos en “/etc/squid3/”.

Ejemplo del archivo:

archivo listado webs para squid3

una vez creado el archivo, abrimos el de configuración de squid3 (/etc/squid3/squid.conf) y declaramos la acl:

acl <NOMBRE_acl> url_regex “/etc/squid3/<nombre_archivo>”

Ejemplo:

acl WEBS url_regex “/etc/squid3/webs”

Para utilizar esta acl, no sirve por si sola se debe usar junto a una acl de equipo

Ahora la utilizamos con nuestra configuración:

http_access <allow/deny> WEBS PC1

Vemos como lo utilizamos:

ejemplo acl para paginas webs

 

En este ejemplo vamos a denegar acceso a facebook y marca para el equipo PC1

Como siempre, guardamos, cerramos y validamos configuración:

 sudo squid3 -k reconfigure 

Si no nos da ningún error vamos al equipo PC1 y comprobamos que nos permite ir a la web de Google pero no nos dejará ir a Facebook o Marca

Acceso a google Restringir acceso facebook

 

Vemos que nos permite acceder a la web de google, pero no nos permite acceder a facebook.

 

Ahora que conocemos todos estos métodos podemos combinar los 3 a la vez, por ejemplo si queremos restringir el acceso a las webs citadas anteriormente solo por la mañana sería:

http_access deny WEBS LABORAL_MAÑANA PC1

Ejemplo:

ejemplo control acceso a webs por periodos en squid3

Hasta aquí toda la parte de configuración para controlar el acceso a internet, pronto pondré como configurar Squid para crear una caché muy útil para empresas o grandes centros con muchos equipos.

Espero que os guste y os sirva.

Te puede interesar:

Linux no muerde – Instalación Debian 2017


Linux no muerde – Instalación Debian 2017

Script php para obtener los dominios que nos han atacado


Script php para obtener los dominios que nos han atacado
https://www.sospedia.net/fail2ban-data-mining/
Fail2Ban Data Mining

Como activar el modo dios en Windows 10


Como activar el modo dios en Windows 10
https://www.sospedia.net/juego-assassins-creed-iii-gratis/
Juego Assassin’s Creed® III Gratis

Top 25 aplicaciones Windows 2016


Top 25 aplicaciones Windows 2016
https://www.sospedia.net/juego-de-carreras-para-pc-gratis/
Juego de carreras para PC gratis: Get GRID™ for free for a very limited time!

Feliz navidad: Recopilación de vídeos con tutoriales


Feliz navidad: Recopilación de vídeos con tutoriales

Man in the Middle con Xerosploit


Man in the Middle con Xerosploit

Crear un certificado SSL autofirmado e implementarlo en un servidor Apache en Debian 8


Crear un certificado SSL autofirmado e implementarlo en un servidor Apache en Debian 8

Confidencialidad y Privacidad en SO Linux: Cifra tus archivos.


Confidencialidad y Privacidad en SO Linux: Cifra tus archivos.

Programación SAP ABAP (V)


Programación SAP ABAP (V)

Instalando un sistema LAMP


Instalando un sistema LAMP

Mailinator enhanced!


Mailinator enhanced!

¡Nos estrenamos en Telegram!


¡Nos estrenamos en Telegram!

Thunderbird: migrar datos correo electrónico


Thunderbird: migrar datos correo electrónico

Como instalar Windows 8.1 sin cuenta de correo


Como instalar Windows 8.1 sin cuenta de correo

¿Has sido hackeado alguna vez?


¿Has sido hackeado alguna vez?

WhatsApp vs Facebook: El respeto a tu privacidad se encuentra codificado en nuestro ADN


WhatsApp vs Facebook: El respeto a tu privacidad se encuentra codificado en nuestro ADN

Feliz 25 aniversario Linux


Feliz 25 aniversario Linux

Activar Shell Linux en Windows 10


Activar Shell Linux en Windows 10

Personalizar el gestor de arranque con Grub Customizer 2017


Personalizar el gestor de arranque con Grub Customizer 2017

¡Qué no te asuste un .deb!


¡Qué no te asuste un .deb!

Lamentamos la interrupción, pero esto es importante


Lamentamos la interrupción, pero esto es importante

Programación SAP ABAP (IV)


Programación SAP ABAP (IV)

Tengo una contraseña segura, ¿Y qué?


Tengo una contraseña segura, ¿Y qué?

Programación SAP ABAP (III)


Programación SAP ABAP (III)

Programación SAP ABAP (II)


Programación SAP ABAP (II)

Quitar la protección de archivos PDF


Quitar la protección de archivos PDF

Programación SAP ABAP (I)


Programación SAP ABAP (I)

Instalar Android x86 en cualquier pc


Instalar Android x86 en cualquier pc

Activar ventanas emergentes en firefox


Activar ventanas emergentes en firefox

Proyectos PHP con Code Igniter y NetBeans


Proyectos PHP con Code Igniter y NetBeans

Servidor Web Apache


Servidor Web Apache

Rutas relativas y rutas absolutas


Rutas relativas y rutas absolutas

El Shell Bash de GNU/Linux 5.8 – Montaje de sistemas de ficheros


El Shell Bash de GNU/Linux 5.8 – Montaje de sistemas de ficheros

El Shell Bash de GNU/Linux 5.7 – Otros comandos útiles


El Shell Bash de GNU/Linux 5.7 – Otros comandos útiles

Instalación de Alfresco Community Edition en MySQL/MariaDB


Instalación de Alfresco Community Edition en MySQL/MariaDB

El Shell Bash de GNU/Linux 5.6 – Comandos para trabajar con archivos y carpetas


El Shell Bash de GNU/Linux 5.6 – Comandos para trabajar con archivos y carpetas

El Shell Bash de GNU/Linux 5.5 – Listar ficheros


El Shell Bash de GNU/Linux 5.5 – Listar ficheros

El Shell Bash de GNU/Linux 5.4 – Permisos


El Shell Bash de GNU/Linux 5.4 – Permisos

El Shell Bash de GNU/Linux 5.3 – nombres, rutas absolutas y relativas


El Shell Bash de GNU/Linux 5.3 – nombres, rutas absolutas y relativas

El Shell Bash de GNU/Linux 5.2 – Tipos de ficheros


El Shell Bash de GNU/Linux 5.2 – Tipos de ficheros

El Shell Bash de GNU/Linux 5.1 – El árbol de directorios estándar


El Shell Bash de GNU/Linux 5.1 – El árbol de directorios estándar

El Shell Bash de GNU/Linux 5 – Sistema de ficheros


El Shell Bash de GNU/Linux 5 – Sistema de ficheros

El Shell Bash de GNU/Linux 4 – Expresiones regulares


El Shell Bash de GNU/Linux 4 – Expresiones regulares

Limitar los caracteres permitidos en un control de formulario con Javascript


Limitar los caracteres permitidos en un control de formulario

El Shell Bash de GNU/Linux 3 – Variables de entorno


El Shell Bash de GNU/Linux 3 – Variables de entorno

El Shell Bash de GNU/Linux 2 – Tuberías y filtros


El Shell Bash de GNU/Linux 2 – Tuberías y filtros

Pinchar el teclado en Javascript


Pinchar el teclado en Javascript

Interaccionar con un grupo de radio buttons del formulario


Interaccionar con un grupo de radio buttons del formulario

El Shell Bash de GNU/Linux


El Shell Bash de GNU/Linux

Validación de fechas definitiva en Javascript?


Validación de fechas definitiva en Javascript?

Como securizar phpmyadmin


Como securizar phpmyadmin

Cómo mantener los navegadores web actualizados


Cómo mantener los navegadores web actualizados

Script Linux de las Oposiciones 2015 al cuerpo FP SAI


Script Linux de las Oposiciones 2015 al cuerpo FP SAI

Un tera son 931 gigas


Un tera son 931 gigas

Windows 10 cómo evitar que se cuele – editado Julio 2016


Windows 10 cómo evitar que se cuele – editado Julio 2016

Instalación de Liferay Portal Community Edition 6.2.3 GA4


Instalación de Liferay Portal Community Edition 6.2.3 GA4

Instalación de Alfresco Community Edition en PostgreSQL


Instalación de Alfresco Community Edition en PostgreSQL

Instalar un IDE para PHP en GNU/Linux


Instalar un IDE para PHP en GNU/Linux

Instalar un IDE para PHP en Windows


Instalar un IDE para PHP en Windows

Instalación del Servicio NFS en Sistemas GNU/Linux


Instalación del Servicio NFS en Sistemas GNU/Linux

Las comillas en los script bash


Las comillas en los script bash

Variable de entorno PATH


Variable de entorno PATH

Scripts Linux Bash Segunda Entrega


Scripts Linux Bash Segunda Entrega

Instalación de varios Sistemas Operativos en la misma máquina


Instalación de varios Sistemas Operativos en la misma máquina

Instalación desde Internet de openSUSE-13.2 – Network installation


Instalación desde Internet de openSUSE-13.2 – Network installation

Instalación de Kubuntu 14.04 LTS cómo segundo sistema operativo junto a Windows 8.1


Instalación de Kubuntu 14.04 LTS cómo segundo sistema operativo junto a Windows 8.1

Cómo instalar Microsoft Windows 8.1 Enterprise (Evaluation 90 days) en VirtualBox


Cómo instalar Microsoft Windows 8.1 Enterprise (Evaluation 90 days) en VirtualBox

Cómo particionar disco en 4 particiones primarias NTFS usando Software Libre


Cómo particionar disco en 4 particiones primarias NTFS usando Software Libre

Instalación Zurmo CRM en MySQL/MariaDB


Instalación Zurmo CRM en MySQL/MariaDB

Cómo instalar una distribución GNU/Linux en VirtualBox


Cómo instalar una distribución GNU/Linux en VirtualBox

Cómo instalar o actualizar Virtualbox en Debian Wheezy


Cómo instalar o actualizar Virtualbox en Debian Wheezy

Instalación y configuración de un PROXY con SQUID3


Instalación y configuración de un PROXY con SQUID3
https://www.sospedia.net/nacimiento-de-sospedia/
Así nace el proyecto Sospedia.net

Control de versiones en Bitbucket


Control de versiones en Bitbucket

Recupera archivos borrados desde Linux


Recupera archivos borrados desde Linux

Sincronizar Mis documentos en la nube


Sincronizar Mis documentos en la nube

Setup rápido servidor web Debian based


Setup rápido servidor web Debian based

Guerra al SPAM


Guerra al SPAM

Scripts Linux


Scripts Linux

9 comments

  • Andrés

    Excelente explicación, gracias por compartir

  • jesús Alegre Claro

    Estoy dentro de una VPN un proveedor nos enlaza del lado de acá tengo un firewall (Vyos) con dos interfaz una para la LAM y otra contra la WAM
    Ahora me falta un proxy y e instalado Squid3 pero me he apoyado del webmin para esta tarea mi preguntas

    1. ¿Qué ip pongo la de la interfaz de red de la PC o la que tengo asignada para la INERNET por mi proveedor?
    2. ¿Cómo se haría una configuración se Squid3 simple no trasparente pero con Webnin de manera que mis usuarios naveguen por una Ip de mi LAM y no por la de mi Wam ?

    Le pido por favor me ayude le estará muy agradecido por ahora solo me interesa que mis usuarios naveguen y siempre se tengan que autentificar.
    Ayúdeme cuanto antes por favor

  • yekson

    Muy buen aporte amigo, agradeceria que nos explicara lo del cache para empresas y como podemos configurar con dhcp..

  • Edd Net

    Hola, muchas gracias por este tutorial ahora solo tengo una duda, puedo trabajar uno o diferentes grupos de usuarios para que tengan un permiso y velocidad específicos cada uno?

    • Adria Saz

      Hola Buenas Edd Net
      Perdon por la tardanza pero he estado muy liado.
      En cuanto a tus dudas, lo de los permisos si puedes hacer grupos y que tengas permisos diferentes, como muestro en el tutorial. si es algo muy especifico, plantealo por aquí y lo vemos.

      Y a lo de limitar la velocidad si se puede, para explicarlo mejor necesitaría hacer una segunda parte del post, pero te digo rápidamente como hacerlo.

      Se necesita el uso de delay_pools te dejo un ejemplo rápido de como limitar la velocidad a 2 pc

      acl pc1 src 192.168.1.10/24 # pc1
      acl pc2 src 192.168.2.20/24 # pc2
      delay_pools 2 # creamos 2 delay pools
      delay_class 1 1 # delay pool 1 es de clase 1
      delay_class 2 1 # delay pool 2 es de clase 1
      delay_access 1 allow pc1 # delay pool 1 para la red 1
      delay_access 2 allow pc2 # delay pool 2 para la red 2
      delay_parameters 1 1000000/1000000 # delay pool 1 con 1 Mb
      delay_parameters 2 2000000/2000000 # delay pool 2 con 2 Mb

      delay_parameteres se especifica en bits

  • Pingback: Bonus Pack 2018: Recopilación de artículos de sospedia.net – jblanco.org

  • Pingback: Bonus Pack 2018: Recopilación de artículos de sospedia.net – Jose Blanco Vega

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.