Category: Linux

FLISOL 2007

Esta vez no participé de forma activa en la organización pero si dando una charla sobre Gentoo en el local de la USMP (Universidad San Martin). Como siempre lo pasé excelente, estar rodeado de geeks y gente que recién esta aprendiendo Linux y te hace miles de preguntas es ciertamente estimulante.

Un evento de Linux/Software Libre por mas sencillo que sea siempre es mucho mas divertido que los eventos organizados por multinacionales de software 馃槢

Mis 10 comandos UNIX mas usados

Este meme es bastante interesante, nunca me había preocupado en saber cuales eran los comandos que más utilizo en la consola (y la uso bastante). Para hacerlo solo hay que abrir una consola y escribir el siguiente comando:

slayer@doomguard ~ $ history|awk ‘{print $2}’|awk ‘BEGIN {FS=”|”} {print $1}’|sort|uniq -c|sort -rn|head -10
90 exit
88 ls
87 xinit
86 su
78 emerge
73 cd
69 vim
64 cat
58 cp
42 mplayer-bin

Los mitos de KDE

KDE logo KDE es uno de los 2 entornos gráficos mas avanzados (el otro es Gnome) que tenemos en el mundo del Software Libre. A lo largo del tiempo ha ido destacandose por la calidad de sus aplicaciones y su enorme grado de personalización, lamentablemente siempre ha sido atacado por un grupo de zealots que consideraban que KDE no era un proyecto libre debido a que estaba basado en las librerías QT de la empresa Trolltech que en un principio eran del tipo propietario, pero ya no lo son más.

Para desmentir este y muchos otros mitos ha aparecido una simpática web que invito a visitar: http://kdemyths.urbanlizard.com/

Hping: herramienta de seguridad

Hace buen tiempo mientras buscaba programas alternativos al famoso ping encontré hping y aunque inicialmente no le daba mucha bola, luego resultó ser muy útil para mis labores como sysadmin.

Veo que muchos recomiendan su uso, pero tambien encuentro que mucha gente se desanima porque lo encuentra un poco complicado de usar y prefiere otras herramientas, para aportar mi granito de arena pongo algunos de los usos mas comunes que le doy a hping en mi trabajo diario:

– como simple ping
# hping 192.168.1.1
HPING 192.168.1.1 (eth0 192.168.1.1): NO FLAGS are set, 40 headers + 0 data bytes
len=46 ip=192.168.1.1 ttl=128 id=4143 sport=0 flags=RAF seq=0 win=0 rtt=0.4 ms
len=46 ip=192.168.1.1 ttl=128 id=4144 sport=0 flags=RAF seq=1 win=0 rtt=0.4 ms

Por defecto hping utiliza el protocolo TCP en las conexiones incluyendo en las
cabeceras TCP un tama帽o de ventana de 64 y con puerto destino 0 sin ningun parámetro adicional, si quieres especificar algun paquete ICMP debes añadir -1 y si deseas especificar UDP un -2

Algunos parámetros básicos:
-c --count especificar el n煤mero de paquetes que queremos enviar o
recibir.
-i --interval -iX donde X son los segundos -iuX, donde X son los segundos, que tienen que transcurrir entre el envio de cada paquete.
--fast --faster alias de tiempo para indicar -i u10000. Para enviar 10 paquetes por segundo.
-n --numeric trata la salida de datos como n煤meros, no hace resolución inversa de host, etc..
-I --interface permite especificar el interfaz de red por donde enrutar el tráfico generado.
-D --debug la información que nos aporta el debug nos permitirá identificar errores.
-z --bind asocia la combinaci贸n de teclas Ctrl+z para incrementar o reducir el TTL de los paquetes.
-Z --unbind desasocia la anterior combinaci贸n de teclas

- para ver un puerto abierto
# hping -I eth0 -S 192.168.1.1 -p 80
HPING 192.168.1.1 (eth0 192.168.1.1): S set, 40 headers + 0 data bytes
len=46 ip=192.168.1.1 ttl=100 id=4203 sport=80 flags=SA seq=0 win=8000 rtt=0.5 ms
len=46 ip=192.168.1.1 ttl=100 id=4204 sport=80 flags=SA seq=1 win=8000 rtt=0.5 ms

