Monthly Archives: septiembre 2008

¿Mi sistema es realmente seguro?

Es una pregunta que llega a plantearse mucha gente muchas veces, ¿es mi equipo realmente seguro?

Estas preguntas surgen siempre por desconocimiento y, realmente es bueno que nos las hagamos, ya que hay también mucha gente que dice saber y, cuando dicen eso de: “en mi equipo es imposible que entren”; es donde están realmente equivocados.

Nuestros equipos informáticos, en la amplia mayoría, están conectados a Internet. Reciben una cantidad de información muy grande a diario, y envian también mucha información a la red de redes.

Cuando se configura un ordenador, normalmente, se hace conectado a un router. Este tipo de conexión, a priori, hace que sea imposible que un atacante pueda acceder directamente al equipo que está detrás del router. Pero en sí, el router también podría contener algún tipo de vulnerabilidad, con la que pudiera ser saltado, por lo que no nos da una seguridad total.

Por otra parte, no es necesario que entren por ahí, desde tiempos inmemoriales, las mejores tácticas para atacar a alguien, sin que este se diese cuenta y usando el factor sorpresa, han sido con engaños. Los programas que parecen inofensivos y se instalan en nuestro sistema, pueden actuar como el famoso caballo de Troya (y a cuyo nombre deben el suyo propio: troyanos).

Este tipo de malware se encarga de tomar información propia y, normalmente, de convertir nuestro sistema en un zombie.

¿Es nuestro equipo realmente seguro? Depende del uso que le demos, depende de que no se reproduzca contenido recibido de fuentes no seguras y, de que nuestros equipos, si usan Windows, tengan el software preciso y necesario para evitar males mayores.

¿Un sistema GNU/Linux es más seguro? Normalmente sí, pero no es totalmente seguro, debe de mantenerse el mismo cuidado, no visualizar contenido del que se desconozca su origen, y deshabilitar los permisos de tipo ejecución en todos los ficheros “sospechosos”, es una buena práctica.

Filosofía Unix

Desde que comencé en GNU/Linux, sobre el 2002, siempre se ha resaltado la filosofía con la que se fundamentó el sistema al que “copia”, que es Unix.

La filosofía Unix se basa en algunos apartados básicos que todo buen informático debería de emplear en sus desarrollos, ya sea a nivel de sistemas o gestión. El uso de estas directivas, asegura que el trabajo, cuanto más pase el tiempo, más llevadero será.

Las directivas son, básicamente:

  • Escribe programas que hagan una sola cosa y la hagan bien: esto quiere decir que los programas deben de ser lo más atómicos posible y que se compruebe mucho su rendimiento y funcionamiento para hacerlo lo mejor posible.
  • Escribe programas que trabajen juntos: de nada sirve escribir programas que sirvan para una tarea específica y que, después, cuando esa tarea se modifique de cierta forma, haya que reescribir todo el programa. Es mejor dividir el problema en varios programas y después desechar o reescribir solo uno de esos pequeños programas, cuando se necesite, o incluso hacer nuevos.
  • Escribe programas que manejen flujos de texto, pues esa es la interfaz universal: todo lo que se hace con entrada y salida en formato textual es más fácil de enlazar con otros programas, así como reutilizarla en el pasado, presente y futuro.

En estos conceptos se basa la mayoría de software libre que existe, por lo que servidores como sendmail o postfix, se basan en pequeños servidores y/o programas que hacen partes de todo un proceso y, mediante sus ficheros de configuración, se pueden enlazar de una u otra forma, así como usar otros programas y/o servidores en lugar de los que vienen por defecto y, así, extender su funcionalidad.

Sobre filosofía Unix, de una forma más extensa, Mike Gancarz, escribe las siguientes líneas:

  • Lo pequeño es hermoso.
  • Haz que cada programa haga una sola cosa, pero que la haga bien.
  • Construye un prototipo lo antes posible.
  • Elige portabilidad sobre eficiencia.
  • Guarda los datos en archivos de texto plano.
  • Aprovecha funcionalidades del software.
  • Usa scripts de shell para aumentar la funcionalidad y portabilidad.
  • Evita interfaces de usuario captivas.
  • Haz de cada programa un filtro.

Esto no quiere decir que lo realizado sobre interfaces gráficas sea malo, o no respete estas premisas, puesto que muchas de estas interfaces hacen uso de programas que sí respetan al máximo estas premisas y que, favoreciendo la penúltima directiva escrita por Mike, permiten ver los comandos que ejecutan, junto con todos los argumentos.

Concluyendo, pensemos que el trabajo que se realiza día a día, no solo ese software que programamos por amor al arte, debe de sernos de utilidad, no solo en el momento en que nos lo piden para solucionar un problema dado, sino como “caja de herramientas” para la solución de miles de problemas que se deban de resolver en un futuro, quizás no muy lejano :-)

Vía: La filosofía UNIX

Inteligencia de Negocio

Le he estado dando vueltas hoy a herramientas de Business Intelligence (Inteligencia de Negocio) tales como Pentaho y ver cómo están estructurados todos los departamentos de negocio que he visto en muchas empresas.

La valoración, en comparación con talleres de coches, sería que estas empresas trabajan con mucho personal debido a que las herramientas son viejas, escasas y hay que usar muchas para tareas que parecen muy complejas. Mientras que los talleres con herramientas de BI, son talleres con las herramientas precisas que les permiten llevar a cabo una labor cotidiana de forma fácil y efectiva.

El desarrollo de software y, sobre todo, el encargado a la lógica de negocio, avanza cada día, y cada día hay más herramientas que facilitan el desarrollar herramientas de administración, informes, estadísticas y más, sin necesidad de ponerse a desarrollar arduamente y encontrarse con que se acaban los recursos de hardware o que un software desarrollado no es útil porque tarda demasiado tiempo y consume muchos recursos de la máquina.

Aconsejo encarecidamente a la lectura de definiciones como OLAP para sacar mejor rendimiento a los almacenes de datos, creación de informes y generación de estadísticas.

Cloud Software

Con este título, comienza a surgir una tendencia a usar más servicios en web. Esto viene acompañado de la liberación hace unos días de Google Chrome, el cual, aseguraban muchos expertos que no hace la competencia a Internet Explorer, Safari o Firefox, sino que se la hace a Windows.

Esto viene determinado porque el navegador se ha convertido en todo un sistema operativo en el que se ejecutan aplciaciones que se cargan de forma remota. Lo que ya habían visualizado hace años Sun con el uso de sus paquetes en forma de nombre de dominio y otros… pero de una forma mucho más transparente.

En el navegador web, solo hay que poner una dirección web (URL) y con ello se puede acceder a un software con el que se interactúa para: leer el correo (Gmail, Yahoo!, Hotmail…), tener la agenda de contactos (en los mismos webmails), escribir diarios (blogs como Blogger), organizar las fotos e imágenes (fotoblogs o galerías tipo Flickr)… e incluso tener acceso a bancos, tiendas, el Estado…

Microsoft ultima su Office Online, junto con aplicaciones de tipo Office que ya tenía en uso Google mediante Google Docs, y con ello, con todo en Internet, ¿qué más da ejecutar un Windows, GNU/Linux, MacOS X…?

Despide a tu jefe

Hoy he leído en el blog de Enrique Dans (le he dejado un comentario también ;-) ), que hay un artículo (en inglés) que habla sobre cómo prepararse para la crisis, haciendo lo que realmente pueda ayudar a una empresa recortando por arriba.

La idea base es despedir al encargado de tecnología, por los motivos de que es solo un despido de una nómina que sí se notaría en el balance económico de la empresa y, también, porque este tipo de perfiles en la empresa, tiende, con el tiempo, a separarse de la tecnología, a no entender las nuevas tendencias y a “encasillarse” en las viejas tecnologías de los 80 y 90, porque le han funcionado de forma estable siempre.

