CLICK HERE FOR THOUSANDS OF FREE BLOGGER TEMPLATES »

Wednesday 25 March 2009

Servidor Proxy con autenticación de usuarios de servicio de directorio.

objetivos:
implementar servidor proxy.
implementar politicas de acceso, restriccion por URL, extenciones de archivo, mimetypes y por acceso de horarios.
implementar listas negras para control de acceso.
implementar autenticacion con usuarios de un servicio de direcctorio.
implementar un analizador de trafico para generar reportes estadisticos con acceso seguro para la visualizacion de los reportes.


servidor proxy
Un servidor proxy es un programa, dispositivo u equipo intermediario situado entre los equipos la red (lan) e Internet. Puede utilizarse para registrar el uso de Internet y también para bloquear el acceso a un sitio Web. la finalidad más habitual del servidor proxy, es permitir el acceso a Internet a todos los equipos de una organización cuando sólo se puede disponer de un único equipo conectado, esto es, una única dirección IP.

Generalmente el servidor proxy se utiliza para la Web. Se trata entonces de un proxy HTTP. Sin embargo, puede haber servidores proxy para cada protocolo de aplicación (FTP, etc.).

**El principio operativo básico de un servidor proxy es bastante sencillo: se trata de un servidor que actúa como "representante" de una aplicación efectuando solicitudes en Internet en su lugar. De esta manera, cuando un usuario se conecta a Internet con una aplicación del cliente configurada para utilizar un servidor proxy, la aplicación primero se conectará con el servidor proxy y le dará la solicitud. El servidor proxy se conecta entonces al servidor al que la aplicación del cliente desea conectarse y le envía la solicitud. Después, el servidor le envía la respuesta al proxy, el cual a su vez la envía a la aplicación del cliente.

**La mayoría de los proxys tienen una caché, es decir, la capacidad de guardar en memoria (“en caché”) las páginas que los usuarios de la red de área local visitan comúnmente para poder proporcionarlas lo más rápido posible. De hecho, el término "caché" se utiliza con frecuencia en informática para referirse al espacio de almacenamiento temporal de datos (a veces también denominado "búfer").

Un servidor proxy con la capacidad de tener información en caché (neologismo que significa: poner en memoria oculta) generalmente se denomina servidor "proxy-caché".

Esta característica, implementada en algunos servidores proxy, se utiliza para disminuir tanto el uso de ancho de banda en Internet como el tiempo de acceso a los documentos de los usuarios.

Sin embargo, para lograr esto, el proxy debe comparar los datos que almacena en la memoria caché con los datos remotos de manera regular para garantizar que los datos en caché sean válidos.

**Por otra parte, al utilizar un servidor proxy, las conexiones pueden rastrearse al crear registros de actividad (logs) para guardar sistemáticamente las peticiones de los usuarios cuando solicitan conexiones a Internet.

Gracias a esto, las conexiones de Internet pueden filtrarse al analizar tanto las solicitudes del cliente como las respuestas del servidor. El filtrado que se realiza comparando la solicitud del cliente con una lista de solicitudes autorizadas se denomina lista blanca; y el filtrado que se realiza con una lista de sitios prohibidos se denomina lista negra. Finalmente, el análisis de las respuestas del servidor que cumplen con una lista de criterios (como palabras clave) se denomina filtrado de contenido.

**Como el proxy es una herramienta intermediaria indispensable para los usuarios de una red interna que quieren acceder a recursos externos, a veces se lo puede utilizar para autenticar usuarios, es decir, pedirles que se identifiquen con un nombre de usuario y una contraseña. También es fácil otorgarles acceso a recursos externos sólo a las personas autorizadas y registrar cada uso del recurso externo en archivos de registro de los accesos identificados.

Este tipo de mecanismo, cuando se implementa, obviamente genera diversos problemas relacionados con las libertades individuales y los derechos personales.

Mejoran el rendimiento.
Guardan en la memoria caché las páginas Web a las que acceden los sistemas de la red durante un cierto tiempo. Cuando un sistema solicita la misma página web, el servidor proxy utiliza la información guardada en la memoria caché en lugar de recuperarla del proveedor de contenidos. De esta forma, se accede con más rapidez a las páginas Web.

