ASET

ASET (Automated Security Enhancement Tool) es un conjunto de herramientas integradas dentro de Solaris que permiten monitorizar ciertos valores de parámetros de los ficheros del sistema, desde atributos ubicados en los inodos (permisos, propietario...) hasta el contenido de cada archivo. Estas herramientas se encuentran en el directorio /usr/aset/, y su utilidad es evidente: permite detectar cualquier cambio en uno de nuestros ficheros, cambio que si no ha sido realizado por un usuario debidamente autorizado puede esconder desde un troyano hasta una puerta trasera de entrada al sistema.

De todas las utilidades de que dispone ASET, la más importante es sin duda /usr/aset/aset, un shellscript encargado de invocar al resto de herramientas. Desde línea de comandos, este programa puede recibir como parámetro el nivel de seguridad deseado en la comprobación: `low', que se limita a informar de las vulnerabilidades potenciales, `mid', que modifica ciertos parámetros que considera incorrectos, y `high', el más restrictivo, que modifica más aún dichos parámetros, y que es recomendable en sistemas en los que la seguridad de Solaris sea un elemento por encima de cualquier otro, como el funcionamiento; incluso en la página man de aset se advierte que algunas aplicaciones pueden dejar de funcionar si utilizamos este nivel de seguridad.

Podemos invocar a /usr/aset/aset indicándole mediante el parámetro `-l' el nivel de seguridad deseado:
anita:/# /usr/aset/aset -l low
======= ASET Execution Log =======

ASET running at security level low

Machine = anita; Current time = 0628_03:11

aset: Using /usr/aset as working directory

Executing task list ...
        firewall
        env
        sysconf
        usrgrp
        tune
        cklist
        eeprom

All tasks executed. Some background tasks may still be running.

Run /usr/aset/util/taskstat to check their status:
     /usr/aset/util/taskstat     [aset_dir]

where aset_dir is ASET's operating directory,currently=/usr/aset.

When the tasks complete, the reports can be found in:
     /usr/aset/reports/latest/*.rpt
You can view them by:
     more /usr/aset/reports/latest/*.rpt
anita:/#
La orden anterior habrá generado un directorio de informes cuyo nombre hace referencia a la fecha y hora de ejecución, y que al ser el último se enlaza también con el nombre latest; todos los reports generados por aset tienen extensión `.rpt' (son simples ficheros ASCII), y se guardan en /usr/aset/reports/. Cada uno de ellos contiene el informe de las potenciales vulnerabilidades que aset ha encontrado durante su ejecución, así como de los cambios que haya realizado en función del nivel de seguridad especificado. Como aset indica, el hecho de que la ejecución del comando haya finalizado no implica que los informes se hayan realizado completamente; podemos ejecutar /usr/aset/util/taskstat para ver que tareas no han finalizado aún.

Además de los informes de los que acabamos de hablar, la primera ejecución de aset genera una serie de archivos en el directorio /usr/aset/master/: en ellos se guarda una imagen del estado que la herramienta ha encontrado en el sistema, de forma que una ejecución posterior del programa - dentro del mismo nivel de seguridad - puede comprobar qué parámetros han cambiado en cada uno de los ficheros analizados; evidentemente, es vital para nuestra seguridad evitar que un atacante pueda modificar esta imagen, ya que de lo contrario podría `engañar' sin problemas a `aset'. Por ejemplo, al ejecutar `/usr/aset/aset' con un nivel de seguridad `low' se ha guardado en esa imagen cierta información sobre un fichero importante como /etc/inittab (en /usr/aset/asetenv se define la lista de directorios de los que se guarda una imagen en cada nivel de seguridad); parte de esta información se encuentra en /usr/aset/masters/cklist.low:
anita:/usr/aset/masters# grep inittab cklist.low 
-rw-r--r-- 1 root sys 1087 Jan 5 23:38 2000 /etc/inittab  26732 3
anita:/usr/aset/masters#
Podemos ver que los parámetros registrados de este archivo: propietario y grupo, permisos, número de enlaces, tamaño, fecha y hora de la última modificación y un checksum. Si ahora un atacante decidiera modificar ese fichero (por ejemplo para situar un troyano en él) casi con total seguridad modificaría alguno de esos parámetros, por lo que la siguiente ejecución de la herramienta reportaría este hecho:
anita:/# grep inittab /usr/aset/reports/latest/cklist.rpt 
< -rw-r--r-- 1 root sys 1087 Jan 5 23:38 2000 /etc/inittab  26732 3
> -rw-r--r-- 1 root sys 1237 Jun 28 19:58 2001 /etc/inittab  37235 3
anita:/#
Quizás una práctica recomendable para incrementar nuestra seguridad pueda ser planificar la ejecución de `aset' para que se ejecute a intervalos periódicos desde `crond' y para que nos avise (por ejemplo, mediante correo electrónico) de cualquier anomalía detectada en la máquina. Si lo hacemos así, hemos de tener siempre presente que el nivel `high' prima la seguridad por encima de cualquier otra cosa, por lo que tras una ejecución planificada de `aset' es posible que alguna aplicación puntual deje de funcionar.
© 2002 Antonio Villalón Huerta