Muchas empresas, para acortar la crisis, están comenzando a optar por no adquirir software propietario, sino que invierten en software libre (emrpesas que lo mantienen y dan soporte) y cloud software, o software vía Internet, que consta de que el software que se usa no se adquiere, sino que se usa en un servidor de otra empresa, con la que se contrata un servicio de uso del mismo.

También hay que tener en consideración que no todos los jefes son iguales, y con esto quiero decir que, la regla de despedir al jefe, no debe de aplicarse a diestro y siniestro sin miramientos, sino que debe de ajustarse a una serie de pruebas, como exámenes de capacitación, tests sobre nuevas tecnologías, etc.

HP quiere su propio S.O.

se ve que tanto tiempo vendiendo licencias de Microsoft en sus equipos, le ha hecho a este gigante de la venta de hardware, replantearse si vender sus equipos con Windows, y sobre todo con Vista, es buena idea.

La idea que tienen es desarrollar algo simple para el usuario, basado en GNU/Linux, por lo que supongo que será algo así como Ubuntu, solo que mucho mejor soporte de hardware para los equipos HP con los que se venda.

Nada dura eternamente y, se ve que, la hegemonía en ventas del sistema operativo más criticado, tanto positivamente como negativamente, del mercado, llega a su fin. Ya veremos si consiguen o no levantar el vuelo con Windows Seven, o se convierte en otro fiasco.

Vía: TechTear y en inglés BusinessWeek.

Microsoft no es ingeniería, sino comercio

Uno de los grandes avances que ha conseguido Bill Gates no ha sido como informático, como muchos creen, sino como comercial.

Microsoft ha sido, quizás, una de las más grandes empresas de software que más se han basado, para sus grandes proyectos, en software adquirido a otras empresas. Con lo que los desarrollos propios, son pocos.

En la wikipedia se puede ver la lista de empresas que ha adquirido Microsoft a lo largo de su historia, y en la que se pueden ver dónde comenzaron ciertos productos.

Esto da una idea del porqué los productos de Microsoft, en el momento de salir, son frescos, parecen buenos, pero parece como si se fuesen marchitando e, igualmente, el porqué de la necesidad de reescribir Windows desde cero varias veces.

PHP no es para todo

La popularización de los lenguajes de programación, hace que muchas veces, una aplicación que se desarrolló en otro lenguaje, sea portada a ese nuevo lenguaje, para demostrar su potencia, sencillez o capacidades.

Algunas veces, esos nuevos lenguajes, resultan ser muy buenas herramientas que nos permiten trabajar más rápido sin necesidad de centrarnos mucho en problemas típicos y ya salvados desde hace tiempo (como las cadenas de texto y los tamaños de memoria han sido un gran problema a la hora de escribir programas en C/C++).

Lenguajes como Perl, PHP, Python, Tcl, Ruby… son lenguajes que no requieren de compilación, tienen un nivel de programación muy alto y no suelen estar ligados a una plataforma concreta, con lo que el mismo código puede ejecutarse sin problemas en otras plataformas (Windows, GNU/Linux, BSD…), su código es muy fácil de escribir y, en pocas líneas, se hacen muchas operaciones.

No obstante, cabe recordar que, los lenguajes que se escriben con particularidades específicas y especiales, suelen servir de forma muy óptima y potente a esas particularidades, pero de forma contraria, e incluso ser un lastre, en otros entornos de la programación.

Como ejemplo, tal y como dice el titular, PHP, que nació para la web, ahora se emplea como lenguaje de scripting para la consola e incluso con GTK para generar scripts fáciles que permitan automatizar el equipo. Pero, PHP no es para todo, y con esto quiero decir que PHP tiene sus pequeñas limitaciones.

