Dec 24, 2008

Alta Disponibilidad y Balanceo de Carga en Linux

A lo largo de varios artículos, voy a describir cómo configurar un sistema de Alta Disponibilidad y Balanceo de Carga bajo máquinas pertenecientes a la familia GNU/Linux. El concepto de Alta Disponibilidad se refiere al hecho de garantizar la continuidad de un determinado servicio independientemente de si ocurre algún tipo de fallo en el sistema. Y con Balanceo de Carga nos estamos refiriendo a la acción de repartir de forma equitativa el conjunto global de peticiones que recibe dicho servicio.

Esta clase de infraestructura es utilizada comúnmente por cualquier compañía que posee un elevado tráfico de datos y necesita ofrecer un conjunto de servicios con unas garantías mínimas de fiabilidad. Imaginemos por un momento la cantidad de peticiones que puede recibir Google a lo largo de un minuto, y pensemos también que conlleva dicha petición: procesarla a través de un servidor web, acceder a una base de datos, realizar una o varias consultas, devolver una serie de resultados, etc. En resumen, una única máquina sería incapaz de realizar todo este proceso individualmente debido al enorme caudal de conexiones y tareas involucradas.

¿Qué es lo que se hace entonces? Acudir al viejo lema de "divide y vencerás". Por un lado se tendrán varias máquinas que exclusivamente se encargarán de atender las conexiones. A continuación, esas peticiones se repartirán (Balanceo de Carga) a distintos servidores web en función de su carga de trabajo. Y por último, estos servidores realizarán las consultas apropiadas a una base de datos distribuida y ubicada en diferentes nodos. Y todo ello garantizando la continuidad del servicio (Alta Disponibilidad), es decir, si alguno de los elementos de la cadena falla, el sistema global seguiría funcionando correctamente y este hecho sería imperceptible para el usuario.



En el esquema de red que se va a desarrollar, se va a configurar un sistema de Alta Disponibilidad mediante Heartbeat, y Balanceo de Carga a través de de ldirectord. La máquina HA1 será el nodo activo, encargado de recibir las peticiones a través de la dirección IP virtual 192.168.1.20 y repartirlas a los dos servidores, LB1 y LB2, empleando para ello la otra dirección IP virtual, 10.0.0.20. En caso de caída de HA1 (se apaga la máquina, se reinicia, pierde el link en su interfaz de red, etc), HA2 levantará las dos direcciones virtuales en sus interfaces de red, pasando en este momento a ser el nodo activo. Si HA1 se vuelve a recuperar, HA2 pasará a ser nuevamente el nodo pasivo (quitará las direcciones virtuales de sus interfaces de red).

Para la base de datos, se utilizará un sistema MySQL Cluster en los nodos LB1 y LB2, siendo HA1 y HA2 los nodos de administración del cluster. Los nodos de almacenamiento serán LB1 y LB2, los cuales tendrán una base de datos compartida y replicada en ambas máquinas, de tal forma que lo que se escriba en una, también se trasladará a la otra. Para aumentar el rendimiento del sistema, MySQL Cluster almacenará la base de datos en memoria.

El proceso encargado de la administración del cluster MySQL residirá en HA1 (nodo activo). En caso de caída de HA1, HA2 levantará dicho demonio de administración. Si se cae uno de los dos nodos de almacenamiento, cuando se vuelva a recuperar sincronizará automáticamente el contenido de su base de datos con la del otro nodo que seguía levantado.

En los dos nodos traseros (LB1 y LB2) también se configurará un servicio web (Apache2) y FTP (vsftpd). En consecuencia, será necesario establecer un área de datos compartida, de forma que los directorios utilizados por Apache y vsftpd sean idénticos en ambas máquinas. Tenemos que pensar que estamos ante un sistema totalmente transparente de cara al usuario: HA1 repartirá peticiones que podrán ser tratadas indistintamente por cualquiera de los dos nodos traseros, es decir, el espacio de almacenamiento de ambos servicios (web y FTP) deberá ser común para ambas máquinas, con lo que si una de ellas graba un dato dentro de este espacio, la otra tenga acceso instantáneo al mismo.

Para configurar todo este entramado, se montará un directorio común en los dos nodos traseros de tipo RAID1 (espejo) mediante GlusterFS, de manera que todo lo que se escriba en uno, se verá automáticamente reflejado en el otro, y viceversa.

De cara a monitorizar periódicamente el estado de los servicios configurados se utilizará el demonio mon. Si alguno de dichos servicios cae, mon podrá tomar distintas medidas así como enviar alertas por email.

También será necesario dotar de una cierta protección a la infraestructura que se va a levantar. Para proteger los puertos del sistema que queden abiertos hacia el exterior, se utilizará la herramienta iptables, de tal forma que se establecerá como política por defecto para todos los paquetes que lleguen a las máquinas (cadena INPUT), la opción de denegar, y se dejarán abiertos aquellos puertos utilizados por los distintos servicios.

