sábado, marzo 31, 2007

El mando de la Wii y MacOS X

El otro día un compañero de trabajo se llevó un mando de la WII, el Wiimote al curro. Me comentaba que este utilizaba bluetooth para comunicarse con la consola. Total, buscando un rato he encontrado varios enlaces para utilizar el mando en diferentes sistemas operativos. Por ejemplo, tenemos este enlace donde se describe técnica el mando. Como usa el bluetooth, diferentes enlaces con drivers para otros sistemas.

He estado probando Darwiinremote que permite controlar el ratón, ver el estado de los botones o activar los leds que tiene el mando. Ofrece también información sobre los acelerometros que tiene el mando. Y es de fuentes abiertas, permitiendo curiosear por el código.

Technorati Tags:

viernes, marzo 30, 2007

SPADE y Snort 2.6.x

Snort es un IDS - sistema de detección de intrusiones - con el que he estado trabajando últimamente. Al estar trabajando en un despliegue existente de Ossim, el cual utiliza Snort como IDS, pero en su versión 2.4.x. Esta lleva integrado SPADE, un preprocesador que se encarga de detectar anomalías en el tráfico. SPADE es un proyecto creado originalmente por James Hoagland de Silicon Defense, pero que desapareció hace tiempo. Total, no es que esté muy mantenido, pero al menos las fuentes del trabajo en cvs están SPADEdisponibles. Con un poco de paciencia, y dado que el código de SPADE es bastante modular, decidí ver si era capaz de añadirlo a la versión actual de Snort, cosa que resultó muy sencilla. He hecho un parche que aplicado a la versión actual de Snort (2.6.1.3), permite añadirle SPADE. Eso sí, el código de SPADE no está auditado tanto como Snort. He probado si el funcionamiento es correcto y genera alarmas de manera adecuada, y parece que todo OK. No hay que olvidar consultar el Usage.spade para ver como se configura el preprocesador. Si tengo algo de tiempo, escribiré una anotación sobre el tema.

Technorati Tags: ,

lunes, marzo 26, 2007

Apple TV Hacks

Desde que Apple sacó a la venta el AppleTV, empezaron a salir rumores de su arquitectura interna y el sistema operativo que utiliza. Confirmado que utiliza una versión comprimida de MacOS X, no ha tardado mucho en empezar a salir sitios donde comentan trucos a usar con el aparato. Un ejemplo de uno de ellos es AppleTVHacks.

Entre otros trucos que se ha publicado tenemos activar el ssh,activar el remote apple desktop o activar el Apache. Aunque no tenga soporte de teclado, no está mal para este pequeño ordenador. Supongo que usando las instrucciones para actualizar el disco duro a uno de mayor capacidad, e instalando algún software P2P y el ¿VLC?, se podría tener una setup box muy curiosa :)

Technorati Tags: ,

Yahoo Pipes y Macro.scopia

(vía Microsiervos) Hace no mucho leí la anotación en Microsiervos que hacía referencia a Pipes, una herramienta de Yahoo que permite manipular flujos de datos construyendo visualmente los bloques, y luego Macro.Scopia, una simular realizado por una empresa española.

Me he registrado en Pipes para probar las posibilidades que tiene. Cuando entramos en la edición se nos muestra una pantalla con los diferentes elementos que podemos incorporar a nuestra pipe:

Se pueden seleccionar varias fuentes de información (ya sean feeds RSS, campos introducidos por el usuario, resultados de una búsqueda en Yahoo, en Flirck), para posteriormente filtrarla, manejarla y mezclarla para conseguir lo que se está buscando. Una vez realizada una pipe, se puede publicar para que la utilicen otros usuarios, podemos conseguir un enlace RSS a la misma.

Se permiten diversos elementos de programación (foreach, expresiones regulares, filtros en función de las palabras, ordenar, funciones de manejo de fechas y cadenas), todo ello de manera visual, con bloques que se van arrastrando al espacio de trabajo, y se van conectando entre ellos, desde las fuentes de información que usamos, hasta conseguir el resultado buscado.

Technorati Tags:

miércoles, marzo 21, 2007

Conferencia sobre ReactOS

(vía Slashdot). El sistema operativo ReactOS pretende ser una implementación de sala blanca de los sistemas operativos de Microsoft basados en el kernel de NT. Hace poco uno de los principales programadores ha dado una conferencia sobre como es la arquitectura interna del mismo. Las transparencias de las charlas puede encontrarse aquí en pdf.

