jueves, 15 de mayo de 2008

Seguridad Física / de Arranque

Acceso Físico

Este área viene cubierta en profundidad en el libro "Practical Unix and Internet Security", pero daré un breve repaso a lo básico. Alguien apaga el servidor principal de contabilidad, lo vuelve a encender, arranca desde un disquete especial y transfiere el fichero pagas.db a un ftp en el extranjero. A menos que el servidor de contabilidad esté bloqueado, ¿qué le impide a un usuario malintencionado (o al personal de limpieza del edificio, el chico de los recados, etc.) hacer tal cosa? He escuchado historias de terror acerca de personal de limpieza desenchufando los servidores para poder enchufar sus aparatos de limpieza. He visto cómo la gente pulsaba por accidente el pequeño botón de reset y reiniciaban los servidores (no es que lo haya hecho yo alguna vez). Tiene sentido bloquear los servidores en una habitación segura (o incluso en un armario). También es una buena idea situar a los servidores en una superficie elevada, para evitar daños en el caso de inundaciones (ya sea por un agujero en el techo o lo que sea).



La BIOS del ordenador

La BIOS del ordenador es uno de sus componentes de más bajo nivel, controla la forma en que el ordenador arranca y otro tipo de cosas. Las BIOS viejas tiene fama de tener claves universales, asegúrate de que tu bios es reciente y que no contiene semejante puerta trasera. La bios se puede utilizar para bloquear la secuencia de arranque de un equipo, limitándola a C: únicamente, por ejemplo, al primer disco duro, lo cual es una buena idea. Deberías utilizar la bios para eliminar la disquetera (el servidor típico no va a necesitar utilizarla), y puede evitar que los usuarios copien datos de la máquina a disquetes. También puedes eliminar los puertos serie en las máquinas de los usuarios, de tal forma que puedan instalar módems, la mayoría de los ordenadores modernos utilizan teclados y ratones PS/2, así que quedan pocas razones por las que podría necesitarse un puerto serie (además de que se comen IRQ’s). Lo mismo sirve para el puerto paralelo, permitiendo a los usuarios imprimir obviando la red, o dándoles la oportunidad de instalar una grabadora de CDROM o un disco duro externo, lo cual puede disminuir la seguridad en buena medida. Como se puede ver, esto es un añadido a la política del menor privilegio, y puede disminuir considerablemente los riesgos, al igual que facilitar la administración de la red (menos conflictos de IRQs, etc.) Por supuesto que existen programas para obtener las contraseñas de la BIOS de un ordenador, hay uno disponible en http://www.esiea.fr/public_html/Christophe.GRENIER/∞, y está disponible para DOS y Linux.



LILO

Una vez que el ordenador ha decidido arrancar de C:, LILO (o cualquier otro gestor de arranque que utilices) despega. La mayoría de los gestores de arranque permiten algún tipo de flexibilidad en el modo en que se arranca el sistema, especialmente LILO, pero también es una espada de dos filos. Puedes pasarle argumentos a LILO a la hora de arrancar, siendo el argumento más dañino (desde el punto de vista de la seguridad) "imagename single", lo cual arranca Linux en modo de único usuario, y por defecto, la mayoría de las distribuciones te vuelcan a un prompt de root en un shell de comandos sin preguntar contraseñas u otro tipo de mecanismos de seguridad. Hay varias técnicas para minimizar este riesgo.

delay=x

esto controla la cantidad de tiempo (en décimas de segundo) que LILO espera a que el usuario introduzca datos antes de arrancar la opción por defecto. Uno de los requerimientos de la seguridad de nivel C2 es que este intervalo sea puesto a 0 (obviamente, cualquier máquina con arranque dual acaba con cualquier tipo de seguridad). Es una buena idea poner esto a 0, a menos que el sistema arranque dualmente.

prompt

fuerza al usuario a introducir algo, LILO no arrancará el sistema automáticamente. Esto podría ser útil en servidores, como una forma de eliminar los reinicios sin que esté presente una persona, pero lo típico es que si el hacker tiene capacidad para reiniciar la máquina, podría reescribir el MBR con nuevas opciones de arranque. Si le añades una opción de cuenta atrás, el sistema continuará arrancando después de que haya terminado la cuenta atrás.

restricted

pide una contraseña si se pasan opciones de tiempo de arranque (tales como "linux single"). Asegúrate de que utilizas esto en cada imagen (si no, el servidor necesitará una contraseña para arrancar, lo cual está bien si no planeas arrancarlos remotamente nunca).

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

prompt

timeout=100

default=linux

image=/boot/vmlinuz-2.2.5

label=linux

root=/dev/hda1

read-only

restricted

password=aqu1_va_la_c0ntRaSeña

Esto reinicia el sistema utilizando el kernel /boot/vmlinuz-2.2.5, almacenado en el MBR del primer disco IDE del sistema, el prompt impediría hacer reinicios desatendidos, sin embargo está implícito en la imagen, de modo que puede arrancar "linux" sin problemas, pero pediría una contraseña si introduces "linux single", de modo que si quiere ir al modo "linux single", tienes 10 segundos para escribirlo, en cuyo punto te preguntaría por la contraseña ("aqu1_va_la_c0ntRaSeña"). Combina esto con una BIOS configurada para arrancar sólo desde C: y protegida con contraseña y has conseguido un sistema bastante seguro. Una medida menor de seguridad que puedes tomar para asegurar el fichero lilo.conf es dejarlo invariable, utilizando el comando "chattr". Para hacer el fichero invariable, simplemente teclea:

chattr +i /sbin/lilo.conf

y esto evitará cualquier cambio (accidental o de otro tipo) en el fichero lilo.conf. Si quieres modificar el fichero lilo.conf necesitarás quitar el flag de invariable:

chattr -i /sbin/lilo.conf

sólo el root tiene acceso al flag de invariable.

No hay comentarios: