En este artículo vamos a revisar distintos controles para evitar el acceso no autorizado a un equipo mediante el acceso físico al sistema (o a la consola). Como siempre, ninguna opción soluciona el problema, pero todas ellas añaden capas de seguridad adicionales.
Añadir contraseña a la BIOS
La primera configuración a modificar es asignar a la BIOS una contraseña de acceso, de esta forma no se podrá alterar el orden de inicio de dispositivos y arrancar con un CD o USB.
La modificación de la BIOS varía según los distintos fabricantes.
En algunos casos se puede arrancar un menú de "Configuración de inicio", o boot, pulsando una tecla cuando el sistema carga la BIOS, esta opción también se ha de deshabilitar.
La modificación de la BIOS varía según los distintos fabricantes.
En algunos casos se puede arrancar un menú de "Configuración de inicio", o boot, pulsando una tecla cuando el sistema carga la BIOS, esta opción también se ha de deshabilitar.
Añadir contraseña al Grub/Lilo
Los sistemas de gestión de arranque, como Grub y Lilo, permiten modificar en tiempo de ejecución el arranque normal del sistema con parámetros que evitan la parte de autenticación finalpermiten acceso a su consola, así como el arranque de otro sistema operativo instalado en el equipo. Para evitar estas alteraciones se puede definir controles mitigadores.
En el caso de Grub, mediante la ejecución del siguiente comando:
/sbin/grub-md5-cryptQue devuelve un hash md5 y que ha de ser introducido en el archivo: /boot/grub/grub.conf
De la forma: password --md5 <hash anterior>
Finalmente, para evitar el arranque de otro sistema operativo, se ha de modificar el /boot/grub/grub.conf y bajo la línea "title", del sistema operativo a bloquear, hay que añadir una línea: "lock". Esta medida ha de ser implantada junto a la anterior, es decir, se ha de definir una contraseña previamente.
El resultado final debería tener este aspecto:
title DOSEn el caso de Lilo, la primera recomendación es su migración a Grub, ya que este dispone de menos mecanismos de seguridad y sus controles han sido evitados en distintas ocasiones. Como esta recomendación no siempre es aplicable, las medidas a adoptar son similares, se ha de asignar una contraseña en su fichero de configuración: /etc/lilo.conf
lock
password --md5 <hash del comando anterior>
Antes de la primera etiqueta "image", se introduce la línea:
password=<contraseña>
Una vez modificado, se ha de ejecutar "lilo" para almacenar los cambios.
Para que otros usuarios no puedan leer el fichero, este ha de tener permisos 600:
chmod 600 /etc/lilo.conf
Lilo permite especificar contraseñas distintas dependiendo de la imagen, así como la opción de que solo sea solicitada en caso de que se introduzcan parámetros en el inicio. Podeís consultar más información en las referencias.
http://www.gnu.org/software/grub/manual/grub.html#Security
http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/security-guide/s1-wstation-boot-sec.html
Añadir autenticación al modo "single-user"
Para añadir autenticación al modo single-user se modifica el archivo
/etc/inittab
y se añade la siguiente línea:~~:S:wait:/sbin/sulogin
De esta forma, si el sistema es arrancado en este modo, no se presentará la consola de root directamente y solicitará antes su contraseña.
Referencia: http://linux.die.net/man/5/inittab
Deshabilitar las teclas interactivas
Las distribuciones basadas en el fabuloso mundo RedHat, como Fedora, CentOS, RHEL, etc, permiten arrancar interactivamente seleccionando que servicios arrancar y cuales no, con lo que se podría evitar, por ejemplo, el arranque del firewall.
Esta opción se puede eliminar modificando el archivo:
/etc/sysconfig/init
y cambiando el parámetro PROMPT a "no".Referencia:http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/ref-guide/s1-boot-init-shutdown-sysconfig.htmlPROMPT=no
Activar tiempos de espera en la shell
De la shell (bourne again shell) ya hemos hablado en otra entrada, aquí remarcar que existe la posibilidad de que haga cierre de sesión (exit) automáticamente si no hay actividad.
Editando el archivo: /etc/profile añadir una línea:
TMOUT=600Los 600 son segundos de inactividad.
Referencia: http://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html
Activar bloqueo de pantalla
El bloqueo de pantalla se puede activar de distintas maneras que dependiendo del entorno que se utiliza.
Si el sistema no tiene arrancado el servidor X, es necesario instalar la aplicación "vlock". Una vez instalada, su uso es tan fácil como llamarlo mediante el comando:
vlock -aSi el equipo tiene entorno gráfico, se puede configurar el protector de pantalla para que este bloquee el equipo cuando es ejecutado. Esta configuración dependerá del gestor utilizado.
http://docs.kde.org/stable/en/kdebase-workspace/kcontrol/screensaver/index.html
http://live.gnome.org/GnomeScreensaver/FrequentlyAskedQuestions
Desactivar Ctrl+Alt+Del
En ocasiones se puede reiniciar el equipo "accidentalmente", mediante la combinación de teclas Ctrl+Alt+Del que son pulsadas en un terminal en vez de donde se pretendía... El objetivo de esta medida es deshabilitar esta combinación para que no tengan ningún efecto y haya que recurrir al comando 'reboot' o el botón de reinicio.
Para modificar el comportamiento, se edita el fichero: /etc/inittab comentando la línea:
ca::ctrlaltdel:/sbin/shutdown -t3 -r nowPara que los cambios tengan efecto, es necesario reiniciar el servicio init: init q
Desactivar permisos especiales sobre unidades removibles
En algunas distribuciones, como RedHat, el módulo de PAM (pam_console), asigna permisos especiales a los usuarios que acceden localmente al sistema, de esta forma se les permite montar unidades como el CDROM o la disquetera. Puesto que estas unidades son removibles y contienen información desconocida, se aconseja eliminar este permiso. Para ello, se edita el fichero:
/etc/security/console.perms.d/50-default.perms
comentado las líneas en las que se muestre "<floppy>" y "<cdrom>"El Benchmark de CIS deja a disposición este script para realizar la tarea:
cd /etc/security
CONS_PERM_FILE="console.perms"
DEF_FILE="console.perms.d/50-default.perms"
test -f $DEF_FILE && CONS_PERM_FILE="$DEF_FILE"
awk '( $1 == "<console>" ) && ( $3 !~
/sound|fb|kbd|joystick|v4l|mainboard|gpm|scanner|memstick|diskonkey/ ) \
{ $1 = "#<console>" }; { print }' ${CONS_PERM_FILE}-preCIS > $CONS_PERM_FILE
chown root:root $CONS_PERM_FILE
chmod 0600 $CONS_PERM_FILE
echo "diff ${CONS_PERM_FILE}-preCIS $CONS_PERM_FILE"
diff ${CONS_PERM_FILE}-preCIS $CONS_PERM_FILE
Referencia: http://www.redhat.com/docs/manuals/linux/RHL-7.1-Manual/ref-guide/s1-access-privileges-console-access.html
Desactivar permisos especiales sobre aplicaciones
Con la misma problemática que en el punto anterior, se permite a usuarios conectados en consola la ejecución de comandos de sistema como la parada o reinicio del equipo, para evitar esta funcionalidad basta con ejecutar:
rm -f /etc/security/console.apps/poweroff
rm -f /etc/security/console.apps/halt
rm -f /etc/security/console.apps/reboot
Referencia:http://www.redhat.com/docs/manuals/linux/RHL-7.1-Manual/ref-guide/s1-access-privileges-console-access.html
Cifrado
Si alguien accede al servidor, lo abre y extrae el HD, accederá a la información de forma sencilla utilizando este disco como secundario en otro sistema. Para evitar la fuga de información puede cifrarse su contenido mediante dmcrypt. De esta forma, aunque el disco sea robado, la información permanecerá inacesible para el curioso.
Para montar dmcrypt en una partición, de la cual su contenido será eliminado, y resumiendo al máximo los comandos:
Para montar dmcrypt en una partición, de la cual su contenido será eliminado, y resumiendo al máximo los comandos:
cryptsetup luksFormat /dev/sdb1
cryptsetup luksOpen /dev/sdb1 volumen
mkfs.ext3 /dev/mapper/volumen
mount /dev/mapper/volumen
Hay extensa documentación para crear contenedores en vez de particiones, así como de especificar distintas opciones.
Tarjeta de video.
La mejor opción para evitar el acceso a la consola es eliminar el soporte en el kernel para la tarjeta gráfica, configurando el sistema para que únicamente se pueda acceder mediante puerto serie o remotamente.
Esta configuración aunque parece exagerada es la más eficaz. Para ello hay que editar tanto el inittab, como el grub o lilo.
Referencias:
http://www.vanemery.com/Linux/Serial/serial-console.html
http://znark.com/tech/serialconsole.html
3 comments :
Buenas, Quería disculparme, publiqué la entrada antes de tiempo y aún no estaba terminada, con la eliminación de un comentario de uno de nuestros lectores!!
Al que aprovecho para responderle:
@Newlog, la idea es publicar aproximadamente 1 entrada por día, si conseguimos subir esa media mejor, pero en principio es el objetivo. Muchas gracias por tus comentarios y nuevamente, me auto-flagelo.
Hola, muy bueno el post. Yo además añadiría poner un buen candado para que no se pueda sacar la batería de la bios jeje porque sino se puede resetear la bios y que así no te pida la contraseña (al menos yo lo he probado y funcionaba así). Además se puede encriptar el propio sistema de ficheros o incluso borrar el MBR para que el no se sepa donde comienza-termina cada partición.
Te felicito , Me encanto este articulo. Buen día.
Saludos
Publicar un comentario