Una aplicación en GTK o en un entorno de ventanas, por ejemplo, debe de tener capacidad multihilo y capacidad para compartición de memoria entre dichos hilos. PHP carece de ello. Es normal, la web no requiere estos mecanismos.

Al igual que para la rápida detección de ciertos tipos de texto y conversión de formatos o cálculo de datos en formato CSV se ha empleado siempre Perl, y ahora se comienza a emplear también Ruby, en línea antecesora del uso de herramientas dispersas como sed, awk y shell script. PHP también se emplea para estos cometidos, pero no es óptimo para ello, puesto que su núcleo de ejecución no está optimizado para una sola ejecución, sino para una repetición de ejecuciones secuenciales y/o paralelas.

Si comparamos la velocidad de ejecución de PHP y Perl, veremos que Perl se ejecuta casi tan eficientemente como C, puesto que está pensado para tareas de administración de sistemas y automatización de tareas, mientras que PHP no requiere de ello para su tarea cotidiana, que es la web, donde el intérprete de PHP no tiene que cargarse en cada ejecución, sino que permanece cargado a espera de ser llamado.

Pero, al igual que PHP no es para todo, los demás también tienen sus limitaciones. Por ejemplo, Perl se ha usado históricamente como CGI, mientras que Perl no es óptimo para la web en sentido de que PHP es más rápido en este contexto (gracias a técnicas de caché y aceleradores que se integran en el motor de Zend), más fácil de desarrollar y mantener.

Interfaz Natural con el Sistema Operativo

Hace tiempo leí a alguien que se había frustrado porque consideraba que la interacción ratón-gráficos no era algo tan natural como pedir en palabra, tecleando en consola, lo que se quiere hacer a la máquina.

En esto considero que los videojuegos nos llevan ventaja en lo que será el manejo de un sistema operativo en el futuro, ya que se pasó de un modo de aventura gráfica en la que había que escribir la acción a realizar y probar y probar hasta dar con la frase adecuada… a un modo más preciso y cerrado de elección de frases que el personaje pudiese decir.

Todo se mueve hacia el ratón, pero no nos damos cuenta de que es porque el movimiento de nuestra mano se sincroniza con el puntero de la pantalla. Quizás sería más cómodo mover la mano directamente por la pantalla, por una pantalla táctil, de modo que el movimiento real de la mano fuese la que guiase ese puntero y, dado el caso, quizás el puntero no se requiriese ya.

No obstante, el manejo de este sistema sería muy cansado, dado que tener las manos extendidas sobre una superficie vertical, no es ergonómico para nada.

Microsoft sacó un aparato que se parece a lo que puede llegar a ser considerado como comunicación o interfaz natural con un sistema informático. Se toca con la mano, tiene una superficie donde, con solo colocar el móvil, el MP3 y otros dispositivos (supongo que solo Bluetooth y/o WiFi), se conectan y permiten ver su contenido.

Pero más allá de tener que interactuar con una fría superficie, ahora nos proponen moldear nuestro entorno… un sistema holográfico “táctil” que reacciona e interactúa con nuestros movimientos. No obstante, la escritura de textos debe de realizarse mediante tecnologías de reconocimiento del habla para que resulte lo más natural. Mientras hablamos, nuestras manos van colocando el texto a partir de donde queremos que comience la siguiente frase y, si es un email, en caso de no querer guardar la voz para reenviarla, se puede hacer que el sistema lea, a viva voz, por un sistema de lectura, la carta recibida.

Por otro lado, la programación y administración de sistemas pueden aún requerir de algún tipo de teclado específico, o un conjunto de funciones en pantalla que poder presionar mientras se habla e interactúa…

Quizás hayamos llegado a la conclusión de que los sistemas informáticos no son naturales, sino artificiales, que cuesta habituarse a ellos, pero que, intentar cambiarlos, puede ser más complicado que el habituarse, por lo que todos estos avances, quizás sean más útiles y fructíferos para las siguientes generaciones, que para nosotros mismos.