13.07.2015 Views

SEGURIDAD EN UNIX Y REDES

SEGURIDAD EN UNIX Y REDES

SEGURIDAD EN UNIX Y REDES

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

144CAPÍTULO 9. <strong>SEGURIDAD</strong> DEL NÚCLEOla máquina se apaga para establecerse a unos valores por defecto al arrancar de nuevo el sistemaoperativo; seguramente nos interesará mantener los cambios realizados, por lo que en alguno delos ficheros de inicialización de la máquina hemos de incluir las órdenes que acabamos de explicar,obviamente después de haber montado el sistema de ficheros /proc/.9.2.2 DispositivosLinux (no así otros Unices) proporciona dos dispositivos virtuales denominados /dev/random y/dev/urandom que pueden utilizarse para generar números pseudoaleatorios, necesarios para aplicacionescriptográficas. El primero de estos ficheros, /dev/random, utiliza lo que su autor denomina‘ruido ambiental’ (por ejemplo, temporizadores de IRQs, accesos a disco o tiempos entre pulsacionesde teclas) para crear una fuente de entropía aceptable y – muy importante – que apenas introducesobrecarga en el sistema. El segundo archivo, /dev/urandom, crea un resumen de la entropía de/dev/random utilizando la función hash SHA (Secure Hash Algorithm), diseñada por el NIST yla NSA para su Digital Signature Standard ([oST84]). Por tanto, tenemos una fuente de entropíaaceptable, /dev/urandom, y otra incluso mejor, pero de capacidad limitada, /dev/random. Paradetalles concretos sobre su funcionamiento se puede consultar el fichero que las implementa dentrodel núcleo de Linux, drivers/char/random.c.Como en el propio código se explica, cuando un sistema operativo arranca ejecuta una serie deacciones que pueden ser predecidas con mucha facilidad por un potencial atacante (especialmentesi en el arranque no interactua ninguna persona, como es el caso habitual en Unix). Para mantenerel nivel de entropía en el sistema se puede almacenar el desorden que existía en la parada de lamáquina para restaurarlo en el arranque; esto se consigue modificando los scripts de inicializacióndel sistema. En el fichero apropiado que se ejecute al arrancar (por ejemplo, /etc/rc.d/rc.M)debemos añadir las siguientes líneas:echo "Initializing random number generator..."random_seed=/var/run/random-seed# Carry a random seed from start-up to start-up# Load and then save 512 bytes, which is the size of the entropy poolif [ -f $random_seed ]; thencat $random_seed >/dev/urandomfidd if=/dev/urandom of=$random_seed count=1chmod 600 $random_seedMientras que en un fichero que se ejecute al parar el sistema añadiremos lo siguiente:# Carry a random seed from shut-down to start-up# Save 512 bytes, which is the size of the entropy poolecho "Saving random seed..."random_seed=/var/run/random-seeddd if=/dev/urandom of=$random_seed count=1chmod 600 $random_seedCon estas pequeñas modificaciones de los archivos de arranque y parada del sistema conseguimosmantener un nivel de entropía aceptable durante todo el tiempo que el sistema permanezca encendido.Si de todas formas no consideramos suficiente la entropía proporcionada por estos dispositivosde Linux, podemos conseguir otra excelente fuente de desorden en el mismo sistema operativo apartir de una simple tarjeta de sonido y unas modificaciones en el núcleo ([Men98]), o utilizar algunode los generadores – algo más complejos – citados en [Sch94].9.2.3 Algunas mejoras de la seguridadEn esta sección vamos a comentar algunos aspectos de modificaciones del núcleo que se distribuyenlibremente en forma de parches, y que contribuyen a aumentar la seguridad de un sistema Linux;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!