it-swarm-es.com

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

Jugando abogado del diablo ,

Supongamos que compro un servidor Linux de un proveedor de hosting. Me dan una contraseña para el usuario root y me dicen 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 administració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 accede 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 pongo algunos archivos del sitio web (PHP, Ruby, Python, etc.) en /var/www y chown todos los archivos que pertenecerán al mismo usuario sin privilegios que ejecuta se ejecutan 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é debería crear una cuenta de usuario no root utilizar 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 hay muchas razones de seguridad y no seguridad universalmente convincentes para usar usuarios no root. No estoy preguntando sobre la necesidad de cuentas de usuario no root. Mi pregunta está estrictamente limitada a la configuración limitada que describo anteriormente. Creo que esto es relevante porque, aunque mi ejemplo es limitado, es muy común.

48
user31679

Hay unas pocas razones:

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

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

  • edición de archivo: 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 ni siquiera hipotético: su estación de trabajo recibe algún malware que filtra su inicio de sesión FTP/SCP/SFTP/SSH de la base de datos de autenticación almacenada del cliente apropiado y lo transmite al atacante. El atacante inicia sesión en su dispositivo para hacer algún daño. Ahora, ¿pueden cubrir sus huellas o lo que hacen será visible para usted? Hablo con alguien nuevo más de una vez por semana a quien esto le ha sucedido recientemente.

  • mitigación de ataques automatizados: Un servidor pirateado en Brasil está escaneando su red y saca un servidor SSH que escucha. ¿Qué nombre de usuario usa el atacante para su ataque automatizado? Quizás 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 venir a mi cabeza.

42
tylerl

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

No - un servidor web simple puede ser administrado por root y aún ser básicamente seguro.

Es cierto que hay algunos beneficios de administrar como no root, pero estos son menores y exagerados por la mayoría de los consejos de seguridad. Es mucho más importante proteger sus servicios de red. Mantenga el servidor web parcheado y verifique si hay fallas en la capa de aplicación en su aplicación web.

Para responder a los puntos de tylerl:

  • trazabilidad - esto podría ser válido si tuvieras varios administradores, pero si eres solo tú, entonces eres completamente rastreable trabajando como root.

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

  • edición de archivo - Ver arriba

  • mitigación de ataques - Si tiene malware en su estación de trabajo, todas las apuestas están desactivadas. Si usa Sudo sin contraseña, el ataque que menciona todavía funciona. Si usa su, entonces el malware puede obtener su contraseña usando un keylogger.

  • mitigación de ataques automatizados - Si sigue los consejos estándar de usar contraseñas seguras (o usa claves SSH en su lugar), un forzador bruto no entrará de todos modos.

20
paj28

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

Agregaría que otra pregunta relacionada es si el root 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 del sistema les gusta saber que no cualquier usuario aleatorio puede cargar todo el sistema con un comando Sudo rm -R /. * nix simplemente lo hará sin decirte otra palabra.

También se reduce a la cultura. Si solo estás jugando para ver cómo se ve allí, eso es una cosa: hazlo en una caja virtual y abusa del contenido de tu corazón. (Particularmente me gusta hacer el rm -R/thing y luego mirar con htop para ver qué deja de funcionar cuando. Pero eso envejece rápidamente una vez que sabes que siempre conduce a uno de 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 encajar en la cultura de otras personas que usan ese mismo sistema, incluso si usted es el administrador.

0
SDsolar