17.4. Entendiendo etiquetas MAC

Una etiqueta MAC es un atributo de seguridad el cual puede ser aplicado a sujetos y objetos a través del sistema.

Al aplicar una etiqueta, el usuario debe ser capaz de comprender, exactamente, lo que se está haciendo. Los atributos dsponibles en un objeto dependen del módulo de política cargado, y esos módulos de política interpretan sus atributos de diferentes maneras. Si la configuración es inapropiada debido a falta de compresnsión, o inhabilidad de comprender las implicaciones, el resultado puede ser lo inesperado y tal vez, la conducta no deseada del sistema.

La etiqueta de seguridad en un objeto es utilizada como parte de una desición de control de acceso de seguridad por una política. Con algunas políticas, la etiqueta por si misma contiene toda la información necesaria para hacer una desición; en otros modelos, las etiquetas pueden ser procesadas como parte de un conjunto más grande de reglas, etc.

Por ejemplo, activando la etiqueta de biba/low en un archivo representará una etiqueta mantenida por el módulo de políticas de seguridad Biba, con un valor de “low”.

Algunos módulos de políticas que soportan la propiedad de etiquetado en FreeBSD ofrecen tres etiquetas específicas predefinidas. Estas son las etiquetas low, high, y equal. Aunque refuerzan el control de acceso de una manera diferente con cada módulo de políticas, puede estar seguro que la etiqueta low será la configuración más baja, la etiqueta equal provocará que el sujeto o el objeto sea deshabilitado o no sea afectado, y la etiqueta high impondrá la configuración más alta disponible en los módulos de políticas Biba y MLS.

Dentro de ambientes de sistemas de archivos con etiqueta única, solamente una etiqueta puede ser utilizada en objetos. Esto impondrá un conjunto de permisos de acceso a través del sistema entero y en muchos ambientes puede ser todo lo que se requiera. Existen algunos casos donde etiquetas múltiples pueden ser activadas en objetos o sujetos en el sistema de archivos. Para esos casos, la opción multilabel puede ser pasada a tunefs(8).

en el caso de Biba y MLS, una etiqueta numérica puede activarse para indicar el nivel preciso de control jerárquico. Este nivel numérico es utilizado para particionar o para ordenar información en difeentes grupos de digamos, clasificación permitiendo acceso solamente a ese grupo o a un nivel de grupo superior.

En la mayoría de los casos el administrador solo estará configurando una etiqueta única para utilizar a través del sistema de archivos.

¡Un momento, esto es similar a DAC! Pensé que MAC daba control estrictamente al administrador. Esa declaración todavía se mantiene como verdadera, hasta cierto grado ya que root es el único en control y el que configura las políticas para que los usuarios sean colocados en las categorías/niveles apropiados. Desafortunadamente, muchos módulos de políticas pueden restringir al usuario root también. Control básico sobre objetos serán entonces liberados al grupo, pero root puede revocar o modificar las configuraciones en cualquier momento. Este es el modelo jerárquico/aclaramiento cubierto por políticas tales como Biba y MLS.

17.4.1. Configuración de etiquetas

Virtualmente todos los aspectos de configuración de módulos de políticas de etiquetas serán realizados usando utilidades del sistema base. Estos comandos brindan una interfaz simple para la configuración de objetos o sujetos o para manipulación y verificación de la configuración.

Toda la configuración puede hacerse usando las utilidades setfmac(8) y setpmac(8). El comando setfmac es usado para activar etiquetas MAC en objetos del sistema mientras que el comando setpmac es usado para activar etiquetas en sujetos del sistema. Observe:

# setfmac biba/high test

Si no ocurrió algún error con el comando de arriba, se nos regresará el prompt. El único momento en que estos comandos no son silentes es cuando se produce un error; similarmente a los comandos chmod(1) y chown(8). En algunos casos el error puede ser un “Permission denied” y es obtenido usualmente cuando la etiqueta está siendo activada o modificada en un objeto el cual está restringido.[1] El administrador puede usar los siguientes comandos para lograr esto:

# setfmac biba/high testPermission denied# setpmac biba/low setfmac biba/high test
# getfmac test
test: biba/high

Como vemos arriba, setpmac puede usarse para anular las configuraciones del módulo de políticas asignando una etiqueta diferente al proceso invocado. La utilidad getpmac es utilizada generalmente con procesos en ejecución, como sendmail: aunque toma un identificador de proceso en lugar de un comando la lógica es extremadamente similar. Si usuarios tratan de manipular un archivo al que no está a su acceso, dependiendo de las reglas del módulo de políticas cargado, el error “Operation not permitted” será desplegado por la función mac_set_link.

17.4.1.1. Tipos comunes de etiquetas

