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