GNU/Linux >> Tutoriales Linux >  >> Linux

Linux o Windows:el problema de la seguridad

Voy a eliminar algunas de las malas nociones aquí:

1) Linux es más seguro porque tiene menos cuota de mercado.

No en el mercado de servidores, donde los bots, virus, piratas informáticos, etc., atacan las máquinas públicas todo el día:

http://en.wikipedia.org/wiki/Usage_share_of_operating_systems#Servers

2) Windows es más seguro en versiones recientes.

Al menos a nivel de kernel, está viendo más informes CVE de exploits de ejecución remota y escalada de privilegios en Windows, más ataques DoS locales a un entorno multiusuario en Linux, también encontrará CVE más críticos en Windows (tenía un montón de desgloses estadísticos de una base de datos CVE, pero no puedo encontrar la publicación que hice hace meses, ¡qué frustrante! Google no me está ayudando a encontrarla...).

Como puede ver, Server 2008 tiene un mucho más alto promedio ponderado de la gravedad de CVE:

http://www.cvedetails.com/top-50-product-cvssscore-distribution.php (¡además, todas las vulnerabilidades de Linux de los 1,2 días frente a los últimos 5 años de desarrollo de 2008!)

Por supuesto, se ejecuta con algo como Ubuntu que viene con un montón de software y preconfiguración encima, están al antojo del software que se ejecuta en él.

Mi opinión sobre el tema:Linux se basa en muchos conceptos de Unix, 40 años de desarrollo de software y gente golpeando estas cajas hasta la muerte, es seguro principalmente por la prueba de fuego de Unix, y esto ha ayudado inmensamente, se aprendieron muchas lecciones y se aplicaron directamente a Linux.

¿Tiene esto algo que ver con la naturaleza de código abierto de Linux?

Mucho tiene que ver con eso, al menos con la velocidad a la que el volumen más alto de CVE son abordados. Esto también permite encontrar y solucionar muchos problemas menores (principalmente debido a su popularidad). , porque el código abierto sin popularidad significa pocos ojos en el código y poco interés en corregirlo).

¿Su arquitectura subyacente (y la diferencia con Windows)?

Estar construidos alrededor de un entorno multiusuario ayuda mucho, estos sistemas fueron creados para tener toneladas de personas en ellos a la vez, y ningún usuario debería poder interrumpir a otro.


Razones válidas:

  1. Una base de usuarios más pequeña en Linux hace que Linux de escritorio sea un objetivo menos atractivo. Si solo el 0,1% de las computadoras ejecutan Ubuntu 10.04 y su caballo de Troya solo funciona en esa versión específica de Linux, es probable que nunca lo detecte. Si su caballo de Troya solo funciona en Windows XP, todavía puede atacar ~25% del mercado.
  2. A menudo (no siempre) una base de usuarios más informada y más consciente de la seguridad. Dicho esto, los sistemas operativos como Ubuntu han hecho que Linux sea más accesible y puedes encontrar personas haciendo cosas tontas en él.

Además, por razones un tanto discutibles, podría argumentar que Linux a menudo tiene un diseño más seguro (que puede que ya no sea tan cierto ya que otros sistemas operativos se han puesto al día).

  1. Buena separación de privilegios y controles de acceso con su /sudo , que en realidad no existen en versiones anteriores de Windows.
  2. Digamos que necesita algún software nuevo (editor de imágenes, LaTeX o Python, etc.) que no viene preinstalado en su sistema operativo. En Linux, el 99 % del tiempo utiliza su administrador de paquetes para descargar e instalar automáticamente software firmado criptográficamente y validado a partir de una cadena de confianza. También usará esto automáticamente para las actualizaciones (por lo que es fácil mantener actualizado todo el software en todo el sistema, reparando rápidamente los agujeros de seguridad). En Windows, la mayoría de las veces que necesito instalar algo nuevo, tengo que buscarlo en la web, descargarlo e instalarlo desde algún sitio web aleatorio que podría cargar su software con spyware/bloatware/caballos de Troya o podría estar sujeto a un ataque MITM y descargue/instale algún virus en su lugar, y cada aplicación tiene su propio (diferente) instalador/actualizador automático. (Dicho esto, encuentro que la gente confía demasiado en los PPA, los scripts aleatorios en Internet o la adición de extensiones de navegador como las principales vulnerabilidades de seguridad de Linux/Windows).
  3. ssh . Su conexión estándar a otra máquina remota a través de ssh es muy conveniente y poderosa, lo cual es muy superior a cualquier autenticación remota de Windows en términos de seguridad. Cada vez que se conecta a una máquina ssh, verifica criptográficamente que la clave de host de la otra máquina no ha cambiado desde la clave utilizada anteriormente; puede usar su clave privada ssh para responder a un token de desafío sin permitir que los intrusos usen ataques de repetición o que los registradores de teclas vean su contraseña. Luego, todo el tráfico se envía encriptado entre las dos máquinas; además, es trivial configurarlo en una caja de Linux.
  4. Una variedad de herramientas de seguridad de Linux gratuitas:SELinux, AppArmor, wireshark, iptables (o un envoltorio como ufw), ssh, cron, top (realmente htop), fail2ban, tripwire, GPG, OpenSSL, md5sum/sha256sum, etc. También es muy fácil configurar scripts, escanear un archivo de registro y enviar una alerta por correo electrónico, y hacer todo desde la línea de comandos, etc. De acuerdo, la mayoría (¿todos?) de estos probablemente tengan equivalentes de Windows, pero tienden a no ser gratuitos o cambiar. mucho entre versiones. Configurar un cronjob es básicamente automatizar alguna tarea, es más o menos lo mismo que durante los últimos 20 años; mientras que la configuración de una tarea automatizada en Windows tendrá cambios drásticos entre los sistemas operativos.