De las transparencias:

  • Actualmente el kernel es casi totalmente compatible con el kernel de Windows 2003 SP1.
  • Las librerías que depende de la parte de usuario están tomadas en su mayoría del proyecto Wine.
  • El soporte de drivers (incluyendo sistemas de ficheros) no es está maduro.
  • El diseño del kernel de ReactOS es similar al de NT (una capa que aísla el hardware - hal - y otra con el kernel en sí mismos ntoskrnl -).

viernes, marzo 16, 2007

Notas de la instalación de OSSIM (I)

Puesto que últimamente estoy trabajando con OSSIM, he estado probando como instalar el sistema desde las fuentes. Aparte de la documentación que hay colgada en el wiki, os paso algunas notas que he ido tomando al instalarlo (aunque no lo he probado a fondo la instalación que he hecho). Estas notas están tomadas de los pasos que he ido dando tras seguir la documentación del wiki y los ficheros README.* incluidos en el proyecto.

Para compilar el sistema en una Debian Etch - a día de hoy la distribución testing de Debian. Aunque me faltan partes por instalar (por ejemplo el AcidBase).

Los pasos que seguí fueron los siguientes:
Instalar los siguientes paquetes:

Paquetes necesarios para compilar el server:

apt-get install libglib2.0-dev
apt-get install libgda2-dev
apt-get install libgnet-dev

Paquetes necesarios para que el framework de web funcione:

apt-get install apache2
apt-get install php4
apt-get install mysql-server
apt-get install python
apt-get install perl
apt-get install gda2-mysql
apt-get install phpgacl
apt-get install php4-mysql
apt-get install php4-domxml
apt-get install libphp-adodb
apt-get install php4-gd
De todos estos paquetes, el único que necesita un tratamiento especial es phpgacl, puesto que OSSIM utiliza su propia base de datos para guardar las acl. El paquete Debian que se instala por defecto pedirá una base de datos, mejor saltarse la configuración y configurar manualmente

Una vez instalado los paquetes seguimos los clásicos pasos de:

./autogen.sh
./configure --prefix=/usr/local
make
make install
Esto nos instalará todo el proyecto de OSSIM.

Ahora se crean las bases de datos que va a usar el proyecto (de momento sólo usamos mysql como base de datos).

terron@ossim-devel:~/proyectos/ossim/os-sim$ mysqladmin -u root -p create ossim
Enter password: 
terron@ossim-devel:~/proyectos/ossim/os-sim$ mysqladmin -u root -p create snort
Enter password: 
terron@ossim-devel:~/proyectos/ossim/os-sim$ mysqladmin -u root -p create ossim_acl
Enter password: 
En este caso vamos a suponer que el usuario con el que vamos a acceder al a base de datos es root, aunque no debería usarse el usuario de administración, sino crear un usuario, darle permiso en las bases de datos anteriores y configurar con los mismos. Ahora creamos los esquemas de las distintas tablas, con los scripts que hay en la distribución:
terron@ossim-devel:~/proyectos/ossim/os-sim$ cat db/create_mysql.sql db/ossim_data.sql db/ossim_config.sql db/snort_nessus.sql db/realsecure.sql | mysql -u root -p ossim
Enter password: 
terron@ossim-devel:~/proyectos/ossim/os-sim$ cat contrib/acid/create_acid_tbls_mysql.sql contrib/snort/create_snort_tbls_mysql.sql | mysql -p -u root snort
Enter password:

Ahora debemos de crear los alias en el Apache para que la zona web, apunte a la situación de la web. Lo más cómodo es crear un fichero ossim.conf y colocarlo en /etc/apach2/conf.d, posteriormente parando y arrancando Apache de nuevo para que tome los cambios. Por ejemplo este es un ossim.conf para colocar el alias y permitir el acceso sólo a las IP del rango 192.168.1.0/24, y con OSSIM instalado en /usr/local.

Alias /ossim "/usr/local/share/ossim/www"
<Directory "/usr/local/share/ossim/www">
    order deny,allow
    deny from all
    allow from 192.168.1.0/24
</Directory>

Ahora hay que editar el fichero php.ini para incluir en las rutas de búsqueda con los ficheros de clases de OSSIM:

include_path = ".:/usr/share/php:/usr/local/share/ossim/include"

