![]() |
||||||||||||||||||
|
|
||||||||||||||||||
![]() |
||||||||||||||||||
|
öCualquiera con un destornillador puede entrar! |
||||||||||||||||||
|
Seguridad fsica y Seguridad en el arranque en Linux |
||||||||||||||||||
|
por Jay Beale (jay@bastille-linux.org) para SecurityPortal |
||||||||||||||||||
|
28 de agosto de 2000 - Este artculo trata sobre el segundo nivel de debilidad de la seguridad en los ordenadores, la seguridad fsica1. Como veremos, cualquiera con acceso fsico a un ordenador, un poco de ingenuidad y el suficiente tiempo puede llegar a comprometer el sistema. |
||||||||||||||||||
|
A modo de ejemplo, demostrar© el ataque y la defensa en un sistema Red Hat Linux, mostrando como se pueden minimizar o incluso impedir este tipo de ataques. Este artculo es êtil incluso si no se dispone de una m¡quina Linux o responsabilidad t©cnica. Estamos ante un problema que es independiente del sistema operativo y este artculo es lo bastante gen©rico para que sea êtil a usuarios de todos los usuarios de ordenadores. Avisamos, no obstante, de que si nos enfrentamos a un contricante muy determinado sãlo podremos ponerle las cosas m¡s difciles. |
||||||||||||||||||
|
Entrar desde el prompt de LILO |
||||||||||||||||||
|
Si arrancamos un sistema que tenga Red Hat Linux 6.x, podemos entrar en la modalidad de un ênico usuario de la siguiente forma: LILO: linux single Con este mandato, la m¡quina arrancar¡ en la modalidad de ejecuciãn 1, o modalidad de un ênico usuario. Estaremos conectados como superusario, root, ösin necesidad de introducir ninguna contraseáa! No se trata de una puerta trasera -esta modalidad habitualmente se utiliza para el mantenimiento del sistema, lo cual es bueno. El que no sea necesario utilizar una contraseáa para entrar como root es, con toda seguridad, öuna mala idea! Se puede solucionar este problema editando el archivo /etc/inittab y aáadiendo la siguiente lnea a continuaciãn de la lnea "initdefault": ~~:S:wait:/sbin/sulogin Con esto hacemos que sea necesario utilizar una contraseáa para entrar en la modalidad de un ênico usuario al ejecutar el programa sulogin antes de entrar en el shell de root. El usuario, para poder continuar, deber¡ introducir la contraseáa de root. õQu© pasa si tenemos el acceso a la modalidad de un ênico usuario protegido con una contraseáa? Simplemente, podemos continuar entrando como root si escribimos: LILO: linux init=/bin/bash Con esto ejecutamos el kernel de Linux (si se llama linux), pero ejecuta el 'Bourne-Again-Shell' (bash) como el primer proceso (no de kernel) en lugar de init. Como el kernel ejecuta init como usuario root, este shell tiene privilegios de root. öHemos conseguido un shell y somos root! õCãmo podemos detener este ataque y otros similares? Lo que tenemos que hacer es restringir quien tiene acceso al prompt de LILO. |
||||||||||||||||||
|
LILO nos permite hacer esto de forma nativa. En primer lugar, podemos proteger con una contraseáa el prompt de LILO, de forma que el intruso no pueda escribir ninguna opciãn en el mismo sin escribir la contraseáa. Para aáadir la contraseáa al prompt de LILO, hemos de incluir estas lneas al inicio del archivo /etc/lilo.conf: restricted Otra forma de proteger el prompt de LILO estableciendo el tiempo de espera en un milisegundo, de forma que el intruso no disponga de tiempo para aáadir ninguna opciãn2. Para hacerlo, aáadimos la siguiente lnea en /etc/lilo.conf y volvemos a ejecutar el mandato lilo. Comentamos todas las lneas que contengan la palabra 'prompt' poniendo el caracter # al inicio de la lnea y aáadir la lnea: delay=1 cerca del inicio del archivo. Una vez hechos estos cambios, nos aseguramos de ejecutar lilo para que los cambios tengan efecto: ejecutar, desde el prompt de root, lilo. Para informaciãn adicional sobre LILO (Linux (kernel) Loader), man lilo y man lilo.conf. Bien, ya tenemos lilo securizado. õHemos cerrado totalmente las opciones que un intruso puede convertirse en el superusuario? Tristemente no, ya que un atacante con acceso fsico puede... |
||||||||||||||||||
|
Arrancar con diskette/CDROM/otros dispositivos removibles |
||||||||||||||||||
|
Si el ordenador dispone de una unidad de diskette o de CDROM, el intruso puede normalmente arrancar el sistema utilizando un diskette/CDROM arracanble. Siempre llevo conmigo, para aquellas ocasiones en las que alguien se olvida de la contraseáa de root (o una m¡quina que est¡ tan estropeada que no puede arrancar correctamente). Inicio el sistema utilizando el diskette y, a continuaciãn, monto el disco duro de la siguiente forma: # mkdir /jay Como he arrancado el sistema con mi diskette, tengo privilegio de root en la m¡quina. Si la unidad de disco no est¡ encriptada, puedo montarlo (como he hecho), editar el archivo de contraseáas y crear una cuenta con privilegios de superusuario, aáadiendo una lnea como la siguiente: jay::0:0:Administrador de Seguridad:/:/bin/bash Hemos creado una cuenta 'jay', equivalente a la de root, sin ninguna contraseáa. Con ella puedo proceder a reparar el sistema, borrar la cuenta y volver a mis ocupaciones. Por desgracia, el intruso puede utilizar la misma t©cnica para obtener un acceso ilegitimo como root. Una forma inicial de prevenir esto es impedir que la m¡quina pueda arrancar de cualquier dispositivo excepto el disco duro. Esta t©cnica es innecesaria si el ordenador no puede utilizar la unidad de diskette o el CD-ROM para arrancar. Por lo general las opciones de arranque se configuran en la NVRAM, EEPROM, CMOS u otras memorias permanentemente alimentadas por batera. En las m¡quinas basadas en procesador Intel x86, conecte la m¡quina y, mientras se inicia, presione la tecla adecuada (Esc, F1, F2...) para entrar en el menê de configuraciãn del BIOS. Una vez realizadas las modificaciones oportunas, pruebe de arrancar desde diskette. No debera ser posible. Ahora el intruso ya no puede poner un diskette para acceder a la m¡quina ni tampoco puede hacerlo desde el prompt de LILO. õTiene otros mecanismos? Por supuesto, puede... |
||||||||||||||||||
|
Eliminar las restricciones del dispositivo de arranque |
||||||||||||||||||
|
Un intruso con conocimientos despu©s de determinar que no es posible arrancar desde un dispositivo removible, seguir¡ los mismos pasos que hemos hecho nosotros, pero al rev©s, restaurando la lista de dispositivos que permiten arrancar la m¡quina. Podemos combatir esto, pero debemos contemplar dos efectos primarios:
Comentaremos esto m¡s adelante. Simplemente no deseaba desmoralizar al lector a medio artculo. Es decir, el intruso puede deshacer las restricciones de arranque que hemos establecido. En la mayora de los sistemas, incluyendo los equipos basados en procesadores Intel, podemos establecer una contraseáa en la NVRAM, EEPROM, CMOS (o lo que se utilice para almacener la configuraciãn del BIOS). Esta es una opciãn muy f¡cil de encontrar y, tambi©n, muy f¡cil de olvidar. Establezca una contraseáa en el BIOS del ordenador. Esto, combinado con las opciones anteriores, detendr¡n un gran nêmero de intrusos. No obstante, algunos ser¡n capaces de... |
||||||||||||||||||
|
Eliminar la contraseáa del BIOS |
||||||||||||||||||
|
El intruso tiene realmente inter©s. Y dispone de tiempo. Si dispone del suficiente acceso al sistema, puede utilizar una herramienta que funciona en Linux para descubrir la contraseáa del BIOS. Normalmente, pero, no puede hacer esto. No obstante, al disponer del acceso fsico al sistema, puede tomar la soluciãn m¡s simple. En las m¡quinas basadas en procesadores Intel, la configuraciãn del BIOS se mantine gracias a una pequeáa batera, habitualmente similar a las utilizadas por los relojes. Si desconectamos esta batera unos segundos, se borra el contenido de la RAM y con ella la contraseáa. En esta situaciãn, el BIOS de algunos equipos queda 'protegido' por una contraseáa fijada por el fabricante. Estas contraseáas est¡n documentadas y existen multiples tablas de referencia que el intruso puede consultar (o incluso, memorizar). õQu© podemos hacer aqu? Una opciãn es poner un candado en la caja, para que no se pueda abrir f¡cilmente. Con tiempo y herramientas, cualquier candado puede ser forzado o roto. O m¡s f¡cil, el intruso puede simplemente romper la caja. No obstante, la presencia de un candado y la utilizaciãn de una caja muy fuerte pueden hacerle desistir de su intento. Adem¡s podemos quitar la unidad de diskette, el CD-ROM y los conectores que se puedan utilizar para montar otros dispositivos (disco ZIP, puerto paralelo). Y, õa continuaciãn qu©? |
||||||||||||||||||
|
Montar el disco en otra m¡quina |
||||||||||||||||||
|
Recuerdas el truco sobre como acceder al disco cuando arrancamos con un diskette. El mismo truco puede utilizarse desde otra m¡quina. Si bien esto puede parecer poco pr¡ctico, hace unas semanas vi en DefCon, un ordenador del tamaáo de una baraja de cartas que puede ser ideal para esto. Con un disco duro de 340 MB, el sistema operativo Red Hat y un puerto paralelo, este ordenador ultraportable se convierte en un equipo ideal para este propãsito. La simple acciãn de conectar el disco duro en este equipo, o en cualquier otro, nos permite un control total del mismo, con un acceso inst¡ntaneo con privilegio de casi superusuario. Todo lo que necesitamos, en la mayora de los casos, es un destornillador para abrir la m¡quina y extraer el disco duro. La existencia de un candado puede complicar la extracciãn, aunque en la mayora de los casos lo ênico que har¡ ser¡ hacer que el intruso tarde un poco m¡s. Vamos a suponer que todava estamos tratando detener a este intruso. Se trata de alguien realmente empeáado. El acceso fsico hace que la seguridad sea realmente muy d©bil. õNo sera mejor mirar de eliminar el acceso fsico? Colocamos la m¡quina en una sala bajo llave, con una puerta de acero dotada de una bisagra interior y con diversos candados antirobo. Sãlo el monitor, el teclado y el ratãn son accesibles. Esto nos da total seguridad, õo no? Hemos de revisar tambi©n las paredes. La mayora de las salas de ordenadores tienen paredes que no van m¡s all¡ del techo. Exactamente õde qu© hablamos? Si nos fijamos en las losetas del techo alrededor de la habitaciãn, es posible que levantando una veamos que hay mucho espacio sobre la pared de la sala 'segura' de ordenadores. Una vez, la sala de ordenadores de mi despacho quedã cerrada por dentro. Para poder abrirla me indicaron que utilizara este espacio entre el falso techo y el techo para poder acceder a la sala y abrirla desde dentro. öLa mayora de instalaciones no tienen presente esto cuando hacen su auditora de seguridad fsica! Si, si.. de acuerdo. Estamos exagerando un poco. En realidad depende del nivel de 'seguridad' que realmente necesitemos para nuestros equipos. Como espero haber demostrado, es realmente muy difcil detener a un intruso que dispone de tiempo y un acceso fsico sin control a los ordenadores. Por lo tanto, õqu© podemos hacer? |
||||||||||||||||||
|
Eliminar la oportunidad y asustar al intruso |
||||||||||||||||||
|
Podemos detener la mayora de intrusos simplemente no ofreci©ndoles la posibilidad de acceder de forma incontrolada a los ordenadores ni disponer del tiempo suficiente para efectuar el ataque. Si seguimos los pasos de nuestro intruso, vemos que todos sus pasos requieren un cierto tiempo. Necesita reiniciar la m¡quina en varias ocasiones. Todo esto requiere tiempo. Si aseguramos el cargador de Linux (lilo) suficientemente, establecemos las restricciones de dispositivos que pueden arrancar y aseguramos las opciones para cambiarlas, el intruso se ver¡ en la necesidad de abrir la m¡quina, posiblmente forzando los candados. Esto de por si ya requiere su tiempo, pero adem¡s es posible que no pase desapercibido por cualquiera que pase por all. Si el acceso fsico es posible, al encontrarse la m¡quina en un laboratorio, podemos colocar m¡quinas que registren cualquier actividad sospechosa. Si el acceso fsico es accidental/no intencionado, podemos cerrar las puertas, disparar las alarmas e, incluso, enviar guardias. En cualquier caso, ahora que conocemos los peligros, podemos meditar sobre este problema con m¡s calma y escoger las medidas que necesita nuestra organizaciãn. |
||||||||||||||||||
|
õNo es, en realidad, una batalla perdida? |
||||||||||||||||||
|
Contra un intruso realmente intencionado, con suficiente tiempo y sin ninguna supervisiãn, tenemos pocas posibilidades. Bien, no del todo. La mayora de intrusos no piensan en todos estos m©todos, o no tienen el tiempo/energa para aplicarlos. Es m¡s, estoy convencido que la mayor parte de intrusos no seguir¡ una metãdica que requiere tanto tiempo en aquellas situaciones en que pueden ser 'pillados con las manos en la masa'. Por lo tanto, como paso inicial para deshacernos de todos los intrusos, menos de los m¡s capacitados, procederemos con los pasos que hemos indicado. Fortalecer el cargador del sistema operativo, el BIOS de la m¡quina y el hardware propiamente dicho. Los pocos intrusos que quedan necesitaran de mucho tiempo para poder acceder a las m¡quinas, con el riesgo de ser descubiertos. En realidad, el objetivo final de nuestro trabajo es intimidar al intruso. Si siguieramos todos los pasos necesarios para hacer que el ordenador sea pr¡cticamente inviolable, tambi©n lo convertiriamos en pr¡cticamente inutilizable por la mayora. Por lo tanto, hemos de llegar a un compromiso. Eliminamos todos los pasos f¡ciles de entrar, como las debilidades que hemos demostrado, el LILO: linux single o el acceso desde diskette. Intentaremos ir tantos pasos por delante como nos sea posible, sin perturbar el uso normal. Si podemos hacer que el acceso como root nuestras m¡quinas sea difcil, la mayora de los intrusos buscar¡n a otra vctima. El resto de intrusos deberemos tratar de detectarlos --o intimidarlos-- utilizando otros m©todos, como sistemas de seguridad. Como colofãn, recuerde siempre que el intruso es un ser humano, con un gran potencial de creatividad y brillantez. öNo lo subestime! öBuena suerte! |
||||||||||||||||||
|
Notas |
||||||||||||||||||
|
||||||||||||||||||
|
Jay Beale es el principal desarrollador del proyecto Bastille Linux. Es un autor de diversos artculos sobre seguridad en Unix/Linux as como del libro de prãxima apariciãn 'Securing Linux. The Bastille Way', que publicar¡ Addison Wesley. Jay trabaja como administrador de seguridad de sistemas Solaris y Linux. Para m¡s detalles de sus artculos, conferencias y links de inter©s, http://www.bastille-linux.org/jay. |
||||||||||||||||||
|
[P¡gina Inicial] [Soluciones] [Socios] [Informes] [Ofertas de Empleo] [Contacto] |
| © Copyright 2000-2001, Selesta Seguridad. Email: info@selseg.com Declaraciãn de privacidad. - Aviso de responsabilidad. |