miércoles, 22 de junio de 2016

SERVIDOR PROXY CON RASBERRY PI


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
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