domingo, 30 de diciembre de 2012

Seguridad Linux Vs Windows.


1. CÓDIGO CERRADO/ABIERTO

Aún cuando el código abierto ha sido fuente de innumerables fallos explotables, también ha sido el vehículo ideal para la localización y corrección de aspectos críticos de seguridad. Y esto es bueno. Es reconocido por la comunidad en seguridad informática por ejemplo, que es mucho mas confiable un algoritmo de encripción de datos de conocimiento público (debido a que es sometido a pruebas de campo exhaustivas tal como mencionábamos en las Condiciones de Seguridad Óptimas), que uno desarrollado de forma privada y cuyo acceso es cerrado.
El hecho básico, es que la revisión de código es un aspecto de cuidado en el desarrollo de sistemas informáticos, y los entornos abiertos como Linux ofrecen el laboratorio de pruebas más grande del mundo con miles de programadores de experiencia que trabajan a diario para crear un sistema más consistente.
En este sentido, respecto a la integridad y confiabilidad del código, Linux se avanza día a día a Condiciones de Seguridad Óptimas, en cambio Windows se encuentra (y seguirá encontrándose mientras sostenga su política monopolista) en Condiciones de Seguridad Relativas (porqué quién garantiza la calidad de su código, ¿ellos?, yo también puedo conseguirme un disfraz de batman, tomarme una foto encima del techo de mi casa y luego publicarla por internet diciendo que yo soy batman y que la foto lo garantiza ¿quién sería tan falto de criterio como para creerme?...).
Microsoft se ha visto tentado también a liberar su código para generar confianza a nivel de las entidades y gobiernos con los que tiene contratos, negocios y convenios comerciales, esto no significa que windows es software libre (!!! Dios nos libre !!!), pero es un avance significativo en cuanto a seguridad se refiere (al menos ya no hay que "robarse" el código a Microsoft para probarlo y explotarlo, ahora se lo pueden "robar" a las redes de las empresas y gobiernos que tienen el código disponible!!!).
Este aspecto de comparativa es importante, ya que es transversal a todo el sistema, las ventajas del código abierto se hacen sentir en todos los componentes de Linux, y hacen ver a Linux superior en cuanto a Condiciones de Seguridad, e igualmente, cuando sucede un incidente crítico que se originó en el conocimiento del código fuente, Linux se puede ver inferior a Windows. Sin embargo, bajo el concepto de una comunidad muy amplia de gente con experiencia en el área de la seguridad, el código abierto da una superioridad significativa a Linux frente a Windows, ya que proporciona lo más cercano posible a Condiciones reales de Seguridad Óptima.

2. SEGURIDAD A NIVEL DE LA ARQUITECTURA

La arquitectura de Linux es abierta y de conocimiento público. Se considera modular, multi-usuario, multi-tarea y robusta, y esto es demostrable bajo análisis de código. Windows tiene una arquitectura relativamente modular (en muchos aspectos monolítica), relativamente multi-usuario (ya que por facilidad de uso Windows ha permitido la compartición de ciertos archivos y procesos a nivel de usuario, lo que significa que realmente trata de simular la arquitectura multi-usuario, y no hay una separación definida de los entornos de ejecución de cada usuario) y relativamente multi-tarea (en verdad si existe el multi-proceso, pero es tan caótico que incluso los hackers más sofisticados tienen problemas para localizar y tratar de controlar la ejecución de ciertos procesos... que irónico, como la vez en los Simpson que el sr. Berns se enfermó de todas las enfermedades, lo cual lo hacía "invulnerable").
No hay mucho que decir, en este aspecto, quien decida utilizar o seguir utilizando Windows, que lo haga "en compañía de un adulto responsable" (capaz de "medírsele a todo"). En cuanto a arquitectura se trata, Linux realmente se aproxima a un estado en Condiciones de Seguridad Óptimas, mientras que Windows, le falta mucho por recorrer...

3. INTEGRACIÓN CON APLICACIONES

