Configurar usuarios y contraseñas seguras en Linux es el primer paso para proteger tu sistema frente a accesos no autorizados. En esta guía práctica aprenderás cómo crear cuentas con privilegios mínimos, establecer contraseñas fuertes, activar 2FA, auditar accesos y aplicar técnicas de hardening como PAM y revisión de SSH. Todo explicado paso a paso.
Te explicamos cómo proteger el acceso a tu sistema Linux desde la base:
- – Importancia de una buena configuración
- – Creación de usuarios seguros
- – Contraseñas fuertes y políticas
- – Activar autenticación 2FA
- – Claves SSH y acceso remoto
- – Auditoría de cuentas y accesos
- – Caducidad y bloqueo de usuarios
- – Endurecimiento con PAM
- – Revisión de configuración SSH
- – Errores comunes a evitar
- – Resumen final
¿Por qué es importante configurar usuarios y contraseñas seguras?
La configuración adecuada de usuarios y contraseñas es una de las primeras barreras de defensa contra accesos no autorizados a tu sistema. Asegurarte de que solo los usuarios necesarios tengan acceso y que sus contraseñas sean fuertes es esencial para proteger tu servidor Linux.
Pero no se trata solo de crear cuentas y asignarles claves aleatorias. Cada cuenta de usuario representa un posible punto de entrada, y si no se gestiona adecuadamente, puede convertirse en una puerta trasera para atacantes. Los sistemas mal configurados suelen incluir usuarios por defecto, accesos sin restricciones o contraseñas débiles que pueden ser descubiertas mediante ataques automatizados como el brute force o el credential stuffing.
Además, una mala gestión de usuarios puede provocar errores de auditoría, acceso no justificado a servicios críticos y dificultar el cumplimiento de normativas como el RGPD, PCI-DSS o ISO 27001.
Recomendaciones clave desde el inicio:
- Eliminar cuentas innecesarias o inactivas
- Evitar el uso de cuentas compartidas
- Revisar los permisos del sistema de archivos
- Asegurar que cada usuario tiene privilegios mínimos
Ejemplo de riesgo común:
Una cuenta olvidada sin contraseña fuerte, creada durante una instalación o prueba, puede ser aprovechada por scripts de escaneo automatizados para obtener acceso root en minutos. A menudo, los ataques no vienen de personas específicas, sino de bots que buscan configuraciones débiles en masa.
Relación con otras medidas de seguridad
Configurar usuarios y contraseñas de forma segura no sustituye a otras defensas como el firewall, el control de acceso a servicios o la monitorización, pero sí es el punto de partida esencial de cualquier estrategia de hardening.
Si estás empezando a proteger tu entorno, también puedes consultar nuestra guía básica de securización.
Creación de usuarios con privilegios mínimos
Una de las mejores prácticas de seguridad en Linux es aplicar el principio de privilegios mínimos: cada usuario debe tener únicamente los permisos necesarios para realizar su tarea y nada más. Esto reduce drásticamente el impacto potencial si esa cuenta se ve comprometida.
Crear un nuevo usuario
El comando recomendado para crear un nuevo usuario es:
sudo adduser nombre_de_usuario
Este comando crea:
- Una entrada en los archivos
/etc/passwd,/etc/shadowy/etc/group - El usuario
- Su directorio personal (
/home/nombre_de_usuario) - Una contraseña (que se te pedirá durante el proceso)
Asignar permisos administrativos solo si es necesario
Por defecto, este usuario no tendrá acceso a comandos con sudo. Solo si necesita ejecutar tareas administrativas, puedes añadirlo al grupo sudo:
sudo usermod -aG sudo nombre_de_usuario
Crear un usuario con acceso restringido (sin shell interactivo)
Si solo necesitas una cuenta para tareas automatizadas, puedes evitar que tenga acceso a la terminal:
sudo adduser --shell /usr/sbin/nologin usuario_limited
Esto evita que ese usuario inicie sesión, pero permite usarlo para ejecutar scripts o servicios.
Buenas prácticas adicionales
- Usa nombres de usuario descriptivos pero cortos (evita espacios, acentos o símbolos)
- Revisa los permisos del directorio
/home/nombre_de_usuariopara que no sea accesible por otros - Nunca uses la cuenta root directamente para tareas diarias
Establecer contraseñas seguras
Establecer contraseñas robustas es una defensa esencial contra accesos no autorizados. Una contraseña débil puede ser descubierta fácilmente mediante ataques de fuerza bruta o diccionario, sobre todo si el sistema está expuesto a internet mediante SSH u otros servicios.
Una contraseña fuerte debe tener al menos:
- 12 caracteres
- Letras mayúsculas y minúsculas
- Números
- Caracteres especiales
Puedes generarlas desde sitios como Password Generator o directamente en Linux con:
openssl rand -base64 16
Endurecer políticas de contraseñas con pam_pwquality
Linux permite controlar los requisitos mínimos de contraseñas mediante el módulo PAM pam_pwquality. Para configurarlo:
1. Instala el módulo (si no está instalado)
sudo apt install libpam-pwquality
2. Edita el archivo de configuración:
sudo nano /etc/pam.d/common-password
Busca esta línea (o similar):
password requisite pam_pwquality.so retry=3
Y cámbiala por algo como:
password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
Esto exige:
minlen=12: longitud mínimaucredit=-1: al menos una mayúsculalcredit=-1: al menos una minúsculadcredit=-1: al menos un númeroocredit=-1: al menos un carácter especial
Forzar caducidad de contraseñas
Para evitar contraseñas eternas, puedes establecer una política de expiración:
sudo chage -M 90 nombre_de_usuario
Esto obliga al usuario a cambiar su contraseña cada 90 días. Puedes verificar la configuración con:
chage -l nombre_de_usuario
Buenas prácticas recomendadas
- Cambia las contraseñas predeterminadas tras instalar el sistema
- Evita reusar contraseñas entre servicios
- No almacenes contraseñas en texto plano (ni en scripts)
Habilitar la autenticación en dos factores (2FA)
Para mejorar aún más la seguridad de tu sistema, puedes habilitar la autenticación en dos factores (2FA) en los servicios que lo soporten, como SSH. Este método añade una segunda capa de verificación: algo que sabes (tu contraseña) y algo que tienes (un código temporal).
Una de las herramientas más utilizadas para implementar 2FA en Linux es Google Authenticator. Permite generar códigos TOTP (contraseña de un solo uso basada en tiempo) que puedes verificar desde tu smartphone o aplicación compatible.
Para instalarlo, ejecuta:
sudo apt install libpam-google-authenticator
Luego, ejecuta el siguiente comando con el usuario con el que quieres usar 2FA:
google-authenticator
Se generará un código QR para escanear con una app como Google Authenticator o FreeOTP, además de claves secretas y códigos de emergencia. Asegúrate de guardarlos en un lugar seguro.
Configurar PAM y SSH para usar 2FA
1. Edita el archivo de configuración de PAM para SSH:
sudo nano /etc/pam.d/sshd
Y añade al final o verifica que exista esta línea:
auth required pam_google_authenticator.so
2. Luego edita la configuración de SSH:
sudo nano /etc/ssh/sshd_config
Asegúrate de tener activadas estas opciones:
ChallengeResponseAuthentication yes
UsePAM yes
Finalmente, reinicia el servicio SSH para aplicar los cambios:
sudo systemctl restart ssh
A partir de ahora, al iniciar sesión por SSH se te pedirá primero la contraseña y luego un código de 6 dígitos generado en tu app de autenticación.
Alternativa: Generar códigos desde el terminal con OATH
Si no deseas depender de una app móvil, puedes generar códigos TOTP directamente desde el terminal utilizando oathtool:
sudo apt install oathtool
Una vez instalado, puedes generar un código con:
oathtool --totp -b TU_CLAVE_SECRETA
También puedes ver cómo aplicar 2FA dentro de una estrategia más completa de alertas y monitorización de accesos.
Uso de SSH con claves en lugar de contraseñas
Una medida de seguridad altamente recomendada es deshabilitar el acceso SSH con contraseñas y utilizar autenticación basada en claves. Este método no solo evita el uso de contraseñas débiles, sino que también bloquea eficazmente ataques automatizados por fuerza bruta.
1. Generar un par de claves SSH
Desde tu equipo local (cliente), genera un par de claves con:
ssh-keygen -t rsa -b 4096 -C "tu_correo@dominio.com"
Esto creará dos archivos en ~/.ssh/:
id_rsa (clave privada, guárdala con seguridad)id_rsa.pub (clave pública, que se puede compartir)2. Copiar la clave pública al servidor
Para autorizar tu clave en el servidor, ejecuta:
ssh-copy-id usuario@ip_del_servidor
Esto añadirá automáticamente tu clave pública al archivo ~/.ssh/authorized_keys del servidor remoto.
3. Desactivar el acceso con contraseña
Una vez confirmes que puedes conectarte con la clave SSH, desactiva el acceso por contraseña para reforzar la seguridad:
sudo nano /etc/ssh/sshd_config
Busca y cambia las siguientes líneas:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Guarda el archivo y reinicia el servicio SSH:
sudo systemctl restart ssh
4. Opcional: usar un puerto no estándar
Para reducir intentos automatizados de conexión, puedes cambiar el puerto por defecto (22) por uno alternativo:
Port 2222
No olvides abrir el nuevo puerto en el firewall y reiniciar SSH. Ten en cuenta que esto no reemplaza medidas reales de seguridad, pero añade una capa de disuasión.
Esta es una de las recomendaciones más importantes que también tratamos en el artículo sobre securización avanzada de servicios.
Auditoría de cuentas y accesos
Una parte clave en la protección de tu sistema Linux es revisar de forma periódica qué cuentas existen, cuáles tienen acceso interactivo y cuándo fue su último inicio de sesión. Esto te permite detectar cuentas inactivas, mal configuradas o potencialmente peligrosas.
1. Ver todos los usuarios del sistema
Puedes listar todos los usuarios registrados en el sistema con:
cut -d: -f1 /etc/passwd
Esto mostrará todos los nombres de usuario definidos, incluyendo usuarios del sistema. Para ver solo los que tienen acceso de terminal, puedes filtrar por shell válido:
grep -vE '/nologin|/false' /etc/passwd
2. Ver el último acceso de los usuarios
Para revisar cuándo se conectó por última vez cada usuario, puedes usar:
lastlog
Esto te mostrará una tabla con todos los usuarios y la última fecha en que iniciaron sesión. Si ves cuentas que llevan mucho tiempo sin usarse o que nunca se han usado, considera deshabilitarlas temporalmente o eliminarlas si no son necesarias.
3. Detectar cuentas con privilegios elevados
Es importante controlar qué usuarios tienen permisos administrativos. Para ver quién pertenece al grupo sudo puedes ejecutar:
getent group sudo
Verifica que solo los usuarios estrictamente necesarios tengan este privilegio.
También puedes consultar nuestras buenas prácticas de revisión de configuraciones para fortalecer tu entorno.
Gestión de caducidad y bloqueo de cuentas
Controlar la vigencia de las cuentas de usuario es esencial en entornos multiusuario o auditables. Linux permite definir fechas de caducidad, bloquear cuentas temporalmente y forzar cambios de contraseña, lo que reduce el riesgo de accesos no deseados a largo plazo.
1. Establecer una fecha de expiración para una cuenta
Si deseas que una cuenta expire en una fecha determinada (por ejemplo, para un usuario temporal o externo), usa el siguiente comando:
sudo usermod -e 2025-12-31 nombre_de_usuario
Para comprobar la configuración de expiración de una cuenta:
chage -l nombre_de_usuario
2. Forzar el cambio de contraseña en el próximo inicio
Es útil para cuentas recién creadas o recuperadas. Puedes forzar el cambio de contraseña con:
sudo chage -d 0 nombre_de_usuario
3. Bloquear o desbloquear cuentas de usuario
Para bloquear una cuenta temporalmente (sin eliminarla):
sudo usermod -L nombre_de_usuario
Y para desbloquearla:
sudo usermod -U nombre_de_usuario
Si estás configurando un entorno más complejo, también puedes consultar nuestra guía de securización avanzada.
Endurecimiento con PAM (mínimo introductorio)
El sistema PAM (Pluggable Authentication Modules) permite definir cómo se gestionan las políticas de autenticación en Linux. A través de PAM puedes endurecer las condiciones para el uso de contraseñas, controlar intentos de acceso y aplicar requisitos de seguridad avanzados.
Una de las formas más comunes de aplicar políticas seguras es usando el módulo pam_pwquality, que define la complejidad mínima de las contraseñas nuevas.
1. Verificar que el módulo esté instalado
Primero asegúrate de que el paquete esté instalado:
sudo apt install libpam-pwquality
2. Configurar requisitos de contraseña
Edita el archivo de configuración de contraseñas comunes con:
sudo nano /etc/pam.d/common-password
Y asegúrate de tener una línea como esta (puede variar según la distribución):
password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
Este endurecimiento se aplicará cada vez que un usuario cree o cambie su contraseña.
Para una estrategia más automatizada frente a intrusiones, considera integrar UFW con Fail2ban.
Revisión de configuración SSH
SSH es una de las puertas de entrada más utilizadas (y atacadas) en sistemas Linux conectados a internet. Por eso, además de usar claves SSH y deshabilitar las contraseñas, es fundamental revisar y ajustar la configuración del servicio SSH para reducir riesgos.
1. Editar la configuración principal
El archivo de configuración del servicio SSH es:
sudo nano /etc/ssh/sshd_config
Asegúrate de revisar y ajustar los siguientes parámetros:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
Port 22
LoginGraceTime 30
MaxAuthTries 3
AllowUsers tu_usuario_admin
2. Reiniciar el servicio SSH
Tras aplicar cambios en el archivo de configuración, reinicia el servicio para que entren en vigor:
sudo systemctl restart ssh
Recuerda probar la nueva configuración en una segunda sesión antes de cerrar la actual, para evitar quedarte bloqueado si hay errores.
Si quieres reforzar esta capa de seguridad, considera complementar la protección del cortafuegos con herramientas como Auditd o OpenSCAP.
Errores comunes al configurar usuarios y contraseñas
Incluso con buenas intenciones, es fácil cometer errores al gestionar usuarios en Linux. Estas malas prácticas pueden dejar tu sistema vulnerable a accesos no autorizados o dificultar la auditoría posterior. A continuación, repasamos los fallos más frecuentes y cómo evitarlos.
- Usar contraseñas débiles o previsibles: Evita claves como
123456,adminopassword. Usa combinaciones largas, aleatorias y difíciles de adivinar. - Reutilizar la misma contraseña en varias cuentas: Si una se ve comprometida, todas están en riesgo. Cada cuenta debe tener su propia contraseña segura.
- Dejar el acceso SSH abierto con contraseña: Esto facilita ataques por fuerza bruta. Usa claves SSH y desactiva el inicio de sesión por contraseña.
- Conceder privilegios sudo innecesarios: Solo los usuarios que realmente lo requieran deben estar en el grupo
sudo. El exceso de privilegios aumenta el riesgo. - No activar 2FA en servicios críticos: Siempre que sea posible, añade autenticación en dos factores para proteger accesos sensibles como SSH.
- No auditar cuentas inactivas: Las cuentas que no se usan deben desactivarse o eliminarse para evitar que se conviertan en un punto de entrada no controlado.
- No revisar la configuración de expiración: Dejar contraseñas permanentes o cuentas sin fecha de caducidad puede dar lugar a accesos prolongados sin control.
Resumen
Configurar correctamente los usuarios y las contraseñas en Linux es uno de los pilares fundamentales de cualquier estrategia de seguridad. Aplicar el principio de privilegios mínimos, establecer contraseñas fuertes, auditar regularmente las cuentas y reforzar el acceso mediante 2FA o claves SSH reduce drásticamente el riesgo de intrusiones.
Además, endurecer las políticas de autenticación con PAM, revisar la configuración de SSH y gestionar adecuadamente la caducidad de cuentas te permitirá construir un entorno mucho más sólido, preparado para resistir ataques automatizados o accesos indebidos.
Estas prácticas no son opcionales: forman parte de los requisitos básicos de securización en cualquier sistema que vaya a operar en red, especialmente si es accesible desde el exterior.