Para los módulos mac_biba(4), mac_mls(4) y mac_lomac(4), se tiene la posibilidad de asignar etiquetas simples. Estas toman la forma de high, equal y low, a continuación una breve descripción de lo que estas etiquetas brindan:

  • La etiqueta low es considerada la configuración de etiqueta más baja que un objeto o sujeto puede tener. Activando esto en objetos o sujetos bloqueará su acceso a objetos o sujetos marcados como high.

  • La etiqueta equal solo debería ponerse en objetos considerados excluidos de la política.

  • La etiqueta high proporciona a un objeto o sujeto la configuración más alta posible.

Con respeto a cada módulo de políticas, cada una de esas configuraciones establecerá una directiva de flujo de información diferente. Leyendo las páginas de manual pertinentes le explicarán en mayor medida las cualidades de las configuraciones de estas etiquetas genéricas.

17.4.1.1.1. Configuración avanzada de etiquetas

Números de grado numérico usados por comparación:compartimiento+compartimiento; así lo siguiente:

biba/10:2+3+6(5:2+3-20:2+3+4+5+6)

Puede ser interpretado como:

“Etiqueta de política Biba”/“Grado 10” :“Compartimientos 2, 3 y 6”: (“grado 5 ...”)

En este ejemplo, el primer grado podría ser considerao el “grado efectivo” con “compartimientos efectivos”, el segundo grado es el grado bajo y el último es el grado alto. En la mayoría de configuraciones estas opciones no serán utilizadas; de hecho se ofrecen para configuraciones más avanzadas.

Cuando se aplica a objetos del sistema, solo tendrán un grado/compartimiento actual tanto en oposición a sujetos del sistema como reflejen el rango de derechos disponibles en el sistema, e interfaces de red, donde sean utilizados para control de acceso.

El grado y compartimientos en un par sujeto y objeto son usados para construir una relación referida como “dominante”, en la cual un sujeto domina un objeto, el objeto domina al sujeto, ninguno domina al otro, o ambos se dominan. El caso “ambos dominan” ocurre cuando las dos etiquetas son iguales. Debido a la naturaleza de flujo de información de Biba, usted tiene derecho a un conjunto de compartimientos, “necesita saber”, que pueden corresponder a proyectos, pero los objetos también tiene un conjunto de compartimientos. Los usuarios deben de subactivar sus derechos usando su o setpmac para poder accesar objetos en un compartimiento desde el cual no estén restringidos.

17.4.1.2. Configuraciones de usuarios y etiquetas

Los mismos usuarios requieren tener etiquetas para que sus archivos y procesos puedan interactuar adecuadamente con la política de seguridad definida en el sistema. Esto se configura a través del archivo login.conf mediante el uso de clases de login. Cada módulo de políticas que utiliza etiquetas implementará las configuraciones de clases de usuario.

Una entrada de ejemplo conteniendo cada configuración de módulo de políticas es desplegado abajo:

default:\
    :copyright=/etc/COPYRIGHT:\
    :welcome=/etc/motd:\
    :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
    :path=~/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:\
    :manpath=/usr/share/man /usr/local/man:\
    :nologin=/usr/sbin/nologin:\
    :cputime=1h30m:\
    :datasize=8M:\
    :vmemoryuse=100M:\
    :stacksize=2M:\
    :memorylocked=4M:\
    :memoryuse=8M:\
    :filesize=8M:\
    :coredumpsize=8M:\
    :openfiles=24:\
    :maxproc=32:\
    :priority=0:\
    :requirehome:\
    :passwordtime=91d:\
    :umask=022:\
    :ignoretime@:\
    :label=partition/13,mls/5,biba/10(5-15),lomac10[2]:

La opción label es usada para activar la etiqueta de clase de usuario por omisión la cual será impuesta por MAC. A los usuarios no se les permitirá nunca modificar este valor, así pueda ser considerado no óptimo para el caso del usuario. En un configuración real, sin embargo, el administrador nunca deseará habilitar todos los módulos de políticas. Se recomienda que el resto de este capítulo sea revisado antes de que cualquiera de estas configuraciones sea implementada.

Nota: Los usuarios pueden cambiar su etiqueta despues del login inicial; sin embargo, este cambio está sujeto a la restricción de la política. El ejemplo de arriba le dice a la política Biba que la integridad mínima de un proceso es 5, su máximo es 15, pero la etiqueta por omisión efectiva es 10. El proceso correrá a 10 hasta que elija cambiar de etiqueta, quizás el usuario utilice el comando setpmac, el cual será restringido por Biba a el rango activado al momento de login.

En todos los casos, despues de un cambio a login.conf, la base de datos de capacidades de clases de login debe ser reconstruida usando cap_mkdb y esto será reflejado a lo largo de cada ejemplo y discusión futura.

Es útil notar que muchos sitios pueden tener un grán número de usuarios en particular que requieren varias clases de usuarios diferentes. La planeación profunda se requiere ya que esto puede tornarse extremadamente difícil de administrar.

Versiones futuras de FreeBSD incluirán una nueva manera de tratar con el mapeo de usuarios a etiquetas; de todas maneras, esto no estará disponible hasta despues de FreeBSD 5.3.

17.4.1.3. Interfaces de red y configuración de etiquetas

