viernes, octubre 09, 2015

osquery (I)

Hace unos días que he empezado a mirar el software de inventariado osquery. Ha sido desarrollado por Facebook para obtener datos de instrumentación del equipo en el que está instalado a través de consultas similares a SQL. Es el equivalente en el mundo Linux a los sevicios WMI de Window y a WQL. Se trata de software libre cuyo código puede encontrarse en repositorio de Facebook de github. Puede compilarse desde el código fuente o bien bajar algunos de los paquetes que ya están compilados para diversos sistemas operativos.

Instalarlo en caso de OS X (Mavericks) es bajarse el paquete e instalar el correspondiente pkg a través del cuadro de diálogo que nos presenta. Una cosa que me gusta poco es que no hay posibilidad de comprobar una huella o una firma digital de lo que te bajas.

Una vez instalado puede ejecutarse la interfaz en línea de comandos, que recuerda mucho a la de sqlite. Con .help se puede obtener ayuda y con .schema se puede ver las diferentes tablas que se usan para representar las distintas entidades dentro del sistema. Por ejemplo, para obtener los procesos que están corriendo en el sistema. Se pu

osquery> select * from processes;

Pero lo interesante es la potencia que da hacer este tipo de queries a través de un lenguaje similar a sql. Por ejemplo si se quiere obtener el pid, el nombre y el path cuyo nombre sea bash:

osquery> select * from processes where name='bash';

Si se quiere ver los campos que tiene cualquiera de las tablas que representan los conceptos del sistema operativo se puede hacer con .schema tabla. Por ejemplo, las últimas versiones de OS X tienen un mecanismo de protección de aplicaciones llamado sandboxes. Para ver los campos de dicha tabla:

osquery> .schema sandboxes
CREATE TABLE sandboxes(label TEXT, user TEXT, enabled INTEGER, build_id TEXT, bundle_path TEXT, path TEXT);

Cuando se ejecuta osquery de esta manera, sólo se tendrá acceso a aquella información a la que está autorizado a acceder el usuario que lo está ejecutando

En la web del proyecto se puede consultar todas las tablas, tanto las generales como aquellas que son específicas de cada sistema a las cuales se pueden hacer consultas. Como se ve de esta breve introducción es una herramienta muy potente para instrumentalizar sistemas y así poder recoger información sobre los mismos y consolidarla en sistemas de gestión.

No hay comentarios: