Menú principal

miércoles, 25 de agosto de 2010

Sandboxing en Mac OS X (I de II)

========================================================================
- Sandboxing en Mac OS X (I de II)
- Sandboxing en Mac OS X (II de II)
========================================================================

El concepto informático de ‘Sandboxing’ es el de separar o restringir las operaciones que un proceso pueda realizar del resto del sistema, de tal modo que éste pueda ejecutarse con determinadas restricciones sin miedo a que pueda dañar nuestro equipo.

En Mac OS X, desde la versión Leopard, existe un comando llamado ‘sandbox-exec’ que permite la ejecución de comandos en una sandbox, el cual se puede configurar a través de ciertas reglas.

No existe demasiada documentación sobre estas reglas, por lo que este pequeño artículo tiene como intención añadir un poco de luz a las reglas más útiles para llevar a cabo ejecuciones en sandboxes seguras.

La sintaxis para la creación de sandboxes, con las reglas cargadas desde un fichero de texto es la siguiente: ‘sandbox-exec -f FicheroDeReglas Aplicación’, como se puede ver en la siguiente imagen donde se ejecuta una shell.


La estructura del fichero de reglas siempre debe comenzar con la línea ‘(version 1)’ seguido de las reglas que se quieran aplicar.

Dos de las reglas más básicas son ‘(allow default) / (deny default)’ y ‘(debug deny) / (debug all)’.

(allow default) / (deny default)

La regla ‘(allow default)’ indica que, por defecto se permite realizar cualquier acción, tal y como si el proceso no se corriera en una sandbox, a excepción de las reglas que se indiquen posteriormente.

En el caso contrario, la regla ‘(deny default)’ actuará denegando todas las acciones excepto las que se indique más adelante.

Como se puede ver, configuran el comportamiento por defecto para todo lo no definido dentro del fichero.

(debug deny) / (debug all)

Esta regla indica si se desea guardar o no un fichero de log con información sobre las acciones que se ejecutan en la sandbox. En caso de que si se desee, se puede especificar si guardar todas las acciones realizadas o únicamente las que estén prohibidas. Si no se quiere registrar información sobre una regla en concreto se puede utilizar ‘(with no-log)’ en ella para evitarlo.

El fichero de log se guarda, por defecto, en la ruta‘/var/log/system.log’. La siguiente captura muestra el fichero de log generado al ejecutar un comando prohibido por este fichero de reglas. Como se puede ver, el fichero de las reglas prohíbe de forma explíctia el uso de la red:

(version 1)
(allow default)
(debug deny)
(deny network*)


Ya que en el anterior fichero de reglas se ha hecho uso de la regla ‘network*’, en la segunda parte de este artículo se explicará en más detalle, junto con otras.

========================================================================
- Sandboxing en Mac OS X (I de II)
- Sandboxing en Mac OS X (II de II)
========================================================================

No hay comentarios:

Publicar un comentario en la entrada

Artículos relacionados

Otras historias relacionadas

Entradas populares