martes, 4 de marzo de 2014

Hay o no hay virus en Linux?



El debate sobre los virus informáticos en GNU Linux no es nada nuevo. Cada cierto tiempo pueden leerse noticias, post y comentarios en blogs, como este, y en las diferentes redes sociales sobre el tema. Aquellos que consultan sobre si existen los virus en Linux, cansados por perder información al ser afectado su MS Windows, recibiendo respuestas dispares, en su mayoría de personas que opinan sin saber realmente sobre el tema... En Linux no hay virus porque los creadores de estos programas malignos no pierden el tiempo en hacer algo para un Sistema Operativo que casi nadie usa”.

Primero tenemos que saber a que nos referimos por virus informático, es un software que se copia y se ejecuta automáticamente, y que tiene por objeto alterar el normal funcionamiento de un equipo informático (hoy podemos hablar no solo de la PC o la Notebook, sino también de la Tablet, el Smartphone y hasta de un Smart TV), sin el permiso o el conocimiento del usuario. Para ello, los virus reemplazan archivos por otros infectados con su código.
Para que un virus se instale en nuestro equipo, basta con que ejecutemos un programa infectado siendo un usuario común del sistema operativo. Esto difiere, por ejemplo, de un troyano que requiere que el usuario confirme ciertos procesos necesarios para que se instale, solicitando generalmente tener algunos privilegios.

Lo que realmente define a un virus es su forma de transmisión, o sea, como se reproduce dentro de un sistema o de una red.
Un sistema operativo es más sensible a los virus cuanto más fácil sea desarrollar un mecanismo eficiente y automatizado de transmisión del mismo. Supongamos que tenemos un virus que quiere transmitirse solo, que ha sido lanzado por un usuario normal, de forma inocente, al ejecutar un programa. Dicho virus tiene dos mecanismos de transmisión:
  • replicarse accediendo a la memoria utilizada por otros procesos, anclándose a ellos en tiempo de ejecución. Al infectar estos procesos, que en MS Windows pueden ser los del Sistema Operativo, el virus se transmite a otros programas.
  • abriendo los ejecutables del Sistema de Archivos (File System), y añadiendo su código –payload– al ejecutable. El Sistema de Archivos es el componente del Sistema Operativo encargado de administrar y facilitar el uso de las memorias periféricas y secundarias, como el disco rígido y los pendrives, al infectarse este el virus podrá propagarse al resto de los archivos.
Todos los virus que podemos considerar como tales tienen al menos uno de estos dos mecanismos de transmisión, o los dos, no hay más mecanismos.

Respecto al primer mecanismo, recordemos la arquitectura de memoria de GNU Linux y cómo funcionan los procesadores Intel. Estos poseen cuatro anillos, numerados de 0 a 3; a menor número, mayores los privilegios que tiene el código que se ejecute en dicho anillo.
Estos anillos corresponden con estados del procesador, y, por lo tanto, con lo que se puede hacer con un sistema estando en un anillo concreto. Linux hace uso del anillo 0 para el kernel, y del anillo 3 para los procesos. No hay código de proceso que se ejecute en anillo 0, y no hay código de kernel que se ejecute en anillo 3.
El kernel mediante el uso de la memoria virtual hace creer a cada proceso que tiene toda la memoria para él solo. Un proceso –que trabaja en anillo 3– solo puede ver la memoria virtual que le han configurado, por el anillo en el que opera. No es que la memoria de los otros procesos esté protegida; es que para un proceso la memoria de los otros está fuera del es-pacio de direcciones de memoria que puede utilizar, no sería capaz ni de referenciar una dirección de memoria de otro proceso.
Para que un proceso pudiese tocar la memoria de otros procesos o del kernel, debería ser el propio kernel.
Por ello, la arquitectura de memoria virtual impide este mecanismo de transmisión; ningún proceso –ni siquiera los que tienen privilegios de root– tienen forma de acceder a la memoria de otros.
Podríamos argumentar que un proceso puede ver el kernel; lo tiene mapeado a partir de su dirección de memoria lógica 0xC0000000. Pero, por el anillo del procesador en el que se ejecuta, no puede modificarlo; generaría un trap, ya que son zonas de memoria que pertenecen a otro anillo. Ni siquiera un virus como root puede saltar esta barrera.