Y por último, para que los dos nodos frontales puedan redirigir paquetes hacia los nodos traseros (habilitar el flujo de datos entre los distintos interfaces de red), activaremos el ip_forward en HA1 y HA2. Y para que el sistema funcione correctamente, todos los nodos deberán estar sincronizados horariamente. Para ello cada 60 minutos, se sincronizará la hora de cada máquina mediante un servidor horario externo.

Dec 17, 2008

Rendimiento del Dell Latitude E4200

Continuado con el análisis del portátil Dell Latitude E4200, se van a realizar una serie de pruebas de rendimiento basadas en las herramientas de benchmark expuestas en el artículo anterior.

Estas pruebas consistirán básicamente en medir el rendimiento de la CPU, acceso a disco, ancho de banda y latencias de la memoria RAM y caché. Para un mejor análisis de los datos, la mejor opción será compararlos con los resultados ofrecidos por otro modelo con características distintas: por ejemplo el PC de sobremesa que utilizo en mi casa.

Por lo tanto, vamos a comenzar exponiendo las características hardware de ambos equipos:

Dell Latitude E4200

  • Sistema operativo: Kubuntu 8.10
  • Procesador: Mobile DualCore Intel Core 2 Duo U9400, 1576 MHz (8 x 197)
  • Placa base: Dell Latitude E4200
  • Chipset placa base: Intel Cantiga GS45
  • Memoria: 3024 MB (DD3-1066 DDR3 SDRAM)
  • Tarjeta gráfica: Mobile Intel(R) 4 Series Express Chipset Family
  • Disco duro: Samsung SSD Thin uSATA 6 (59 GB, IDE)

PC casa

  • Sistema operativo: Kubuntu 8.10
  • Procesador: DualCore Intel Core 2 Duo E8400, 3000 Mhz (9 x 333)
  • Placa base: Gigabyte GA-P35-DS3L
  • Chipset placa base: Intel Bearlake P35
  • Memoria: 2x2 GB DDR2-800 DDR2 SDRAM
  • Tarjeta gráfica: NVIDIA GeForce 9600 GT (512 MB)
  • Disco duro: ST3500320AS (500 GB, 7200 RPM, SATA-II)

A continuación pueden verse los resultados ofrecidos por las pruebas:

Como puede observarse en base a los datos anteriores, los resultados ofrecidos por el Dell Latitude E4200 son muy buenos, ya que estamos comparando a un ordenador de sobremesa con unas grandes prestaciones, contra un pequeño portátil que utiliza un procesador de bajo consumo.

Destacar también los tiempos de acceso al disco SSD, que como puede verse, supera con creces la velocidad de escritura de un disco duro convencional.

Dec 16, 2008

Herramientas de benchmark en Linux

Benchmark es una palabra procedente de la lengua inglesa que puede traducirse como "comparativa". El benchmark hace referencia a un conjunto de técnicas que persiguen el objetivo de medir el rendimiento de un sistema hardware o software, o ambos a la vez.

El rendimiento de un sistema se puede medir en base a los resultados de funcionamiento ofrecidos por varios de sus componentes: memoria RAM, memoria caché, disco duro, procesador, tarjeta gráfica, etc. A continuación se van a presentar una serie de herramientas de software libre que nos van a ayudar a obtener estos indicadores en sistemas operativos pertenecientes a la familia GNU/Linux.

Lmbench

Lmbench es un conjunto de scripts que permiten desarrollar distintos tipos de análisis y medidas:

  • Ancho de banda: copia, lectura y escritura en memoria, pipes y TCP.
  • Latencias: cambios de contexto, conexiones TCP/UDP, creación y borrado de archivos, creación de procesos, tratamiento de señales, llamadas al sistema y acceso a memoria.

Una vez instalada la aplicación en la máquina a testear (están disponibles tanto los fuentes como los paquetes instalables para cualquier tipo de repositorio), se creará un directorio con un conjunto de archivos binarios encargados de realizar las medidas comentadas:

# ls -l /usr/lib/lmbench/bin/i686-pc-linux-gnu/
total 3332
-rwxr-xr-x 1 root root 30264 2008-09-21 14:32 bw_file_rd
-rwxr-xr-x 1 root root 34344 2008-09-21 14:32 bw_mem
-rwxr-xr-x 1 root root 30272 2008-09-21 14:32 bw_mmap_rd
-rwxr-xr-x 1 root root 30252 2008-09-21 14:32 bw_pipe
-rwxr-xr-x 1 root root 30296 2008-09-21 14:32 bw_tcp
-rwxr-xr-x 1 root root 30256 2008-09-21 14:32 bw_unix
-rwxr-xr-x 1 root root 153240 2008-09-21 14:32 cache
-rwxr-xr-x 1 root root 30260 2008-09-21 14:32 disk
...

