Squid

  • 0

Squid

En esta entrada vamos a configurar un servidor Squid, un proxy para web con caché, los clientes realizan la petición sobre el servidor proxy y si este no tiene guardada la pagina en su caché es él quién realiza la petición, pero si ya la tiene guardada en caché devuelve al usuario la página y de esta manera agiliza el proceso. También puede hacer que los usuarios no puedan acceder a ciertas páginas que indiquemos en el servidor.

1. Configuración del servidor:

En primer lugar lo que debemos de hacer es instalar squid para ello ejecutamos el siguiente
comando:

root@squid:/home/debian# apt­get install squid3

Una vez instalado lo que debemos de hacer es irnos al fichero “/etc/squid/squid.conf” y le damos el
siguiente valor a la línea “http_port”:

# Squid normally listens to port 3128
http_port 3128

Luego descomentamos la siguiente línea y le damos el valos de nuestro rango de red:

acl localnet src 172.22.0.0/16
acl localnet src 172.19.0.0/16

Y por ultimo descomentamos las líneas:

http_access allow localnet
http_access allow localhost

2. Configuración del proxy

A continuación lo que vamos a hacer es tener dos tipos de usuarios, profesores y alumnos, los
profesores y los usuarios se identificarán por “profesor” cuya contraseña será “profe” y alumnos
cuya contraseña será “alumno” respectivamente.

Empezamos por definir a profesores y a alumnos, para ello vamos a elegir el módulo “NCSA”
instalando el siguiente paquete:

root@squid:/home/debian# apt­get install apache2­utils

Una vez hecho esto lo que debemos de hacer es editar el fichero “/etc/squid3squid.conf” y
descomentamos las siguientes líneas, en la primera especificamos donde se encontrará:

auth_param basic program /usr/lib/squid3/ncsa_auth 
/etc/squid3/passwd
auth_param basic children 5
auth_param basic realm Squid proxy­caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

Ahora lo que debemos de hacer es crear los ficheros donde estarán las contraseñas de los usuarios
en la ruta que hemos especificado anteriormente con el comando “htpasswd”:

root@squid:/etc/squid3/passwd# htpasswd ­c /etc/squid3/usuarios 
alumno
New password: 
Re­type new password: 
Adding password for user alumno
root@squid:/etc/squid3/passwd# htpasswd ­c /etc/squid3/usuarios 
profesor
New password: 
Re­type new password: 
Adding password for user profesor
root@squid:/etc/squid3/passwd# 

Si miramos dentro del fichero veremos que al usuario con su contraseña encriptada.

profesor:$apr1$0oYR0y8k$AMhAodqLlf/5Olmq3vpb2/
alumno:$apr1$4mykyuEv$/JdI3QFqCfZbtVQkWaVAu.

Luego cambiamos los permisos y el propietario del la carpeta:

root@squid:/home/debian# chown root:proxy /etc/squid3/usuarios 
root@squid:/home/debian# chmod 640 /etc/squid3/usuarios
root@squid:/home/debian# 

Luego editamos el fichero “/etc/squid3/squid.conf” y descomentamos ademas de editar la siquiente
línea marcando donde irá el fichero de las contraseñas:

auth_param basic program /usr/lib/squid3/ncsa_auth 
/etc/squid3/usuarios

Luego descomentamos también las siguientes líneas:

auth_param basic children 5
auth_param basic realm Squid proxy­caching web server
auth_param basic credentialsttl 2 hours

Una vez hecho esto el siguiente paso es añadir la acl siquiente:

acl usuarios proxy_auth REQUIRED

volvemos al fichero y editamos la siguiente línea:

http_access allow usuarios localnet

Y reinicamos el servicio de squid:

root@squid:/etc/squid3# service squid3 restart
[ ok ] Restarting Squid HTTP Proxy 3.x: squid3[....]  
Waiting.....................done.
. ok 
root@squid:/etc/squid3#

Luego nos vamos al navegador e intentamos acceder a google, y comprobamos que nos pide
usuarios y contraseña:

Captura de pantalla de 2015-06-25 23-40-52

Captura de pantalla de 2015-06-25 23-41-51

3. Limitaciones de los usuarios.