Configurar el fichero /etc/ossim/server/config.xml con las entradas para la conexión a la base de datos. Por ejemplo, este es el conjunto de conexión a la base de datos

...
<datasource name="ossimDS" provider="MySQL"
dsn="PORT=3306;USER=root;PASSWORD=clave;DATABASE=ossim;HOST=localhost"/>
<datasource name="snortDS" provider="MySQL"
dsn="PORT=3306;USER=root;PASSWORD=clave;DATABASE=snort;HOST=localhost"/>
...

Se debe configurar también el framework, en el fichero /etc/ossim/framework/ossim.conf. Hay que configurar las conexiones a la base de datos, las rutas a phpgacl y adodb. Por ejemplo

...
data_dir=/usr/local/share/ossim
base_dir=/usr/local/share/ossim/www
ossim_interface=eth0
ossim_link=/ossim/
adodb_path=/usr/share/php/adodb/
...

ossim_type=mysql
ossim_base=ossim
ossim_user=root
ossim_pass=clave
ossim_host=localhost
ossim_port=3306
...
phpgacl_path=/usr/share/phpgacl/
phpgacl_type=mysql
phpgacl_host=localhost
phpgacl_base=ossim_acl
phpgacl_user=root
phpgacl_pass=clave

Ahora debemos de configurar phpgacl. Lo más cómodo es editar el fichero /etc/phpgacl/gacl.ini.php e introducir los datos de conexión a la base de datos:

db_type = "mysql"
db_host = "localhost"
db_user = "root"
db_password = "clave"
db_name = "ossim_acl"
Al igual que en el caso anterior, está usando el usuario root para la configuración. Ahora debemos de forzar la creación de las tablas adecuadas de pgpgacl. Para ello, se debe ejecutar el siguiente script web:
http://ossim_server/ossim/setup/ossim_acl.php

En este punto tuve algunos problemas, puesto que me pide que reconfigure primero el pgpgacl - para que cree las tablas - y posteriormente volver a ejecutar el script php de OSSIM para que introduzca los objetos.

En principio podemos arrancar el server para probarlo con:

/usr/local/bin/ossim-server
Y podemos acceder a la web del framework con:
http://ossim_server/ossim/

Hasta aquí la primera parte de las notas que he ido tomando.

Technorati Tags:

miércoles, marzo 14, 2007

Libro de Seguridad gratuito: Handbook of Applied Criptography

(vía fernand0) El libro Handbook of Applied Criptography escrito por Alfred J. Menezes, Paul C. van Oorschot y Scott A. Vanstone se ha colgado en web en formato ps y pdf para su descarga. El editor, CRC Press, ha dado permiso para que se pueda descargar. Puede verse más información en la página del libro.

Chapter 1 - Overview of Cryptography pdf
Chapter 2 - Mathematics Background pdf
Chapter 3 - Number-Theoretic Reference Problems pdf
Chapter 4 - Public-Key Parameters pdf
Chapter 5 - Pseudorandom Bits and Sequences pdf
Chapter 6 - Stream Ciphers pdf
Chapter 7 - Block Ciphers pdf
Chapter 8 - Public-Key Encryption pdf
Chapter 9 - Hash Functions and Data Integrity pdf
Chapter 10 - Identification and Entity Authentication pdf
Chapter 11 - Digital Signatures pdf
Chapter 12 - Key Establishment Protocols pdf
Chapter 13 - Key Management Techniques pdf
Chapter 14 - Efficient Implementation pdf
Chapter 15 - Patents and Standards pdf
Appendix - Bibliography of Papers from Selected Cryptographic Forums pdf
References pdf
Index pdf

jueves, marzo 08, 2007

Túneles ssh y Proxys

A veces, es necesario salir por ssh a alguna máquina en el exterior desde una red en la que se está trabajando. Muchas veces, el acceso que se dispone no es más que http o https, y sólo a sus correspondientes puertos (80/tcp y 443/tcp). A partir de estas necesidades han salido productos (por ejemplo Connectra de Checkpoint o OpenVPN - por nombrar un producto de soft libre -) que permite el acceso a través de SSL a otras redes.

Sin embargo, no siempre ni tenemos licencia ni tenemos acceso a estos productos, y simplemente deseamos llegar a nuestro ADSL de casa para dar un salto hacía otra máquina o leer nuestro correo. Además, en caso de usar conexiones dinámicas en nuestro ADSL, siempre podemos utilizar un servicio que nos permita tener un nombre de máquina y que se actualice conforme cambie la dirección IP de nuestro ADSL.