Debido a su esquema de arquitectura abierta, Linux permite a las aplicaciones integrarse totalmente con las prestaciones del sistema operativo (sistema de señales, procesos, llamadas al sistema, etc.), lo que implica que potenciales fallos de seguridad en alguna aplicación suelen repercutir a nivel del sistema operativo (aún cuando este "no tenga la culpa"). Por otra parte, Windows ofrece una interface de interacción conocida como el API win32, la cual facilita a las aplicaciones interactuar con la mayoría de prestaciones que ofrece el sistema operativo. Además, Windows utiliza un sistema de datos conocido como el registro (al cual puedes acceder ejecutando el regedit), donde se almacena información de registro e inicialización de programas y aplicaciones. Algunos datos son realmente importantes para el sistema, y cualquier corrupción que ocurra en el registro puede dejar el sistema inoperante. El problema con el registro, es que su organización es realmente caótica. Analizando el registro se encuentra información redundante (si quieres desilusionarte de Windows de una vez por todas solo trata de buscar la dirección IP que tu Windows tiene asignada actualmente dentro del registro, es posible que encuentres varias, aún cuando el sistema esté configurado de forma correcta, ¿será esto un accidente??) e información de programas inexistentes (es por eso que con el paso del tiempo, al instalar y desinstalar programas, el registro se "contamina" de mucha información basura que referencia a veces programa que ya no existen en el sistema, el cual al tratar de cargar estos programas pierde eficiencia mientras "se da cuenta" que esos programas no están disponibles... en consecuencia, el sistema operativo suele volverse lento con el tiempo). Muchos virus utilizaban la técnica de registrarse en el registro de Windows para así cargarse automáticamente, y debido a el desorden de este esquema de datos, el registro se constituyó en el lugar/escondite preferido de programas nocivos.
Linux ofrece varias alternativas de interacción, entre ellas, llamadas directas al sistema, interacción con procesos, entornos de desarrollo empotrados [kde, gtk, etc.], y realmente es dífícil estandarizar la forma como las aplicaciones "tienen" que interactuar con el sistema operativo. Por una parte, todo esto representa una desventaja a nivel de seguridad para los entornos Linux. Sin embargo, por otra parte surge el hecho de que la arquitectura modular, multi-usuario y multi-proceso de Linux es demasiado robusta, lo que implica que las aplicaciones deben cumplir ciertas condiciones y restricciones (permisos y privilegios, prioridades a nivel de procesos, etc.) que controlan aspectos serios relativos a la seguridad del sistema.
Podríamos decir que a nivel de instalación e integración de aplicaciones Windows ofrece Condiciones de Seguridad más Óptimas que Linux, pero simultáneamente a nivel de desarrollo de aplicaciones y control de la ejecución de estas aplicaciones dentro del entorno de la arquitectura Linux ofrece Condiciones de Seguridad Relativas mejores que las que ofrece Windows (lo que equivale a un ¡¡empate!!, al menos desde el punto de vista conceptual.).

4. SEGURIDAD A NIVEL DE USUARIO DE ESCRITORIO

Generalmente a los usuarios de escritorio ajenos al mundo de la informática, les parece más sencillo utilizar el esquema "anti-consola" de Windows, aprovechando todas las ventajas de los sistemas de ventanas, menús y botones. Este tipo de usuarios les cuesta un trabajo intelectual aprender Linux, que la mayoría no están dispuestos a pagar. Esta es una de las razones de peso (además de la piratería "abierta") por la cual todavía Windows todavía domina el mercado de las instalaciones "caseras". Este aspecto complica las comparativas de seguridad, debido a que no existe una forma de determinar estadísticas de seguridad confiables, ya que los números se hacen relativos al porcentaje de instalaciones de cualquiera de estos sistemas operativos, mientras un virus "inofensivo" puede contaminar miles de computadores Windows en un par de horas, un exploit en Linux que comprometa la seguridad de una red de diez computadores puede afectar la integridad total del sistema... ¿cuál es más peligroso?, tendríamos que determinar si medimos la seguridad "a lo ancho" (número de sistemas afectados), o "a lo profundo" (compromiso del sistema afectado)... En realidad este tipo de estadísticas son confusas, pero no se pueden menospreciar. Es habitual que debido al desconocimiento de la administración de sistemas Linux por parte de los usuarios de escritorio se encuentren fallos de seguridad [falta de mantenimiento, configuraciones predeterminadas, servicios innecesarios, etc.], que ponen en desventaja a los sistemas Linux frente a los entornos Windows de escritorio.
Tendríamos que afirmar que ambos sistemas se encuentran en Condiciones de Seguridad Relativas, pero debido a la sencillez que ofrece Windows, los usuarios se compenetran más fácilmente con el sistema e ímplícitamente le da una superioridad a nivel de seguridad sobre los sistemas Linux de escritorio.