Razones no válidas:

  1. La ley de Linus:"dados suficientes ojos, todos los errores son superficiales", por lo que el código abierto es más seguro que el software de código cerrado. Este argumento no me parece particularmente convincente, ya que se han descubierto importantes agujeros de seguridad durante meses/años en material de código abierto (por ejemplo, Debian OpenSSL). Es aún peor ya que los atacantes pueden leer la fuente, buscar errores (o incluso intentar introducir errores disfrazados en la base de código). Sin embargo, tampoco creo que el software de fuente cercana sea intrínsecamente más seguro:la gente aún comete errores y fácilmente puede pagarle a alguien para que introduzca agujeros en una base de código patentada (y con menos ojos puede ser imposible notarlo); claramente, los errores de seguridad y las puertas traseras a menudo existen en el software de fuente cercana y también son atacados. (Considero que este es más o menos un empate).

Sospecho que la situación de virus/malware en Linux es más o menos lo que sería "normal", y que la situación de virus/malware en Windows es un fenómeno estadístico, más un "Rey Dragón" que un Cisne Negro.

Windows tiene un conjunto inusualmente barroco de API, Win32, API nativa de NT, una y otra vez, y ha habido algunos problemas entre ellas, como que Win32 es básicamente una interfaz ASCII mientras que la nativa de NT es Unicode. Esto al menos ha facilitado el malware. Como ejemplo de un detalle rococó, piense en los nombres de archivo de dispositivos mágicos, AUX, CON, LP que funcionan en cualquier directorio.

La API nativa de Windows nunca se ha documentado realmente, y esta falta de documentación fluye a otras cosas, como:¿qué conjunto de extensiones de nombre de archivo es para archivos ejecutables? ¿Por qué el nombre del archivo determina si un archivo es ejecutable o no? ¿No se propagó el gusano NIMDA a través de algún problema con los archivos ".eml", por ejemplo? Nadie sabía que los archivos .eml eran ejecutables en ese momento.

Windows no tiene una tradición de separación de privilegios, de hecho tiene una tradición de usuario raíz único. Muchas aplicaciones todavía asumen esto. Windows no tiene tradición de separación de datos de ejecutables. Le doy macros de Word incrustadas en el archivo .doc como ejemplo de datos e instrucciones no separados que históricamente han causado problemas de virus.

Linux tiene al menos tradiciones opuestas a todos los puntos anteriores:controles de acceso discrecional levemente efectivos, lo suficientemente simples como para aplicarlos en el día a día, pero lo suficientemente completos como para mantener a raya a los virus tradicionales de tipo de archivo. La interfaz de llamada al sistema es solo moderadamente complicada y, dado que el código fuente está disponible gratuitamente, existen múltiples fuentes de documentación. Los ejecutables normalmente viven en directorios "bin" y los datos viven en otro. Cada ejecutable tiene su propio archivo de configuración, en lugar de compartir el gran Registro. Los archivos de datos viven en directorios por usuario y casi nunca contienen el tipo de macros todopoderosas que contienen los archivos de datos de Word, etc.

Además, "Linux" realmente no existe como "Windows". Existen cientos de distribuciones, cada una de las cuales personaliza casi todos los aspectos de los detalles de bajo nivel. Diferentes versiones del compilador, diferentes kernels de Linux, algunos totalmente modulares, algunos sin módulos. Eso es cierto para prácticamente todos los aspectos del software de un sistema, desde el kernel hasta los clientes de correo electrónico. Donde los usuarios de "Windows" en general usan clientes de correo electrónico de Outlook, los usuarios de Linux usan una variedad de cientos de clientes diferentes, cada uno en decenas de versiones. No existe una base de usuarios para ninguna versión determinada de ningún software determinado:la base de usuarios no solo está fracturada, sino destrozada. Esto hace que sea mucho más difícil encontrar una vulnerabilidad en una cantidad adecuada de hosts o escribir un exploit que funcione en una cantidad suficientemente grande de instancias de software.


Linux
  1. Mi historia de Linux:¿Por qué introducir a la gente a la Raspberry Pi?

  2. Seguridad de Linux:8 controles de bloqueo del sistema más

  3. 13 tutoriales de seguridad de Linux

  4. El comando de localización en Linux

  5. Problema de retroceso en el archivo de Linux

Cómo mejorar la seguridad de los sistemas Linux usando Firejail

El comando del temporizador en Linux

Los 50 mejores consejos de seguridad de refuerzo de Linux:una lista de verificación completa

Seguridad de Linux frente a Windows

Las 20 mejores herramientas de seguridad de Linux:la elección de los expertos de Linux

Los 8 mejores teléfonos Linux seguros para privacidad y seguridad