Cómo asegurar un servidor Linux para Node.js (amigable para principiantes, paso a paso)

Optimiza la seguridad de tu servidor Linux para Node.js con estos consejos clave para proteger tus aplicaciones web de posibles vulnerabilidades.

15 dic 2025 • 5 min de lectura • Equipo Q2BSTUDIO

Cómo asegurar un servidor Linux para Node.js

Introducción: asegurar un servidor Linux para Node.js de forma sencilla y apta para principiantes. Cuando se despliega una aplicación Node.js o cualquier aplicación web en un servidor Linux, el mayor riesgo no es el código sino la mala configuración del servidor. Este artículo muestra cómo convertir un servidor Ubuntu limpio en un entorno seguro y listo para producción donde el acceso root por SSH está deshabilitado, SSH usa solo claves, cada aplicación se ejecuta con su propio usuario restringido y, aun si una aplicación se ve comprometida, el sistema se mantiene protegido.

Presentación de Q2BSTUDIO. En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida, especialistas en inteligencia artificial, ciberseguridad y servicios cloud. Ofrecemos soluciones de software a medida, agentes IA para empresas, integración de Power BI y servicios de inteligencia de negocio. Si necesita un proyecto de desarrollo de aplicaciones a medida o quiere reforzar la seguridad de su infraestructura con servicios de ciberseguridad, podemos ayudarle en cada paso.

Filosofía de seguridad, explicado de forma simple. Seguimos tres reglas básicas: nunca ejecutar aplicaciones como root, asignar a cada aplicación su propio usuario y permitir que la aplicación acceda solo a sus archivos. Si un atacante compromete la app no debería poder instalar mineros, modificar archivos del sistema, crear usuarios ni afectar otras aplicaciones.

Supuestos. Se usa Ubuntu 22.04 o 24.04, se puede acceder por SSH y se parte de un servidor nuevo con acceso root.

Paso 1 Crear un usuario administrador no root. Cree un usuario normal por ejemplo dev con adduser dev y luego permita administración con usermod -aG sudo dev. Motivo: acceso root por SSH es peligroso. Un usuario normal con sudo es más seguro y auditable.

Paso 2 Configurar ingreso por clave SSH. En su máquina local genere una clave con ssh-keygen -t ed25519. Copie la clave pública al servidor creando /home/dev/.ssh y pegando la clave en authorized_keys. Corrija permisos con chown -R dev:dev /home/dev/.ssh y chmod 700 /home/dev/.ssh y chmod 600 /home/dev/.ssh/authorized_keys. Pruebe con ssh dev@SU_IP_DE_SERVIDOR.

Paso 3 Bloquear SSH. Edite /etc/ssh/sshd_config y asegúrese de que PermitRootLogin no y PubkeyAuthentication yes estén activos. Añada al final Match all PasswordAuthentication no. Recargue SSH con systemctl reload ssh. Resultado: acceso root por SSH deshabilitado, login por contraseña deshabilitado y uso obligatorio de claves.

Paso 4 Activar firewall. Permita puertos necesarios antes de activar: ufw allow OpenSSH, ufw allow 80, ufw allow 443. Active con ufw enable y verifique con ufw status verbose. El firewall bloquea escaneos aleatorios y sólo permite lo explicitado.

Paso 5 Instalar Node.js de forma global. Instale Node usando el repositorio oficial por ejemplo Node 24 LTS con curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash - seguido de apt install -y nodejs. Verifique con node -v y which node. Se recomienda Node instalado a nivel de sistema en /usr/bin/node propiedad de root para servicios systemd. Evite usar nvm para servicios de sistema.

Paso 6 Crear un usuario dedicado por aplicación. No ejecute apps con el usuario administrador. Cree un usuario de servicio por ejemplo svc-nextjs con sudo adduser --system --no-create-home --group --shell /usr/sbin/nologin svc-nextjs. Esto asegura que el usuario no tenga shell, no tenga acceso SSH ni sudo y exista solo para ejecutar la aplicación.

Paso 7 Aislar archivos de la aplicación. Cree el directorio de la aplicación en /var/apps/nextjs, cambie propietario y permisos con sudo chown -R svc-nextjs:svc-nextjs /var/apps/nextjs y sudo chmod 750 /var/apps/nextjs. Compruebe que los administradores no pueden acceder directamente y que el usuario de servicio sí puede con sudo -u svc-nextjs ls /var/apps/nextjs.

Paso 8 Ejecutar la app con systemd y endurecerla. Cree un servicio systemd que use User y Group del usuario de servicio, WorkingDirectory apuntando a /var/apps/nextjs y ExecStart a /usr/bin/node server.js. Añada opciones de hardening como NoNewPrivileges true, ProtectSystem strict, ProtectHome true, ReadWritePaths apuntando solo a /var/apps/nextjs, PrivateTmp true, PrivateDevices true, RestrictSUIDSGID true, MemoryDenyWriteExecute true y una umask de 0077. Recargue systemd con systemctl daemon-reload y active el servicio con systemctl enable --now su_servicio.

Paso 9 Revisar score de seguridad de systemd. Use systemd-analyze security su_servicio y busque un score bajo como 2 o 3 que indica un sandbox fuerte. Esto protege contra escalada de privilegios, modificación de archivos del sistema, abuso del kernel, mineros y movimiento lateral.

Paso 10 Comprobaciones finales. Verifique la configuración SSH con sshd -T y revise permitrootlogin no passwordauthentication no pubkeyauthentication yes. Compruebe ufw status. Con esto obtiene: SSH root deshabilitado, login por contraseña deshabilitado, acceso solo por claves, firewall activo, usuarios por servicio por app, aislamiento de sistema de ficheros y un sandbox reforzado con systemd.

Consejos finales y mejores prácticas. Una app un usuario de servicio, nunca ejecute apps como root, deje que systemd aplique restricciones y mantenga SSH sencillo y cerrado. Realice actualizaciones regulares, use supervisión y logging centralizado y considere backups y pruebas de recuperación.

Servicios complementarios Q2BSTUDIO. Además de asegurar servidores ofrecemos soluciones completas en inteligencia artificial y servicios cloud. Podemos ayudar a desplegar arquitecturas seguras en AWS y Azure, optimizar procesos con automatización, implementar soluciones de inteligencia de negocio y Power BI y crear agentes IA personalizados para su empresa. Si busca potenciar su negocio con IA para empresas o servicios cloud aws y azure, nuestros expertos en software a medida y ciberseguridad le acompañan desde la definición hasta la puesta en producción.

Palabras clave integradas para SEO. aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.

Contacto y siguiente paso. Si desea que Q2BSTUDIO implemente este endurecimiento en sus servidores o que desarrollemos una solución a medida contacte con nuestro equipo. Con una base sólida de seguridad puede desplegar Node.js, Python u otros backends en producción con confianza y cumplir requisitos de seguridad reales.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.