5. SEGURIDAD A NIVEL DE LOS ADMINISTRADORES DE SISTEMAS

Algo que si es una de las características más atractivas de Linux es que requiere conocimiento. Aún con versiones que buscan competir con la filosofía de Windows de "click derecho y doble click" como RedHat y Mandrake, Linux requiere una comprensión y conocimiento más profundos del sistema, y el conocimiento es poder... El poder de controlar tu máquina y tener la capacidad de decirle exactamente cómo quieres que se comporte... Sí! el funcionamiento de Linux requiere que el usuario/administrador (por lo general con privilegios root) tome el control del sistema y gobierne sobre la máquina. Esta intimidad "hombre-máquina" (que generalmente se refleja en el uso del shell o interfaz de comandos) hace que el administrador del sistema desarrolle prácticas sanas en el uso de los recursos y servicios que ofrece la máquina. En Linux, un error a nivel de administración suele repercutir como una falla significativa de la seguridad del sistema. La mayoría de administradores saben esto, por lo cual es demasiado frecuente encontrar "ojos abiertos" (los del usuario administrador) inspeccionando el funcionamiento de la máquina para comprender cómo hacerla funcionar mejor. En pocas palabras, es obvio que los administradores de sistemas Linux están mucho más compenetrados (y despiertos) con la máquina que los administradores de sistemas Windows, y esto implica adoptar una posición mas protagónica y participativa en el funcionamiento del sistema. Los sistemas Linux te dan la alternativa de controlar la máquina y te comprometen a llevar las correspondientes actividades administrativas que implementan esquemas de seguridad y protección del sistema. Aún cuando administrar la seguridad de un Sistema Linux tiene sus "riesgos de aprendizaje", la administración de la seguridad de un sistema Linux se acerca más a las Condiciones de Seguridad Óptimas que la administración de seguridad en Windows donde todavía estas Condiciones de Seguridad siguen siendo relativas (e incluso teniendo en cuenta que dependen de la (in)capacidad de los administradores Windows, pueden llegar a ser INCIERTAS).
Si la seguridad del sistema dependiera de los administradores, los root's de Linux están por encima (y bastante), lo que equivale a que las Condiciones de Seguridad son más óptimas en Linux que en Windows

6. BUFFER/STACKS/HEAPS-OVERFLOWS

Hasta las hermosas rosas como el código abierto tienen dolorosas espinas... y en este caso, el dolor de cabeza de los desarrolladores y usuarios del código abierto son los buffer/stacks/heaps-overflows. Al tener conocimiento del código, los vándalos informáticos tienen un "manual de referencia" de como dirigir sus ataques de forma "efectiva". Los overflows son formas técnicas para inducir a los programas a que el sistema operativo pierda el control de la máquina y por lo general se explotan forzando al sistema a ejecutar instrucciones maliciosas (código insertado, comandos nocivos, etc.)
En este aspecto, el código cerrado fuerza a que para descubrir un fallo explotable sobre un overflow se tengan que realizar miles de pruebas y validaciones, lo cual implica un gran desgaste de tiempo y una gran capacidad a nivel de recursos. En cuanto a overflows, los sistemas de código cerrado han sido menos vulnerados (no significa que sean realmente más seguros, sino que las debilidades de seguridad no están disponibles de forma pública como sucede con el código abierto, ¿qué tantos fallos de seguridad se reportarían en Windows, si el código fuente estuviera disponible?, tal vez ascenderían en un orden geométrico...), con lo cual podríamos concluir que aún cuando el código cerrado brinda Condiciones de Seguridad Relativas, estas son mejores frente a los ataques por buffer/stack/heap-overflows, resultando en este aspecto Linux relativamente más inseguro que Windows.

7. VIRUS INFORMÁTICOS

