CAPITULO I
1.1 INTRODUCCIÓN
El proxy web es
un dispositivo que suele estar más cerca de nuestro ordenador que el servidor
al que estamos accediendo. este suele tener lo que denominamos una caché, con
una copia de las páginas web que se van visitando. entonces, si varias personas
que acceden a internet a través del mismo proxy acceden al primer sitio web, el
proxy la primera vez accede físicamente al servidor destino, solicita la página
y la guarda en la caché, además de enviarla al usuario que la ha solicitado. en
sucesivos accesos a la misma información por distintos usuarios, el proxy sólo
comprueba si la página solicitada se encuentra en la caché y no ha sido modificada
desde la última solicitud. en ese caso, en lugar de solicitar de nuevo la
página al servidor, envía al usuario la copia que tiene en la caché. esto
mejora el rendimiento o velocidad de la conexión a internet de los equipos que
están detrás del proxy
1.2 PLANTEAMIENTO DEL PROBLEMA
1.3 objetivos
1.3.1
Objetivo General
Emplear un Raspberry Pi
utilizando cualquier sistema basado en Linux, para un servidor proxy que
permita y no filtre algunas páginas que nosotros propongamos como aptas o no
aptas.
2 PROCEDIMIENTO
En
principio utilizamos el modo de restringuir mediante Privoxy:
Limpiamos la cache: apt-get update
Lanzamos la instalación:
apt-get install privoxy
apt-get install privoxy
Arrancamos al demonio: /etc/init.d/privoxy start
El puerto por defecto es 8118, algo que podemos
dejar por defecto o modificar buscando la línea (listen-address localhost:8118)
nano /etc/privoxy/config
Si editamos la línea, reinciamos el demonio: /etc/init.d/privoxy restart
OPERACIÓN CON PRIVOXY
En
máquinas Windows podemos utilizar putty para realizar la conexión SSH que nos
va a permitir trabajar con nuestro proxy. Abrimos nuestra conexión apartado
Connection –> SSH –>
Tunnels. Como puerto origen 8118 o el que hemos configurado, y como destino localhost:8118
(o el puerto que hayamos puesto):
Y realizamos la conexión SSH:
Una vez llegamos a casa, y hemos hecho el túnel correctamente
abrimos el navegador que queramos utilizar. Os pongo el ejemplo con Firefox.
Abrimos
Firefox –> Opciones –> Opciones:
Apartado Avanzado –> Red –> Conexión –> Configuración:
Utilizando el modo de Squid
Abrimos
un terminal y tecleamos
#apt-get install squid
El
directorio por defecto donde se encuentra el archivo de configuración squid.conf
es en "/etc/squid/".
Accedemos
con:
#nano /etc/squid/squid.conf
El
fichero comienza con las siguientes opciones:
visible_hostname raspberry-proxy
http_port 3128
La
primera opción especifica el nombre del servidor, la segunda el puerto donde
escucha Squid, por defecto es el 3128 aunque se puede utilizar otro puerto.
A
continuación se describen las opciones para configurar la caché:
cache_mem 128 MB
Se
especifica la cantidad de memoria que Squid utilizará para trabajar, no se
refiere a la caché para almacenar las páginas web. La siguiente línea
especifica el tipo de caché, cantidad y la estructura de la caché:
cache_dir aufs /var/spool/squid 512 16 256
El
parámetro cache_dir especifica las características del directorio donde se va a
almacenar la caché, la ruta del directorio donde se creará la caché, el tamaño
(512 MB), número de directorios que se pueden crear (16) y cada directorio
puede tener 256 niveles.
La
opción aufs especifica el tipo de caché, tenemos varios tipos de caché:
ufs:
es el tipo de caché más viejo, viene por defecto.
aufs:
evolución del anterior, aporta ventajas sobre ufs, como desventaja tiene que
consume más procesador y memoria que ufs.
DISKD:
evolución de las anteriores, es un término medio entre las anteriores.
COSS:
es la más eficiente, aunque puede dar problemas de estabilidad.
En
Squid se definen una serie de objetos (usuarios, páginas web, direcciones IP,
etc) que se denominan Listas de Control de Acceso o ACLs y después se definen
una serie de políticas de acceso que son aplicadas a los ACL.
En
el fichero squid.conf se definen las ACL, para definir una ACL:
acl nombre_acl criterio_acl
Los
criterios pueden ser:
Por
dirección IP: se especifica la dirección o conjunto de direcciones que
pertenecen a la lista. Esta es la que nos va a interesar para la configuración
básica, pero hay más que nombraré.
acl red_local src 192.168.5.0/24
Define
una ACL con el nombre red_local, la opción src especifica que las IP que
pertenecen a la ACL:
Por
nombre de dominio.
acl bloqueo_youtube dstdomain .youtube.com .ytimg.com google.com
.google.es
Por
MAC.
acl usuario_MAC arp :00:AC:12:BC:34:AB
Por
MIME.
acl msn req_mime type application/x-msn-messenger
Si
tenemos que crear un ACL con un criterio muy extenso, por ejemplo queremos
definir una lista para bloquear unas 20 páginas web, se debe crear un ACL y
escribir las 20 páginas web. Para facilitar esta tarea Squid permite definir un
fichero donde se almacenarán los nombres de las 20 páginas web y después crear
un ACL donde se leerá el contenido del fichero.
acl pag_denegadas url_regex "/ruta/directory/lista_paginas"
Con
la opción url_regex, Squid lee el fichero especificado donde se encuentran los
datos, en este caso direcciones páginas web. Con este mismo método podemos
especificar palabras, IP, MAC, MIME, etc.
Después
de definir las listas ACL, debemos especificar una política de acceso para cada
lista. Para definir una política de acceso:
http_access allow/deny nombre_acl
Una
política de acceso permite o deniega el acceso a internet a un ACL. Por ejemplo
http_access allow all
Permite
el acceso para la lista ACL definida como all, de forma equivalente podemos
denegar el acceso a internet de la siguiente forma
http_access deny pag_denegadas
Definiendo
las listas ACL y las políticas de acceso, podemos controlar el acceso a
internet de una red local. A continuación se muestran los directorios que por
defecto nos permiten ver el funcionamiento de Squid y poder ver posibles
errores.
error_directory /usr/share/squid/errors/Spanish
access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
La
primera línea especifica que los errores se muestren en español, las siguientes
líneas especifican tres ficheros .log que almacenarán diferentes mensajes de
Squid. El fichero access.log almacena los mensajes de las páginas web que
filtra Squid, el fichero cache.log almacena el comportamiento de la cache web y
store.log los objetos que se almacenan en la caché.
Para
ver el contenido de cualquier fichero .log se puede utilizar el comando tail,
escribimos:
$sudo tail -f /var/log/squid/access.log
CONCLUSIONES Y
RECOMENDACIONES
En la creación de este tipo de restricciones de
seguridad que se pudo realizar se pudo deducir lo siguiente:
Se pudo configurar
un servidor proxy en el que aprendimos que podemos hacer una selección de
páginas que quisiéramos bloquear, así como existen blacklist predeterminadas
dependiendo del uso que le queremos dar al proxy.
Posteriormente la verificación
de protocolos de https las mismas fungen como barreras de seguridad.
Posteriormente se
pudo verificar el funcionamiento del rasberry como el servidor fungiendo el
papel desde red inalámbrica y conectada con una red LAN.
Como recomendaciones
podemos mencionar:
La manera de saber
que tipo de restricciones o es decir tipo de servidor vamos a crear para el
trabajo de bloquear recursos que no lo deseamos.
La verificación de
las instalaciones y la puesta en marcha del sistema, desde el rasberry.
La configuración desde
el sistema operativo esencial para la puesta en marcha.
By: Alvaro Fabian Altovez Chacon and Ronald Fernando Loredos Lucas