squid
Squid es un popular programa de software libre que implementa un servidor proxy y un demonio para caché de páginas web, publicado bajo licencia GNU GPL. Squid es un proxy caché para el apoyo a la Web HTTP, HTTPS, FTP y mucho más. Reduce el ancho de banda y mejora los tiempos de respuesta por el almacenamiento en caché y reutiliza frecuentemente páginas web solicitadas .

Tiene una amplia variedad de utilidades, desde acelerar un servidor web, guardando en caché peticiones repetidas a DNS y otras búsquedas para un grupo de gente que comparte recursos de la red, hasta caché de web, además de añadir seguridad filtrando el tráfico. Está especialmente diseñado para ejecutarse en la mayoría de sistemas operativos bajo entornos tipo Unix. tambien hay para entornos Windows.

Squid ha sido desarrollado durante muchos años y se le considera muy completo y robusto. Aunque orientado a principalmente a HTTP y FTP es compatible con otros protocolos como Internet Gopher. Implementa varias modalidades de cifrado como TLS, SSL, y HTTPS.

Squid es utilizado por cientos de Proveedores de Internet en todo el mundo para proporcionar a sus usuarios la mejor manera posible el acceso a la Web. Squid optimiza el flujo de datos entre el cliente y el servidor para mejorar el rendimiento y cachés con frecuencia utilizadas para ahorrar ancho de banda contenido. Squid puede tambien enrutar peticiones de contenido a los servidores de contenido en una amplia variedad de maneras de construir jerarquías de caché del servidor, que optimicen el rendimiento de red.

squidguard es un redirector de url utilizado para usar listas negras con el squid.
hay dos grandes ventajas para squidguard: es rapido y libre "gratis". SquidGuard esta publicado bajo licencia publica GNU.


ldap
ldap es un protocolo ligero de acceso a directorios "Lightweight Directory Acces Protocol", es un protocolo de tipo cliente-servidor para acceder a un servicio de directorio.

ldap es un protocolo a nivel de aplicación que permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP también es considerado una base de datos (aunque su sistema de almacenamiento puede ser diferente) a la que pueden realizarse consultas.

Habitualmente, almacena la información de login (usuario y contraseña) y es utilizado para autenticarse aunque es posible almacenar otra información (datos de contacto del usuario, ubicación de diversos recursos de la red, permisos, certificados, etc).

Uno o más servidores LDAP contienen los datos que conforman el árbol de directorio LDAP o base de datos troncal, el cliente LDAP se conecta con el servidor LDAP y le hace una consulta. El servidor contesta con la respuesta correspondiente, o bien con una indicación de donde puede el cliente hallar más información. No importa con que servidor LDAP se conecte el cliente ya que siempre observará la misma vista del directorio; el nombre que se le presenta a un servidor LDAP hace referencia a la misma entrada a la que haría referencia en otro servidor LDAP.

En conclusión, LDAP es un protocolo de acceso unificado a un conjunto de información sobre una red. El servicio de directorio LDAP se basa en un modelo cliente-servidor.

Sarg
Sarg es un programa para ver los informes de uso del Squid de una red. En palabras de su programador: Sarg es un Squid Analysis Report Generator que te permite ver "dónde" están yendo tus usuarios dentro de Internet. Sarg genera informes en html, con muchos campos, como: usuarios, Direcciones IP, bytes transmitidos, sitios web y tiempos.

netfilter/iptables

Netfilter es un framework disponible en el nucleo linux que permite interceptar y manipular paquetes de red. Dicho framework permite realizar el manejo de paquetes en diferentes estados del procesamiento. Netfilter es también el nombre que recibe el proyecto que se encarga de ofrecer herramientas libres para cortafuegos basados en linux.

El componente más popular construido sobre Netfilter es iptables, una herramientas de cortafuegos que permite no solamente filtrar paquetes, sino también realizar traduccion de direcciones de red (NAT) para ipv4 o mantener registros de log. El proyecto ofrecía compatibilidad hacia atrás con ipchains hasta hace relativamente poco, aunque hoy día dicho soporte ya ha sido retirado al considerarse una herramienta obsoleta. El proyecto Netfilter no sólo ofrece componentes disponibles como modulos del nucleo sino que también ofrece herramientas de espacio de usuario y librerías.