si el valor de flags es SA (paquete SYN y ACK de aceptación) entonces el puerto esta abierto si por el contrario el valor de flags es RA o RAF el puerto esta cerrado

– para escanear todos los puertos (en el ejemplo que inicie desde el puerto 15)
# hping -I eth0 -S 192.168.1.1 -p ++15

– para escanear un rango de puertos
# hping --scan '15-100' -S 192.168.1.1
si deseas ver las respuestas de todos los puertos inclusive los cerrados agregar -V

– para probar los puertos filtrados en nuestros firewalls, usaremos -S para SYN -A para ACK -F para FIN -R para RCK

# hping -I eth0 -c 1 -S 192.168.1.1 -p 1234
Si se dan cuenta es lo que hicimos hace un momento para verificar si un puerto estaba abierto puesto que todas las conexiones deben iniciar con un paquete del tipo SYN

# hping -I eth0 -c 1 -A 192.168.1.1 -p 1234
Aqui lo que hacemos es enviar un paquete ACK que no nos dirá si el puerto esta abierto, pero si nos indicará que el equipo esta online, asi que el hecho de que bloqueen los paquetes SYN a un puerto no es garantía de que detecten su presencia 馃槈

Y un par mas para ver como responden nuestros firewalls

# hping -I eth0 -c 1 -F 192.168.1.1 -p 1234
Aqui usamos un paquete FIN, que dependiendo de si hay respuesta o no se puede interpretar de distintas formas.
Si hay respuesta debemos obtener un paquete RST/ACK ante un puerto cerrado, si el puerto esta abierto entonces no responderá con nada.
Si no hay respuesta es porque hemos bloqueado correctamente los paquetes FIN o porque nuestro equipo esta down 馃槢

# hping -I eth0 -c 1 192.168.1.1 -p 1234
Aqui sin ningún parámetro para ejecutar lo que se denomina un “null flag” (recuerdan nmap?) como en el caso de FIN si el puerto esta cerrado debemos obtener un paquete RST/ACK y nada si el puerto esta abierto, esto debería funcionar solo a nivel local ya que la gran mayoría de routers bloquean esto.

Pues ahi lo tienen, a verificar sus firewalls 馃榾

Si quieren saber mas sobre hping que es en verdad una herramienta muy completa visiten su wiki: http://wiki.hping.org/

XGL: o como tener un desktop alucinante

XGL es una tecnología desarrollada por David Reveman que es conocido por haber creado Waimea, un window manager. Básicamente XGL es un servidor anidado sobre un servidor X tradicional (el que sirve para dibujar en la pantalla), la diferencia es que XGL usa OpenGL para dibujar todas las cosas, eso quiere decir que en vez de consumir CPU quien se encarga de todo es el GPU (Graphic Procesor Unit), es decir, el procesador de tu tarjeta de video.

Bien, para un novato todo esto puede sonar a chino y ponerlo a funcional no era muy sencillo que digamos… hasta que… los señores de Novell se pusieron a colaborar en el proyecto para mejorarlo y hacer más sencilla su integración y en Febrero del 2006 sacaron un video demostrando las cosas que se pueden hacer con XGL.

Alucinante verdad? en el video se ven efectos que ni siquiera estan pensados en Windows Vista, ahora si hay una alternativa real a los efectos de Mac OS X, incluso para mi estos son mejores.

Todos los que usamos Linux y tenemos una buena tarjeta de video podemos usarlo, asi que los animo a probarlo, para los que usan Gentoo visitar:
http://gentoo-wiki.com/HOWTO_XGL

Bugs en Gentoo

Gentoo como todas las distribuciones de Linux tienen una estrategia para poder recopilar y dar solucion a los “bugs”. Cualquier persona puede descubrir un bug y reportarlo, gracias a la naturaleza del Software Libre ademas de encontrarlo si tenemos los conocimientos necesarios podríamos incluso resolverlos.

