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# aptget 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# aptget install apache2utils
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 proxycaching 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: Retype new password: Adding password for user alumno root@squid:/etc/squid3/passwd# htpasswd c /etc/squid3/usuarios profesor New password: Retype 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 proxycaching 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:
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:0023: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:0014: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/xmsvideo$ ^audio/mpeg$ ^audio/xmswma$ ^audio/xmswma$ 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:
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/sitesavailable# aptget 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/sitesavailable# sarg
Luego nos vamos a la dirección “http://squid.manu.gonzalonazareno.org/sarg/” y vemos que nos
sales las información del sitio.