Gestión de usuarios en un VPS compartido entre proyectos
- usuarios
- linux
- permisos
- vps
- seguridad
- infraestructura
La necesidad de separar usuarios en un VPS compartido
Compartir un VPS entre varios proyectos o clientes sin una gestión adecuada de usuarios y permisos es un riesgo innecesario. Cuando un único usuario tiene acceso sudo o privilegios sobre todos los directorios, un error accidental o una vulnerabilidad en un solo proyecto puede comprometer todo el servidor. La primera línea de defensa es siempre la segmentación de privilegios.
Mi regla es clara: cada proyecto o cliente debe tener su propio usuario de sistema. Esto no solo mejora la seguridad, sino que también simplifica la auditoría y el control de acceso.
Estrategia de permisos para cada proyecto
Crear usuarios dedicados es el primer paso. Luego, es fundamental limitar sus permisos a los directorios y recursos que realmente necesitan. Esto se logra con una combinación de grupos, chown, y chmod.
Por ejemplo, para un nuevo proyecto:
sudo adduser proyecto_cliente_a
sudo mkdir /var/www/proyecto_cliente_a
sudo chown -R proyecto_cliente_a:proyecto_cliente_a /var/www/proyecto_cliente_a
sudo chmod -R 755 /var/www/proyecto_cliente_a
Esto asegura que el usuario proyecto_cliente_a es el propietario del directorio de su proyecto y solo tiene permisos de escritura dentro de él. Otros usuarios no podrán modificar sus archivos. Si varios usuarios necesitan acceso de escritura a un mismo directorio para un proyecto, se puede crear un grupo específico y asignar a los usuarios a ese grupo.
Configuración de acceso SSH y privilegios sudo
La autenticación SSH debe ser siempre con claves, nunca con contraseña. Cada usuario debe tener su propia clave SSH. Además, se debe configurar sudo para que los usuarios solo puedan ejecutar comandos específicos que necesiten, sin darles acceso total de root. Para una guía más amplia sobre cómo proteger tu infraestructura, puedes consultar este artículo sobre cómo proteger tu web de ataques.
Para permitir que un usuario reinicie un servicio concreto, por ejemplo:
# Editar el archivo sudoers
sudo visudo
Añadir una línea como esta, adaptada a tu usuario y servicio:
proyecto_cliente_a ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
Esto evita que un usuario con acceso sudo pueda ejecutar cualquier comando, limitándolo estrictamente a lo que necesita. Es una capa de seguridad extra que evita problemas en producción.
Compromiso entre seguridad y facilidad de uso
Lo que ganas:
- Seguridad robusta: Un compromiso en un proyecto no afecta a otros.
- Auditoría clara: Los logs de sistema reflejan qué usuario realizó cada acción.
- Control granular: Puedes revocar o modificar permisos sin afectar otros proyectos.
Lo que complicas:
- Configuración inicial: Requiere más tiempo para configurar usuarios, grupos y permisos correctamente.
- Gestión de claves: Necesitas una estrategia para distribuir y rotar claves SSH de forma segura.
- Mantenimiento: Ajustar permisos cuando un proyecto evoluciona o se añaden nuevas herramientas.
La comodidad de un usuario root para todo es una ilusión. El coste de esa “comodidad” es un riesgo de seguridad constante.
Monitorización y auditoría de usuarios
Una vez que los usuarios y permisos están configurados, la monitorización es clave. Revisa los logs de autenticación y los logs de actividad de sudo regularmente. Herramientas como last o who te muestran quién está conectado.
Para ver los intentos de conexión fallidos y detectar posibles ataques de fuerza bruta, puedes revisar /var/log/auth.log o usar herramientas como Fail2ban para proteger tu VPS de ataques de fuerza bruta que automatizan el bloqueo de IPs maliciosas. Además, asegúrate de que tu sistema de firewall, ya sea UFW o IPTables, esté bien configurado para solo exponer los servicios necesarios.
Si gestionas un VPS y necesitas optimizar el acceso sin comprometer la seguridad, considera implementar Cloudflare Tunnel como única puerta de entrada segura para la gestión. Y no olvides la parte más importante de cualquier estrategia de infraestructura: tener backups automáticos de tu VPS con rsync verificados regularmente.
Técnico freelance especializado en desarrollo a medida, automatizaciones con IA y gestión técnica para negocios en España. Más sobre mí →
¿Necesitas que alguien se ocupe de tu web?
Me encargo de que tu web funcione, esté segura y actualizada. Backups, actualizaciones y soporte directo. Planes desde 49 €/mes.