¿Es Linux realmente seguro, con solo la contraseña de root denegando el acceso externo?

29

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.

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).

    
pregunta James C 02.08.2014 - 15:57
fuente

5 respuestas

32

"Linux" (como parte de todas las instalaciones) generalmente tiene un poco más que una contraseña que niega el acceso externo.

Primero, hay un conjunto uniforme de controles de acceso discrecional: permisos de lectura / escritura / ejecución, para el usuario / grupo / todos los demás. Tradicionalmente, estos permisos se utilizan realmente, en lugar de ignorarse y / o trabajar alrededor. Además, algunos subconjuntos de instalaciones tienen SELinux instalado, configurado y en funcionamiento, para que el estilo de lista de control de acceso sea más preciso. de los permisos se hace cumplir.

Segundo, los servidores generalmente se ejecutan como un usuario especial designado. Los procesos de NTP se ejecutan como usuario "ntp". Los procesos del servidor web se ejecutan como un usuario "http", MySQL las bases de datos se ejecutan como un usuario "mysql", por ejemplo. Los controles de acceso descrita anteriormente descritos casi siempre evitan que el ID de usuario de NTP haga mucho más que leer algunos de los archivos de ID de usuario de HTTP.

Tercero, la base de software instalada está altamente fragmentada. Hay una gran cantidad de distribuciones diferentes. Después de eso, no todas las instalaciones ejecutan Apache HTTPD o el servidor SMTP de sendmail. Existen alternativas, y generalmente solo hay una pluralidad de instalaciones con un servidor determinado. Las versiones de software también están muy fragmentadas. Con cada distribución compilando y manteniendo su propia elección de servidor web, es muy, muy raro que dos instalaciones ejecuten un servidor que tenga los mismos errores, o incluso las mismas opciones de compilación.

Entonces, por ejemplo, alguien que busca una máquina con Linux a través de WordPress , la adivinación de contraseñas puede adivinar la contraseña de WordPress. Eso podría hacer que el atacante se ejecute como usuario "http" o "apache". Por malo y horrible que sea, no lo es todo. El usuario "http" o "apache" es casi seguro que no puede sobrescribir muchos archivos, solo HTML y lo que tiene en el directorio DocumentRoot. Se necesitaría otro salto, adivinar la contraseña "raíz" para algunas distribuciones, o explotar una escalada de privilegios locales, para obtener algún tipo de acceso a archivos universal.

Esto realmente es de múltiples capas, pero tenga en cuenta que se debe principalmente a la cultura y la tradición, y también es una especie de "inmunidad de rebaño". Siempre es posible que alguna combinación de exploits proporcione acceso de root en un sistema dado, pero esa combinación probablemente no se aplique a muchos otros sistemas.

    
respondido por el Bruce Ediger 02.08.2014 - 16:51
fuente
15
  

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.

    
respondido por el JvR 02.08.2014 - 18:55
fuente
6

No hay un sistema seguro. Solo hay sistemas que pueden ser lo suficientemente seguros contra ataques específicos y los escenarios de ataque pueden cambiar rápidamente.

Linux como sistema de escritorio se beneficia de una baja adopción, lo que significa que no eres un objetivo atractivo para ataques masivos. Además, proporciona una mejor segmentación entre los límites de seguridad, es decir, generalmente no es suficiente simplemente hacer clic en Aceptar para ejecutar algo como administrador. También tiene que establecer explícitamente el permiso ejecutable en un archivo para convertirlo en un ejecutable, ya que esta propiedad no se deriva del nombre de archivo como en Windows.

Linux como sistema de servidor también puede ser seguro, pero desafortunadamente muchos administradores simplemente creen que Linux es seguro y no viven en la seguridad. Por ejemplo, no mantienen todos los programas del sistema actualizados a diario, comprueban los archivos de registro, etc. Esto a menudo hace que Linux sea un blanco fácil para los ataques contra aplicaciones web vulnerables (complementos de WordPress, etc.). Y una vez que el atacante obtiene acceso como usuario local de esta manera, también suele ser fácil convertirse en root. Hubo suficientes vulnerabilidades de escalamiento de privilegios en los últimos años para Linux que se pueden usar.

