¿Los servidores Linux simples realmente necesitan un usuario no root por razones de seguridad?

44

Reproduciendo el abogado del diablo ,

Supongamos que compro un servidor Linux de un proveedor de alojamiento. Me dieron una contraseña para el usuario root y me dijeron que puedo iniciar sesión usando SSH. El único propósito que tiene este servidor es alojar uno o más sitios web, posiblemente con SSL correctamente configurado y habilitado.

Mi inicio de sesión inicial será instalar (a través de un sistema de gestión de paquetes bien revisado y ampliamente utilizado) y configurar (editando archivos en /etc ) un servidor web, una base de datos, algún software que no tenga acceso a Internet, y un servidor de aplicaciones web (PHP-FPM, Unicorn, ese tipo de cosas). La administración de paquetes fue lo suficientemente inteligente como para configurar usuarios sin privilegios para ejecutar los servidores, una configuración que mantengo. A continuación, coloco algunos archivos del sitio web (PHP, Ruby, Python, etc.) en /var/www , y chown todos los archivos que pertenecen al mismo usuario sin privilegios que se ejecuta como el proceso del servidor web (es decir, www-data ).

En el futuro, solo iniciaré sesión, y solo para actualizar los archivos del sitio web y realizar algunas operaciones de solo lectura, como revisar los registros.

En el escenario anterior, ¿hay alguna razón relacionada con la seguridad , por qué debo crear una cuenta de usuario no root para usar en lugar del usuario root? Después de todo, casi todos los comandos se ejecutarían con sudo si hubiera iniciado sesión con un usuario no root.

Tenga en cuenta: entiendo que existen muchos motivos de seguridad universales y no relacionados con la seguridad para utilizar usuarios no root. No estoy preguntando acerca de la necesidad de cuentas de usuario no root. Mi pregunta se limita estrictamente a la configuración limitada que describo anteriormente. Creo que esto es relevante porque aunque mi ejemplo es limitado, es muy común.

    
pregunta Volker Siegel 24.12.2013 - 04:12
fuente

4 respuestas

42

Hay algunas razones:

  • trazabilidad : los comandos que se ejecutan con sudo se registran. Los comandos que se ejecutan con bash se a veces registran, pero con menos detalles y utilizando un mecanismo que es fácil de bloquear.

  • separación de privilegios : casi cada comando no es lo mismo que cada . Todavía hay muchos que no requieren root

  • edición de archivos : los archivos web son propiedad de un usuario no root y son ejecutados por un usuario no root ... entonces, ¿por qué los editaría con root?

  • mitigación de ataques : considere el siguiente escenario totalmente hipotético: su estación de trabajo obtiene un malware que filtra su inicio de sesión de FTP / SCP / SFTP / SSH fuera del Base de datos de autenticación del cliente apropiado y la transmite al atacante. El atacante inicia sesión en su dispositivo para hacer alguna travesura. Ahora, ¿pueden cubrir sus huellas o será visible para usted lo que hacen? Hablo con alguien nuevo más de una vez cada semana a quien le ha ocurrido esto recientemente.

  • mitigación automatizada de ataques : un servidor pirateado en Brasil está escaneando su red y extrae un servidor SSH que escucha. ¿Qué nombre de usuario usa el atacante para su ataque automatizado? Tal vez webuser , o test , o www o admin , pero más que cualquier otro: root .

Ciertamente hay muchas más razones, pero estas son las primeras en llegar a mi mente.

    
respondido por el tylerl 24.12.2013 - 04:24
fuente
15

Acabo de ver esto, un poco tarde, pero ...

No : un servidor web simple puede ser administrado por root y aún así es básicamente seguro.

Es cierto que hay algunos beneficios para la administración como no raíz, pero estos son menores y muy exagerados por la mayoría de los consejos de seguridad. Es mucho más importante asegurar los servicios de su red. Mantenga el servidor web actualizado y compruebe si hay fallas en la capa de aplicación en su aplicación web.