En Linux, un proceso puede hacer simplemente lo que le permita su usuario efectivo y su grupo efectivo. Es cierto que existen mecanismos para intercambiar el usuario real con el efectivo, pero poco más. Si nos fijamos donde están los ejecutables, veremos que solamente root tiene privilegios de escritura tanto en dichos directorios, como en los archivos contenidos. Dicho de otro modo, solamente root puede modificar dichos archivos. Esto es así en Unix desde los 70, en Linux desde sus orígenes, y en su Sistema de Archivos que soporte privilegios, aún no ha aparecido ningún error que permita otro comportamiento. ¿Cuántos ejecutables del Sistema de Archivos podría infectar como usuario común? Podríamos verificarlo escribiendo en una terminal lo siguiente:

find / -type f -perm -o=rwx -o \( -perm -g=rwx -group `id -g` \) -o \( -perm -u=rwx -user `id -u` \) -print 2> /dev/null | grep -v /proc

Los archivos de tipo fichero y con privilegios de ejecución que encontraremos no suponen un problema, ya que con frecuencia son enlaces virtuales que constan como que pueden leerse, escribirse y ejecutarse, y si un usuario lo intenta, nunca funciona. Este script puede demorar bastante, pero solo encontrara unos pocos archivos y subdirectorios, que tienen permiso para el usuario, los cuales serian imposibles de infectar.
Por lo que vemos, la única forma de propagar el payload es siendo root. En ese caso para que un virus funcione es necesario que los usuarios tengan siempre privilegios de administrador. En ese caso sí puede infectar archivos. Pero aquí viene la trampa: para transmitir la infección, necesita tomar otro ejecutable, mandarlo por correo a otro usuario que solamente emplee la máquina como root, y que repita el proceso.
En sistemas operativos donde es necesario ser administrador para tareas comunes o para ejecutar muchas aplicaciones diarias, esto sí se puede dar. Pero en Unix es necesario ser administrador para configurar la máquina y modificar los archivos de configuración, así que es escaso el número de usuarios que emplea como cuenta diaria la de root. Es más; algunas distribuciones de Linux ni siquiera tienen habilitada la cuenta de root.
Por ello, en Linux un ejecutable no puede infectar a otros siempre que no estemos usando la cuenta de root como cuenta de uso común; y aunque las compañías antivirus se empeñan en decir que hay virus para Linux, realmente lo más parecido que se puede crear en Linux es un troyano en área de usuario. La única forma de que estos troyanos puedan afectar algo del sistema es ejecutándolo como root y con los privilegios necesarios. Si solemos emplear la máquina como usuarios normales, no es posible que un proceso lanzado por un usuario común infecte al sistema.

Para poder afectar a un archivo en GNU Linux, un virus necesita el privilegio de lectura –hay que leerlo para modificarlo–, y de escritura –hay que escribirlo para que la modificación sea válida– sobre el archivo del ejecutable que quiere ejecutar. Esto es así siempre, sin excepciones. Y en todas y cada una de las distribuciones, los usuarios que no son root no disponen de estos privilegios. Luego simplemente con no ser root, la infección no es posible.

A la pregunta ¿Existen vulnerabilidades en sistemas Linux? la respuesta es ciertamente sí. Otra cosa es la ventana de vulnerabilidad que tiene un sistema Linux que sea actualizado adecuadamente. Si nos preguntamos ¿existen herramientas para aprovechar estos agujeros de seguridad, y explotarlos? Pues también sí, pero eso no son virus, son exploits. El virus debe saltar varias dificultades más que siempre se han puesto como un defecto/problema de Linux por los defensores de Windows, y que complican la existencia de virus reales –kernels que se recompilan, muchas versiones de muchas aplicaciones, muchas distribuciones, cosas que no pasan automáticamente de forma transparente al usuario, etc. Los teóricos “virus” actuales hay que instalarlos a mano desde la cuenta de root. Pero eso no puede ser considerado un virus.

Es cierto que existen antivirus para Linux buenos. El problema es que no hacen lo que los defensores de los antivirus argumentan. Su función es filtrar el correo que pasa de malware y virus para MS Windows, así como verificar la existencia de virus de MS Windows en carpetas exportadas vía SAMBA; con lo que si empleamos nuestra máquina con GNU Linux como gateway de correo o como NAS para máquinas MS Windows, podemos protegerlas.