Podremos utilizar cada uno de estos binarios de forma individual para realizar una medida concreta, o se podrá emplear el comando lmbench-run a través del cual, un asistente nos guiará en la configuración de las distintas pruebas de benchmark, las ejecutará y nos presentará un informe del transcurso de las mismas (este comando hará uso de cada uno de los binarios anteriormente citados, cuyo formato y especificación pueden ser consultados a través del man).

Por ejemplo, para comprobar la velocidad de lectura de la memoria RAM ejecutaríamos el siguiente comando:

/usr/lib/lmbench/bin/i686-pc-linux-gnu# ./bw_mem 256m rd
268.44 3913.68

En el ejemplo anterior le hemos dicho a lmbench que lea 256 MB de memoria RAM. Como resultado nos dice que ha leído 268.44 MB, y el ancho de banda correspondiente ha sido de 3913.68 MB/s.

Hardinfo

Hardinfo es una utilidad que proporciona información sobre un determinado sistema operativo, así como del hardware que lo alberga. Además, es capaz de realizar distintos tipos de benchmarks sobre la propia CPU:

  • CPU Zlib: compresión de 64 MB de datos.
  • CPU Fibonacci: cálculo del número 42 de Fibonacci.
  • CPU MD5: obtener el MD5 de un fichero de 312 MB.
  • CPU SHA1: obtener el SHA1 de un fichero de 312 MB.
  • CPU Blowfish: cifrado de un fichero mediante el algoritmo Blowfish.

Dd

Dd es una herramienta integrada en los sistemas Linux que permite el copiado bit a bit, independientemente del sistema de archivos origen y destino. Esta utilidad te muestra la velocidad de lectura o escritura con la que se ha realizado la operación. Por lo tanto, podrá ser empleada para medir la velocidad de acceso al disco duro.

  • Escritura: copia de XXXX · YYYY bytes desde el dispositivo origen /dev/zero al fichero /tmp/output.

     dd if=/dev/zero of=/tmp/output bs=XXXX count=YYYY

  • Lectura: lectura de XXXX · YYYY bytes desde el disco /dev/sda al dispositivo /dev/null.

     dd if=/dev/sda of=/dev/null bs=XXXX count=YYYY

Recordar que /dev/zero es un archivo especial que cuando se lee de él, provee caracteres NULL, es decir, su tiempo de lectura es prácticamente nulo, o dicho de otra forma, su acceso posee un ancho de banda que tiende a infinito. De esta forma al aplicar el primer comando, el único tiempo de cómputo se invertirá en la escritura de los datos.

El otro dispositivo especial utilizado es /dev/null, que tiene la peculiaridad de descartar toda la información volcada en él de forma instantánea (latencia prácticamente igual a cero). De esta forma al aplicar el segundo comando, el único tiempo de cómputo se invertirá en la lectura de los datos.

Para las pruebas de benchmark para el disco duro, emplearemos dos valores para el bloque de datos a copiar (bs), 8 KB y 1 MB, repitiéndose esta transferencia (count) 16384 y 128 veces respectivamente, para un flujo total de datos de 128 MB.

Dec 12, 2008

Emulación virtual de CD/DVD

Hoy en día se están poniendo muy de moda los ultraportátiles, ordenadores caracterizados por sus pequeñas dimensiones y sus componentes de bajo coste, haciéndolos mucho más accesibles que los portátiles tradicionales.

Esta clase de computadores tiene el inconveniente de no traer incorporado un lector de CDs o DVDs. Debido a que la mayor parte de las aplicaciones ofrecidas para los sistemas operativos pertenecientes a la familia Microsoft Windows vienen a través de este formato de almacenamiento, no nos quedan muchas opciones de cara a su instalación. Una de ellas podría ser el comprar un lector externo que se conectase a través del puerto USB, pero otra opción mucho más económica sería la de utilizar las Daemon Tools. Daemon Tools es un software que permite la emulación de imágenes procedentes de CDs o DVDs.

Vamos a suponer que tenemos una aplicación en formato DVD y queremos instalarla en el Windows XP de nuestro portátil, el cual no dispone de lector. Lo primero que habría que hacer sería pedirle a alguien que extrajera del DVD, una imagen en formato ISO. Para ello se puede emplear por ejemplo la aplicación k3b.

Para crear la imagen seleccionaríamos dentro del menú Herramientas, la opción de Copiar DVD... De esta forma se extraería el contenido del DVD y se empaquetaría en una ISO (a continuación puede verse el cuadro de control).


La imagen será depositada en la carpeta /tmp/, aunque podremos modificar el destino a través de la pestaña Imagen.