Una configuración sencilla - siempre que dispongamos de un Unix con el deamon de ssh corriendo - es usar túneles ssh con Openssh y corkscrew. Este último programa lo que hace es tunelar la conexión ssh a través de un proxy http - puede soportar autentificación básica http, aunque no soporta NTLM, lo que limita su uso en entornos que usen esta autentificación de Microsoft -.

Lo que se hace es aprovechar la opción ProxyCommand del ssh que ejecutará el programa que le digamos, y se encargará de conectarse al site por el proxy - en este caso corkscrew -.

Así, se crea un fichero ssh.proxy.config que se puede usar para este tipo de conexiones:

ProxyCommand /usr/local/bin/corkscrew proxy puerto %h %p Port 443
%h y %p es la información que pasará el proceso ssh con el host y el puerto a usar, puerto es el puerto del proxy y proxy es la dirección ip del mismo. En este caso he añadido que use para conectarse el puerto 443, puesto que no se permite la salida por el proxy a destinos distintos de 80 o 443).

Siempre se puede usar el pppd en un momento dado para establecer una interfaz virtual a través de la conexión ssh, abriendo efectivamente Internet a través del proxy, que en principio, sólo nos dejaba usar http o https.

Technorati Tags: ,

lunes, marzo 05, 2007

Backups de MySQL

Normalmente para realizar backups de mysql se usa el comando mysqldump (aunque con tablas de tipo MyISAM, se podría usar mysqlhotcopy). Lo que hace esta utilidad no es más que volcar una serie de comandos SQL que permita reconstruir las tablas y los datos de los mismos, volcándolos normalmente por la salida estándar.

El problema de realizar copia de bases de datos es que debe de obtener una versión coherente de los datos de la misma. Si se está usando con MySQL tablas de tipo innodb, se puede usar ciertas instrucciones para sacar una imagen coherente de la BBDD. La opción es --single-transaction. Esta orden emite un BEGIN SQL, de tal manera, que obtiene toda la información coherente desde que empezó, y además evita bloquear otras operaciones sobre las tablas, y además hacerlo de manera online.

Además, es interesante usar la opción -q, de tal manera que no se traiga todos los row sets desde el servidor a la vez, sino que se va trayendo fila a fila los datos. Según el manual de MySQL es la manera más eficiente cuando estamos usando tablas muy grandes.

Una funcionalidad que desconocía era en log de transaciones que almacena MySQL, al menos en la versión 5.x. MySQL si se arranca con la opción --log-bin[=base_name] almacena todos los comandos que modifican datos. Este fichero es binario, puede usarse mysqlbinlog para transformarlos a comandos SQL (aunque este log binario no se sincroniza automáticamente en disco, puede producir incoherencias).

Technorati Tags:

jueves, marzo 01, 2007

Cocoa y Mysql: Frameworks

Estaba buscando información sobre librerías (frameworks) para usar con mysql en MacOS X, pero que soportara Cocoa, el entorno de Objective-C. En primer lugar he visto mysql-cocoa, un framework desarrollado por Serge Cohen. El framework viene en dos versiones: una preparada para instalarse a nivel de sistema (para que la puedan utilizar todos los programas) y otra preparada para ser incluida en una aplicación - y por tanto para uso exclusivo de ella -.

Por otra parte otra cosa es la gestión de la base de datos. Aunque suelo usar sin ningún problema la línea de comandos de MySQL de vez en cuando me apetece algo más elaborado (siempre me gustó bastante las interfaces MMC que ofrecía el SQL Server). Así he encontrado CocoaMySQL. Aquí tenéis una captura tras conectarme a una base de datos de OSSIM:

MysqlCocoa

Desde el panel principal,se puede manejar diversas bases de datos, cuando se selecciona una, nos muestra las diferentes tablas que tiene. En el panel central, se puede elegir cuatro cambios principales: Structure (Estructura de las tablas), Contect (contenido), Custom Query ( si queremos hacer una query personalizada).

En este último punto podemos guardar querys predefinidas, para poderlas ejecutar más tarde, lo cual es bastante cómodo de usar.

Eso sí, una cosa que no me gusta demasiado es que se queda bloqueado en caso de querys largas, debería de tener que dar cierta realimentación sobre lo que está haciendo.

Technorati Tags: ,