Pues bien, hace mucho que no reportaba un bug y me puse a pensar “cu´ntos bugs hay en Gentoo? cuántos se resuelven cada mes?” la respuesta la encontre en los boletines semanales, les dejo algunas muestras recientes:

La comunidad Gentoo usa Bugzilla (bugs.gentoo.org) para registrar y seguir bugs, notificaciones, sugerencias y otras interacciones con el equipo de desarrollo. Entre el 19 de marzo de 2006 y el 26 de marzo de 2006, la actividad en el sitio tuvo como resultado:

* 832 bugs nuevos durante este periodo
* 481 bugs cerrados o resueltos durante este periodo
* 27 bugs previamente cerrados fueron reabiertos durante este periodo

La comunidad Gentoo usa Bugzilla (bugs.gentoo.org) para registrar y seguir bugs, notificaciones, sugerencias y otras interacciones con el equipo de desarrollo. Entre el 12 de marzo de 2006 y el 19 de marzo de 2006, la actividad en el sitio tuvo como resultado:

* 865 bugs nuevos durante este periodo
* 417 bugs cerrados o resueltos durante este periodo
* 20 bugs previamente cerrados fueron reabiertos durante este periodo

Mas de 800 bugs en 1 semana, quiere decir aproximadamente 114 bugs por día, es bueno saber que la aproximadamente la mitad de ellos son resueltos en el mismo período, pero seguimos teniendo casi la mitad sin resolver y esto se va acumulando.

Hacer públicos los bugs es una excelente política, porque asi todos los usuarios son concientes de los problemas que existen; el “secretismo” de muchas compañías de software deriva en no contarle a los usuarios los problemas que tienen y resolverlos en la próxima versión o cuando alguno de los fallos se ha hecho público por parte de 3ros o peor aún la vulnerabilidad ha sido explotada por algun virus/exploit.

El punto es que encontrar un bug es muy sencillo, basta con utilizar un programa y descubrir el fallo, reproducirlo varias veces y luego simplemente reportarlo. El problema viene del lado de la resolución, para poder resolver el bug y crear el parche (patch) es necesario saber programar, tendrás que revisar el código fuente del programa en cuestión y ubicar la rutina que provoca el fallo, luego tendrás que escribir el código que reemplazará las líneas de código del problema, se le envía a los autores del programa y solo queda esperar que publiquen la nueva versión corregida.

Es evidente que la cantidad de gente que puede encontrar bugs comparada con la cantidad de gente que los puede resolver es mucho mayor. Esto quiere decir que si eres programador en alguno de los lenguajes mas usados para las aplicaciones (C/C++) realmente te necesitamos! hay muchos problemas interesantes por ser resueltos.

Por eso hay que destacar la labor de los desarrolladores, no sólo de Gentoo, si no de muchísimas aplicaciones de Software Libre, que hacen un trabajo realmente fantástico y todo por la satisfacción de resolver un problema, esa es la esencia de los hackers 馃榾

Una pc diminuta

Shimafuji SEMC5701 board

Imaginen un cubo de 5x5x4,5 cm con:
– Procesador VR5701CPU de NEC (266Mhz/333Mhz)
– 64 MBytes de SDRAM
– 16 MBytes de flash ROM
– Ranura para tarjetas Compact Flash
– Salida y entrada de sonido stereo
– Ethernet 10/100 Base-T
– USB 2.0
– Salida de v铆颅deo anal贸gico RGB
– Puerto serial

Pues los señores de Shimafuji lo han hecho realidad y lo comercializan por la nada despreciable suma de 1330 dólares. El sistema operativo de esta mini-PC es Linux, trae un kernel 2.6 evidentemente adaptado para el aparatito y trae todo lo necesario para sacar provecho a una PC con esto specs.

La p´gina del producto es Shimafuji SEMC5701 pero esta en japonés, asi que si quieren algo de información técnica y detalles visiten http://linuxdevices.com/news/NS3619879482.html

Visto en: Gizmodo