Mientras buscaba información sobre la seguridad de Linux en línea, la explicación más típica era: Linux es seguro porque la contraseña de root es necesaria para acceder al kernel e instalar nuevas aplicaciones; por lo tanto, el software malintencionado externo no puede hacer ningún daño. siempre que el administrador sea la única persona que sepa la contraseña.
Tienes razón en que no es la contraseña lo que hace que un sistema sea seguro, son las herramientas y la cultura (pero no descartemos por completo la contraseña). Cuanto más fácil sea para que las personas configuren y administren grupos de usuarios, cuentas y privilegios, más fácil será que un sistema sea seguro.
En versiones anteriores de Windows (1) , tener una sola cuenta de usuario con todos los privilegios era la norma. Sin contraseña, todos los derechos de administrador. Esto básicamente significaba que el tío Joe podía hacer lo que fuera necesario sin preocuparse por cosas como los privilegios elevados. También significaba que cualquier código que se ejecutara bajo su nombre tendría poder sobre la máquina. Dependía de los programas individuales, si así lo decidían, implementar las cajas de seguridad y las cajas '¿Está realmente seguro?' -
Por el contrario, Unix / Linux han sido sistemas multiusuario por diseño. Se construyen con la idea de que habrá diferentes roles con diferentes requisitos de seguridad:
Administradores mantienen el sistema. Es posible que necesiten actualizar el sistema operativo, modificar programas, agregar / eliminar grupos y privilegios ... Todo esto significa que necesitan un acceso prácticamente ilimitado.
Los usuarios son consumidores cotidianos de los servicios del sistema, el Uncle Joe desde arriba. Usan software para escribir cartas, leer documentos, navegar por la web, jugar juegos, etc. Ellos pueden instalar software hasta cierto punto, pero solo dentro de su propia esfera de influencia; no pueden modificar el software del sistema o las bibliotecas.
Los servicios en ejecución a menudo también reciben sus propias cuentas de usuario, ya que tienden a tener necesidades muy limitadas y bien definidas. MySQL necesitará algunos directorios en los que pueda escribir, un puerto de red que pueda abrir, etc., pero no es necesario acceso a los documentos del tío Joe o la capacidad de sobrescribir / modificar el software (incluso a sí mismo).
Entonces, incluso si un servicio en ejecución está comprometido (un servidor HTTP, por ejemplo), si no se está ejecutando bajo los privilegios más altos, está limitado en la cantidad de daño duradero que puede hacer. Esta mentalidad de correr bajo privilegios limitados es lo que lo convierte en un sistema más seguro.
OK, eso suena bien. Pero cuando una contraseña es lo único que se encuentra entre el acceso restringido y el control total del sistema, ¿es realmente seguro el sistema? Con eso me refiero a todo tipo de trucos que los hackers piensan para acceder a los sistemas, y en particular para revelar datos (contraseñas).
Es como decir que una bóveda no es segura porque las personas con la combinación pueden entrar.
Pero aún así, haces un buen punto. Conviértete en root, obtén acceso completo.
Cualquier sistema donde alguien necesite acceso especial deja espacio para que alguien sea suplantado. Es por eso que la regla número uno para cualquier sistema protegido por contraseña es no filtrar la contraseña.
Hay estrategias de mitigación que puede usar para limitar el daño de una cuenta de root comprometida, como incluir en la lista blanca solo los rangos de direcciones IP específicas, cambiar las contraseñas de vez en cuando o impedir que algunos roles se eleven a la raíz sin importar la contraseña.
No es perfecto. Pero seguro que supera la cuenta de administrador sin contraseña del tío Joe.
(1) ¿Pero Windows Vista y sus versiones posteriores también hacen esta distinción? Incluso antes de Windows Vista, las cuentas separadas con privilegios separados estaban disponibles pero, en mi experiencia, no se usan comúnmente.