Es un hecho que muchos usuarios han prescindido de los ordenadores de sobremesa y utilizan portátiles como su herramienta principal para el trabajo, los estudios y otras actividades. El mundo se ha vuelto más móvil.
Sin embargo, donde hay dispositivos móviles, siempre existe el riesgo de perderlos, olvidarlos o, peor aún, de que sean robados. En este artículo, explicaré paso a paso cómo mejorar la seguridad para un portátil Linux, resguardarlo de miradas no autorizadas y, en caso de robo, localizar el dispositivo sustraído.
Para asegurar un portátil Linux, es fundamental combinar varias capas de protección. Esto incluye establecer contraseñas en la BIOS/UEFI para el arranque, utilizar cifrado de disco completo (LUKS), configurar autenticación de dos factores con llaves USB o un smartphone, e instalar un software de seguimiento antirrobo como Prey para su localización.
Acceso físico al portátil
Comencemos, como es habitual, por los fundamentos: la contraseña de inicio de sesión. A primera vista, esto parece simple: cualquier entorno de escritorio cuenta con una función de bloqueo integrada que solicita una contraseña tras unos minutos de inactividad. Pero, ¿qué ocurre si no utilizas un entorno gráfico y has optado por un gestor de ventanas ligero como Fluxbox o i3?
Existe una gran variedad de bloqueadores de pantalla, pero mi recomendación es optar por slock para bloquear la pantalla en Linux desde la terminal.
Se trata de un bloqueador extremadamente simple, carente de elementos gráficos de control, ventanas de entrada o selectores de sesión. Su única función es poner la pantalla en negro. Al introducir la contraseña, la pantalla se vuelve azul, y si la contraseña es incorrecta, se vuelve roja al presionar Enter.
Ante esta situación, la mayoría de los “intrusos” quedarán perplejos y asumirán que el sistema se ha colgado o ha sufrido un fallo. Puedes encontrar más detalles en la página oficial de slock. Para aprender más sobre este tema, puedes consultar nuestra guía sobre cómo bloquear la pantalla en Linux desde la terminal.
Nota actualizada: slock funciona correctamente en sesiones X11. No es compatible con Wayland, que es el protocolo gráfico por defecto en entornos modernos como GNOME y KDE Plasma. Si utilizas Wayland, te recomiendo considerar alternativas como swaylock (para sway o hyprland), gtklock o betterlockscreen con soporte Wayland. Si quieres saber más, tengo un artículo que explica qué es Wayland en detalle.
Puedes ejecutar slock directamente (lo que bloqueará la pantalla de inmediato) o de forma automática después de que el portátil se reactive. Para el segundo caso, necesitarás una unidad de systemd con el siguiente contenido:
[Unit]
Description=Lock X session using slock for user %i
Before=sleep.target
[Service]
User=%i
Environment=DISPLAY=:0
ExecStartPre=/usr/bin/xset dpms force suspend
ExecStart=/usr/bin/slock
[Install]
WantedBy=sleep.targetGuarda este contenido en el archivo /etc/systemd/system/slock@.service y activa la unidad (reemplaza USER por tu nombre de usuario en el sistema):
$ sudo systemctl enable slock@USER.serviceOtra recomendación sumamente simple, pero no por ello menos valiosa, es establecer una contraseña en la BIOS. Esto es un primer paso para proteger el arranque de Linux con una contraseña (BIOS/UEFI) y te protegerá de quienes intenten arrancar desde una unidad USB para acceder a tu disco desde otro sistema operativo.
Muchos portátiles también permiten configurar una contraseña para el arranque, el reinicio y el acceso al disco duro. Esta última opera a nivel del controlador ATA y resulta efectiva si alguien consigue arrancar su propio sistema operativo, pero será inútil si se extrae físicamente el disco duro.
En hardware moderno con unidades NVMe, estas opciones ya no siempre existen como “contraseña ATA” clásica y suelen gestionarse a nivel de firmware UEFI; conviene revisar las opciones concretas de seguridad de almacenamiento disponibles en cada equipo.
Protección de Datos con Cifrado de Disco en Linux
Casi todas las distribuciones populares ofrecen la opción de cifrar el disco duro en Linux durante la instalación del sistema operativo. Este tipo de cifrado hace que la extracción de datos del disco sea una tarea prácticamente imposible (con una contraseña suficientemente robusta), pero tiene una desventaja: una potencial caída en el rendimiento de las operaciones de entrada/salida.
En hardware moderno con instrucciones de aceleración de cifrado (AES-NI), este impacto es mucho menor y a menudo imperceptible, pero en equipos más antiguos podía ser considerable.
Es posible minimizar esta pérdida de rendimiento cifrando únicamente la partición /home (donde se almacenan tus datos) y dejando el sistema sin cifrar. De hecho, muchas distribuciones ofrecen esta opción por defecto, pero tampoco es ideal: el portátil consumirá recursos adicionales simplemente al reproducir una película guardada en el disco, y si te dedicas al desarrollo de software o compilas programas desde el código fuente con frecuencia, prepárate para una ralentización considerable.
En hardware actual (aproximadamente 2020 en adelante), este impacto suele ser prácticamente imperceptible con LUKS2 y AES-NI bien configurados; el efecto descrito es más notable en equipos antiguos.
No obstante, existe una solución para esta situación. Sistemas como gocryptfs o CryFS utilizan el mecanismo FUSE para crear un sistema de archivos virtual cifrado sobre el sistema de archivos principal. Con ellos, puedes cifrar cualquier directorio de forma individual, sin necesidad de asignar un contenedor de tamaño predefinido y con la posibilidad de sincronizar dicho directorio con servicios en la nube como Dropbox.
Ambos sistemas de archivos utilizan algoritmos seguros como AES-256-GCM o XChaCha20-Poly1305, pero difieren en su implementación. gocryptfs cifra cada archivo por separado (similar a EncFS en concepto), por lo que solo oculta el contenido y los nombres de los archivos, pero no impide obtener información sobre la estructura de directorios y el tamaño de los archivos.
En otras palabras: si alguien necesitara demostrar que almacenas contenido ilegal descargado de la darknet, podría hacerlo. Sin embargo, gocryptfs ha sido auditado independientemente en 2017 y se mantiene activamente, con buen rendimiento y modo reverse útil para backups.
CryFS protege contra este tipo de riesgos. Un directorio cifrado con esta herramienta se presenta como un árbol de archivos plano con múltiples directorios y archivos de tamaño idéntico. Esta breve guía de CryFS para cifrar carpetas muestra un enfoque diferente.
CryFS nunca ha sido sometido a una auditoría independiente completa (solo análisis académicos), y aunque la versión 1.0 es estable, la 2.0 es experimental y no se recomienda para datos importantes por riesgo de pérdida de datos.
Si no confías en CryFS por su falta de auditoría, puedes recurrir a gocryptfs (auditado y mantenido) o VeraCrypt u otra herramienta de cifrado “clásica” que utilice un contenedor de tamaño predefinido, el cual no puede subirse a Dropbox sin sincronizar todos los datos cifrados con cada mínimo cambio.
EncFS ya no se considera seguro hoy día: ha sido desaconsejado durante años debido a vulnerabilidades no resueltas de auditorías antiguas (2014), el proyecto upstream está inactivo y muchas distribuciones lo marcan como deprecated o lo eliminan de repositorios (por ejemplo, removido de Debian testing en 2025). No lo uses para nuevos setups; migra si lo tienes.
Utilizar gocryptfs es extremadamente sencillo. Basta con instalar el paquete correspondiente (disponible en la mayoría de repositorios y AUR) y luego ejecutar la operación de montaje:
$ gocryptfs -init ~/Dropbox/box
$ gocryptfs ~/Dropbox/box ~/cryptoEn este ejemplo, estamos montando el directorio cifrado ~/Dropbox/box como ~/crypto. Todos los archivos que se escriban en este último aparecerán en el primero en formato cifrado.
En este directorio puedes almacenar todos tus datos sensibles: escaneos de pasaporte, claves GPG, directorios de trabajo de monederos de criptomonedas, bases de datos de contraseñas, etc. Deberás montarlo manualmente después de cada arranque y, tras su uso, es recomendable desmontarlo inmediatamente:
$ fusermount -u ~/cryptoAutenticación Avanzada: USB y Smartphone como Llave
El disco está protegido y la contraseña establecida, pero ¿es esto conveniente? Introducir una contraseña durante el arranque, algo que no ocurre con tanta frecuencia en los portátiles modernos, no es difícil; tampoco lo es introducir la contraseña para descifrar los datos. Sin embargo, tener que escribirla cada vez que se desbloquea la pantalla no es práctico. Además, alguien podría observar tu contraseña, por ejemplo, en un avión. Se necesita un método alternativo o, mejor aún, una combinación de métodos.
Usar una USB como Llave de Acceso en Linux
Seguramente has oído hablar de un dispositivo llamado YubiKey. Es una llave USB que funciona como segundo factor de autenticación en sitios web y en el sistema operativo. Su coste es de unos 50 dólares, pero en realidad, puedes usar una USB como llave de acceso en Linux en su lugar.
El módulo pam_usb permite configurar la autenticación mediante cualquier memoria USB. Su principio de funcionamiento es el siguiente: la utilidad escribe 2 KB de datos aleatorios en la memoria USB, que actúan como una clave única. Durante la autenticación, pam_usb leerá este bloque de datos de la memoria, lo comparará con la copia guardada en el ordenador y te permitirá acceder al sistema si coinciden.
Para que esto funcione, debes seguir estos pasos. El repositorio original está abandonado desde hace años; utiliza el fork activo y mantenido (mcdope/pam_usb, con actualizaciones hasta 2025 y paquetes precompilados).
En Arch Linux, pam_usb está disponible en el AUR. Puedes instalarlo con un asistente moderno como yay:
$ yay -S pam_usbAñade los datos aleatorios a la memoria USB (aquí, AuthKey es un nombre arbitrario):
$ sudo pamusb-conf --add-device AuthKeyEspecifica el usuario que se autenticará con la memoria USB:
$ sudo pamusb-conf --add-user tu_usuarioVerifica que todo esté configurado correctamente:
$ sudo pamusb-check tu_usuarioFinalmente, debes configurar los módulos PAM de autenticación añadiendo pam_usb a la lista. Para ello, abre el archivo /etc/pam.d/common-auth (o /etc/pam.d/system-auth en Arch Linux y Fedora) y añade la siguiente línea al principio:
auth sufficient pam_usb.soEn este caso, la memoria USB será suficiente para la autenticación. Si deseas una autenticación de dos factores para iniciar sesión en Linux, que requiera tanto la memoria USB como la contraseña, cambia la línea por esta:
auth required pam_usb.soTen en cuenta que el autor de pam_usb no presenta su desarrollo como una solución infalible para proteger secretos de estado. Es posible realizar un volcado de la memoria USB, grabarlo en otra unidad y utilizarla para la autenticación.
Autenticación de Dos Factores con tu Smartphone
En lugar de una memoria USB (o como complemento), puedes utilizar un smartphone. Seguramente has usado la aplicación Google Authenticator al menos una vez. Esta implementa el algoritmo TOTP (Time-based One-Time Password, RFC 6238), que permite la autenticación en una aplicación mediante una contraseña de un solo uso generada por otra.
Aunque Google permite usar Authenticator para sus propios servicios, la aplicación no está vinculada a sus servidores (la clave necesaria para generar las contraseñas se transfiere directamente mediante un código QR, y la aplicación funciona de forma independiente), lo que nos permite utilizarla para la autenticación en el sistema sin temor a fugas de contraseñas.
Nota actualizada: este método protege el login (consola, gestor gráfico, SSH, sudo), pero no el desbloqueo del disco cifrado en el arranque (LUKS). Para ese escenario se requieren soluciones adicionales como TPM y systemd-cryptenroll.
Para ello, es necesario instalar el módulo PAM pam-google-authenticator. En la mayoría de distribuciones modernas ya está empaquetado y no requiere compilación manual.
En Arch Linux:
$ sudo pacman -S libpam-google-authenticator(o, si prefieres la versión más reciente):
$ yay -S google-authenticator-libpam-gitA continuación, ejecuta la aplicación:
$ google-authenticatorEsta generará un código QR que deberás escanear con la aplicación Google Authenticator en tu smartphone y te hará varias preguntas. Responde negativamente a todas excepto a la cuarta (sobre aumentar la ventana de tiempo para la sincronización).
Luego, añade la siguiente línea al archivo /etc/pam.d/common-auth:
auth required pam_google_authenticator.so no_increment_hotpLas contraseñas de un solo uso pueden combinarse sin problemas con el requisito de la memoria USB en diferentes configuraciones.
Sistema Antirrobo: Cómo Encontrar un Portátil Linux Robado
Para encontrar un portátil Linux robado, necesitas un software de seguimiento activo como Prey, que funciona de forma similar a ‘Buscar mi iPhone’. Con contraseñas, códigos de un solo uso y cifrado, solo podemos proteger la información del portátil. Para proteger el dispositivo en sí, se requieren medios completamente diferentes.
Una de las mejores soluciones en este ámbito es Prey. De hecho, he escrito una guía más detallada sobre cómo instalar y configurar Prey en Linux que puedes consultar para profundizar en el tema. Está disponible para teléfonos y ordenadores con Windows, macOS y Linux. El cliente actual para Linux está basado en Node.js y se mantiene activo con actualizaciones regulares.
Puedes descargar la versión más reciente desde el repositorio oficial de GitHub o instalarlo desde el AUR en Arch Linux:
$ yay -S prey-node-clientTen en cuenta que se instalará en el sistema con el nombre prey_project.
Una vez finalizada la instalación, ejecuta el configurador:
$ sudo prey config account setupTe solicitará tu dirección de correo electrónico y una contraseña, y con eso la configuración estará completa. Para verificar que todo funciona, accede al panel de control web.
La versión gratuita de Prey permite conocer la ubicación del dispositivo, información sobre el sistema operativo y el hardware, activar una alarma, bloquear el dispositivo y tomar fotos con la cámara o capturas de pantalla. Para poder eliminar datos de forma remota y descargar archivos, deberás pagar una suscripción mensual.
También es importante considerar que, a diferencia del seguimiento de teléfonos (que están permanentemente conectados a la red móvil), un portátil suele estar desconectado y solo se conecta a redes Wi-Fi con el permiso del usuario. Las probabilidades de recuperación son, por tanto, menores.
Capturar una Foto del Intruso al Fallar el Login
Supongamos que dejas el portátil en tu habitación, una persona desconocida entra, reactiva el dispositivo e intenta iniciar sesión. Es el momento perfecto para fotografiarlo y así tomar una foto con la webcam si fallan el login en Linux.
Primero, escribamos un script que tome una foto con la cámara del portátil:
#!/bin/bash
# Captura una foto única con timestamp
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
PHOTO="$HOME/webcam-$TIMESTAMP.png"
ffmpeg -y -f video4linux2 -i /dev/video0 -frames:v 1 -s 640x480 "$PHOTO" || echo "Error capturando webcam" >&2Nombra el archivo take_photo, colócalo en el directorio ~/bin y dale permisos de ejecución:
$ chmod +x ~/bin/take_photoAhora necesitamos un script que lo ejecute tras reactivar el sistema:
#!/bin/sh
if [ "$1" = post ] && [ "$2" = suspend ]; then
sudo -u "$USER" /home/"$USER"/bin/take_photo
fiGuarda el archivo como 00take_photo en /lib/systemd/system-sleep/ y dale permisos:
$ chmod +x /lib/systemd/system-sleep/00take_photoAhora, cada vez que el portátil se reactive, se tomará una fotografía (guardada con fecha/hora en ~/ para no perderla).
Nota actualizada: telegram-cli está obsoleto y ya no funciona con la API actual de Telegram. Como alternativa funcional, se puede usar un bot de Telegram mediante la API HTTP.
Ejemplo con curl:
#!/bin/bash
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
PHOTO="$HOME/webcam-$TIMESTAMP.png"
ffmpeg -y -t 1 -f video4linux2 -s 640x480 -r 30 -i /dev/video0 -f image2 "$PHOTO"
sleep 60
BOT_TOKEN="123456789:AAF..." # tu token real
CHAT_ID="987654321" # NÚMERO PURO, sin @ ni nada
curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendPhoto" \
-F chat_id="$CHAT_ID" \
-F photo="@$PHOTO" \
-F caption="Intruso detectado - $(date '+%Y-%m-%d %H:%M:%S')"
# Opcional: borrar foto después
# rm "$PHOTO"El token del bot queda almacenado en texto plano dentro del script; no es ideal si el portátil cae en manos de terceros, pero es suficiente para este escenario. Para más posibilidades de uso, puedes consultar mi guía para crear scripts de copias de seguridad con Telegram.
Resumen: Capas de Seguridad para tu Portátil Linux
Proteger un portátil con Linux no es tan sencillo como proteger los smartphones, que utilizan cifrado de disco completo acelerado por hardware, protección biométrica y capacidad de seguimiento permanente. Sin embargo, aplicando las técnicas descritas en este artículo, al menos podrás afirmar que has hecho todo lo que estaba a tu alcance.
Estos pasos son aplicables en la mayoría de distros y son una forma excelente de aumentar la seguridad de Ubuntu/Debian o cualquier otro sistema. Si la seguridad es tu máxima prioridad, te recomiendo explorar nuestra guía sobre las distribuciones Linux más seguras.
Pingback: Guía Prey para Linux: Protege tu Portátil Ubuntu Contra Robos