Se pueden colocar etiquetas en interfaces de red también para ayudar a controlar el flujo de datos a través de la red. En todos los casos éstas funcionan de la misma manera que las políticas funcionan con respecto a objetos. Los usuarios con configuraciones altas en biba, por ejemplo, no se les permitirá accesar interfaces de red con una etiqueta de low.

La maclabel puede ser pasada a ifconfig al activar la etiqueta MAC en interfaces de red. Por ejemplo:

# ifconfig bge0 maclabel biba/equal

activará la etiqueta MAC de biba/equal en la interfaz bge(4). Cuando se está utilizando una configuración similar a biba/high(low-high) la etiqueta entera debería ser entrecomillada; de otra manera se retornará un error.

Cada módulo de políticas que soporta etiquetamiento posee un sintonizable el cual puede ser usado para deshabilitar la etiqueta MAC en interfaces de red. Configurando la etiqueta a equal tendrá un efecto similar. Revise la salida de sysctl, las páginas de manual de políticas, o incluso la información encontrada má adelante en este capítulo para esos sintonizables.

17.4.2. ¿Etiqueta única o miltietiqueta?

Por omisión el sistema usará la opción singlelabel. Pero, ¿que significa esto para el administrador?, existen varias diferencias las cuales, por su propio derecho, ofrecen pros y contras a la flexibilidad en el modelo de seguridad de los sistemas.

La opción singlelabel solo permite una etiqueta, para ilustrar, biba/high para ser usado para cada objeto o sujeto. Brinda una menor carga de administración pero decrementa la flexibilidad de políticas que soportan etiquetado. Muchos administradores pueden querer utilizar la opción multilabel en sus políticas de seguridad.

La opción multilabel le permitirá a cada objeto o sujeto tener su propia etiqueta MAC independiente en lugar de la opción singlelabel estándar la cual solo permitirá una etiqueta en toda la partición. La opciones de etiqueta multilabel y single solo se requieren para las políticas que implementan la propiedad de etiquetado, incluyendo las políticas Biba, Lomac, MLS y SEBSD.

En muchos casos, la multilabel puede que no se necesite activar. Considere la siguiente situación y el siguiente modelo de seguridad:

Si alguna de las políticas de no etiquetado se van a utilizar, entonces la opción multilabel nunca sería requerida. Esto incluye las políticas seeotheruids, portacl y partition.

Debería notarse también que usando multilabel con una partición y estableciendo un modelo de seguridad basado en la funcionalidad multilabel puede abrir las puertas para una carga administrativa mayor ya que todo en el sistema de archivos tendría una etiqueta. Esto incluye directorios, archivos e incluso nodos de dispositivo.

El siguiente comando activará multilabel en el sistema de archivos para tener etiquetas múltiples. Esto solo puede hacerse en modo mono usuario:

# tunefs -l enable /

Esto no es un requerimiento para el sistema de archivos swap.

Nota: Algunos usuarios han experimentado problemas activando la bandera multilabel en la partición raíz. Si este es el caso, por favor revise la Sección 17.16 de este capítulo.

17.4.3. Controlando MAC con sintonizables

Sin ningún módulo cargado, hay todavía algunas partes de MAC las cuales pueden ser configuradas utilizando la interfaz sysctl. Estos sintonizables son descritos abajo y en todos los casos el número uno (1) significa habilitado mientras que el número cero (0) significa deshabilitado:

Nota: Cada política u opción MAC soporta sintonizables. Estas usualmente cuelgan del árbol security.mac.<policyname>. Para visualizar todos los sintonizables de MAC utilice el siguiente comando:

# sysctl -da | grep mac

Esto debe ser interpretado como si todas las políticas básicas MAC están impuestas por omisión. Si los módulos fueron construidos en el kernel el sistema podría estar extremadamente cerrado y muy probablemente sin poder comunicarse con la red local o conectar a Internet, etc. Debido a esto la construcción de los módulos dentro del kernel no es completamente recomendable. No porque limite la habilidad de deshabilitar funciones al vuelo con sysctl, pero le permite al administrador cambiar instantaneamente las políticas de un sistema sin el requerimiento de recosntruir y reinstalar un nuevo sistema.

Notas

[1]

Otras condiciones pueden producir fallas diferentes. Para ilustrar, el archivo puede no ser propiedad del usuario tratando de reetiquetar el objeto, el objeto puede que no exista o que sea de solo lectura. Una política obligatoria no permitirá al proceso reetiquetar el archivo, debido tal vez a una propiedad del archivo, una propiedad del proceso o una propiedad del valor de la nueva etiqueta propuesta. Por ejemplo: un usuario corriendo a integridad baja trata de cambiar una etiqueta de un archivo con integridad baja (low) a una etiqueta de integridad alta (high).

Éste y otros documentos pueden obtenerse en ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para preguntas acerca de FreeBSD, leer la documentación antes de contactar con la lista <questions@FreeBSD.org>.
Para preguntas acerca de esta documentación, e-mail a <doc@FreeBSD.org>.