Una vez que tengamos instaladas las Daemon Tools en Windows XP, dispondremos de un icono correspondiente a este programa en la parte inferior derecha del Escritorio. Pulsando con el botón derecho del ratón sobre dicho icono, aparecerá el menú flotante de las Daemon Tools. Dentro de este menú, escogeremos la opción CD/DVD-ROM Virtual, Dispositivo 0: [ D: ] Vacío, Montar imagen. En consecuencia, se mostrará un control que nos permitirá elegir la imagen que se quiere montar.


A partir de este momento, si vamos a la carpeta Mi PC, sección Dispositivos con almacenamiento extraíble, podremos ver que se habrá creado una nueva unidad virtual D: que a efectos prácticos, vendrá a ser como si tuviéramos un lector de DVDs físico.

Para desmontar la imagen habrá que seleccionar dentro del menú emergente, CD/DVD-ROM Virtual, Dispositivo 0: [ D: ] Vacío, Desmontar imagen.

Para utilizar una ISO en GNU/Linux no hace falta utilizar ninguna clase de aplicación, se puede montar directamente la imagen en el directorio que queramos:

# mkdir /media/iso

# mount -t iso9660 -o loop archivo.iso /media/iso

Para desmontar la imagen, se puede emplear el siguiente comando:

# umount /media/iso

Dec 5, 2008

Instalar Kubuntu desde una memoria USB

Hay muchas formas de instalar Linux sin necesidad de tener que quemar un CD o un DVD. Una de ellas es a través de una memoria USB autoarrancable. Los requisitos mínimos son que la memoria tenga la suficiente capacidad para albergar la imagen y que el equipo donde queramos utilizarla permita el arranque desde su interfaz USB.

Existe un paquete denominado usb-creator, el cual permite crear un pendrive autoarrancable con el LiveCD de la distribución dentro. Usb-creator surgió con el objetivo de evitar la necesidad de tener que emplear una unidad óptica de cara a la instalación de Ubuntu, y para poder ofrecer una instalación mucho más rápida y cómoda. Actualmente está disponible para Ubuntu y todas sus distribuciones derivadas: Kubuntu, Edubuntu, Xubuntu, etc.

En mi caso voy a utilizar una memoria de 1 GB y una ISO Kubuntu 8.10. Para instalar la aplicación usb-creator emplearemos la siguiente orden:

# aptitude install usb-creator

Una vez instalada, accederemos al programa a través del botón de Inicio, Preferencias, Create a USB startup disk. Dentro de la aplicación, tendremos que seleccionar la ISO que vamos a utilizar a través del botón Other y escoger el dispositivo USB en donde será volcada la imagen. Un mensaje informativo nos indicará si la memoria tiene espacio suficiente para poder realizar la operación (/dev/sdb1 has enough free space for Kubuntu 8.10).


Y ya por último y antes de lanzar el proceso mediante el botón Make Startup Disk, habrá que elegir a través de la opción Stored in reserved extra space, el tamaño que queramos dejar dentro de nuestra memoria como disco virtual de almacenamiento. Esto último es necesario debido a que la memoria, en lugar de utilizarse para la instalación de la distribución en el disco duro físico del ordenador, puede ser también empleada como LiveCD, es decir, que nos permita arrancar temporalmente desde la memoria el sistema operativo y uilizar ese espacio reservado (128 MB en nuestro caso) para guardar los cambios del sistema, como por ejemplo la instalación de programas, archivos creados, modificaciones en las características del sistema, etc.

El proceso de instalación copiará los archivos de la ISO en la memoria USB y hará que ésta sea autoarrancable. Una vez finalizado y para poder utilizarla, deberemos configurar la BIOS del equipo anfitrión para que utilice el interfaz USB como primer dispositivo de arranque.


El sistema que acabamos de crear nos permitirá realizar acciones como:

  • Probar Kubuntu sin alterar su equipo
  • Instalar Kubuntu
  • Verificar el CD en busca de defectos
  • Análisis de la memoria
  • Arrancar desde el primer disco duro

Dec 1, 2008

Dell Latitude E4200

La semana pasada me llegó mi última y flamante adquisición, un portátil Dell Latitude E4200:


