diff options
-rw-r--r-- | es_ES.ISO8859-1/books/handbook/mac/chapter.sgml | 2487 |
1 files changed, 72 insertions, 2415 deletions
diff --git a/es_ES.ISO8859-1/books/handbook/mac/chapter.sgml b/es_ES.ISO8859-1/books/handbook/mac/chapter.sgml index ffd735ebb0..8685afb6fd 100644 --- a/es_ES.ISO8859-1/books/handbook/mac/chapter.sgml +++ b/es_ES.ISO8859-1/books/handbook/mac/chapter.sgml @@ -1,6 +1,15 @@ <!-- The FreeBSD Documentation Project $FreeBSD$ + + + + + The FreeBSD Spanish Documentation Project + %SOURCE% en_US.ISO8859-1/books/handbook/mac/chapter.sgml + %SRCID% 0.0 + + --> <chapter id="mac"> @@ -25,2487 +34,135 @@ <see>MAC</see> </indexterm> - <para>&os; 5.X introdujo nuevas extensiones de seguridad del - proyecto TrustedBSD basado en el escrito &posix;.1e. Dos de los - mecanismos de seguridad más significativos son las - facilidades de Listas de control de acceso del sistema de archivos - (Access Control Lists,<acronym>ACLs</acronym>) y control de acceso - obligatorio (Mandatory Access Control, <acronym>MAC</acronym>). - El control de acceso obligatorio permite que nuevos módulos - de control de acceso sean cargados, implementando nuevas - políticas de seguridad. Algunas brindan protecciones de un - angosto subconjunto del sistema, endureciendo un servicio en - particular, mientras otros proveen seguridad etiquetada comprensible - a traveés de todos las áreas y objetos. - La parte obligatoria de la definición proviene del hecho - que la imposición de los controles es realizada por - administradores y el sistema, y no es dejada a la discreción - de los usuarios como se hace con el control de acceso discrecional - (discretionary access control, <acronym>DAC</acronym>, los - permisos de archivo y System V <acronym>IPC</acronym> estándares - en &os;).</para> - - <para>Este capítulo se enfocará en la estructura - del control de acceso obligatorio (MAC Framework), y un - conjunto de módulos enchufables de políticas de - seguridad habilitando varios mecanismos de seguridad.</para> - - <para>Despues de leer este capítulo, usted sabrá:</para> - - <itemizedlist> - <listitem> - <para>Que son los módulos de políticas de seguridad - <acronym>MAC</acronym> actualmente incluidos en &os; y sus - mecanismos asociados.</para> - </listitem> - - <listitem> - <para>Que implementan los módulos de políticas de - seguridad <acronym>MAC</acronym> así como la diferencia - entre una política etiquetada y no etiquetada.</para> - </listitem> - - <listitem> - <para>Como configurar eficientemente un sistema para - utilizar la estructura <acronym>MAC</acronym>.</para> - </listitem> - - <listitem> - <para>Como configurar los diferentes módulos de - políticas de seguridad incluidos con la estructura - <acronym>MAC</acronym>.</para> - </listitem> - - <listitem> - <para>Como implementar un ambiente más seguro utilizando - la estructura <acronym>MAC</acronym> y los ejemplos - mostrados.</para> - </listitem> - - <listitem> - <para>Como probar la configuración <acronym>MAC</acronym> - para asegurar que la estructura ha sido implementada - correctamente.</para> - </listitem> - </itemizedlist> - - <para>Antes de leer este capítulo, usted debería:</para> - - <itemizedlist> - <listitem> - <para>Entender las bases de &unix; y &os; - (<xref linkend="basics">).</para> - </listitem> - - <listitem> - <para>Estar familiarizado - con lo basico de la configuración/compilación - del kernel - (<xref linkend="kernelconfig">).</para> - </listitem> - - <listitem> - <para>Tener cierta familiaridad con seguridad y como - se relaciona con &os; (<xref linkend="security">).</para> - </listitem> - </itemizedlist> - - <warning> - <para>El uso inadecuado de la - información en este capítulo puede provocar - pérdida de acceso al sistema, irritación de - los usuarios, o inhabilidad para accesar las características - que brinda X11. Aún más importante, - <acronym>MAC</acronym> no debe confiarse para asegurar un sistema - completamente. La estructura <acronym>MAC</acronym> solo aumenta - las políticas de seguridad existentes; sin prácticas - de seguridad sonadas y revisiones de seguridad constantes el - sistema nunca será completamente seguro.</para> - - <para>También debe notarse que los ejemplos contenidos - dentro de este capítulo son solo eso, ejemplos. No - se recomienda que estas configuraciones en particular sean - desplegadas en un sistema en producción. Implementar - los varios módulos de políticas de seguridad - toma un buen de pensamiento. Alguien que no entiende - completamente como funciona todo puede encontrarse en la - situación de regresar a configurar muchos archivos - y directorios a través de todo el sistema.</para> - </warning> - - <sect2> - <title>Que es lo que no se cubrirá</title> - - <para>Este capitulo cubre un amplio rango de temas de seguridad - relacionados a la estructura <acronym>MAC</acronym>; sin embargo, - el desarrollo de nuevos módulos de políticas de - seguridad <acronym>MAC</acronym> no serán cubiertos. Un - número de módulos de políticas de seguridad - incluidos con la estructura <acronym>MAC</acronym> tienen - características específicas las cuales son provistas - tanto para prueba como para desarrollo de nuevos módulos. - Estos incluyen &man.mac.test.4;, &man.mac.stub.4; y &man.mac.none.4;. - Para más información sobre estos módulos de - políticas de seguridad y los varios mecanismos que brindan, - por favor revise las páginas de manual.</para> - </sect2> + + +<para>Pendiente de Traducción</para> + + </sect1> <sect1 id="mac-inline-glossary"> <title>Términos clave en este capítulo</title> - <para>Antes de leer este capítulo, se deben explicar - algunos términos clave. Esto tal vez borre cualquier - confusión que pueda ocurrir y evite la indrocucción - abrupta de nueva información y términos.</para> - - <itemizedlist> - <listitem> - <para><emphasis>compartimiento</emphasis>: Un compartimiento - es un conjunto de programas y datos a ser particionados o - separados, en donde a usuarios se les proporciona acceso - explícito a componentes específico de un sistema. - También, un compartimiento representa un agrupamiento, - como un grupo de trabajo, departamento, proyecto o tópico. - Usando compartimientos es posible implementar una política - de seguridad de necesita-saber. - </listitem> - - <listitem> - <para><emphasis>integridad</emphasis>: Integridad, como - un concepto clave, es el nivel de confianza que puede - ser puesto en un dato. Mientras el nivel de integridad - del dato es elevado también lo hace la habilidad - de confiar en ese dato.</para> - </listitem> - - <listitem> - <para><emphasis>etiqueta</emphasis>: Una etiqueta es un - atributo de seguridad el cual puede ser aplicado a - archivos, directorios o a otros componentes en el - sistema. Se puede considerar una estampilla de seguridad; - cuando una etiqueta es colocada en un archivo describe - las propiedades de seguridad para ese archivo específico - y solo permitirá acceso de archivos, usuarios, - recursos, etc. con características de seguridad - similares. El significado e interpretación de valores - de etiquetas depende de la configuración de la - política: mientras algunas políticas pueden - tratar una etiqueta como la representación de - la integridad o secreto de un objeto, otras políticas - pueden usar etiquetas para mantener reglas de acceso.</para> - </listitem> - - <listitem> - <para><emphasis>nivel</emphasis>: El aumento o disminución - de un atributo de seguridad. Si el nivel incrementa, - su seguridad es considerada que se eleva también.</para> - </listitem> - - <listitem> - <para><emphasis>multietiqueta</emphasis>: La propiedad - <option>multilabel</option> es una opción del - sistema de archivos la cual puede ser activada en modo - mono usuario usando la utilidad &man.tunefs.8; , durante - el arranque usando el archivo &man.fstab.5; , o durante - la creación de un nuevo sistema de archivos. - Esta opción le permitirá a un administrador - aplicar diferentes etiquetas <acronym>MAC</acronym> en - diferentes objetos. Esta opción - solamente aplica a módulos de políticas de - seguridad que soporten etiquetamiento.</para> - </listitem> - - <listitem> - <para><emphasis>objeto</emphasis>: Un objeto o un - objeto de sistema es una entidad a través de - la cual la información fluye bajo la dirección - de un <emphasis>sujeto</emphasis>. - Esto incluye directorios, archivos, campos, pantallas, - teclados, memoria, almacenamiento magnético, - impresoras o cualquier otro dispositivo de - almacenamiento/transporte. Básicamente, un objeto - es un contenedor de datos o un recurso del sistema; - el acceso efectivo a un <emphasis>objeto</emphasis> significa - acceso a los datos.</para> - </listitem> - - <listitem> - <para><emphasis>política</emphasis>: Una colección - de reglas que definen como se van a lograr los objetivos. - Una <emphasis>política</emphasis> usualmente documenta - como ciertos elementos deben ser manejados. Este capítulo - considerará el término - <emphasis>política</emphasis> en este contexto como - <emphasis>política de seguridad</emphasis>; por ejemplo, - una colección de reglas que controlan el flujo de datos e - información y define quién tendrá acceso a - esos datos e información.</para> - </listitem> - - <listitem> - <para><emphasis>sensitividad</emphasis>: Usualmente utilizado - al discutir <acronym>MLS</acronym>. Un nivel de sensitividad - es un término usado para describir que tan importante - o secreto debe ser el dato. - Mientras el nivel de sensitividad - del dato es incrementado también lo hace la - importancia del secreto o confidencialidad del dato.</para> - </listitem> - - <listitem> - <para><emphasis>etiqueta única</emphasis>: Una etiqueta - única es cuando todo el sistema de archivos - utiliza una etiqueta para imponer control de acceso - sobre el flujo de datos. Cuando un sistema de archivos - tiene esto activado, lo cual es en cualquier momento - que la opción <option>etiqueta múltiple</option> - no está activada, todos los archivos concordarán - a la misma configuración de etiqueta.</para> - </listitem> - - <listitem> - <para><emphasis>sujeto</emphasis>: Un sujeto es cualquier - entidad activa que provoca que la información - fluya entre <emphasis>objetos</emphasis>; por ejemplo, - un usuario, usuario procesador, proceso de sistema, etc. - En &os;, esto es casi siempre un hilo actuando en un - proceso en beneficio de un usuario..</para> - </listitem> - </itemizedlist> + + <para>Pendiente de traducción</para> + </sect1> <sect1 id="mac-initial"> <title>Explicación de MAC</title> - <para>Con todos estos nuevos terminos en mente, considere - como la estructura <acronym>MAC</acronym> aumenta la - seguridad de el sistema como un todo. Los varios módulos - de políticas de seguridad provistos por la estructura - <acronym>MAC</acronym> pueden ser usados para proteger - la red y los sistemas de archivos, bloquear usuarios de - accesar ciertos puertos y sockets, y más. Quizás - el mejor uso de los módulos de políticas es el - de mezclarlos juntos, por medio del cargado de varios módulos - de políticas de seguridad al mismo tiempo para un - ambiente de seguridad multicapa. En un ambiente de seguridad - multicapa, múltiples módulos de políticas - están en efecto para mantener la seguridad. Esto es diferente - a un política de endurecimiento, la cual tipicamente endurece - elementos de un sistema que es utilizado solamente para propositos - específicos. El único lado malo es la carga - administrativa en casos de sistemas de archivos con etiquetas - múltiples, configuraciones de control de acceso a red - usuario por usuario, etc.</para> - - <para>Estas desventajas son mínimas cuando se comparan - con el efecto perdurable de la estructura; por ejemplo, la - habilidad de seleccionar y elegir que políticas son - requeridas para una configuración específica mantiene - la sobrecarga de ejecución abajo. La reducción de - soporte para políticas innecesarias puede elevar la - ejecución total del sistema así como también - ofrecer flexibilidad de elección. Una buena - implementación podría considerar los requerimientos - de seguridad total e implementar efectivamente los varios - módulos de políticas de seguridad ofrecidos por la - estructura.</para> - - <para>Así un sistema utilizando una propiedad - <acronym>MAC</acronym> debería al menos garantizar que a un - usuario no se le permitirá cambiar atributos de seguridad a - su antojo; todos las utilidades de usuario, programas y scrips deben - trabajar dentro de las restricciones de las reglas de acceso - provistas por el módulo de políticas de seguridad - seleccionado; y ese control total de las reglas de acceso - <acronym>MAC</acronym> están en las manos del administrador - del sistema.</para> - - <para>Es deber solamente del administrador de sistema seleccionar - cuidadosamente los módulos de políticas de seguridad - correctos. Algunos ambientes pueden necesitar limitar el control - de acceso a través de la red; en estos casos los - módulos de políticas &man.mac.portacl.4;, - &man.mac.ifoff.4; e incluso &man.mac.biba.4; pueden ser un buen - punto de inicio. En otros casos, confidencialidad estricta de - objetos del sistema de archivos puede ser requerida. Módulos - de políticas como &man.mac.bsdextended.4; y &man.mac.mls.4; - existen para este propósito.</para> - - <para>Desiciones de política pueden hacerse basándose - en la configuración de red. Quizás solo - a ciertos usuarios se les debería permitir acceso - a facilidades proporcionadas por &man.ssh.1; para - accesar la red o Internet. El módulo de políticas - &man.mac.portacl.4; podría ser la opción para estas - situaciones. Pero, ¿que debería hacerse en el caso de sistemas - de archivos?, ¿los accesos a ciertos directorios deberían ser - cortados de otros grupos o usuarios específicos?, ¿o - deberíamos limitar accesos a usuarios o utilidades a archivos - específicos poniendo ciertos objetos como clasificados?</para> - - <para>En el caso de sistemas de archivo, el acceso a los - objetos puede ser considerado confidencial a algunos - usuarios, pero no a otros. Por ejemplo, un gran grupo de - desarrolladores puede ser dividido en pequeños grupos - de individuos. Desarrolladores en el proyecto A no se les - debe permitir accesar objetos escritos por desarrolladores - del proyecto B. Pero pueden necesitar accesar objetos - creados por desarrolladores del proyecto C; esa es una - situación complicada. Utilizando los diferentes - módulos de políticas de seguridad proporcionados - por la estructura <acronym>MAC</acronym>; los usuarios pueden - ser divididos en estos grupos y entonces otorgarles acceso - a las áreas apropiadas sin temor de filtrado de - información.</para> - - <para>Así, cada módulo de poliíticas de seguridad - tiene un modo único de tratar con la seguridad de un sistema en - general. La selección de módulo debería basarse - en una poliítica de seguridad bien planeada. En muchos casos, - la poliítica general tal vez necesite ser revisada y - reimplementada en el sistema. Entender los diferentes módulos - de poliíticas de seguridad ofrecidos por la estructura - <acronym>MAC</acronym> le ayudará a los administradores a - elegir las mejores poliíticas para sus situaciones.</para> - - <para>El kernel por omisión de &os; no incluye la opción - para la estructura <acronym>MAC</acronym>; así que la - siguiente opción del kernel debe ser agregada antes de - usar cualquiera de los ejemplos o la información de - este capítulo:</para> - - <programlisting>options MAC</programlisting> - - <para>Y el kernel requerirá una recosntrucción y - una reinstalación.</para> - - <caution> - <para>Mientras varias páginas de manual para módulos - de políticas <acronym>MAC</acronym> afirman que pueden - ser construidos dentro del kernel, es posible cortar el acceso - del sistema a la red y más. Implementar <acronym>MAC</acronym> - es muy parecido a implementar un firewall, se debe tener - cuidado en prevenir que el sistema quede bloqueado totalmente. - La habilidad de retornar a una configuración previa - debería ser considerada durante la implementación - de <acronym>MAC</acronym>, remotamente debe realizarse con - precaución extrema.</para> - </caution> - </sect1> + <para>Pendiente de traducción</para> <sect1 id="mac-understandlabel"> - <title>Entendiendo etiquetas MAC</title> - - <para>Una etiqueta <acronym>MAC</acronym> es un atributo de - seguridad el cual puede ser aplicado a sujetos y objetos - a través del sistema.</para> - - <para>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.</para> - - <para>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.</para> - - <para>Por ejemplo, activando la etiqueta de <literal>biba/low</literal> - en un archivo representará una etiqueta mantenida por el - módulo de políticas de seguridad Biba, con un valor - de <quote>low</quote>.</para> - - <para>Algunos módulos de políticas que soportan la - propiedad de etiquetado en &os; 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 <acronym>MLS</acronym>. - </para> - - <para>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 - <option>multilabel</option> puede ser pasada a &man.tunefs.8;.</para> - - <para>en el caso de Biba y <acronym>MLS</acronym>, 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.</para> - - <para>En la mayoría de los casos el administrador solo - estará configurando una etiqueta única para - utilizar a través del sistema de archivos.</para> - - <para><emphasis>¡Un momento, esto es similar a <acronym>DAC</acronym>! - Pensé que <acronym>MAC</acronym> daba control estrictamente - al administrador.</emphasis> Esa declaración todavía - se mantiene como verdadera, hasta cierto grado ya que - <username>root</username> 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 <username>root</username> también. Control - básico sobre objetos serán entonces liberados al - grupo, pero <username>root</username> puede revocar o modificar - las configuraciones en cualquier momento. Este es el modelo - jerárquico/aclaramiento cubierto por políticas tales - como Biba y <acronym>MLS</acronym>.</para> - - <sect2> - <title>Configuración de etiquetas</title> - - <para>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.</para> - - <para>Toda la configuración puede hacerse usando - las utilidades &man.setfmac.8; y &man.setpmac.8;. - El comando <command>setfmac</command> es usado para - activar etiquetas <acronym>MAC</acronym> en objetos del - sistema mientras que el comando <command>setpmac</command> - es usado para activar etiquetas en sujetos del sistema. - Observe:</para> - - <screen>&prompt.root; <userinput>setfmac biba/high test</userinput></screen> - - <para>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 - &man.chmod.1; y &man.chown.8;. En algunos casos el error - puede ser un <errorname>Permission denied</errorname> y es - obtenido usualmente cuando la etiqueta está siendo - activada o modificada en un objeto el cual está - restringido.<footnote><para>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).</para></footnote> El administrador - puede usar los siguientes comandos para lograr esto:</para> - - <screen>&prompt.root; <userinput>setfmac biba/high test</userinput> -<errorname>Permission denied</errorname> -&prompt.root; <userinput>setpmac biba/low setfmac biba/high test</userinput> -&prompt.root; <userinput>getfmac test</userinput> -test: biba/high</screen> - - <para>Como vemos arriba, <command>setpmac</command> - puede usarse para anular las configuraciones del módulo de - políticas asignando una etiqueta diferente al proceso - invocado. La utilidad - <command>getpmac</command> es utilizada generalmente con procesos - en ejecución, como <application>sendmail</application>: - 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 - <errorname>Operation not permitted</errorname> será - desplegado por la función <function>mac_set_link</function>. - </para> - - <sect3> - <title>Tipos comunes de etiquetas</title> - - <para>Para los módulos &man.mac.biba.4;, &man.mac.mls.4; - y &man.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:</para> - - <itemizedlist> - <listitem> - <para>La etiqueta <literal>low</literal> 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.</para> - </listitem> - - <listitem> - <para>La etiqueta <literal>equal</literal> solo debería - ponerse en objetos considerados excluidos de la - política.</para> - </listitem> - - <listitem> - <para>La etiqueta <literal>high</literal> proporciona a un - objeto o sujeto la configuración más alta - posible.</para> - </listitem> - </itemizedlist> - - <para>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.</para> - - <sect4> - <title>Configuración avanzada de etiquetas</title> - - <para>Números de grado numérico usados por - <literal>comparación:compartimiento+compartimiento</literal>; así - lo siguiente:</para> - - <programlisting>biba/10:2+3+6(5:2+3-20:2+3+4+5+6)</programlisting> - - <para>Puede ser interpretado como:</para> - - <para><quote>Etiqueta de política Biba</quote>/<quote>Grado 10</quote> - :<quote>Compartimientos 2, 3 y 6</quote>: - (<quote>grado 5 ...</quote>)</para> - - <para>En este ejemplo, el primer grado podría ser - considerao el <quote>grado efectivo</quote> con - <quote>compartimientos efectivos</quote>, 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.</para> - - <para>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.</para> - - <para>El grado y compartimientos en un par sujeto y objeto - son usados para construir una relación referida - como <quote>dominante</quote>, en la cual un sujeto domina - un objeto, el objeto domina al sujeto, ninguno domina al - otro, o ambos se dominan. El caso <quote>ambos dominan</quote> - 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, - <quote>necesita saber</quote>, que pueden corresponder - a proyectos, pero los objetos también tiene un - conjunto de compartimientos. - Los usuarios deben de subactivar sus derechos usando - <command>su</command> o <command>setpmac</command> para - poder accesar objetos en un compartimiento desde el cual - no estén restringidos.</para> - </sect4> - </sect3> - - <sect3> - <title>Configuraciones de usuarios y etiquetas</title> - - <para>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 <filename>login.conf</filename> mediante el - uso de clases de login. Cada módulo de políticas - que utiliza etiquetas implementará las configuraciones - de clases de usuario.</para> - - <para>Una entrada de ejemplo conteniendo cada configuración - de módulo de políticas es desplegado abajo:</para> - - <programlisting>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]:</programlisting> - - <para>La opción <literal>label</literal> es usada para - activar la etiqueta de clase de usuario por omisión - la cual será impuesta por <acronym>MAC</acronym>. - 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. - </para> - - <note> - <para>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.</para> - </note> - - <para>En todos los casos, despues de - un cambio a <filename>login.conf</filename>, la - base de datos de capacidades de clases de login debe - ser reconstruida usando <command>cap_mkdb</command> - y esto será reflejado a lo largo de cada - ejemplo y discusión futura.</para> - - <para>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.</para> - - <para>Versiones futuras de &os; incluirán una nueva - manera de tratar con el mapeo de usuarios a etiquetas; - de todas maneras, esto no estará disponible hasta - despues de &os; 5.3.</para> - </sect3> - - <sect3> - <title>Interfaces de red y configuración de etiquetas</title> - - <para>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 - <literal>biba</literal>, por ejemplo, no se les permitirá - accesar interfaces de red con una etiqueta de low.</para> - - <para>La <option>maclabel</option> puede ser pasada a - <command>ifconfig</command> al activar la etiqueta - <acronym>MAC</acronym> en interfaces de red. Por - ejemplo:</para> - - <screen>&prompt.root; <userinput>ifconfig bge0 maclabel biba/equal</userinput></screen> - - <para>activará la etiqueta <acronym>MAC</acronym> de - <literal>biba/equal</literal> en la interfaz &man.bge.4;. - Cuando se está utilizando una configuración - similar a - <literal>biba/high(low-high)</literal> la etiqueta entera - debería ser entrecomillada; de otra manera se - retornará un error.</para> - - <para>Cada módulo de políticas que soporta - etiquetamiento posee un sintonizable el cual puede ser - usado para deshabilitar la etiqueta <acronym>MAC</acronym> - en interfaces de red. Configurando la etiqueta a - <option>equal</option> tendrá un efecto similar. - Revise la salida de <command>sysctl</command>, las páginas - de manual de políticas, o incluso la información - encontrada má adelante en este capítulo para - esos sintonizables.</para> - </sect3> - </sect2> - - <sect2> - <title>¿Etiqueta única o miltietiqueta?</title> -<!-- Stopped here with my edits --> - <para>Por omisión el sistema usará la - opción <option>singlelabel</option>. 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.</para> - - <para>La opción <option>singlelabel</option> solo - permite una etiqueta, para ilustrar, <literal>biba/high</literal> - 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 <option>multilabel</option> - en sus políticas de seguridad.</para> - - <para>La opción <option>multilabel</option> le permitirá - a cada objeto o sujeto tener su propia etiqueta <acronym>MAC</acronym> - independiente en lugar de la opción - <option>singlelabel</option> estándar la cual solo - permitirá una etiqueta en toda la partición. La - opciones de etiqueta <option>multilabel</option> y - <option>single</option> solo se requieren para las - políticas que implementan la propiedad de etiquetado, - incluyendo las políticas Biba, Lomac, <acronym>MLS</acronym> - y <acronym>SEBSD</acronym>.</para> - - <para>En muchos casos, la <option>multilabel</option> puede que no - se necesite activar. Considere la siguiente situación y - el siguiente modelo de seguridad:</para> - - <itemizedlist> - <listitem> - <para>servidor de Web &os; usando la estructura - <acronym>MAC</acronym> y una mezcla de las - diferentes políticas.</para> - </listitem> - - <listitem> - <para>Esta máquina solo requiere una etiqueta, - <literal>biba/high</literal>, para todo en el sistema. - Aquí el sistema de archivos no requerirá - la opción <option>multilabel</option> ya que - una etiqueta única estará siempre en - efecto unicamente.</para> - </listitem> - - <listitem> - <para>Pero, esta máquina será un servidor web - y debería ejecutar el servidor web en - <literal>biba/low</literal> 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 - <literal>biba/low</literal> 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.</para> - </listitem> - </itemizedlist> - - <para>Si alguna de las políticas de no etiquetado - se van a utilizar, entonces la opción - <option>multilabel</option> nunca sería requerida. Esto - incluye las políticas <literal>seeotheruids</literal>, - <literal>portacl</literal> y <literal>partition</literal>.</para> - - <para>Debería notarse también que usando - <option>multilabel</option> con una partición y - estableciendo un modelo de seguridad basado en la - funcionalidad <option>multilabel</option> 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.</para> - - <para>El siguiente comando activará <option>multilabel</option> - en el sistema de archivos para tener etiquetas múltiples. - Esto solo puede hacerse en modo mono usuario:</para> - - <screen>&prompt.root; <userinput>tunefs -l enable /</userinput></screen> - - <para>Esto no es un requerimiento para el sistema de - archivos swap.</para> - - <note> - <para>Algunos usuarios han experimentado problemas - activando la bandera <option>multilabel</option> en la - partición raíz. - Si este es el caso, por favor revise la - <xref linkend="mac-troubleshoot"> de este capítulo.</para> - </note> - </sect2> - - <sect2> - <title>Controlando MAC con sintonizables</title> - - <para>Sin ningún módulo cargado, hay todavía - algunas partes de <acronym>MAC</acronym> las cuales pueden - ser configuradas utilizando la interfaz <command>sysctl</command>. - 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:</para> - - <itemizedlist> - <listitem> - <para><literal>security.mac.enforce_fs</literal> tiene el valor - uno (1) por omisión e impone políticas - <acronym>MAC</acronym> del sistema de archivos en el sistema - de archivos.</para> - </listitem> - - <listitem> - <para><literal>security.mac.enforce_kld</literal> tiene el valor - uno (1) por omisión e impone políticas - <acronym>MAC</acronym> de enlazado de kernel en el enlazador - dinámico del kernel (ver &man.kld.4;).</para> - </listitem> - - <listitem> - <para><literal>security.mac.enforce_network</literal> tiene el valor - uno (1) por omisión e impone políticas - <acronym>MAC</acronym> de red.</para> - </listitem> - - <listitem> - <para><literal>security.mac.enforce_pipe</literal> tiene el valor - uno (1) por omisión e impone políticas - <acronym>MAC</acronym> en pipes.</para> - </listitem> - - <listitem> - <para><literal>security.mac.enforce_process</literal> tiene el valor - uno (1) por omisión e impone políticas - <acronym>MAC</acronym> en procesos que utilizan - comunicación inter-procesos.</para> - </listitem> - - <listitem> - <para><literal>security.mac.enforce_socket</literal> tiene el valor - uno (1) por omisión e impone políticas - <acronym>MAC</acronym> en sockets (ver la p´gina de manual - &man.socket.2;).</para> - </listitem> - - <listitem> - <para><literal>security.mac.enforce_system</literal> tiene el valor - uno (1) por omisión e impone políticas - <acronym>MAC</acronym> en actividades del sistema tales como - contabilidad y reinicio.</para> - </listitem> - - <listitem> - <para><literal>security.mac.enforce_vm</literal> tiene el valor - uno (1) por omisión e impone políticas - <acronym>MAC</acronym> en la memoria virtual del sistema.</para> - </listitem> - </itemizedlist> - - <note> - <para>Cada política u opción <acronym>MAC</acronym> - soporta sintonizables. Estas usualmente cuelgan del - árbol - <literal>security.mac.<policyname></literal>. - Para visualizar todos los sintonizables de <acronym>MAC</acronym> - utilice el siguiente comando:</para> - - <screen>&prompt.root; <userinput>sysctl -da | grep mac</userinput></screen> - </note> - - <para>Esto debe ser interpretado como si todas las - políticas básicas <acronym>MAC</acronym> - 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 <command>sysctl</command>, pero le permite al - administrador cambiar instantaneamente las políticas - de un sistema sin el requerimiento de recosntruir y - reinstalar un nuevo sistema.</para> - </sect2> + <title>Las etiquetas MAC</title> + + <para>Pendiente de traducción</para> + </sect1> <sect1 id="mac-modules"> - <title>Configuración de módulo</title> - - <para>Cada módulo incluido con la estructura <acronym>MAC</acronym> - puede ser ya sea compilado en el kernel como se notó arriba - o cargado como un módulo ejecutable del kernel. - El método recomendado es agregar el nombre del - módulo al archivo - <filename>/boot/loader.conf</filename> para que se cargue - durante la operación inicial de arranque.</para> - - <para>Las siguientes secciones discutirán los - varios módulos <acronym>MAC</acronym> y cubrirán - sus propiedades. - Implementarlos en un ambiente específico también - será una consideración de este capítulo. - Algunos módulos soportan el uso de etiquetamiento, - el cual controla accesos mediante la imposición de - una etiqueta como <quote>esto es permitido y esto no</quote>. - Un archivo de configuración de etiqueta puede controlar - como se pueden accesar archivos, se dan las comunicaciones - de red y más. La sección previa mostró como - la bandera <option>multilabel</option> podía activarse - en sistemas de archivos para habilitar control de acceso - por archivo o por partición.</para> - - <para>Una configuración de etiqueta única impondría - solamente una etiqueta a través del sistema, es por eso - que la opción <command>tunefs</command> es llamada - <option>multilabel</option>.</para> - - <sect2 id="mac-seeotheruids"> - <title>El módulo MAC seeotheruids</title> - - <indexterm> - <primary>MAC See Other UIDs Policy</primary> - </indexterm> - <para>Nombre de módulo: - <filename>mac_seeotheruids.ko</filename></para> - - <para>Línea de configuración de Kernel: - <literal>options MAC_SEEOTHERUIDS</literal></para> - - <para>Opción de arranque: - <literal>mac_seeotheruids_load="YES"</literal></para> - - <para>El módulo &man.mac.seeotheruids.4; imita los - sintonizables de <command>sysctl</command> - <literal>security.bsd.see_other_uids</literal> - y <literal>security.bsd.see_other_gids</literal>. - Esta opción no requiere activar ninguna etiqueta - antes de la configuración y puede operar de - manera transparente con los otros módulos.</para> - - <para>Despues de cargar el módulo, los - siguientes sintonizables de <command>sysctl</command> - pueden utilizarse para controlar las opciones:</para> - - <itemizedlist> - <listitem> - <para><literal>security.mac.seeotheruids.enabled</literal> - habilitará las opciones del módulo, con - las opciones por omisión. Estas opciones por - omisión le negarán a los usuarios la - habilidad de ver procesos y sockets propiedad de - otros usuarios.</para> - </listitem> - - <listitem> - <para> - <literal>security.mac.seeotheruids.specificgid_enabled</literal> - permitirá a un cierto grupo ser exentados de esta - política. Para exentar grupos específicos de - esta política, utilice el sintonizable de - <command>sysctl</command> <literal>security.mac.seeotheruids.specificgid=<replaceable>XXX</replaceable></literal>. - En el ejemplo de arriba, <replaceable>XXX</replaceable> - debería ser reemplazado con el ID numérico a ser - exentado.</para> - </listitem> - - <listitem> - <para> - <literal>security.mac.seeotheruids.primarygroup_enabled</literal> - es usado para exentar grupos primarios específicos de - esta política. Cuando utilice este sintonizable no - se debe activar - <literal>security.mac.seeotheruids.specificgid_enabled</literal>.</para> - </listitem> - </itemizedlist> - </sect2> - </sect1> + <title>Configuración de módulos</title> + + <para>Pendiente de traducción</para> - <sect1 id="mac-bsdextended"> - <title>El módulo MAC bsdextended</title> - <indexterm> - <primary>MAC</primary> - <secondary>File System Firewall Policy</secondary> - </indexterm> - <para>Nombre de módulo: - <filename>mac_bsdextended.ko</filename></para> - - <para>Línea de configuración de Kernel: - <literal>options MAC_BSDEXTENDED</literal></para> - - <para>Opción de arranque: - <literal>mac_bsdextended_load="YES"</literal></para> - - <para>El módulo &man.mac.bsdextended.4; impone el - fireall del sistema de archivos. La política de - este módulo brinda una extensión al modelo - estándar de permisos del sistema de archivos, - permitiendo a un administrador un conjunto de reglas - tipo firewall para proteger archivos, utilidades y directorios - en la jerarquía del sistema de archivos.</para> - - <para>La política puede ser creada mediante una utilidad, - &man.ugidfw.8;, que tiene una sintaxis similar a la de - &man.ipfw.8;. Se pueden escribir más herramientas - utilizando las funciones en la librería - &man.libugidfw.3;.</para> - - <para>Se debe tener extrema precaución al trabajar con - este módulo, el uso incorrecto puede bloquear el - acceso a ciertas partes del sistema de archivos.</para> - - <sect2> - <title>Ejemplos</title> - - <para>Despues de que el módulo &man.mac.bsdextended.4; ha - sido cargado, el siguiente comando puede ser usado para - listar la regla de configuración actual:</para> - - <screen>&prompt.root; <userinput>ugidfw list</userinput> -0 slots, 0 rules</screen> - - <para>Como se esperaba, no existen reglas definidad. Esto - significa que todo es completamente accesible. Para crear - una regla que bloqueará todos los accesos de - usuarios pero dejará inafectado a - <username>root</username> simplemente ejecute - el siguiente comando:</para> - - <screen>&prompt.root; <userinput>ugidfw add subject not uid root new object not uid root mode n</userinput></screen> - - <note> - <para>En releases previas a &os; 5.3, el - parámetro <parameter>add</parameter> no existía. - En esos casos <parameter>set</parameter> deberí ser - utilizado en su lugar. Vea abajo para un ejemplo de - comando.</para></note> - - <para>Esta es una muy mala idea ya que bloqueará a - todos los usuarios de utilizar incluso los comandos más - simples, como <command>ls</command>. Una lista más - patriotica de reglas puede ser:</para> - - <screen>&prompt.root; <userinput>ugidfw set 2 subject uid <replaceable>user1</replaceable> object uid <replaceable>user2</replaceable> mode n</userinput> -&prompt.root; <userinput>ugidfw set 3 subject uid <replaceable>user1</replaceable> object gid <replaceable>user2</replaceable> mode n</userinput></screen> - - <para>Esto bloqueará todos los accesos, incluyendo - listado de directorios, al directorio home de - <username><replaceable>user2</replaceable></username> - desde el nombre de usuario <username>user1</username>.</para> - - <para>En lugar de <username>user1</username>, se puede pasar - <option>not uid <replaceable>user2</replaceable></option>. - Esto impondrá las mismas restricciones de acceso de - arriba para todos los usuarios en lugar de solo uno.</para> - - <note> - <para>El usuario <username>root</username> no será - afectado por estos cambios.</para> - </note> - - <para>Esto debe proporcionar una idea general de - como se puede utilizar el módulo - &man.mac.bsdextended.4; para ayudar a fortificar - un sistema de archivos. Para mayor información, - vea las páginas de manual - &man.mac.bsdextended.4; y &man.ugidfw.8;.</para> - </sect2> </sect1> <sect1 id="mac-ifoff"> <title>El módulo MAC ifoff</title> - <indexterm> - <primary>MAC Interface Silencing Policy</primary> - </indexterm> - <para>Nombre de módulo: <filename>mac_ifoff.ko</filename></para> - - <para>Línea de configuración de Kernel: - <literal>options MAC_IFOFF</literal></para> - - <para>Opción de arranque: <literal>mac_ifoff_load="YES"</literal> - </para> - - <para>El módulo &man.mac.ifoff.4; existe solamente - para deshabilitar interfaces de red al vuelo y evitar que - interfaces de red sean levantadas durante el arranque - inicial del sistema. No requiere activar ninguna etiqueta - en el sistema, ni tiene dependencias de otros - módulos <acronym>MAC</acronym>.</para> - - <para>La mayoría del control es hecho - a través de los sintonizables de <command>sysctl</command> - listados abajo.</para> - - <itemizedlist> - <listitem> - <para><literal>security.mac.ifoff.lo_enabled</literal> - habilitará/deshabilitará todo el tráfico - en la interfaz loopback (&man.lo.4;).</para> - </listitem> - - <listitem> - <para><literal>security.mac.ifoff.bpfrecv_enabled</literal> - habilitará/deshabilitará todo el tráfico - en la interfaz del filtro de paquetes de Berkeley - (&man.bpf.4;)</para> - </listitem> - - <listitem> - <para><literal>security.mac.ifoff.other_enabled</literal> - habilitará/deshabilitará todo el tráfico - en todas las demás interfacez.</para> - </listitem> - </itemizedlist> - - <para>Uno de los usos más comunes de &man.mac.ifoff.4; es - el monitoreo de red en un ambiente donde el tráfico de - red no debe ser permitido durante la secuencia de arranque. - Otro uso sugerido puede ser escribir un script el cual - utilice - <filename role="package">security/aide</filename> para bloquear - el tráfico de red automaticamente si encuentra archivos - nuevos o alterados en directorios protegidos.</para> + <para>Pendiente de traducción</para> + + </sect1> <sect1 id="mac-portacl"> <title>El módulo MAC portacl</title> - <indexterm> - <primary>MAC Port Access Control List Policy</primary> - </indexterm> - <para>Nombre de módulo: <filename>mac_portacl.ko</filename></para> - - <para>Línea de configuración de Kernel: - <literal>MAC_PORTACL</literal></para> - - <para>Opción de arranque: - <literal>mac_portacl_load="YES"</literal></para> - - <para>El módulo &man.mac.portacl.4; es utilizado para - limitar el amarre a puertos locales <acronym>TCP</acronym> y - <acronym>UDP</acronym> usando una variedad de variables - <command>sysctl</command>. En esencia &man.mac.portacl.4; hace - posible permitir a usuarios que no son <username>root</username> - amarrarse a puertos privilegiados específicos, por - ejemplo, puertos menores a 1024.</para> - - <para>Una vez cargado, este módulo habilitará - la política <acronym>MAC</acronym> en todos los - sockets, Los siguientes sintonizables están - disponibles:</para> - - <itemizedlist> - <listitem> - <para><literal>security.mac.portacl.enabled</literal> - habilitará/deshabilitará la política - completamente.<footnote><para>Debido a un error, la variable - de <command>sysctl</command> - <literal>security.mac.portacl.enabled</literal> no - funcionará en &os; 5.2.1 o releases - anteriores.</para></footnote></para> - </listitem> - - <listitem> - <para><literal>security.mac.portacl.port_high</literal> - especificará el número de puerto más - elevado para el que &man.mac.portacl.4; habilitará - protección.</para> - </listitem> - - <listitem> - <para><literal>security.mac.portacl.suser_exempt</literal> - exentará cuando esté a un valor diferente - de cero, al usuario <username>root</username> de esta - política.</para> - </listitem> - - <listitem> - <para><literal>security.mac.portacl.rules</literal> - especificará la política actual mac_portacl; - ver abajo.</para> - </listitem> - </itemizedlist> - - <para>La política actual <literal>mac_portacl</literal>, - como se especifica en la variable de sysctl - <literal>security.mac.portacl.rules</literal> - es un texto de cadena de la forma: - <literal>rule[,rule,...]</literal> con tantas reglas - como se necesiten. Cada regla es de la forma: - <literal>idtype:id:protocol:port</literal>. El - parámetro - <parameter>idtype</parameter> puede ser - <literal>uid</literal> o <literal>gid</literal> e interpreta - el parámetro <parameter>id</parameter> ya sea como - id de usuario o id de grupo, respectivamente. - El parámetro - <parameter>protocol</parameter> es usado para determinar - si la regla debe aplicar a <acronym>TCP</acronym> o - <acronym>UDP</acronym> configurando el parámetro a - <literal>tcp</literal> o <literal>udp</literal>. - El parámetro final <parameter>port</parameter> es el - número de puerto al que se le permitirá - amarrarse al usuario o grupo especificado.</para> - - <note> - <para>Ya que las reglas son interpretadas directamente por - el kernel, solo valores numéricos pueden utilizarse - para los parámetros ID de usuario, ID de grupo y puerto. - Ejemplo, nombres de usuario, grupo y servicios de puerto - no pueden ser usados.</para> - </note> - - <para>Por omisión, en sistemas tipo &unix;, puertos - menores que 1024 solo pueden ser usados o amarrados a - procesos privilegiados, ejemplo, aquellos que corren - como <username>root</username>. Para que - &man.mac.portacl.4; permita que procesos no privilegiados - se amarren a puertos debajo de 1024 esta restricción - estándar de &unix; debe ser deshabilitada. Esto puede - lograrse activando a cero las variables de &man.sysctl.8; - <literal>net.inet.ip.portrange.reservedlow</literal> y - <literal>net.inet.ip.portrange.reservedhigh</literal>.</para> - - <para>Vea los ejemplos abajo o revise la página de - manual &man.mac.portacl.4; para mayor información.</para> - - <sect2> - <title>Ejemplos</title> - - <para>Los siguientes ejemplos deben iluminar la discusión - de arriba un poco mejor:</para> - - <screen>&prompt.root; <userinput>sysctl security.mac.portacl.port_high=1023</userinput> -&prompt.root; <userinput>sysctl net.inet.ip.portrange.reservedlow=0 net.inet.ip.portrange.reservedhigh=0</userinput></screen> - - <para>Primero configuramos &man.mac.portacl.4; para cubrir - los puertos privilegiados estándar y deshabilitar - las restricciones de amarre normales &unix;.</para> - - <screen>&prompt.root; <userinput>sysctl security.mac.portacl.suser_exempt=1</userinput></screen> - - <para>El usuario <username>root</username> no debe ser invalidado - por esta política, así que ponga - <literal>security.mac.portacl.suser_exempt</literal> a un valor - diferente de cero. El módulo &man.mac.portacl.4; - ha sido ahora configurado para comportarse de la misma - manera en que lo hacen los sistemas tipo &unix; por - omisión.</para> - - <screen>&prompt.root; <userinput>sysctl security.mac.portacl.rules=uid:80:tcp:80</userinput></screen> - - <para>Permite al usuario con <acronym>UID</acronym> 80 - (normalmente el usuario <username>www</username>) amarrarse - al puerto 80. Esto puede usarse para permitir al usuario - <username>www</username> ejecutar un servidor web sin tener - siquiera privilegios de <username>root</username>.</para> - - <screen>&prompt.root; <userinput>sysctl security.mac.portacl.rules=uid:1001:tcp:110,uid:1001:tcp:995</userinput></screen> - - <para>Permite al usuario con <acronym>UID</acronym> de - 1001 amarrarse al puerto <acronym>TCP</acronym> 110 - (<quote>pop3</quote>) y 995 (<quote>pop3s</quote>). - Esto le permitirá a este usuario iniciar un - servidor que acepte conexiones en los puertos - 110 y 995.</para> - </sect2> + <para>Pendiente de traducción</para> + + </sect1> <sect1 id="mac-labelingpolicies"> - <title>Políticas MAC con propiedades de etiquetamiento</title> - - <para>Las siguientes secciones discutirán políticas - <acronym>MAC</acronym> que utilizan etiquetas.</para> - - <para>De aquí en adelante este capítulo se enfocará - en las propiedades de &man.mac.biba.4;, &man.mac.lomac.4;, - &man.mac.partition.4;, y &man.mac.mls.4;.</para> - - <note> - <para>Este es solamente un ejemplo de configuración y - no debe ser considerado para una implementación en - producción. El objetivo es documentar y mostrar la - sintaxis así como los ejemplos para la - implementación y prueba.</para> - </note> - - <para>Para que estas políticas funcionen correctamente - se deben hacer varias preparaciones.</para> - - <sect2 id="mac-prep"> - <title>Preparación para políticas de - etiquetamiento</title> - - <para>Los siguientes cambios son requeridos en - el archivo <filename>login.conf</filename>:</para> - - <itemizedlist> - <listitem> - <para>Una clase <literal>insecure</literal>, u otra - clase de tipo similar, debe ser agregada. - La clase de login <literal>insecure</literal> - no es requerida y solo es utilizada aquícomo un ejemplo; - configuraciones diferentes pueden utilizar otro nombre - de clase.</para - </listitem> - - <listitem> - <para> La clase <literal>insecure</literal> debe tener - las siguientes propiedades y definiciones. Varias - de estas pueden ser alteradas pero la línea - que define la etiqueta por omisión es un - requerimiento y debe permanecer.</para> - - <programlisting>insecure:\ - :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/low:</programlisting> - - <para>El comando &man.cap.mkdb.1; necesita ser ejecutado - en &man.login.conf.5; antes de que cualquiera - de los usuarios puede ser cambiado a la nueva - clase.</para> - - <para>El usuario <username>root</username> debe también - ser colocado en un clase de login; de otra manera, casi - cualquier comando ejecutado por <username>root</username> - requerirá el uso de - <command>setpmac</command>.</para> - - <warning> - <para>La reconstrucción de la base de datos - de <filename>login.conf</filename> puede causar - algunos errores posteriores con la clase daemon. - Simplemente descomentando la cuenta daemon y - reconstruyendo la base de datos debería - aliviar estos síntomas.</para> - </warning> - </listitem> - - <listitem> - <para>Asegurarse que todas las particiones - en las que el etiquetamiento <acronym>MAC</acronym> - será implementado soporten - <option>multilabel</option>. - Debemos hacer esto porque muchos de los ejemplos - aquí mostrados contienen diferentes - etiquetas para propósitos de prueba. - Revise la salida del comando <command>mount</command> - como medida precautoria.</para> - </listitem> - - <listitem> - <para>Cambie cualquier usuario que tendrá los más - altos mecanismos de seguridad impuestos a la nueva clase - de usuario. Una ejecución rápida de - &man.pw.8; o &man.vipw.8; debe hacer el truco.</para> - </listitem> - </itemizedlist> - </sect2> + <title>Políticas de etiquetas MAC</title> + + + <para>Pendiente de traducción</para> + </sect1> <sect1 id="mac-partition"> <title>El módulo MAC partition</title> - <indexterm> - <primary>MAC Process Partition Policy</primary> - </indexterm> - <para>Nombre de módulo: - <filename>mac_partition.ko</filename></para> - - <para>Línea de configuración de Kernel: - <literal>options MAC_PARTITION</literal></para> - - <para>Opción de arranque: - <literal>mac_partition_load="YES"</literal></para> - - <para>La política &man.mac.partition.4; dejará - caer procesos en <quote>particiones</quote> específicas - basandose en su etiqueta <acronym>MAC</acronym>. Piense en - ello como un tipo especial de &man.jail.8;, aunque eso es - dificilmente una comparación meritoria.</para> - - <para>Este es un módulo que debe ser agregado al - archivo &man.loader.conf.5; para que cargue y - habilite la política durante el proceso - de arranque.</para> - - <para>La mayoría de configuraciones para esta - política son realizadas usando la utilidad - &man.setpmac.8; que será explicada abajo. - El siguiente sintonizable de <command>sysctl</command> - está disponible para esta política:</para> - - <itemizedlist> - <listitem> - <para><literal>security.mac.partition.enabled</literal> - habilitará la imposición de particiones - de procesos <acronym>MAC</acronym>.</para> - </listitem> - </itemizedlist> - - <para>Cuando esta política está habilitada, los - usuarios solo tendán permitido ver sus procesos pero - no tendán permitida la posibilidad de trabajar con - ciertas utilidades. Por ejemplo, un usuario en la - clase <literal>insecure</literal> de arriba no tendá - permitido accesar el comando <command>top</command> así - como muchos otros comandos que necesitan engendrar un - proceso.</para> - - <para>Para activar o tirar utilidades dentro de una etiqueta - de partición, use la utilidad <command>setpmac</command>:</para> - - <screen>&prompt.root; <userinput>setpmac partition/13 top</userinput></screen> - - <para>Esto agregará el comando <command>top</command> - a la etiqueta activada en usuarios en la clase - <literal>insecure</literal>. Note que todos los procesos - engendrados por usuarios en la clase <literal>insecure</literal> - permanecerán en la etiqueta <literal>partition/13</literal>. - </para> - - <sect2> - <title>Ejemplos</title> - - <para>El siguiente comando le mostrará la etiqueta de - partición y la lista de procesos:</para> - - <screen>&prompt.root; <userinput>ps Zax</userinput></screen> - - <para>El siguiente comando permitirá la visualización - de etiqueta de partición de procesos de otro usuario - y que usuario está ejecutando procesos actualmente:</para> - - <screen>&prompt.root; <userinput>ps -ZU trhodes</userinput></screen> - - <note> - <para>Los usuarios pueden ver procesos en la etiqueta de - <username>root</username> a menos que la política - &man.mac.seeotheruids.4; está cargada.</para> - </note> - - <para>Una implementación realmente engañosa - podría tener todos los servicios deshabilitados - en <filename>/etc/rc.conf</filename> e iniciados por un - script que inicie con la configuración adecuada - de etiquetamiento.</para> - - <note> - <para>Las siguientes políticas soportan configuraciones - de enteros en lugar de las tres etiquetas ofrecidas - por omisión. Estas opciones, incluyendo sus - limitaciones, son mejor explicadas en las páginas - de manual del módulo.</para> - </note> - </sect2> + <para>Pendiente de traducción</para> + + </sect1> <sect1 id="mac-mls"> <title>El módulo de seguridad multinivel MAC</title> - <indexterm> - <primary>MAC Multi-Level Security Policy</primary> - </indexterm> - <para>Nombre de módulo: <filename>mac_mls.ko</filename></para> - - <para>Línea de configuración de Kernel: - <literal>options MAC_MLS</literal></para> - - <para>Opción de arranque: - <literal>mac_mls_load="YES"</literal></para> - - <para>La política &man.mac.mls.4; controla accesos entre sujetos - y objetos en el sistema imponiendo una política estricta de - flujo de información.</para> - - <para>En ambientes <acronym>MLS</acronym>, un nivel de - <quote>aclaramiento</quote> es activado en cada etiqueta de - objeto o sujeto, junto con compartimientos. Debido a que - este aclaramiento o niveles de sensibilidad pueden alcanzar - números mayores a seis mil; podría ser una tarea - intimidante para cualquier administrador de sistema configurar - cada objeto o sujeto. Afortunadamente, tres etiquetas - <quote>instantaneas</quote> esán ya incluidas en - esta política.</para> - - <para>Estas etiquetas son <literal>mls/low</literal>, - <literal>mls/equal</literal> y <literal>mls/high</literal>. - Ya que estas etiquetas son descritas en profundidad - en la página de manual, solo tendrán una - descripción breve aquí:</para> - - <itemizedlist> - <listitem> - <para>La etiqueta <literal>mls/low</literal> contiene una - configuración baja que le permite ser dominada - por todos los otros objetos. Cualquier cosa etiquetada - con <literal>mls/low</literal> tendrá un nivel - de aclaramiento bajo y no tendrá permitido - accesar información de un nivel más alto. - Adicionalmente, esta etiqueta prevendrá a objetos - de un nivel de aclaramiento más elevado de - escribir o pasar información hacia ellos.</para> - </listitem> - - <listitem> - <para>La etiqueta <literal>mls/equal</literal> debe ser - colocada en objetos considerados exentos de la - política.</para> - </listitem> - - <listitem> - <para>La etiqueta <literal>mls/high</literal> es el nivel - más elevado de aclaramiento posible. Los objetos - que tienen asignada esta etiqueta mantendrán - dominación sobre todos los otros objetos en el - sistema; sin embargo, no permitirán el filtrado - de información a objetos de una clase menor.</para> - </listitem> - </itemizedlist> - - <para><acronym>MLS</acronym> brinda:</para> - - <itemizedlist> - <listitem> - <para>Un nivel de seguridad jerárquico con un - conjunto de categorías no jerárquicas.</para> - </listitem> - - <listitem> - <para>Reglas fijas: no lecturas hacia arriba, no escrituras - hacia abajo (un sujeto puede tener acceso de lectura a - objetos en su propio nivel o inferior, pero no superior. - Similarmente, un sujeto puede tener acceso de escritura - a objetos en su propio nivel o superior pero no - inferior.).</para> - </listitem> - - <listitem> - <para>Secreto (previniendo exposición - inapropiada de datos).</para> - </listitem> - - <listitem> - <para>Bases para el diseño de sistemas que manejen - datos concurrentemente a niveles múltiples de - sensitividad (sin filtrar información entre - secreto y confidencial).</para> - </listitem> - </itemizedlist> - - <para>Los siguientes sintonizables de <command>sysctl</command> - están disponibles para la configuración de - servicios especiales e interfaces:</para> - - <itemizedlist> - <listitem> - <para><literal>security.mac.mls.enabled</literal> es usado - para habilitar/deshabilitar la política - <acronym>MLS</acronym>.</para> - </listitem> - - <listitem> - <para><literal>security.mac.mls.ptys_equal</literal> - etiquetará todos los dispositivos &man.pty.4; - como <literal>mls/equal</literal> durante su - creación.</para> - </listitem> - - <listitem> - <para><literal>security.mac.mls.revocation_enabled</literal> es - utilizado para revocar accesos a objetos despues que su - etiqueta cambie a una etiqueta de un grado inferior.</para> - </listitem> - - <listitem> - <para><literal>security.mac.mls.max_compartments</literal> es - utilizado para activar el número máximo de - niveles de compartimientos con objetos; basicamente el - número máximo de compartimientos permitidos - en un sistema.</para> - </listitem> - </itemizedlist> - - <para>Para manipular las etiquetas <acronym>MLS</acronym>, - se ha provisto el comando &man.setfmac.8;. Para asignar - una etiqueta a un objeto, ejecute el siguiente comando:</para> - - <screen>&prompt.root; <userinput>setfmac mls/5 test</userinput></screen> - - <para>Para obtener la etiqueta <acronym>MLS</acronym> para - el archivo <filename>test</filename> ponga el siguiente - comando:</para> - - <screen>&prompt.root; <userinput>getfmac test</userinput></screen> - - <para>Este es un resumen de las propiedades de la política - <acronym>MLS</acronym>. Otro enfoque es crear un archivo de - políticas maestro en <filename class="directory">/etc</filename> - que especifique la información de la política - <acronym>MLS</acronym> y alimentar con ese archivo el comando - <command>setfmac</command>. Este método será - explicado despues de cubrir todas las políticas.</para> - - <para>Observaciones: un objeto con aclaramiento inferior es - incapaz de observar procesos con aclaramiento más - elevado. Una política básica podría - ser imponer <literal>mls/high</literal> en todo lo que - no va a ser leído, incluso si necesita escribirse. - Imponga <literal>mls/low</literal> en todo lo que - no va a ser escrito, incluso si necesita ser leído. - Y finalmente imponga - <literal>mls/equal</literal> en el resto. Todos los usuarios - marcados <literal>insecure</literal> deben configurarse - a <literal>mls/low</literal>.</para> + <para>Pendiente de traducción</para> + + </sect1> <sect1 id="mac-biba"> <title>El módulo MAC Biba</title> - <indexterm> - <primary>MAC Biba Integrity Policy</primary> - </indexterm> - <para>Nombre de módulo: <filename>mac_biba.ko</filename></para> - - <para>Línea de configuración de Kernel: - <literal>options MAC_BIBA</literal></para> - - <para>Opción de arranque: - <literal>mac_biba_load="YES"</literal></para> - - <para>El módulo &man.mac.biba.4; carga la política - <acronym>MAC</acronym> Biba. Esta política funciona - muy parecido a la política <acronym>MLS</acronym> con - la excepción que las reglas para flujo de información - están ligeramente invertidas. Esto es dicho para prevenir - el flujo hacia abajo de información sensitiva mientras - que la política <acronym>MLS</acronym> previene el - flujo hacia arriba de información sensitiva; así - mucha de esta sección puede aplicar a ambas - políticas.</para> - - <para>En ambientes Biba, una etiqueta de <quote>integridad</quote> - es activada en cada objeto o sujeto. Estas etiquetas son hechas - de grados jerárquicos, y de componentes no jerárquicos. - Cuando el grado de un objeto o sujeto asciende también - lo hace su integridad.</para> - - <para>Las etiquetas soportadas son <literal>biba/low</literal>, - <literal>biba/equal</literal>, y<literal>biba/high</literal>; - como se explica abajo:</para> - - <itemizedlist> - <listitem> - <para>La etiqueta <literal>biba/low</literal> es considerada - la integridad más baja que un objeto o sujeto - puede tener. Activando esto es objetos o sujetos bloqueará - sus accesos de escritura a objetos o sujetos marcados - como high. Aunque aún tendrán acceso - de lectura.</para> - </listitem> - - <listitem> - <para>La etiqueta <literal>biba/equal</literal> solo debe - ser colocada en objetos considerados exentos de la - política.</para> - </listitem> - - <listitem> - <para>La etiqueta <literal>biba/high</literal> permitirá - la escritura a objetos puestos a una etiqueta de nivel - inferior, pero no permitirá leer ese objeto. - Se recomienda que esta etiqueta sea colocada en - objetos que afecten la integridad del sistema entero.</para> - </listitem> - </itemizedlist> - - <para>Biba brinda:</para> - - <itemizedlist> - <listitem> - <para>Nivel de integridad jerárquico con un - conjunto de categorías de integridad no - jerárquica.</para> - </listitem> - - <listitem> - <para>Reglas fijas: no escrituras hacia arriba, no - lecturas hacia abajo (lo opuesto a <acronym>MLS</acronym>). - Un sujeto puede tener acceso de escritura a objetos - en su propio nivel o inferior, pero no superior. - Similarmente, un sujeto puede tener acceso de lectura - a objetos en su propio nivel o superior, pero no - inferior.</para> - </listitem> - - <listitem> - <para>Integridad (previniendo modificaciones inapropiadas - de datos).</para> - </listitem> - - <listitem> - <para>Niveles de integridad (en lugar de niveles de - sensitividad MLS).</para> - </listitem> - </itemizedlist> - - <para>Los siguientes sintonizables de <command>sysctl</command> - pueden utilizarse para manipular la política - Biba.</para> - - <itemizedlist> - <listitem> - <para><literal>security.mac.biba.enabled</literal> puede usarse - para habilitar/deshabilitar la imposición de la - política Biba en la máquina destino.</para> - </listitem> - - <listitem> - <para><literal>security.mac.biba.ptys_equal</literal> puede - usarse para deshabilitar la política Biba en - dispositivos &man.pty.4;.</para> - </listitem> - - <listitem> - <para><literal>security.mac.biba.revocation_enabled</literal> - forzará la revocación de acceso a objetos si - la etiqueta es cambiada a dominar el sujeto.</para> - </listitem> - </itemizedlist> - - <para>Para accesar la configuración de la política - biba en objetos del sistema, use los comandos - <command>setfmac</command> y <command>getfmac</command>:</para> - - <screen>&prompt.root; <userinput>setfmac biba/low test</userinput> -&prompt.root; <userinput>getfmac test</userinput> -test: biba/low</screen> - - <para>Observaciones: un sujeto con integridad inferior es - incapaz de escribir a un sujeto con integridad más - elevada; un sujeto con integridad más elevada no - puede observar o leer a un objeto con integridad inferior.</para> + <para>Pendiente de traducción</para> + + + + + </sect1> <sect1 id="mac-lomac"> <title>El módulo MAC LOMAC</title> - <indexterm> - <primary>MAC LOMAC</primary> - </indexterm> - <para>Nombre de módulo: <filename>mac_lomac.ko</filename></para> - - <para>Línea de configuración de Kernel: - <literal>options MAC_LOMAC</literal></para> - <para>Opción de arranque: - <literal>mac_lomac_load="YES"</literal></para> - - <para>A diferencia de la política <acronym>MAC</acronym> Biba, - la política &man.mac.lomac.4; permite acceso a - objetos con integridad inferior solamente despues de - decrementar el nivel de integridad para no romper - cualquier regla de integridad.</para> - - <para>La versión <acronym>MAC</acronym> de la política - de integridad de marca-inferior, no confundirla con la antigua - implementación &man.lomac.4;, funciona casi identicamente - a Biba, pero con la excepción de utilizar etiquetas - flotantes para soportar el descenso a través de un - compartimiento de grado auxiliar. Este compartimiento - secundario toma la forma de <literal>[auxgrade]</literal>. - Al asignar una política lomac con un grado - auxiliar, se debe ver un poco como: <literal>lomac/10[2]</literal> - donde el número dos (2)es el grado - auxiliar.</para> - - <para>La política <acronym>MAC</acronym> LOMAC se - basa en el etiquetamiento omnipresente en todos los - objetos del sistema con etiquetas de integridad, - premitiendo a sujetos leer de objetos con integridad - inferior y entonces desactualizar la etiqueta en el - sujeto para prevenir escrituras futuras a objetos - con integridas más alta. Esta es la opci6oacute;n - <literal>[auxgrade]</literal> discutida arriba, así - la política puede brindar una compatibilidad - mayor y requiere menos configuración inicial - que Biba.</para> - - <sect2> - <title>Ejemplos</title> - - <para>Como en las políticas Biba y <acronym>MLS</acronym>; - las utilidades <command>setfmac</command> y <command>setpmac</command> - pueden usarse para colocar etiquetas en objetos del - sistema:</para> - - <screen>&prompt.root; <userinput>setfmac /usr/home/trhodes lomac/high[low]</userinput> -&prompt.root; <userinput>getfmac /usr/home/trhodes</userinput> lomac/high[low]</screen> - - <para>Note que el grado auxiliar aquí es <literal>low</literal>, - esta es una cualidad brindada solamente por la - política <acronym>MAC</acronym> LOMAC.</para> - </sect2> + + + + <para>Pendiente de traducción</para> + </sect1> <sect1 id="mac-implementing"> - <title>Implementando un ambiente seguro con MAC</title> + <title>Implementación de un entorno seguro con MAC</title> + + + + <para>Pendiente de traducción</para> + - <indexterm> - <primary>MAC Example Implementation</primary> - </indexterm> - <para>La siguiente demostración implementará - un ambiente seguro utilizando varios módulos - <acronym>MAC</acronym> con políticas configuradas - correctamente. Esta solamente es una prueba y no debe - ser considerada una respuesta completa a las aflicciones - de seguridad de todos. Solamente implementar una - política e ignorarla nunca funciona y puede - ser desastroso en un ambiente en producción.</para> - - <para>Antes de iniciar este proceso, la opción - <literal>multilabel</literal> debe ser aplicada a cada - archivo del sistema como se declaró al principio - de este capítulo. No hacerlo resultará - en errores.</para> - - <sect2> - <title>Crear una clase de usuario insegura</title> - - <para>Inicie el procedimiento agregando la siguiente clase - de usuario al archivo <filename>/etc/login.conf</filename>:</para> - - <programlisting>insecure:\ -: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:</programlisting> - - <para>Y añadiendo la siguiente línea a la - clase de usuario por omisión:</para> - - <programlisting>:label=mls/equal,biba/equal,partition/15:</programlisting> - - <para>Una vez que esto se ha completado, el siguiente - comando debe ejecutarse para reconstruir la base - de datos:</para> - - <screen>&prompt.root; <userinput>cap_mkdb /etc/login.conf</userinput></screen> - </sect2> - - <sect2> - <title>Arrancar con los módulos correctos</title> - - <para>Agregue las siguientes líneas al archivo - <filename>/boot/loader.conf</filename> para que los - módulos requeridos sean cargados durante la - inicialización del sistema:</para> - - <programlisting>mac_biba_load="YES" -mac_mls_load="YES" -mac_seeotheruids_load="YES" -mac_partition_load="YES"</programlisting> - </sect2> - - <sect2> - <title>Configure todos los usuarios a inseguro</title> - - <para>Todas la cuentas de usuarios que no sean <username>root</username> - o usuarios de sistema ahora requerirán una clase - de login. Esta clase de login es requerida o de otra - manera a los usuarios se les negará acceso a - comandos comunes como &man.vi.1;. - El siguiente script de <command>sh</command> debe - hacer el truco:</para> - - <screen>&prompt.root; <userinput>for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \</userinput> - <userinput>/etc/passwd`; do pw usermod $x -L insecure; done;</userinput></screen> - - <para>El comando <command>cap_mkdb</command> necesitará - ser ejecutado en <filename>/etc/master.passwd</filename> despues - de este cambio.</para> - </sect2> - - <sect2> - <title>Complete la configuración</title> - - <para>Un archivo de contexto debe ser creado ahora; el - siguiente ejemplo fué tomado del ejemplo de - política de Robert Watson y debe ser colocado en - <filename>/etc/policy.contexts</filename>.</para> - - <programlisting># Esta es la política BIBA/MLS por omisión para este sistema. - -.* biba/high,mls/high -/sbin/dhclient biba/high(low),mls/high(low) -/dev(/.*)? biba/equal,mls/equal -# This is not an exhaustive list of all "privileged" devices. -/dev/mdctl biba/high,mls/high -/dev/pci biba/high,mls/high -/dev/k?mem biba/high,mls/high -/dev/io biba/high,mls/high -/dev/agp.* biba/high,mls/high -(/var)?/tmp(/.*)? biba/equal,mls/equal -/tmp/\.X11-unix biba/high(equal),mls/high(equal) -/tmp/\.X11-unix/.* biba/equal,mls/equal -/proc(/.*)? biba/equal,mls/equal -/mnt.* biba/low,mls/low -(/usr)?/home biba/high(low),mls/high(low) -(/usr)?/home/.* biba/low,mls/low -/var/mail(/.*)? biba/low,mls/low -/var/spool/mqueue(/.*)? biba/low,mls/low -(/mnt)?/cdrom(/.*)? biba/high,mls/high -(/usr)?/home/(ftp|samba)(/.*)? biba/high,mls/high -/var/log/sendmail\.st biba/low,mls/low -/var/run/utmp biba/equal,mls/equal -/var/log/(lastlog|wtmp) biba/equal,mls/equal</programlisting> - - <para>Esta política impondrá seguridad activando - restricciones tanto de bajada como de subida en el flujo - de información en relación a los directorios - y utilidades listadas en la izquierda.</para> - - <para>Esto puede ahora ser leído hacia nuestro - sistema ejecutando el siguiente comando:</para> - - <screen>&prompt.root; <userinput>setfsmac -ef /etc/policy.contexts /</userinput> -&prompt.root; <userinput>setfsmac -ef /etc/policy.contexts /usr</userinput></screen> - - <note> - <para>El esquema de sistema de archivos de arriba puede - ser diferente dependiendo del ambiente.</para> - </note> - - <para>El archivo <filename>/etc/mac.conf</filename> requiere - las siguientes modificaciones en la secci6oacute;n - principal:</para> - - <programlisting>default_labels file ?biba,?mls -default_labels ifnet ?biba,?mls -default_labels process ?biba,?mls,?partition -default_labels socket ?biba,?mls</programlisting> - </sect2> - - <sect2> - <title>Probando la configuración</title> - - <indexterm> - <primary>MAC Configuration Testing</primary> - </indexterm> - - <para>Agregue un usuario con el comando <command>adduser</command> - y coloque a ese usuario en la clase <literal>insecure</literal> - para estas pruebas.</para> - - <para>Los ejemplos de abajo mostrarán una mezcla - de <username>root</username> y usuarios regulares de - prueba; utilice el prompt para distinguie entre - los dos.</para> - - <sect3> - <title>Pruebas de etiquetamiento básico</title> - - <screen>&prompt.user; <userinput>getpmac</userinput> -biba/15(15-15),mls/15(15-15),partition/15 -&prompt.root; <userinput>setpmac partition/15,mls/equal top</userinput></screen> - - <note> - <para>El proceso top será asesinado antes - de iniciar otro proceso top.</para> - </note> - </sect3> - - <sect3> - <title>Pruebas MAC Seeotheruids</title> - - <screen>&prompt.user; <userinput>ps Zax</userinput> -biba/15(15-15),mls/15(15-15),partition/15 1096 #C: S 0:00.03 -su (bash) -biba/15(15-15),mls/15(15-15),partition/15 1101 #C: R+ 0:00.01 ps Zax</screen> - - <para>No se debe permitir ver - procesos propiedad de otros usuarios.</para> - </sect3> - - <sect3> - <title>Prueba MAC Partition</title> - - <para>Deshabilitar la política <acronym>MAC</acronym> - <literal>seeotheruids</literal> para el resto de estas - pruebas:</para> - - <screen>&prompt.root; <userinput>sysctl security.mac.seeotheruids.enabled=0</userinput> -&prompt.user; <userinput>ps Zax</userinput> -LABEL PID TT STAT TIME COMMAND - biba/equal(low-high),mls/equal(low-high),partition/15 1122 #C: S+ 0:00.02 top - biba/15(15-15),mls/15(15-15),partition/15 1096 #C: S 0:00.05 -su (bash) - biba/15(15-15),mls/15(15-15),partition/15 1123 #C: R+ 0:00.01 ps Zax</screen> - - <para>Todos los usuarios deben tener permitido ver todos - los procesos en su partición.</para> - </sect3> - - <sect3> - <title>Probando etiquetas Biba y MLS</title> - - <screen>&prompt.root; <userinput>setpmac partition/15,mls/equal,biba/high\(high-high\) top</userinput> -&prompt.user; <userinput>ps Zax</userinput> -LABEL PID TT STAT TIME COMMAND - biba/high(high-high),mls/equal(low-high),partition/15 1251 #C: S+ 0:00.02 top - biba/15(15-15),mls/15(15-15),partition/15 1096 #C: S 0:00.06 -su (bash) - biba/15(15-15),mls/15(15-15),partition/15 1157 #C: R+ 0:00.00 ps Zax</screen> - - <para>La política Biba nos permite leer objetos - etiquetados más alto.</para> - - <screen>&prompt.root; <userinput>setpmac partition/15,mls/equal,biba/low top</userinput> -&prompt.user; <userinput>ps Zax</userinput> -LABEL PID TT STAT TIME COMMAND - biba/15(15-15),mls/15(15-15),partition/15 1096 #C: S 0:00.07 -su (bash) - biba/15(15-15),mls/15(15-15),partition/15 1226 #C: R+ 0:00.01 ps Zax</screen> - - <para>La política Biba no permite que objetos - etiquetados como inferiores sean leídos; de - todas maneras, <acronym>MLS</acronym> si lo - permite.</para> - - <screen>&prompt.user; <userinput>ifconfig bge0 | grep maclabel</userinput> -maclabel biba/low(low-low),mls/low(low-low) -&prompt.user; <userinput>ping -c 1 192.0.34.166</userinput> -PING 192.0.34.166 (192.0.34.166): 56 data bytes -ping: sendto: Permission denied</screen> - - <para>Los usuarios son incapaces - de dar un ping a - <hostid role="domainname">example.com</hostid>, o cualquier - dominio.</para> - - <para>Para prevenir que ocurra este error, ejecute el - siguiente comando:</para> - - <screen>&prompt.root; <userinput>sysctl security.mac.biba.trust_all_interfaces=1</userinput></screen> - - <para>Esto configura la etiqueta por omisión de interfaces - a modo inseguro, con ello la política Biba por omisió - no será impuesta.</para> - - <screen>&prompt.root; <userinput>ifconfig bge0 maclabel biba/equal\(low-high\),mls/equal\(low-high\)</userinput> -&prompt.user; <userinput>ping -c 1 192.0.34.166</userinput> -PING 192.0.34.166 (192.0.34.166): 56 data bytes -64 bytes from 192.0.34.166: icmp_seq=0 ttl=50 time=204.455 ms ---- 192.0.34.166 ping statistics --- -1 packets transmitted, 1 packets received, 0% packet loss -round-trip min/avg/max/stddev = 204.455/204.455/204.455/0.000 ms</screen> - - <para>Configurando una etiqueta más correcta, - podemos ejecutar peticiones de <command>ping</command>.</para> - - <para>Ahora para crear algunos archivos para procedimientos - de prueba de lectura y escritura:</para> - - <screen>&prompt.root; <userinput>touch test1 test2 test3 test4 test5</userinput> -&prompt.root; <userinput>getfmac test1</userinput> -test1: biba/equal,mls/equal -&prompt.root; <userinput>setfmac biba/low test1 test2; setfmac biba/high test4 test5; \ - setfmac mls/low test1 test3; setfmac mls/high test2 test4</userinput> -&prompt.root; <userinput>setfmac mls/equal,biba/equal test3 && getfmac test?</userinput> -test1: biba/low,mls/low -test2: biba/low,mls/high -test3: biba/equal,mls/equal -test4: biba/high,mls/high -test5: biba/high,mls/equal -&prompt.root; <userinput>chown testuser:testuser test?</userinput></screen> - - <para>Todos estos archivos deben ser ahora propiedad - de nuestro usuario <username>testuser</username>. - Y ahora para algunas pruebas de lectura:</para> - - <screen>&prompt.user; <userinput>ls</userinput> -test1 test2 test3 test4 test5 -&prompt.user; <userinput>ls test?</userinput> -ls: test1: Permission denied -ls: test2: Permission denied -ls: test4: Permission denied -test3 test5</screen> - - <para>No deberíamos tener permitido observar - pares; ejemplo: - <literal>(biba/low,mls/low)</literal>, - <literal>(biba/low,mls/high)</literal> y - <literal>(biba/high,mls/high)</literal>. Y por supuesto, - el acceso de lectura debe estar denegado. Ahora para - algunas pruebas de escritura:</para> - - <screen>&prompt.user; <userinput>for i in `echo test*`; do echo 1 > $i; done</userinput> --su: test1: Permission denied --su: test4: Permission denied --su: test5: Permission denied</screen> - - <para>Como con las pruebas de lectura, el acceso de - escritura no debe ser permitido para escribir pares; - ejemplo: - <literal>(biba/low,mls/high)</literal> y - <literal>(biba/equal,mls/equal)</literal>.</para> - - <screen>&prompt.user; <userinput>cat test?</userinput> -cat: test1: Permission denied -cat: test2: Permission denied -1 -cat: test4: Permission denied</screen> - - <para>Y ahora como <username>root</username>:</para> - - <screen>&prompt.root; <userinput>cat test2</userinput> -1</screen> - </sect3> - </sect2> </sect1> <sect1 id="MAC-examplehttpd"> - <title>Otro ejemplo: Utilizando MAC para confinar un servidor web</title> - - <para>Una locación separada para los datos de - web a los cuales los usuarios deben ser capaces de - accesar será seleccionada. Esto permitirá - a los procesos <literal>biba/high</literal> derechos - de acceso a los datos web.</para> - - <para>Inicie creando un directorio para guardar los - datos de web:</para> - - <screen>&prompt.root; <userinput>mkdir /usr/home/cvs</userinput></screen> - - <para>Ahora inicialicelo con <command>cvs</command>:</para> - - <screen>&prompt.root; <userinput>cvs -d /usr/home/cvs init</userinput></screen> - - <para>El primer objetivo es habilitar la política - <literal>biba</literal>, así - <literal>mac_biba_enable="YES"</literal> debe ser - colocado en - <filename>/boot/loader.conf</filename>. Se asume que - el soporte para <acronym>MAC</acronym> ha sido - habilitado en el kernel.</para> - - <para>De este punto en adelante todo en el sistema - debe configurarse a <literal>biba/high</literal> por - omisión.</para> - - <para>La siguiente modificación debe ser hecha - al archivo <filename>login.conf</filename>, bajo - la clase de usuario por omisión:</para> - - <programlisting>:ignoretime@:\ - :umask=022:\ - :label=biba/high:</programlisting> - - <para>Cada usuario debe ser ahora colocado en la clase por - omisión; un comando como:</para> - - <screen>&prompt.root; <userinput>for x in `awk -F: '($3 >= 1001) && ($3 != 65534) { print $1 }' \</userinput> - <userinput>/etc/passwd`; do pw usermod $x -L default; done;</userinput></screen> - - <para>logrará esta tarea en unos cuantos momentos.</para> - - <para>Ahora hay que crear otra clase, web, una copia de - la clase por omisión, con la configuración de - etiqueta <literal>biba/low</literal>.</para> - - <para>Agregue un usuario que será utilizado para - trabajar con los datos principales de web guardados - en un repositorio <application>cvs</application>. - Este usuario debe ser colocado en nuestra nueva clase - de login, <username>web</username>.</para> - - <para>Ya que en todos lados por omisión es - <literal>biba/high</literal>, el repositorio será - el mismo. Los datos de web también deben ser - lo mismo para usuarios que tienen acceso de lectura/escritura. - de todas maneras, ya que nuestro servidor de web - estará sirviendo datos que usuarios - <literal>biba/high</literal> deben accesar, necesitaremos - rebajar los datos como un todo.</para> - - <para>Las herramientas perfectas para esto son &man.sh.1; - y &man.cron.8; y ya están en &os;. El siguiente - script debe hacer todo lo que queremos:</para> - - <programlisting>PATH=/bin:/usr/bin:/usr/local/bin; export PATH; -CVSROOT=/home/repo; export CVSROOT; -cd /home/web; -cvs -qR checkout -P htdocs; -exit;</programlisting> - - <note> - <para>En muchos casos los Id tags de <command>cvs</command> - deben ser colocados dentro de los archivos - de datos del sitio web.</para> - </note> - - <para>Este script puede ahora ser colocado - en el directorio home de <username>web</username> - y la siguiente entrada agregada a &man.crontab.1;:</para> - - <programlisting># Descargar los datos de web como biba/low cada doce horas: -0 */12 * * * web /home/web/checkout.sh</programlisting> - - <para>Esto descargará las fuentes <acronym>HTML</acronym> - cada doce horas en la máquina.</para> - - <para>El método de arranque por omisión para el - servidor de web debe ser modificado también para - iniciar los procesos como <literal>biba/low</literal>. - Esto puede realizarse haciendo la siguiente modificación - al script - <filename>/usr/local/etc/rc.d/apache.sh</filename>:</para> - - <programlisting>command="setpmac biba/low /usr/local/sbin/httpd"</programlisting> - - <para>La configuraci6oacute:n de <application>Apache</application> - debe ser alterada para trabajar con la política - <literal>biba/low</literal>. En este caso el software debe ser - configurado para agregar a los archivos de log en un directorio - configurado como <literal>biba/low</literal> o de lo contrario - errores de <errorname>access denied</errorname> serán - retornados.</para> - - <note> - <para>Siguiendo este ejemplo requiere que la - directiva <literal>docroot</literal> sea - puesta a <filename>/home/web/htdocs</filename>; - de otra manera, <application>Apache</application> - fallará al tratar de localizar el - directorio desde donde servir documentos.</para> - </note> - - <para>Otras variables de configuración deben ser - también alteradas, incluyendo el <acronym>PID</acronym> - de archivo, - <literal>Scoreboardfile</literal>, - <literal>DocumentRoot</literal>, sitio del archivo de log o - cualquier otra variable que requiera acceso de escritura. - Al utilizar <literal>biba</literal>, todos los accesos de - escritura serán negados al servidor en áreas - <emphasis>no</emphasis> puestas a - <literal>biba/low</literal>.</para> -<!-- -PROBLEM: CAN THIS WORK? OR SHOULD IT BE start_precmd? More testing need here. ---> - </sect1> + <title>Otro ejemplo: Uso de MAC para restringir un servidor web</title> + + + <para>Pendiente de traducción</para> + + -<!-- -XXX - <sect1 id="mac-examplesandbox"> - <title>Un ejemplo de una caja de arena MAC</title> - <para>Un ejemplo del colocamiento de usuarios en - una caja de arena (sandbox) utilizando - <acronym>MAC</acronym> debe ir aquí.</para> </sect1> ---> <sect1 id="mac-troubleshoot"> - <title>Determinando errores en la estructura MAC</title> + <title>Depuración de errores en MAC</title> + + + + <para>Pendiente de traducción</para> + + - <indexterm> - <primary>MAC Troubleshooting</primary> - </indexterm> - <para>Durante la fase de desarrollo, algunos usuarios reportaron - problemas con la configuración normal. Algunos de - estos problemas están listados abajo:</para> - - <sect2> - <title>La opción <option>multilabel</option> no puede ser - habilitada en <filename>/</filename></title> - - <para>¡La bandera <option>multilabel</option> no permanece - habilitada en mi partición raíz - (<filename>/</filename>)!</para> - - <para>Parece que uno de cada cincuenta usuarios tiene - este problema, de hecho, hemos tenido este problema - durante nuestra configuración inicial. - Mayor observación en este llamado <quote>bug</quote> - me ha llevado a creer que es el resultado de documentación - incorrecta o de interpretación errónea - de la documentación. Sin importar por qué - sucede, se pueden tomar los siguientes pasos para - resolverlo:</para> - - <procedure> - <step> - <para>Editar <filename>/etc/fstab</filename> y poner la - partición raíz a <option>ro</option> para - solo lectura.</para> - </step> - - <step> - <para>Reiniciar en modo mono usuario.</para> - </step> - - <step> - <para>Ejecutar <command>tunefs</command> <option>-l enable</option> - en <filename>/</filename>.</para> - </step> - - <step> - <para>Reiniciar el sistema a modo normal.</para> - </step> - - <step> - <para>Ejecutar <command>mount</command> <option>-urw</option> - <filename>/</filename> y cambiar <option>ro</option> - de regreso a <option>rw</option> en - <filename>/etc/fstab</filename> y reiniciar el sistema de nuevo. - </para> - </step> - - <step> - <para>Revisar nuevamente la salida de - <command>mount</command> para asegurarse - que <option>multilabel</option> haya sido - activada correctamente el el sistema de - archivos raíz.</para> - </step> - </procedure> - </sect2> - - <sect2> - <title>No se puede iniciar un servidor X11 despues de - <acronym>MAC</acronym></title> - - <para>Despues de establecer un ambiente seguro con - <acronym>MAC</acronym>, ¡ya no puedo iniciar - X!</para> - - <para>Esto puede ser causado por la política - <acronym>MAC</acronym> <literal>partition</literal> - o por un etiquetamiento erroneo en una de las - políticas de etiquetamiento <acronym>MAC</acronym>. - Para determinar el error trate lo siguiente:</para> - - <procedure> - <step> - <para>Revise el mensaje de error; si el usuario está - en la clase <literal>insecure</literal>, la política - <literal>partition</literal> puede ser la culpable. - Trate poner la clase del usuario de regreso a la - clase <literal>default</literal> y recostruya la base - de datos con el comando <command>cap_mkdb</command>. - Si esto no alivia el problema, vaya al paso dos.</para> - </step> - - <step> - <para>Revise doblemente las políticas de etiquetamiento. - Asegúrese que las políticas están - configuradas correctamente para el usuario en cuestión, - la aplicación X11 y las entradas - <filename class="directory">/dev</filename>.</para> - </step> - - <step> - <para>Si ninguno de estos resuelve el problema, envie el - mensaje de error y la descripción de su ambiente - a la lista de discusión TrustedBSD localizada en - el sitio web - <ulink url="http://www.TrustedBSD.org">TrustedBSD</ulink> - o a la lista de correo &a.questions;.</para> - </step> - </procedure> - </sect2> - - <sect2> - <title>Error: &man..secure.path.3; cannot stat - <filename>.login_conf</filename></title> - - <para>Cuando trato de cambiar de <username>root</username> a - otro usuario en el sistema, aparece el mensaje de error - <errorname>_secure_path: unable to state .login_conf</errorname>. - </para> - - <para>Este mensaje es usualmente desplegado cuando el usuario - tiene una etiqueta más alta que la del usuario al que - se está tratando de convertir. Por ejemplo, un usuario - en el sistema, <username>joe</username>, tiene una etiqueta - por omisión de - <option>biba/low</option>. El usuario <username>root</username>, - que tiene una etiqueta de <option>biba/high</option>, no - puede ver el directorio home de <username>joe</username>. - Esto sucederá sin importar que <username>root</username> - haya usado el comando <command>su</command> para convertirse - en <username>joe</username>, o no. En este escenario, el modelo - de integridad Biba no permitirá a <username>root</username> - ver objetos puestos a un nivel de integridad inferior.</para> - </sect2> - - <sect2> - <title>¡El usuario <username>root</username> no funciona!</title> - - <para>En modo normal o incluso en modo monousuario, - <username>root</username> no es reconocido. El - comando <command>whoami</command> regresa 0 (cero) y - <command>su</command> regresa <errorname>who are you?</errorname>. - ¿Que es lo que puede estar pasando?</para> - - <para>Esto puede suceder si una política de etiquetamiento - ha sido deshabilitada, ya sea por &man.sysctl.8; o el - módulo de política ha sido removido. - Si la política ha sido deshabilitada o ha sido - temporalmente deshabilitada, entonces las capacidades de - la base de datos de login necesita ser reconfigurada con - la opción <option>label</option> eliminada. - Revise doblemente el archivo <filename>login.conf</filename> - para asegurarse que todas las opciones <option>label</option> - hayan sido eliminadas y reconstruya la base de datos con - el comando <command>cap_mkdb</command>.</para> - </sect2> </sect1> </chapter> |