iptables es el nombre de la herramienta de espacio de usuario mediante la cual el administrador puede definir políticas de filtrado del tráfico que circula por la red. El nombre iptables se utiliza frecuentemente de forma errónea para referirse a toda la infraestructura ofrecida por el proyecto Netfilter. Sin embargo, el proyecto ofrece otros subsistemas independientes de iptables tales como el connection tracking system o sistema de segumiento de conexiones, o que, que permite encolar paquetes para que sean tratados desde espacio de usuario. iptables es un software disponible en prácticamente todas las distribuciones de linux actuales.

Wednesday 4 March 2009

ipsec config

lo primero que debemos hacer es instalar el paquete ipsec-tools

apt-get install ipsec-tools

luego editamos el archivo ipsec-tools.conf, comenzamos por descomentar las siguientes lineas:

flush;
spdflush;

si queremos implementar AH agregamos las siguientes lineas:

#AH#
add IPlocal IPdestino ah 0x200 -A hmac-md5 0x"clave generada de 128 bits";
add IPdestino IPlocal ah 0x300 -A hmac-md5 0x"clave generada de 128 bits";
#
#politicas de seguridad#
spdadd 192.168.1.1 192.168.1.2 any -P out ipsec
ah/transport//require;
# esp/transport//require;
spdadd 192.168.1.2 192.168.1.1 any -P in ipsec
ah/transport//require;
# esp/transport//require;

(las claves mencionadas se generan con el siguiente comando)
dd if=/dev/random count=16 bs=1| xxd -ps para AH
dd if=/dev/random count=24 bs=1| xxd -ps para ESP

si queremos implementar ESP agregamos las siguientes lineas:

#ESP#
add IPlocal IPdestino esp 0x200 -E 3des-cbc 0x"clave generada de 192 bits";
add IPdestino IPlocal esp 0x300 -E 3des-cbc 0x"clave generada de 192 bits";
#
#politicas de seguridad#
spdadd 192.168.1.1 192.168.1.2 any -P out ipsec
esp/transport//require;
# ah/transport//require;
spdadd 192.168.1.2 192.168.1.1 any -P in ipsec
esp/transport//require;
# ah/transport//require;

y provamos si la configuracion esta buena con el siguiente comando:

setkey -f /etc/ipsec-tools.conf

luego instalamos el paquete tcpdump

apt-get install tcpdump

ahora podemos comprobar si esta funcionando con el siguiente comando:

tcpdump -i eth0 src host 192.168.1.1 or dst 192.168.1.2

hasta aqui todo debe estar correcto.

configuracion con racoon

instalamos el paquete racoon (durante la instalacion nos pregunta el modo de configuracion para el demonio IKE de racoon, al que configuraremos en modo directo)

apt-get install racoon

luego de la instalacion verificamos la creacion de tres archivos en el directorio racoon:

/etc/racoon/psk.txt

/etc/racoon/racoon.conf

/etc/racoon/racoon-tool.conf

ahora editamos el archivo psk.txt, comentamos todas las lineas y agregamos las siguientes:

pico /etc/racoon/psk.txt

#direcciones IPv4
192.168.1.1
192.168.1.2 0x"clave generada de 128 bits";
# USER_FQDN
cuenta@dominio.net
# FQDN

luego editamos el archivo racoon.conf, comentamos la linea #path certificate "/etc/racoon/certs"; para trabajar con clave precompartida, y copiamos o modificamos la remote.

path pre_shared_key "/etc/racoon/psk.txt";
#path certificate "/etc/racoon/certs";

remote 192.168.1.2 {
exchange_mode main,aggressive;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group modp1024;
}
generate_policy off;
}

sainfo address 192.168.1.2[any] any address 192.168.1.1/24[any] any {
pfs_group modp768;
encryption_algorithm 3des;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
}

sainfo address 192.168.1.1[any] any address 192.168.1.2/24[any] any {
pfs_group modp768;
encryption_algorithm 3des;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
}

luego reiniciamos el racoon.

/etc/init.d/racoon restart

y ya solo queda comprobar que todo esta funcionando correctamente, todo debe estar bien.

tcpdump -i eth0 src host 192.168.1.1 or dst 192.168.1.2