Las principales características de este ordenador son las siguientes:

  • Pantalla: LED WXGA (1.280 x 800) UltraSharpTM Premium de 12,1".
  • Procesador: Intel Core 2 Duo SU9400 (1.4GHz, 800MHz, 3MB).
  • Tarjeta gráfica: Intel ® 4500MHD.
  • Disco duro: 64 GB SSD.
  • Memoria: 3072 MB (1x2048 + 1x1024 en placa) 800MHz DDR3 de doble canal.
  • Bluetooth: Dell Wireless 365 Bluetooth.
  • Wireless: Intel WiFi Link 5100 (802.11 a/b/g/n 1X2) 1/2 MiniCard con etiqueta Centrino.
  • Batería: 4 celdas 28W/HR LI-ION.
  • Peso: 1 kg.
  • Ancho, profundidad y altura: 291 mm (11,4"), 204 mm (8,0") y 19,95 mm (0,79").
  • Ranuras: Expresscard 34, SD/MMC.
  • Puertos: IEEE - 1394, conector de estación de base, VGA, RJ-45, USB 2.0 (x1) con PowerShare USB, eSATA/USB (x1), auriculares/altavoz, micrófono y Smartcard.
  • Lector de tarjetas inteligentes.
  • Lector de huellas digitales.
  • TPM (Trusted Platform Module).
  • Dell Latitude ON.

Lo que más llama la atención de este portátil es su reducido peso (1 kg), ya que para tener una pantalla de 12,1" (con una muy buena resolución, 1280 x 800 píxeles) pesa mucho menos que cualquiera de los ultraportátiles actuales. También destacaría su elegante acabado, formado por un chasis de aleación de magnesio terminado con bisagras de metal.

La batería la escogí de 4 celdas, ya que la de 6 sobresale. Pese a ello, su duración aproximada es de unas tres horas y media, debido principalmente al bajo consumo del procesador (Procesadores Intel® CoreTM 2 Duo de voltaje ultra bajo - ULV -) y del disco duro de estado sólido (SSD).

Otra de las ventajas del disco SSD es que se trata de un componente insonoro que apenas genera calor, ya que a diferencia de un disco duro convencional donde sus cabezales están continuamente girando, nos encontramos prácticamente ante una memoria de tipo flash. Esto convierte al Latitude E4200 en un dispositivo con unos niveles de ruido mucho más que aceptables.

Otro punto a su favor es el reducido tamaño del cargador, que como puede observarse en la imagen que adjunto en el artículo, es del tamaño de una cajetilla de tabaco.

Junto con el Windows XP Professional que Dell te obliga a comprar, he instalado una Kubuntu 8.10. He medido los tiempos de arranque (hasta la pantalla de login) y apagado de ambos sistemas operativos, y he obtenido los siguientes resultados:

  • Kubuntu 8.10: arranque 27 sg y apagado 12 sg.
  • Windows XP Professional SP3: arranque 29 sg y apagado 6 sg.

Con respecto a los componentes externos, decir que presenta un teclado ergonómico y al que enseguida te acostumbras, ya que ocupa prácticamente el total del ancho del portátil. El touchpad (ratón táctil) aunque a priori puede llegar a parecer pequeño, enseguida se convierte en uno de los elementos más prácticos del equipo.

El portátil también dispone de un lector biométrico de huellas dactilares, que junto con el módulo TPM (Trusted Platform Module), conforman un tándem muy importante con respecto a términos de seguridad se refiere. El TPM o módulo de plataforma segura, es un chip que almacena información crítica del usuario, como por ejemplo contraseñas, claves de encriptación o incluso huellas dactilares.

Y ya por último, el sistema Dell Latitude ON es una tecnología que permite acceder de forma inmediata, a un conjunto de funciones básicas para el usuario: navegación web, lectura de correo electrónico, acceso a archivos, etc. Esta arquitectura está desarrollada sobre un procesador Intel ARM de bajo voltaje y una memoria flash, elementos que permiten hacer correr una distribución SUSE Linux Enterprise Desktop 10 moldeada por Dell (software que utilizará el usuario como sistema de arranque instantáneo).

Tanto el módulo TPM, el sistema Latitude ON y las pruebas de rendimiento del equipo, serán expuestas en posteriores entradas del blog.

¿Este portátil no tiene ninguna desventaja? Sí, pero son pocas y se cuentan con los dedos de una mano:

  • Su elevado precio (se trata de un ordenador reciente, se puso a la venta en Septiembre de 2008).
  • Sólo está disponible para empresas y autónomos.
  • Dell te obliga a adquirir una licencia de alguno de los sistemas operativos de Microsoft (Windows o Vista).
  • Debido a que los discos SSD están empezando como aquel que dice "a ver la luz", son todavía de pequeña capacidad y excesivamente caros.

A continuación dejo una serie de fotos del equipo.







Nov 26, 2008

Redes Privadas Virtuales en Google Books

Google ha incluido el libro Redes Privadas Virtuales en su biblioteca de búsqueda de libros, más conocida como Google Books.


Dentro de esta vista, el usuario puede observar hasta un 20% de su contenido, consultar los datos de la obra y buscar información concreta dentro de la misma.

El principal objetivo del programa de búsqueda de libros de Google es el de crear una gran biblioteca digital, donde la gente pueda descubrir los libros y hacer búsquedas en ellos. Al estar protegidos por derechos de autor, sólo será visible una pequeña parte de los mismos, ya sea a través de la vista de fragmentos o la vista de páginas de muestra.

Nov 20, 2008

SSL

Y en el séptimo y último capítulo del libro, SSL, se estudiarán las características aportadas por este protocolo (situado entre los niveles de aplicación y transporte dentro del modelo de referencia OSI), las cuales permitirán la autenticación de los usuarios de un túnel VPN, así como la posibilidad de dotar de confidencialidad e integridad a los paquetes inyectados a través de él. También serán presentadas las tres fases implícitas en la creación de un túnel SSL: establecimiento de la conexión, autenticación de los participantes y generación de la clave de sesión.

Para completar esta primera parte teórica del capítulo, serán expuestos los rasgos principales del proyecto OpenVPN, basado fundamentalmente en el controlador TUN/TAP y la biblioteca OpenSSL. Todo ello se complementará con la instalación y configuración de esta herramienta, tanto en sistemas operativos de tipo GNU/Linux como Microsoft Windows.

Seguidamente serán desarrollados un conjunto de casos prácticos, basados en distintos tipos de escenarios (punto a punto, LAN a LAN y LAN a road warrior) y a través de diferentes clases de autenticación (clave compartida, validación TLS y grupo de usuarios locales). Debido a que para los ejemplos anteriores se empleará una red totalmente aislada, en donde no se tendrán en cuenta otros muchos elementos fundamentales que sí entrarían en juego en una situación real, como por ejemplo routers, firewalls, redes intermedias, etc, también se realizarán dos configuraciones avanzadas empleando para ello el modelo de LAN a road warrior y LAN a LAN.

Y ya por último y para finalizar el capítulo, se dedicará una sección completa a examinar los distintos mensajes de error que podrían darse cuando se intentara configurar una VPN SSL, con el objetivo de que el lector tenga un apartado a través del cual pueda acceder de forma rápida al error acaecido, y consultar de esta manera las posibles medidas que podría llevar a cabo para solventar el problema.

Nov 12, 2008

L2TP/IPSec

En el sexto capítulo, L2TP/IPSec, se tratará la forma de establecer VPNs combinando los protocolos L2TP e IPSec. L2TP, a diferencia de otros protocolos, es incapaz de autenticar, cifrar y garantizar la integridad de los paquetes que fluyen a través de un túnel. Por esta razón se utiliza junto con IPSec, ya que este último es el que verdaderamente se encarga de dotar al sistema de las carencias anteriormente mencionadas.

Comenzaremos el capítulo exponiendo los rasgos principales de la arquitectura L2TP, así como el formato del paquete empleado y los mensajes de control (establecimiento, mantenimiento y finalización de la conexión) y datos (encapsulación de la información de los usuarios y enviada a través del túnel) intercambiados entre los participantes. A continuación estudiaremos el soporte ofrecido por el protocolo IPSec, de cara a garantizar la seguridad de los mensajes de control y datos transmitidos. Para ello, también será presentado el formato de encapsulado generado por la combinación de estos dos protocolos.

Posteriormente será introducida la aplicación l2tpd, que será utilizada tanto como cliente y servidor en los sistemas operativos pertenecientes a la familia GNU/Linux. El lector podrá aprender la manera en la que se instala y configura en este tipo de plataformas, así como las herramientas que acompañan al propio programa y que facilitarán al usuario las tareas de administración de la VPN. Alternativamente al cliente GNU/Linux, también será mostrado el proceso de configuración de Microsoft Windows XP como usuario remoto L2TP/IPSec.

Una vez planteados los conceptos teóricos de L2TP sobre IPSec, pasaremos a desarrollar un ejemplo ilustrativo configurando una VPN L2TP/IPSec entre un usuario remoto y un servidor. Finalizaremos el capítulo recopilando los errores más frecuentes que pueden darse durante el transcurso de la configuración y establecimiento de una conexión L2TP.

Nov 6, 2008

PPTP

En el quinto capítulo, PPTP, comenzaremos con la exposición de los conceptos teóricos de dicho protocolo. PPTP utiliza el protocolo PPP para establecer una conexión y posteriormente, reutilizarla para levantar el túnel entre los usuarios remotos y el servidor. Por este motivo, serán estudiados los procesos de establecimiento, autenticación y transmisión de datos a través de un enlace PPP. Una vez levantado el canal PPP, veremos la forma en la que PPTP constituye una conexión TCP, con el objetivo de establecer un canal de control utilizado para el intercambio de mensajes de inicio, mantenimiento y finalización de la VPN PPTP. También será analizado el mecanismo de cifrado y encapsulado de la información enviada a través del túnel. Y ya para finalizar esta primera parte del capítulo, serán mostradas las vulnerabilidades más conocidas para este protocolo, ya que debido a su antigüedad, ha quedado bastante obsoleto.

A continuación serán presentadas las herramientas utilizadas en el resto del capítulo, las cuales tomarán los papeles de cliente (PPTP Client y Microsoft Windows XP) y servidor PPTP (Poptop). Para cada uno de estos elementos serán desarrolladas las tareas de instalación y configuración, así como las distintas opciones de cara a la administración de la VPN. Una vez que el lector tenga un conocimiento más exhaustivo acerca de las herramientas disponibles para este tipo de implementación, se expondrá un escenario real basado en un servidor PPTP y distintos usuarios remotos, que accederán de manera confidencial a los recursos ubicados detrás de la oficina. Y para finalizar, serán explicados los mensajes de error más comunes que pueden darse durante el proceso de establecimiento de un túnel VPN PPTP.

Oct 30, 2008

IPSec

En el cuarto capítulo, IPSec, comenzaremos a estudiar la primera de las cuatro VPNs que serán tratadas en el presente libro. En primer lugar, serán expuestos los conceptos genéricos de IPSec, los posibles formatos de cabecera utilizados (AH y ESP), los modos de funcionamiento (transporte y túnel), los métodos de autenticación soportados (clave compartida, firmas digitales RSA, certificados X.509 y XAuth) y las dos fases relativas al proceso de establecimiento de la conexión IPSec.

Seguidamente se presentará la forma de instalar el paquete Openswan - distribución libre de IPSec desarrollada por la compañía Xelerance - en los sistemas operativos pertenecientes a la familia GNU/Linux, se estudiarán los distintos parámetros utilizados en el fichero de configuración y se mostrarán aquellas herramientas implícitas al programa y que facilitarán las tareas al administrador. También se analizará la aplicación TauVPN, utilizada como cliente remoto IPSec en los sistemas operativos de tipo Microsoft Windows.

A continuación serán presentadas una serie de configuraciones permitidas por este tipo de protocolo (punto a punto, LAN a LAN y LAN a road warrior), así como dos escenarios complejos en donde se introducirán distintos elementos que podrán aparecer en una situación real (configuración avanzada de LAN a road warrior y de LAN a LAN). Todos estos esquemas serán tratados en base a distintos tipos de autenticación: clave compartida, firmas digitales RSA, X.509 y XAuth. Y por último, serán descritos los mensajes de error más comunes que podrán aparecer durante el proceso de conexión de una VPN IPSec a través de Openswan.

Oct 21, 2008

Criptografía de clave pública

Ya en el tercer capítulo, Criptografía de clave pública, asentaremos las bases de los sistemas criptográficos simétricos y asimétricos, así como toda la estructura que los rodea. La criptografía será el pilar fundamental sobre el que se sustenten las redes privadas virtuales, ya que gracias a ella, se podrá asegurar y autenticar la información enviada a través de un túnel VPN.

En una primera parte, haremos un breve recorrido a lo largo de la historia de la criptografía, comenzando por la clásica, siguiendo con la medieval y finalizando con la moderna. A continuación presentaremos los sistemas criptográficos simétricos, también conocidos como de clave privada, y los asimétricos, también llamados de clave pública. Estudiaremos las características de los dos tipos de cifrado, así como las propiedades de los principales algoritmos de cifrado simétrico (DES, 3DES, RC5, IDEA y AES), cifrado asimétrico (Diffie-Hellman y RSA) y autenticación (MD5 y SHA-1). Por último, también serán expuestas una serie de herramientas que permitirán desarrollar estos tipos de técnicas de cifrado y autenticación: mcrypt, md5sum y sha1sum.

En una segunda parte, será presentada toda la teoría referida a las Infraestructuras de Clave Pública, empezando por su máximo exponente, el certificado digital, y continuando por los distintos elementos que conforman esta clase de arquitectura: Autoridades de Certificación, Autoridades de Registro y Autoridades de Validación.

Oct 15, 2008

Administración de redes TCP/IP

Debido a que para el seguimiento general del libro son necesarios unos mínimos conocimientos acerca de las redes de comunicación, se va a dedicar el segundo capítulo, Administración de redes TCP/IP, a realizar un breve recorrido por el modelo de referencia TCP/IP, estudiando los detalles de los niveles de acceso a red, internet, transporte y aplicación. A continuación se dedicará una sección entera a los routers, pieza clave dentro de las redes de datos, haciendo especial hincapié en el mecanismo de NAT (Network Address Translation, Traducción de Dirección de Red), la publicación de servicios en Internet y la redirección de puertos.

También será tratada la forma de asociar gratuitamente una dirección IP dinámica a un nombre concreto de dominio, de tal forma que aunque nuestra dirección IP sea modificada periódicamente por el ISP (Internet Service Provider, Proveedor de Servicios de Internet), esto no suponga ningún tipo de problema, ya que las VPNs se podrán establecer utilizando para ello nombres de dominio. Y por último, serán presentadas una serie de herramientas básicas de cara a la administración y monitorización de las redes (iptables, mtr, netcat, netstat y tcpdump). Para ello se mostrará su formato de ejecución, opciones de la línea de órdenes y distintos ejemplos demostrativos.

Oct 9, 2008

Introducción a las VPNs

En el primer capítulo, Introducción a las VPNs, se va a realizar una presentación global de las redes privadas virtuales, mostrando el motivo de su aparición, los requisitos necesarios para establecer este tipo de infraestructura, las clases de VPNs y las ventajas que aporta el empleo de esta clase de tecnología. A continuación se analizarán las propiedades de los sistemas de comunicación (confidencialidad, integridad, autenticidad y no repudio) y los tipos de ataques por los que podrán verse afectados (interceptación, interrupción, modificación y fabricación). Por último, serán expuestos los elementos partícipes en las redes privadas virtuales (subredes locales, redes inseguras, túneles, servidores, routers, usuarios y oficinas remotas) y los tipos de escenarios que serán utilizados en el resto de capítulos a la hora de configurar los distintos esquemas de las VPNs (punto a punto, LAN a LAN y LAN a road warrior).

Oct 4, 2008

Planteamiento del libro

La forma en la que se han estructurado los distintos capítulos del libro es la siguiente: se ha dedicado un capítulo entero a la introducción de los conceptos de las VPNs; otro a presentar de forma genérica, un breve resumen de la arquitectura TCP/IP, pilar fundamental de cara a las redes de comunicación. A continuación se tiene un capítulo destinado completamente a los sistemas criptográficos modernos, ya que ésta será la base principal sobre la que se sustenten las VPNs. Y por último, se ha dedicado un capítulo por cada clase de VPN tratada: IPSec, PPTP, L2TP/IPSec y SSL. En total se han reunido un conjunto de siete capítulos, en los que el planteamiento de exposición será común para todos ellos.

Al principio se presentarán todos aquellos conceptos teóricos que giren en torno al capítulo. A continuación se mostrarán una serie de herramientas informáticas que permitirán poner en práctica dichos conocimientos teóricos, y ya por último y en base a las herramientas propuestas, se desarrollarán un conjunto de ejemplos prácticos que facilitarán al lector el asentamiento de los conocimientos adquiridos. A su vez, también se ha incluido una sección entera dedicada a la exposición y tratamiento de los mensajes de error. Esta parte resultará muy útil a aquellos administradores de redes privadas virtuales, ya que cuando tengan que configurar algún tipo de enlace VPN y éste no funcione por algún tipo de error, podrán confrontar en esta sección el mensaje concreto ofrecido por el log y consultar los posibles motivos que hayan llevado a tal situación, así como la solución disponible.

Sep 30, 2008

Redes Privadas Virtuales, ya a la venta

El arma más poderosa que posee el ser humano es la información, ya que le permite conocer, predecir, manipular, sobrevivir y en definitiva, estar un paso por delante con respecto a quien no dispone de ella. Por esta razón, uno de sus principales objetivos no sólo es llegar a conocer algo, sino tener también la capacidad de salvaguardarlo de forma segura, es decir, que únicamente permanezca accesible para aquellas personas autorizadas.

Una de las posibles soluciones pasa por encriptar la información antes de ser transmitida, empleando para ello Redes Privadas Virtuales. El término de Red Privada Virtual (VPN), en inglés Virtual Private Network, hace referencia a un canal de comunicación privado e implementado sobre una infraestructura de acceso público.

Dos extremos van a acordar en base a un protocolo y a una serie de políticas de seguridad previamente establecidas, las características de un túnel sobre el cual enviar los datos de manera confidencial. Esta información será cifrada antes de ser inyectada por el enlace, de ahí viene el concepto de privada. La condición de virtual se corresponde al hecho de que cuando la VPN esté establecida, se tendrá un contacto aparente pero no real entre los participantes de la misma.

El libro está estructurado en siete capítulos: se ha dedicado un capítulo entero a la introducción de los conceptos fundamentales de las VPNs; otro a presentar de forma genérica, un breve resumen de la arquitectura TCP/IP, pilar fundamental de las redes de comunicación. A continuación se tiene un capítulo destinado completamente a los sistemas criptográficos modernos, ya que ésta será la base principal sobre la que se sustenten las VPNs. Y por último, se ha dedicado un capítulo por cada clase de VPN tratada: IPSec, PPTP, L2TP/IPSec y SSL.

El planteamiento de exposición para los capítulos correspondientes a las VPNs será común para todos los protocolos. En primer lugar, se presentarán una serie de conceptos teóricos; posteriormente se estudiarán un grupo de herramientas que permitirán poner en práctica dichas ideas, y a partir de todo ello, se desarrollarán un conjunto de casos prácticos que facilitarán al lector el asentamiento de los conocimientos adquiridos. A su vez, también se incluirá una sección dedicada íntegramente a la recopilación y tratamiento de los mensajes de error.