Es curioso que aún cuando el código abierto debería facilitar la proliferación de virus en tecnologías libres como Linux, es precisamente Windows quien sufre las penalidades habidas y por haber debido a estos "bichitos informáticos". Existen varios mitos que vale la pena señalizar. Primero que todo: son los hackers que sostienen Linux, los que por denigrar de Windows desarrollan virus por motivos de envidia, y competencia desleal...INCIERTO. Aún cuando para desarrollar un virus que trascienda se requiera una mentalidad técnica alta, un verdadero hacker construye, y no destruye. Además también se puede ser un hacker y comer y respirar Windows (eso es indistinto). Por lo general los desarrolladores de virus suelen trabajar por convicciones personales (aún cuando los gobiernos les atribuyan etiquetas como "terroristas informáticos", etc.) que a veces "solo ellos mismos conocen". Además, la actividad de desarrollo de virus también implica "saber vivir escondido", ya que es penalizada y censurada por muchos. Segundo: las casas antivirus desarrollan virus con el fin de "no perder el negocio"... INCIERTO. Puede que sí, como puede que no. De cualquier manera, si fuera cierto, es obvio que sería mucho mas rentable económicamente desarrollar virus para Windows (donde toca pagarle a alguien para que solucione el problema) que para Linux (donde siempre vas a encontrar alguien que te ayude sin costo, o en el peor de los casos tu podrías solucionar el problema por tí mismo). LA VERDAD: la arquitectura multi-usuario de Linux reduce el entorno de impacto de los virus informáticos. Claro que si hay virus para Linux, pero por lo general, estos virus solo pueden causar estragos en el entorno de ejecución del usuario que se dejó afectar por el virus. En la mayoría de los casos, los usuarios solo tienen ciertos privilegios sobre archivos de su propiedad, y el sistema no se deja infectar a menos que ese usuario tenga privilegios root (lo cual no es raro, pero este tipo de infecciones son demasiado esporádicas). Pero, ¿qué pasa con Windows?,... en verdad Windows no ofrece un entorno multi-usuario real, sino una emulación que permite la compartición de archivos y programas para facilitar la instalación y uso de aplicaciones sin restricciones de permisos de usuarios. En pocas palabras, un virus puede superar fácilmente las limitaciones de entorno de usuario, y ejecutarse con privilegios administrativos (lo que ya es crítico) y en algunos casos como procesos en el anillo de ejecución del kernel (que ya es catastrófico). Es esta la razón verdadera de por qué los virus han tenido un impacto significativo en los entornos Windows. Los virus amenazan a Windows de la misma manera que los buffer/stack/heap-overflows amenazan Linux.
Debido a la robustez de su arquitectura multi-usuario Linux se acerca más a un estado en Condiciones de Seguridad Óptimas que Windows (que gestiona sus usuarios de una forma más sencilla pero deficiente), y esto es lo que hace superior a Linux sobre Windows cuando se trata de virus informáticos.

8. IMPLEMENTACIÓN DE ESTÁNDARES EN SEGURIDAD

En este aspecto tampoco hay mucho que decir. Ambos sistemas operativos implementan estándares en seguridad hasta donde les es posible, además algoritmos de proteccion de conocimiento público. La pregunta es ¿CÓMO LOS IMPLEMENTAN?. Y es ahí donde radica la diferencia, mientras Linux tiene el valor de someterse al escarnio público y se realimenta de las duras críticas y correcciones, Windows sigue propagando su estrategia de desinformación (y es que el hecho no es solamente si la implementación funciona. Cuando se trata de estándares y seguridad, también es relevante el cómo funciona).
A ciencia cierta, casi nadie conoce la forma como Windows implementa los algoritmos y estándares, lo que significa que toca basarse en suposiciones y experiencias del mundo real. En este caso, nuevamente, Linux se acerca más a las Condiciones de Seguridad Óptimas (y tal vez algún día las cumpla), mientras Windows, debido a su tendencia a cerrar el código, estará relegado a la sombra de las Condiciones de Seguridad Relativas.

9. SOPORTE Y MANTENIMIENTO