El principal antivirus existente para GNU Linux es ClamAV. Bajo licencia GPL, compila para la mayor parte de las distribuciones disponibles del mercado. Está diseñado para analizar los adjuntos a los mensajes de correo que pasen por la estación y filtrarlos de virus.
Esta aplicación se integra perfectamente con sendmail para permitir el filtrado de los virus que puedan almacenarse en los servidores Linux que proveen de correo a las empresas; disponiendo de una base de datos de virus que se actualiza diariamente, es un proyecto vivo y muy interesante.
Este potente programa es capaz de analizar virus incluso en adjuntos en formatos más complejos de abrir, como pueda ser RAR (2.0), Zip, Gzip, Bzip2, Tar, MS OLE2, MS Cabinet files, MS CHM (HTML COmprimido), y
MS SZDD.
ClamAV soporta también mbox, Maildir, y archivos de correo en formato RAW, y ficheros Portable Executable comprimidos con UPX, FSG, y Petite.
La pareja Clam AV y spamassassin son la pareja perfecta para proteger a nuestros clientes MS Windows desde los servidores de correo Unix o GNU Linux.


Fuente: Santo Orcero David. (2008). Mitos y realidades: Linux y los virus. Revista Todo Linux, 90, 26-29.

lunes, 16 de diciembre de 2013

¿La vida es un sueño? ¿La realidad es un gran holograma como The Matrix?



The Matrix es una de mis sagas preferidas. Soy Nerd e informático desde muy chico, por lo cual este tipo de películas siempre me han atraído. Matrix, en especial la primera, fue una gran revelación para mi, mezclar el mundo real con el virtual dando una explicación tan interesante ha hecho cuestionarme varias cosas a lo largo de mi vida. En una súper síntesis, la película trata que todo lo que conocemos como realidad es un mundo virtual creado por computadoras, para dominarnos y beneficiarse.

Hace muy poco leí un articulo científico sobre una teoría que expone una explicación de nuestra realidad muy parecida a The Matrix y me gustaría poder comentarla aquí...

El físico teórico argentino Juan Martín Maldacena (como Sheldon de The Big Bang Theory) propuso en 1997 una nueva teoría como modelo para el universo, conocida como Teoría de Cuerdas.

Según Maldacena todas las partículas del universo en su composición más diminuta, mucho más que los electrones o los quarks, estarían construidas por unas finas y vibrantes cuerdas, infinitesimales. Estas cuerdas podrían ser interpretadas de forma físico-matemática, la gravedad se crearía por la vibración de estas cuerdas que podrían existir en diez dimensiones espaciales. El universo que conocemos sería uno creado desde otro universo que sería el real, más simple y mucho más plano y en el que no existiría la gravedad. Algo bastante difícil de entender y sobre todo si no sos un físico cuántico, pero muy interesante, se trataría de una especie de The Matrix pero mucho más complejo y en el que existiría, algo así como, una supercomputadora…

La idea de Maldacena entusiasmó a la comunidad científica, entre otras razones porque resolvía aparentes inconsistencias entre la física cuántica y la teoría de la gravedad de Einstein. Así, el argentino proporciono con su teoría "la clave" para resolver los problemas de un modelo que no se podían resolver en el otro y viceversa. Pero a pesar de la validez de sus ideas aún no se había logrado hallar ninguna prueba rigurosa de su teoría, de la existencia de las cuerdas o de que este universo en realidad es un holograma emitido por otro universo y que nos sumerge en un sueño imaginario…

Según un artículo publicado en la revista científica 'Nature', ahora Yoshifumi Hyakutake, de la Universidad de Ibaraki (Japón), y sus colegas han proporcionado en dos de sus estudios, sino una prueba real, al menos una muestra convincente de que la conjetura de Maldacena es cierta. 

En uno de los estudios, Hyakutake calculó la energía interna de un agujero negro, la posición de su horizonte de sucesos (el límite entre el agujero negro y el resto del universo), su entropía y otras propiedades en base a las predicciones de la teoría de cuerdas, así como a los efectos de las llamadas 'partículas virtuales' que aparecen continuamente dentro y fuera de la existencia. O sea, se realizaron cálculos como si la teoría fuera real y que las cuerdas existieran.

En el otro, él y sus colaboradores calcularon la energía interna del correspondiente universo de dimensión inferior sin gravedad (o sea, en el universo plano he inferior al nuestro). Los dos cálculos informáticos coinciden. "Parece que es un cálculo correcto", dice Maldacena, al tiempo que subraya que los hallazgos "son una forma interesante de demostrar muchas ideas de la gravedad cuántica y la teoría de cuerdas".