Por lo tanto, Linux se puede hacer lo suficientemente seguro para muchas tareas, pero no creas la exageración y simplemente instala el sistema y luego olvídalo. Y tampoco crea que Windows es inseguro: las versiones recientes también pueden ser lo suficientemente seguras, pero aún tiene que saber qué está haciendo y mantener todo actualizado.

Según lo solicitado, algunos consejos sobre cómo mantener los sistemas (Linux y Windows) lo suficientemente seguros. Puede haber más recursos en línea, pero estos son los puntos principales de mi experiencia:

  • Mantenga los sistemas lo más actualizados posible. Esto significa que solo instala el software compatible. En Linux, en su mayoría es suficiente quedarse con el software que viene con el sistema y ejecutar actualizaciones regularmente o usar actualizaciones automáticas. En Windows es mucho más difícil, porque no se obtiene demasiado con el sistema. El software que realmente necesitas viene con su propio actualizador ( Adobe Flash , Adobe Acrobat Reader , Oracle Java , iTunes , etc.), requiere que revises el sitio del proveedor para obtener actualizaciones por tu cuenta o no es compatible en absoluto. A menudo ejecutará el software antiguo que compró una vez, pero que ya no es compatible, porque no quiere pagar nuevamente solo para obtener una versión compatible (que también podría necesitar un mejor hardware, etc.). En Linux, por supuesto, también tiene que actualizar cualquier software de fuentes externas, por ejemplo, algo como los complementos de WordPress.
  • Entonces solo debes instalar el software que realmente necesitas. Cuanto menos software tenga, menor será la superficie de ataque y más fácil será para mantenerse actualizado. Especialmente en Windows, esto no es fácil, porque a menudo solo se obtiene un paquete de software con un montón de otro software. Por ejemplo, una vez obtuviste el navegador Safari junto con iTunes en Windows. Este navegador ya no es compatible con Windows y ahora tiene muchos sistemas con un software inseguro y no compatible.
  • Evite el software con un mal registro de seguridad si es posible. Esto actualmente significa al menos Java, Flash y Acrobat Reader.
  • Baje la superficie de ataque cuando esté navegando. Esto significa no solo evitar los rincones oscuros de Internet, sino también instalar algún bloqueo de anuncios para evitar la publicidad maliciosa, etc.
  • En Windows debes instalar algún escáner de virus.
  • Y por supuesto ten cuidado. No abra correos sospechosos, etc. Piense dos veces si realiza actividades bancarias en línea y otras tareas confidenciales. Tal vez use un sistema Linux especial desde una memoria USB para estas tareas.
respondido por el Steffen Ullrich 02.08.2014 - 19:22
fuente
2

Creo que este sitio Q / A tal vez no sea el mejor lugar para discutir toda la seguridad de Linux, pero:

  • el acceso de raíz generalmente se restringe a las cuentas locales, que primero debe obtener
  • la instalación de la aplicación generalmente está restringida a las fuentes de software, no a los instaladores ejecutables
  • Linux tiene menos usuarios, y esos usuarios siguen las mejores prácticas de software (principalmente porque la actualización / actualización es más fácil / menos costosa) y, por lo tanto, son un objetivo menor

La elección de una buena contraseña de root es, por supuesto, de suma importancia, especialmente si permite que otros usuarios tengan acceso a sus sistemas. Sin embargo, al final es solo otra capa de seguridad.

De lo contrario, sería una buena idea no esperar demasiado de la protección de la cuenta raíz .

    
respondido por el Maarten Bodewes 02.08.2014 - 16:46
fuente
0

Además de las respuestas anteriores, me gustaría señalar que PAM de Linux hace posible agregar controles de seguridad adicionales para cualquier usuario (y por lo tanto también para root). Por ejemplo, se requiere un certificado, una clave usb (como YubiKey ), etc.

    
respondido por el agtoever 03.08.2014 - 08:57
fuente

Lea otras preguntas en las etiquetas