Para responder a los puntos de tylerl:

  • trazabilidad : esto puede ser válido si tienes varios administradores, pero si eres solo tú, entonces eres completamente rastreable trabajando como root.

  • separación de privilegios : en la práctica, espero que haga tan poco como no root que esto no haga ninguna diferencia.

  • edición de archivos : vea más arriba

  • mitigación de ataques : si tienes malware en tu estación de trabajo, todas las apuestas están desactivadas. Si usas un sudo sin contraseña, el ataque que menciona aún funciona. Si usa su, entonces el malware puede obtener su contraseña usando un registrador de teclas.

  • mitigación automatizada de ataques : si sigues los consejos estándar sobre el uso de contraseñas seguras (o usas claves SSH en su lugar), entonces una fuerza bruta no entrará de ninguna manera.

respondido por el paj28 23.02.2014 - 09:04
fuente
0

La mejor razón para usar un usuario no root para las actividades diarias es crear buenos hábitos y conocimientos para el momento en que esté haciendo algo real en un sistema * nix. Sin él, nunca tendrá que pensar en los permisos de acceso a archivos, grupos, etc.

Agregaría que otra pregunta relacionada es si la raíz debería tener una contraseña propia. Es una buena práctica adquirir el hábito de proporcionar la contraseña de root para usar sudo. Un buen recordatorio de que lo que está haciendo afecta la integridad de la configuración del sistema operativo. Incluso a los administradores de sistemas les gusta saber que no cualquier usuario aleatorio puede cargar todo el sistema con un comando sudo rm -R /. * nix solo lo hará sin decirte una palabra más.

También se trata de cultura. Si solo estás jugando para ver cómo se ve allí, eso es una cosa: hazlo en una caja virtual y abusalo al contenido de tu corazón. (Particularmente, me gusta hacer rm -R / thing y luego ver con htop para ver qué deja de funcionar cuando. Pero eso se vuelve rápido una vez que sabes que siempre lleva a uno de los dos resultados: restaurar desde una copia de seguridad o reinstalar.)

Si alguna vez tiene un propósito comercial para usar una máquina * nix, afirmo que es bueno que se ajuste a la cultura de otras personas que usan ese mismo sistema, incluso si usted es el administrador.

    
respondido por el SDsolar 17.12.2016 - 07:01
fuente
-1

El uso de privilegios de root en todo el sistema es similar a dejar las llaves de su casa cerca de la ventana, aunque esté cerrada.

Si tiene experiencia en atravesar aplicaciones web (o cualquier otro punto de entrada) usando puntos débiles, comprenderá que la defensa en profundidad es muy importante. ¿Por qué? Debido a que las aplicaciones siempre tienen vulnerabilidades, aún no se han descubierto (y algunas se descubren cada año).

Todos los puertos, aplicaciones y protocolos expuestos a Internet pueden ser pirateados. Posteriormente, obtendrá acceso a dispositivos, software, servidores, redes, etc. que no estén orientados a Internet.

Entonces, en la analogía de la ventana anterior, si el pirata informático se da cuenta de que se mueve y abre la ventana, ahora solo busca y encuentra todas las llaves de su casa, incluso su caja fuerte. De lo contrario, podría buscar a tientas y agarrar algunos artículos pequeños y salir corriendo, pero ahora " es el propietario de toda la casa ", gracias a ti.

Así que aprieta puertos, privilegios, contraseñas, permisos. Estoy de acuerdo en que puede ser una molestia, y al menos debe tener una mentalidad orientada a la seguridad (y al pirata informático) como administrador, de modo que pueda juzgar por sí mismo cuán valiosos son los contenidos del servidor y qué tan bien desea bloquear su servidor inactivo.

    
respondido por el a20 13.07.2016 - 05:47
fuente

Lea otras preguntas en las etiquetas