Esto si es polémico, y es una polémica que Microsoft se buscó gratis. Aún cuando Microsoft ofrezca servicio de soporte y mantenimiento a sus sistemas licenciados, se ha convertido en una leyenda su famoso servicio de actualizaciones recursivas (el parche del parche del parche del parche... casi como una aplicación en modelo multi-fractal... ¿mentiras?). De hecho sus famosos service pack que pesan más que el mismo sistema operativo y vuelve eterna la carga de programas, han generado controversia a tal grado de que uno no sabe si el sistema funciona mejor si se instala o no se instala el nuevo service pack (para la prueba un botón... no sucedió en estos últimos tiempos que una semana después de publicar su último service pack para actualizar su producto estrella -o estrellado- Windows XP, la misma gente de Microsoft tuvo que publicar un script de desinstalación del service pack, ya que en lugar de arreglar el sistema, lo empeoraba -si es que Windows XP puede empeorar en algo-).
¿Qué tiene que ver Linux?... nada. Así el sistema de soporte y actualización de Linux fuera deficiente (que no lo es, y en la mayoría de los casos, esta responsabilidad compromete altamente al usuario/administrador del sistema), no tendría forma de competir en mediocridad con el servicio de soporte y mantenimiento que ofrece Windows.
Definitivamente en cuanto a soporte y mantenimiento, las Condiciones de Seguridad que ofrece Windows dejan de ser relativas para pasar a ser "sospechosas". Esperemos que Linux no siga ese ejemplo (bueno, y creo que nunca lo haría).

10. SERVICIOS DE REGISTRO Y AUDITORÍA

Ambos sistemas ofrecen un sistema consistente de registro de eventos y auditoría, talvez aquí la perspectiva varíe desde el punto de vista del usuario/administrador del sistema. De cualquier manera, talvez los usuarios de Windows gocen de la facilidad de la administración vía interfaz gráfica cuya disponibilidad es ciertamente limitada en Linux.
En este aspecto, el hecho de que por facilidad los usuarios Windows implementen de forma más sencilla un esquema completo de registro de eventos y auditorías le da una cierta ventaja sobre la facilidad/dificultad con que se implementaría este mismo sistema en entornos Linux.
Talvez no sea culpa del sistema operativo, pero si es más "implementable" un esquema de registro y auditoría en Windows, ya que dependemos de la perspectiva del usuario, Windows estaría en Condiciones de Seguridad Relativas mejores que Linux, donde es probable que por el trabajo que cuesta (ya que hay muchos usuarios a los que les cuesta trabajo "pensar") este sistema no se implemente o se implemente de forma ineficiente.

P.D.

¿filosofía anti-güidous?... No. Talvez todo lo dicho anteriormente suene feo (Windows tiene su parte de responsabilidad, ya que su estrategia de desinformación con código cerrado no es ni será nunca una garantía de seguridad), pero es lo que los reportes de seguridad que corren por internet no dicen (¿por qué será?). El hecho es que la seguridad no se puede medir solo basado en estadísticas de incidentes y pruebas de sondeo como si se tratara de una simple encuesta de votos electorales. ES NECESARIO CONOCER LA VERDAD. Y talvez, en términos de Condiciones de Seguridad Óptimas y Condiciones de Seguridad Relativas Linux esté actualemente por encima en varios de los aspectos críticos de seguridad,... lo que también puede cambiar con el tiempo. Nadie (ni este artículo), tiene la última palabra, la intención de este texto es concientizar a los usuarios de aquellas cosas detrás del monitor que también son importantes y que a pocos les gusta atender o escuchar.
Bueno, quedó pendiente mucho por decir, en otra ocasión será. Solo recuerda... "no te dejes esclavizar por la matrix. SÉ LIBRE" by nkt
Para más información: ->Sistemas Operativos. Tanenbaum ->LINUX. Manual de Referencia. R.Petersen. ->Superutilidades Hackers. K.Jones, M.Shema, B.Johnson. ->Claves Hackers en Linux y Unix. N.Dhanjani. ->Hackers en Linux. B.Hatch, J.Lee, G.Kurtz. si necesitas resolver alguna duda, deseas opinar sobre este artículo o te interesaría algún tema en especial, gjurado@unicauca.edu.co / NKT@linuxmail.org