Según Leonard Susskind, físico teórico de la Universidad de Stanford, en California."Se ha logrado confirmar numéricamente, posiblemente por primera vez, algo de lo que todos estábamos prácticamente seguros de que era así, pero que todavía no era más que una conjetura sin pruebas. La termodinámica de algunos agujeros negros de nuestro universo puede ser reproducida desde un universo dimensional inferior, pero todavía quedan muchos enigmas por resolverse. Ese Universo dimensional inferior ¿realmente existe? o ¿también sería un holograma en caso de existir?".

Si todo el universo fuese un holograma de energía los seres vivos ¿seríamos también un holograma emitido desde otro universo más simple?, Si en realidad no estamos aquí y todo es un sueño, ¿donde estamos realmente? ¿Cuál es el sentido de que seamos un holograma, algo virtual? Podría seguir escribiendo preguntas hasta enloquecer por no encontrar respuestas, pero mejor se lo dejo a los científicos, físicos cuánticos y demás loquitos que tienen como objetivo explicar cómo es nuestro universo y porque estamos aquí….

Artículo de la revista científica Nature: 

Wiki de Juan Martín Maldacena: 

sábado, 7 de diciembre de 2013

¿Cómo encontrar las aplicaciones y/o herramientas para usar con los alumnos?

Quiero hoy publicar un texto que escribió mi profesora de Practica Docente de la Licenciatura en Tecnologías Educativas de la UTN, Profesora Silvia Perez Sisay:
Quienes participamos del universo virtual, sabemos que herramientas y aplicaciones que nos pueden facilitar la vida, son las que sobran.

En todas sus formas (pagas, gratuitas, libres, en versiones beta, originales, etc.) existe una oferta amplia y abierta de herramientas para trabajar en diferentes ámbitos educativos.

Lo interesante es comenzar a pensar que si la posibilidad de acceso es inmediata, cuáles pueden ser los motivos por los cuáles cuesta tanto la aplicación de estas herramientas en la práctica cotidiana.

Podemos arriesgar algunas respuestas que, seguramente, tendrán sustento en la vida cotidiana de cada uno/a:

  • Lleva tiempo aprender a usarlas y ver como integrarlas en los programas.
  • En las instituciones educativas no hay una cultura de innovación y eso hace que sea difícil integrar estas herramientas.
  • Los alumnos no cuentan con los recursos necesarios para integrarlas en prácticas generales.
  • Implica un proceso de análisis que lleva mucho tiempo, elemento escaso para quienes dictan varias materias/ programas.
  • Requiere de una infraestructura que no está disponible siempre.

La lista puede seguir y, es probable, que sean todas razones válidas y concretas.
Sin embargo, hay un aspecto interesante en este tema y es que las cosas en el ámbito tecnológico difícilmente se hacen en forma planificada, ordenada y correcta.
La mayoría de los grandes hallazgos tecnológicos se han hecho en ámbitos impensados, que llevaron luego a nuevos escenarios de desarrollo.
Si pensamos en el inicio de Microsoft o de Apple podemos darnos cuenta que en el inicio, no hubo una planificación clara de hacia donde iban. Eran un grupo de estudiantes que "jugaron" a hacer emprendimientos de cuestiones que les gustaban/ disfrutaban.
Esto nos puede dar un indicio de cómo podemos comenzar a aplicar estos recursos. Sería fantástico contar con todos los recursos, la posibilidad de planificar y tener el apoyo de directivos y docentes para hacer un proyecto que incluya recursos tecnológicos no tradicionales.
Sin embargo, la realidad nos indica que es muy probable que casi siempre tengamos que trabajar con ambientes adversos. Ya sea por la falta de recursos, por el desinterés, por el desconocimiento o, simplemente, por la omisión, no suelen darse escenarios interesados en implementar innovaciones tecnológicas.

Ahora bien, sucede que cuando "un grupo o un loquito/a" descubre cómo hacerlo, suele tener un efecto transformador y contagia.
Nosotros sabemos que la tecnología nos facilita, acelera y permite crear nuevas realidades. Entonces, contamos con el mejor de los bienes, la convicción de un camino a seguir.
Como dijo alguna vez Albert Einstein "Una mente que se abre a una nueva idea, jamás volverá a su tamaño original."

