This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.
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.
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 test “Permission 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
.
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.
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.
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.
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.
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:
servidor de Web FreeBSD usando la estructura MAC y una mezcla de las diferentes políticas.
Esta máquina solo requiere una etiqueta, biba/high,
para todo en el sistema. Aquí el sistema de archivos no requerirá la
opción multilabel
ya que una etiqueta única
estará siempre en efecto unicamente.
Pero, esta máquina será un servidor web y debería ejecutar el servidor web en biba/low para prevenir capacidades de escritura. La política Biba y su funcionamiento serán discutidos más adelante, por eso si el comentario anterior fue dificil de interpretar solo continue leyendo y regrese despues. El servidor podría utilizar una partición separada activada a biba/low para la mayoría o para todo su estado de ejecución. Faltan muchas cosas en este ejemplo, como las restricciones en datos, configuración y propiedades de usuarios; de todas maneras, este es solo un ejemplo rápido para probar el punto mencionado.
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.
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:
security.mac.enforce_fs tiene el valor uno (1) por omisión e impone políticas MAC del sistema de archivos en el sistema de archivos.
security.mac.enforce_kld tiene el valor uno (1) por omisión e impone políticas MAC de enlazado de kernel en el enlazador dinámico del kernel (ver kld(4)).
security.mac.enforce_network tiene el valor uno (1) por omisión e impone políticas MAC de red.
security.mac.enforce_pipe tiene el valor uno (1) por omisión e impone políticas MAC en pipes.
security.mac.enforce_process tiene el valor uno (1) por omisión e impone políticas MAC en procesos que utilizan comunicación inter-procesos.
security.mac.enforce_socket tiene el valor uno (1) por omisión e impone políticas MAC en sockets (ver la p´gina de manual socket(2)).
security.mac.enforce_system tiene el valor uno (1) por omisión e impone políticas MAC en actividades del sistema tales como contabilidad y reinicio.
security.mac.enforce_vm tiene el valor uno (1) por omisión e impone políticas MAC en la memoria virtual del sistema.
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.
[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>.