A continuación vamos a limitar los siguientes puntos.

Para los profesores y alumnos:
• No se pueden bajar ficheros que se puedan instalar (exe,msi,rar,zip,bin,iso).
• No tienen acceso a internet los fines de semana.
Para los alumnos:
• No pueden ver contenido multimedia.
• Sólo tienen conexión de 8:00 h. a 14:00 h.

Para definir a los alumnos y los profesores establecemos los siguiente:

acl alumno proxy_auth alumno
acl profesor proxy_auth profesor

Ahora configuraremos para que no puedan entrar en el fin de semana:

acl findesemana time AS 00:00­23:59 
http_access allow alumno !findesemana localnet
http_access allow profesor !findesemana localnet

Debemos de tener en cuenta que las líneas deben ir en su sitio, no juntas.

Ahora tenemos que definir nuevas normas para los alumnos, no podrán descargar ficheros
multimedia y solo tiene acceso a internet desde las 8 a las 14 horas:

acl horario_alumno time MTWHF 8:00­14:00
http_access deny horario_alumno alumno

La siguiente regla que vamos a poner es que no se puedan descargar fichero multimedia:

acl multimedia rep_mime_type ­i ^video/xmatroska$ ^video/mpeg$ 
^video/x­msvideo$ ^audio/mpeg$ ^audio/xms­wma$ ^audio/x­ms­wma$
http_reply_access deny multimedia alumnos

4. Control de dominios y de url’s.

Ahora lo que vamos a hacer es configurar que squid deniegue el acceso a ciertos dominios y url’s,
squid leerá los dominio desde un fichero de texto plano que le indiquemos:

acl url_invalida dstdomain "/etc/squid3/url_invalida.acl"
acl dominio_invalido dstdomain "/etc/squid3/dominio_invalido.acl"
http_access deny url_invalida 
http_access deny dominio_invalido

5. Configuración PAC

En primer lugar lo que debemos de hacer es crear nuestro virtualhost pero antes creamos el
siguiente fichero “nano /var/www/wpad/wpad.dat”:

function FindProxyForURL(url, host)
  {
    return "PROXY 172.22.200.216:3128";
  }

Luego nos vamos a “/etc/apache2/sites-availables/” y creamos “wpad” con la siguiente estructura:


        ServerAdmin webmaster@localhost
        ServerName wpad.manu.gonzalonazareno.org
        DocumentRoot /var/www/wpad
        
                Options FollowSymLinks
                AllowOverride All
        
        
                Options Indexes +FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        

Luego nos vamos al servidro DNS y añadomos las siguientes líneas al fichero
“/var/cache/bind/db.manu.gonzalonazareno.org”:

squid   IN      A       172.22.200.216
wpad    IN      CNAME   squid

Y reiniciamos el servicio:

root@targaryen:/home/debian# service bind9 restart
[....] Stopping domain name service...: bind9waiting for pid 2139 
to die
. ok 
[ ok ] Starting domain name service...: bind9.
root@targaryen:/home/debian#

Luego nos vamos al cliente y cambiamos por la dirección del servidor DNS que en este caso sería
172.22.200.53

A continuación nos vamos al cliente y en la configuración ponemos la URL del squid:

Captura de pantalla de 2015-06-25 23-50-39

6. Monitorización del tráfico.

Por último vamos a instalar SARG que sirve para monitorizar el tráfico. Para instalarla ejecutamos
el siguiente comando:

root@squid:/etc/apache2/sites­available# apt­get install sarg

El siguiente paso que debemos de hacer es editar el fichero “/etc/sarg/sarg.conf” para que lea los
ficheros de squid3 para poder generar los datos:

access_log /var/log/squid3/access.log
output_dir /var/www/sarg
date_format e

* Si la carpeta “/var/www/sarg” no existe la creamos y le cambiamos el propietario a “www-data:www-data”

Luego reiniciamos apache y ejecutamos el comando:

root@squid:/etc/apache2/sites­available# sarg

Luego nos vamos a la dirección “http://squid.manu.gonzalonazareno.org/sarg/” y vemos que nos
sales las información del sitio.

Captura de pantalla de 2015-06-25 23-53-53

Captura de pantalla de 2015-06-25 23-54-52