Entonces sólo nos queda encontrar ese nicho de aplicaciones y/o herramientas que nos invita a usarlas, nos entretiene o simplemente nos divierten. Comenzando casi como un juego, es posible que veamos cómo hacer algo diferente, sin sentir la obligación de innovar.
Casi sin querer y con los ojos de un niño que descubre un nuevo mundo, seguramente podremos construir un camino mucho más interesante que si lo hacemos desde la seria planificación.
Quizá el quitarnos la seriedad de "tener que hacerlo" nos permite construir una práctica de ensayo y error que termina siendo rica en experiencia y sobre todo, genera posibilidades alternativas. 

Sólo para comenzar a conocer este vasto universo de posibilidades, te invito a que leas este artículo, donde podrás conocer algunas aplicaciones interesantes.
Se trata de comenzar a descubrir cuáles son los temas, herramientas y actividades que más te gustan y buscar en esas áreas. 

Lo bueno es que como casi todo es nuevo, nadie nos puede decir qué está bien o mal, hasta tanto no lo hayamos probado.
Esta ventaja nos tiene que dar el espacio para jugar, probar, errar y seguir adelante.
Te invito a construir una mirada "desprejuiciada" y ver cuál es el "intersticio" que vos tenés en tu realidad de todos los días para incluir alguna novedad en la forma en que dictas tus materias / programas.

domingo, 17 de noviembre de 2013

La educación en la Sociedad Digital





La Educación en la actual Cultura Digital o Cibercultura debe idear estrategias que se adapten a este nuevo paradigma dominado por los medios digitales interactivos que han generado la Sociedad Digital, lugar colaborativo y cooperativo donde se construye y comparte el conocimiento. Esta nueva pedagogía debe incorporar la multimodalidad en la alfabetización, favoreciendo el aprendizaje personalizado y cooperativo en red.

El Ciberespacio es el ámbito de convivencia donde se construye y circulan los saberes, de forma fluida y caótica a la vez, interactivamente, transformándose permanentemente. Allí surgen las comunidades virtuales, espacios participativos y colaborativos, donde se remixa y comparte la información y el ocio.


sábado, 9 de noviembre de 2013

Por que hay tantas distribuciones de GNU-Linux?




Buscando por la web encontré esta explicación que les quiero compartir...

Por qué hay tantas distribuciones de GNU-Linux??? Por qué elegir entre Ubuntu, Fedora, Mint, Debian, Red Hat, etc??? No podría haber una sola distribución que sirva para todos???

Parece que nadie lee o entiende la filosofía de este paradigma, de la diversificación.
El porque hay tantas distros es fácil y no se porque nadie lo entiende.

Imaginemos que vivimos en un mundo donde solo unos pocos saben construir casas y algunos mas solo tienen la teoría(interpretar planos, cálculos etc, pero no han ejecutado ninguna construcción), ahora imaginemos que solo existen unas pocas constructoras en el mundo que construye casas, estas constructoras hacen casas pero no dicen como las construyen, no dan a conocer sus planos, ni sus materiales, ni cálculos, solo dan el producto final que son las casas ya construidas (analogía con el software cerrado).

Ahora imaginemos que a alguna persona de este mundo imaginario se le ocurra hacer una casa por su propia cuenta, el sabe algo de construcción, y después de mucho experimentar crea y construye una casa. Quizás es algo básica, pero es una casa, tiene paredes, techo, una puerta y una ventana, y es solida. Esta persona piensa que a alguien mas en este mundo desea construirse su propia casa, entonces el dibuja unos planos, con los cálculos, materiales, etc y los sube a la red para ayudar a otras personas a que creen sus propias casas. En palabras sencillas el comparte su idea con los demás. Entonces la gente que tiene conocimientos de construcción y que quiere construirse una casa empieza a bajar los planos, estas personas encuentran la idea genial, pero como ninguna persona es igual a otra empiezan a modificar un poco el plano, a algunas personas les gusta la casa con 3 ventanas, otra quiere 2 baños, estas modificaciones se las hacen saber al de la idea original para que la idea evolucione . 

Después de un tiempo, se juntan grupos de personas a construir casas mas profesionales, pero como ninguna persona es igual a otra y ninguna necesidad es igual a otra se empiezan a especializar, algunos grupos construyen casas de campo, otras construyen edificios, otros solo hacen casas de 2 pisos, otros hacen solo las paredes, etc, esta es la consecuencia de que una idea sea libre y del porque hay tantas distros de GNU-Linux .

Ahora si bien hay hartas distros, en si el sistema es parecido, la esencia (kernel) es igual en todas.