Tabla de Contenidos

Seguridad Linux

Qué hace a Linux seguro

Linux es un sistema multiusuario, puede ser usado por diferentes personas y evita que uno pueda acceder a los recursos personales de otro usuario.

root es el superusuario, tienen todos los poderes y permisos. Esta cuenta debe ser segura ya que puede hacer de todo.

Ventajas de un sistema multiusuario:

¿Está Linux a salvo de ataques? Si lo comparamos con Windows, desde el punto de vista de un atacante:

Linux es de código abierto:

Gestión de software centralizada:

Buenas prácticas

Minimizar el software instalado y servicios

Ejecutar servicios en sistema diferentes

No tener en una misma máquina diferentes servicios como puede ser un servidor web, una base de datos, un sistema de compartición de ficheros… Si por un fallo de uno de los servicios, un atacante logra acceso, puede comprometer el resto.

Cifrar la transmisión de información

Para evitar ataques de Man-in-the-middle.

Evitar compartir cuentas

Evitar logins automáticos de root

Mantenimiento de cuentas

Autenticación multifactor

Principio de la menor autoridad

Monitorizar la actividad del sistema

Usar un cortafuegos

Cifrar información

Seguridad física

Single User Mode

Para arrancar un sistema Linux en Single User Mode basta con añadir s (S o también 1) a la línea del GRUB que indica dónde está el kernel:

linux /vmlinuz-3.19.0-15-generic root=/dev/mapper/ubuntu-vg-root ro s

Si el sistema utiliza systemd, añadimos systemd.unit=rescue.target o la abreviación rescue:

linux /vmlinuz-3.19.0-15-generic root=/dev/mapper/ubuntu-vg-root ro rescue

Esto nos permitirá arrancar el sistema con el usuario root. Dependiendo del sistema, no nos preguntará por la contraseña.

GRUB

Si tenemos acceso al gestor de arranque GRUB, podemos pasar la opción init=/bin/bash en la línea del kernel para que arranque el intérprete bash como root.

Para evitarlo, debemos establecer una contraseña para poder modificar el GRUB. En el fichero /etc/grub.d/40-custom:

# Usuario que podrá modificar GRUB
set superusers="root"
password root topsecret

Si queremos cifrar la contraseña, podemos usar el comando grub2-mkpasswd-pbkdf2.

Para aplicar los cambios en la configuración del GRUB:

update-grub

Deshabilitar reinicio desde teclado

Para que no tenga efecto la combinación Ctrl + Alt + Supr:

# En SystemD
systemctl mask ctrl-alt-del.target
systemctl daemon-reload

Cifrado del disco

Si hacemos el cifrado durante la instalación de un sistema, será más sencillo.

Este cifrado del disco permite que cada vez que arranquemos el sistema, se pida la clave de cifrado para poder montar el disco y continuar con el arranque del sistema operativo.

Cifrar un dispositivo elimina toda la información que pudiera haber en él.

Si queremos asegurarnos de que no hay ninguna información en el dispositivo antes de cifrarlo, podemos usar shred:

sudo shred -v -n 1 /dev/sdX

Lo que hace este comando es escribir datos aleatorios en el dispositivo.

Usamos el programa cryptsetup:

# Inicializamos el dispositivo:
sudo cryptsetup luksFormat /dev/sdX

# Abrimos el dispositivo en /dev/mapper/opt
sudo cryptsetup luksOpen /dev/sdX opt

A partir de entonces podremos utilizar este dispositivo de bloques como cualquier otro:

# Instalar sistema de ficheros
mkfs -t ext4 /dev/mapper/opt

Lo montamos desde /etc/fstab:

/dev/mapper/opt /opt ext4 defaults 0 0

Para que se pueda desifrar y montar el dispositivo cifrado al arrancar el sistema, hay que crear el fichero /etc/crypttab y añadir:

opt /dev/sdX none lunks

Si no tenemos acceso a los dispositivos de bloques, podemos hacer que un fichero se comporte como un dispositivo de bloques (usará /dev/loop0):

# Creamos un directorio
sudo mkdir /datos

# Creamos un fichero en ese directorio con el tamaño de 100M
sudo fallocate -l 100M /datos/opt

# Ciframos el fichero
sudo crytpsetup luksFormat /datos/opt

# Lo abrimos
sudo cryptsetup luksOpen /datos/opt opt

# Creamos un sistema de ficheros
sudo mkfs -t ext4 /dev/mapper/opt 

# Montamos
sudo mount /dev/mapper/opt /opt

Convertir un dispositivo en LUKS

En realidad no hay una conversión como tal, ya que perderemos la información que contenga el dispositivo.