You are on page 1of 86

Fedora ll

Linux con
Seguridad Mejorada
Gua deI Usuario
Murray McAIIister
DanieI WaIsh
Dominick Grift
Eric Paris
James Morris
Scott Radvan
Linux con Seguridad Mejorada
Fedora ll Linux con Seguridad Mejorada
Gua deI Usuario
Edicin l.3
Autor Murray McAllister nncaJJsredha!.con
Autor Daniel Walsh dwaJshredha!.con
Autor Dominick Grift dong472gnaJ.con
Autor Eric Paris eparsparspJace.org
Autor James Morris norrsredha!.con
Autor Scott Radvan sradvanredha!.con
Copyright 2009 Red Hat, lnc.
Copyright 2009 Red Hat, lnc. This material may only be distributed subject to the terms and
conditions set forth in the Open Publication License, Vl.0, (the latest version is presently available at
http.//www.opencontent.org/openpub/).
Fedora and the Fedora lnfinity Design logo are trademarks or registered trademarks of Red Hat, lnc.,
in the U.S. and other countries.
Red Hat and the Red Hat "Shadow Man" logo are registered trademarks of Red Hat lnc. in the United
States and other countries.
All other trademarks and copyrights referred to are the property of their respective owners.
Documentation, as with software itself, may be subject to export control. Read about Fedora Project
export controls at http.//ledoraproject.org/w|k|/lega//Fxport.
Este libro es acerca de la administracin y uso del Linux de Seguridad Mejorada.
iii
Prefacio v
l. Convenciones del Documento .......................................................................................... v
l.l. Convenciones Tipogrficas ................................................................................... v
l.2. Convenciones del documento .............................................................................. vii
l.3. Notas y Advertencias ......................................................................................... viii
2. Necesitamos sus comentarios! ..................................................................................... viii
l. Informacin de Marca ComerciaI l
l.l. Source Code ................................................................................................................ l
2. Introduccin 3
2.l. Beneficios de usar SELinux .......................................................................................... 4
2.2. Ejemplos ...................................................................................................................... 5
2.3. Arquitectura de SELinux ............................................................................................... 6
2.4. SELinux en otros Sistemas Operativos .......................................................................... 6
3. Contextos de SELinux 7
3.l. Transiciones de Dominios ............................................................................................. 8
3.2. Contextos de SELinux para los Procesos ...................................................................... 9
3.3. Contextos de SELinux para los Usuarios ..................................................................... l0
4. PoItica Destinado ll
4.l. Procesos Confinados .................................................................................................. ll
4.2. Procesos no Confinados ............................................................................................. l4
4.3. Usuarios Confinados y no Confinados ......................................................................... l7
5. Trabajando con SELinux 2l
5.l. Paquetes de SELinux ................................................................................................. 2l
5.2. Qu Archivo Log se usa ............................................................................................. 22
5.3. Archivo de Configuracin Principal .............................................................................. 23
5.4. Habilitando y Deshabilitando SELinux .......................................................................... 24
5.4.l. Habilitando SELinux ......................................................................................... 24
5.4.2. Deshabilitando SELinux ................................................................................... 27
5.5. Modos de SELinux ..................................................................................................... 28
5.6. Booleanos .................................................................................................................. 28
5.6.l. Listando los Booleanos .................................................................................... 28
5.6.2. Configurando los Booleanos ............................................................................. 29
5.6.3. Booleanos para NFS y ClFS ............................................................................ 30
5.7. Contextos de SELinux - Etiquetado de Archivos ........................................................... 3l
5.7.l. Cambios Temporales: chcon ............................................................................ 3l
5.7.2. Cambios Persistentes: semanage fcontext ........................................................ 33
5.8. Los tipos file_t y default_t ........................................................................................... 38
5.9. Montaje de Sistemas de Archivos ............................................................................... 38
5.9.l. Montajes de Contexto ...................................................................................... 39
5.9.2. Cambio del Contexto Predeterminado ............................................................... 39
5.9.3. Montando un Sistema de Archivos NFS ............................................................ 40
5.9.4. Montajes NFS Mltiples ................................................................................... 40
5.9.5. Haciendo Persistente los Contextos de Montajes ............................................... 4l
5.l0. Mantencin de las Etiquetas de SELinux .................................................................. 42
5.l0.l. Copia de Directorios y Archivos ...................................................................... 42
5.l0.2. Movimiento de Archivos y Directorios .............................................................. 44
5.l0.3. Chequeando el Contexto SELinux Predeterminado .......................................... 45
5.l0.4. Archivando archivos con tar ........................................................................... 46
5.l0.5. Archivando archivos con tar ........................................................................... 47
Linux con Seguridad Mejorada
iv
6. Confinando a Ios Usuarios 5l
6.l. Linux y los Mapeos de Usuarios de SELinux ............................................................... 5l
6.2. Confinando Usuarios Nuevos de Linux: useradd .......................................................... 5l
6.3. Confinando Usuarios Linux Existentes: semanage login ................................................ 52
6.4. Cambiando el Mapeo Predeterminado ......................................................................... 54
6.5. xguest: Modo Kiosk .................................................................................................... 55
6.6. Booleanos para que los Usuarios Ejecuten Aplicaciones ............................................... 55
7. SoIucin a ProbIemas 57
7.l. Qu pasa cuando el Acceso es Denegado .................................................................. 57
7.2. Tres Principales Causas de Problemas ....................................................................... 58
7.2.l. Problemas de Etiquetados ............................................................................... 58
7.2.2. Cmo se Ejecutan los Servicios Confinados? .................................................. 59
7.2.3. Evolucionando las Reglas y las Aplicaciones Rotas ........................................... 6l
7.3. Correccin de Problemas ............................................................................................ 6l
7.3.l. Permisos de Linux ........................................................................................... 6l
7.3.2. Posibles Causas de las Negaciones Silenciosas ................................................ 62
7.3.3. Pginas de Manual para Servicios .................................................................... 62
7.3.4. Dominios Permisivos ........................................................................................ 63
7.3.5. Bsqueda y Revisin de Negaciones ................................................................ 65
7.3.6. Mensajes Crudos de Auditora ......................................................................... 67
7.3.7. Mensajes sealert ............................................................................................. 68
7.3.8. Permitiendo el Acceso: audit2allow ................................................................... 7l
8. Informacin AdicionaI 75
8.l. Contributors ............................................................................................................... 75
8.2. Other Resources ........................................................................................................ 75
A. Revision History 77
v
Prefacio
La Gua del Usuario de SELinux de Fedora ll es para gente sin o con mnima experiencia con
SELinux. Aunque la experiencia de administracin de sistema no es necesario, el contenido de esta
gua se escribe para tareas de administracin del sistema. Esta gua provee una introduccin a los
conceptos fundamentales y aplicaciones prcticas de SELinux. Despus de leer esta gua debe tener
un entendimiento intermedio de SELinux.
Gracias a todos los que nos alentaron, ofrecieron ayuda y lo probaron - la ayuda es muy apreciada.
Agradecimientos muy especiales a:
Dominick Grift, Stephen Smalley y Russell Coker por sus contribuciones, ayuda y paciencia.
Karsten Wade por su ayuda, al agregar un componente para esta gua en el Bugz|//a de Ped Hat
l
y
resolver el sitio web en http.//docs.ledoraproject.org/.
Al Fqu|po de lnlraestructura de ledora
2
por proveer el alojamiento.
Jens-Ulrik Petersen por asegurar que la oficina de Brisbane de Red Hat tenga espejos de Fedora
actualizados.
l. Convenciones deI Documento
Este manual utiliza varias convenciones para resaltar algunas palabras y frases y llamar la atencin
sobre ciertas partes especficas de informacin.
En ediciones PDF y de papel, este manual utiliza tipos de letra procedentes de l|berat|on lonts
3
.
Liberation Fonts tambin se utilizan en ediciones de HTML si estn instalados en su sistema. Si no,
se muestran tipografas alternativas pero equivalentes. Nota: Red Hat Enterprise Linux 5 y siguientes
incluyen Liberation Fonts predeterminadas.
l.l. Convenciones Tipogrficas
Se utilizan cuatro convenciones tipogrficas para llamar la atencin sobre palabras o frases
especficas. Dichas convenciones y las circunstancias en que se aplican son las siguientes:
Negr1ta monoespac1ado
Utilizada para resaltar la entrada del sistema, incluyendo comandos de shell, nombres de archivo y
rutas. Tambin se utiliza para resaltar teclas claves y combinaciones de teclas.
Para ver el contenido del archivo mynextbestseJJ1ngnoveJ en su directorio
actual de trabajo, escriba el comando cat mynextbestseJJ1ngnoveJ en el
intrprete de comandos de shell y pulse Lnter para ejecutar el comando.
Lo anterior incluye un nombre de archivo, un comando de shell y una tecla clave, todo en negrita-
monoespaciado y distinguible gracias al contexto.
Las combinaciones de teclas se pueden distinguir de las teclas claves mediante el guin que conecta
cada parte de una combinacin de tecla. Por ejemplo:
Pulse Lnter para ejecutar el comando.
3
https://fedorahosted.org/liberation-fonts/
Prefacio
vi
Pulse ControJ+AJt+F1 para cambiar a la primera terminal virtual. Pulse
ControJ+AJt+F7 para volver a su sesin de Ventanas-X.
La primera oracin resalta la tecla clave determinada que se debe pulsar. La segunda resalta dos
conjuntos de tres teclas claves, cada conjunto presionado simultneamente.
Si el cdigo fuente es discutido, nombres de clase, mtodos, funciones, nombres de variables,
y valores de retorno mencionados dentro de un prrafo sern presentados como lo anterior, en
Negr1ta-monoespac1ado. Por ejemplo:
Las clases de archivo relacionadas incluyen f1Jename para sistema de archivos,
f1Je para archivos y d1r para directorios. Cada clase tiene su propio conjunto
asociado de permisos.
Negrita proporcionaI
Esta denota palabras o frases encontradas en un sistema, incluyendo nombres de aplicacin; texto de
cuadro de dilogo, botones etiquetados, etiquetas de cajilla de verificacin y botn de radio; ttulos de
men y ttulos del sub-men. Por ejemplo:
Seleccionar Sistema > Preferencias > Ratn desde la barra del men principal para
lanzar Preferencias de Ratn. En la pestaa de Botones, haga clic en la cajilla
ratn de mano izquierda y luego haga clic en Cerrar para cambiar el botn principal
del ratn de la izquierda a la derecha (adecuando el ratn para la mano izquierda).
Para insertar un caracter especial en un archivo gedit, seleccione desde la barra del
men principal ApIicaciones > Accesorios > Mapa de caracteres. Luego, desde
la barra del men elija Bsqueda > HaIIar. mapa de caracteres, teclee el nombre
del caracter en el campo de Bsqueda y haga clic en Siguiente. El caracter buscado
se resaltar en la TabIa de caracteres. Haga doble clic en este caracter resaltado
para colocarlo en el campo de Texto para copiar y luego haga clic en el botn de
Copiar. Ahora regrese a su documento y elija Editar > Pegar desde la barra de men
de gedit.
El texto anterior incluye nombres de aplicacin; nombres de men de todo el sistema y elementos;
nombres de men de aplicaciones especficas y botones y texto hallados dentro de una interfaz GUl,
todos presentados en negrita proporcional y distinguibles por contexto.
Observe la > abreviatura utilizada para indicar recorrido a travs de un men y sus sub-menes. Esto
es para evitar la dificultad de seguir el mtodo 'Seleccionar Ratn desde el sub-men Preferencias
en el men de Sistema de la barra de men principal'.
ItJ1cas~negr1ta onoesac1ado o ItJ1cas~negr1ta roorc1onaJ
Negrita monoespaciado o Negrita proporcional, la adicin de itlicas indica texto reemplazable o
variable. Las itlicas denotan texto que usted no escribe literalmente o texto mostrado que cambia
dependiendo de la circunstancia. Por ejemplo:
Para conectar a una mquina remota utilizando ssh, teclee ssh
nobredeusuar1odo1n1o.nobre en un intrprete de comandos de shell. Si la
mquina remota es exampJe.com y su nombre de usuario en esa mquina es john,
teclee ssh ]ohnexampJe.com.
El comando mount -o remount f1Je~syste remonta el sistema de archivo
llamado. Por ejemplo, para volver a montar el sistema de archivo 7home, el comando
es mount -o remount 7home.
Convenciones del documento
vii
Para ver la versin de un paquete actualmente instalado, utilice el comando rpm -q
aquete. ste entregar el resultado siguiente: aquete~vers1on~Janza1ento.
Observe las palabras en itlicas- negrita sobre nombre de usuario, domain.name, sistema de
archivo, paquete, versin y lanzamiento. Cada palabra es un marcador de posicin, tanto para el texto
que usted escriba al ejecutar un comando como para el texto mostrado por el sistema.
Aparte del uso estndar para presentar el ttulo de un trabajo, las itlicas denotan el primer uso de un
trmino nuevo e importante. Por ejemplo:
cuando el servidor Apache HTTP acepta solicitudes, enva procesos hijos o hilos
para manejarlos. Este grupo de procesos hijos o hilos se conoce como un server-
poo/. Bajo el servidor HTTP de Apache 2.0, la responsabilidad para crear o mantener
estos server-pool se resume en un grupo de mdulos llamado Mdu/os de mu/t|-
procesam|ento (MPMs). A diferencia de otros mdulos, slo un mdulo del grupo
MPM puede ser cargado por el servidor HTTP de Apache.
l.2. Convenciones deI documento
Dos, usualmente de varias lneas, los tipos de datos se distinguen visualmente del texto circundante.
Salida enviada a una terminal est establecida en tipo onaho nohoespac1ado y presentada as:
J1bos Esc1to1o docunehtac1oh boadoes nss fotos cosas
svh
J1bospuebas Esc1to1o1 descagas 1ngehes hotas sc1pts svgs
Los listados de cdigo fuente tambin se establecen en onaho nohoespac1ado, pero se
presentan y resaltan de la siguiente manera:
package og.boss.book.ca.ex1,
1npot avax.han1hg.Th1t1aJCohtext,
pubJ1c cJass ExCJ1eht
{
pubJ1c stat1c vo1d na1h{5t1hg ags|}
thoWs Except1oh
{
Th1t1aJCohtext 1h1Ctx = heW Th1t1aJCohtext{},
ubect ef = 1h1Ctx.Jookup{"EchoBeah"},
Echohone hone = {Echohone} ef,
Echo echo = hone.ceate{},
5ysten.out.p1htJh{"Ceated Echo"},
5ysten.out.p1htJh{"Echo.echo{'heJJo'} = " + echo.echo{"heJJo"}},
}

}
Prefacio
viii
l.3. Notas y Advertencias
Finalmente, utilizamos tres estilos visuales para llamar la atencin sobre la informacin que de otro
modo se podra pasar por alto.
Nota
Una nota es una sugerencia, atajo o enfoque alternativo que se tiene a mano para la
tarea. lgnorar una nota no debera tener consecuencias negativas, pero podra perderse
de algunos trucos que pueden facilitarle las cosas.
Importante
Los cuadros de importante dan detalles de cosas que se pueden pasar por alto
fcilmente: cambios de configuracin nicamente aplicables a la sesin actual, o servicios
que necesitan reiniciarse antes de que se aplique una actualizacin. lgnorar estos
cuadros de importante no ocasionar prdida de datos, pero puede causar enfado y
frustracin.
Advertencia
Las advertencias no deben ignorarse. lgnorarlas muy probablemente ocasionar prdida
de datos.
2. Necesitamos sus comentarios!
Si encuentra un error tipogrfico en este manual o si sabe de alguna manera de mejorarlo,
nos gustara escuchar sus sugerencias. Por favor complete un reporte en Bugzilla: http.//
bugz|//a.redhat.com/bugz|//a/ usando el producto Fedora Documentation.
Cuando enve un reporte de error no olvide mencionar el identificador del manual: se/|nux-user-gu|de
Si tiene una sugerencia para mejorar la documentacin, intente ser tan especfico como sea posible
cuando describa su sugerencia. Si ha encontrado un error, por favor incluya el nmero de seccin y
parte del texto que rodea el error para que podamos encontrarlo ms fcilmente.

l
Informacin de Marca ComerciaI
Linux es una marca comercial registrada de Linus Torvalds en los EEUU y en otros pases.
UNlX es una marca comercial registrada de El Grupo Abierto.
Type Enforcement (Obligacin de Tipos) es una marca comercial de Secure Computing, LLC,
una subsidiaria de McAfee, lnc., registrada en los EEUU y en otros pases. Ni McAfee ni Secure
Computing, LLC, ha consentido el uso o referencia de esta marca comercial para el autor fuera de
esta gua.
Apache es una marca comercial de La Fundacin de Software Apache.
MySQL es una marca comercial o marca comercial registrada de MySQL AB en los EEUU y en otros
pases.
l.l. Source Code
The XML source for this guide is available at http.//svn.ledorahosted.org/svn/se/|nuxgu|de/
2

3
Introduccin
Los Archivos, tales como directorios y dispositivos, se llaman objetos. Los procesos, tal como un
comando que ejecuta el usuario o la aplicacin Mozilla Firefox, se llaman sujetos. La mayora
de los sistemas oeprativos usan un sistema de Control de Acceso Discrecional (DAC), que controla
cmo interactuan los sujetos con los objetos, y cmo los sujetos interactuan entre s. En sistemas
operativos que usan DAC, los usuarios controlan los permisos de archivos (objetos) de los que son
dueos. Por ejemplo, en sistemas operativos Linux, los usuarios pueden hacer sus directorios
legibles para el resto del mundo, dando a los usuarios y procesos (sujetos) acceso a informacin
potencialmente sensible.
Los mecanismos DAC son fundamentalmente inadecuados para una fuerte seguridad del sistema.
Las decisiones de acceso DAC son slo basadas en la identidad del usuario y su propiedad,
ignorando informacin de seguridad relevante tal como el rol del usuario, la funcin y la confiabilidad
del programa, y la sensibilidad e integridad de los datos. Cada usuario tiene completa discrecin
sobre sus archivos, haciendo imposible aplicar una poltica de seguridad a nivel de sistema. Ms an,
cada programa que ejecuta un usuario hereda todos los permisos garantizados al usuario y es libre
de cambiar el acceso de archivos del usuario, por lo que no se provee una proteccin contra software
malicioso. Muchos servicios del sistema y programas privilegiados deben ejecutarse con privilegios
ms all de lo que realmente necesitan, por lo que una brecha en cualquiera de estos programas se
puede explotar para obtener acceso completo al sistema.
l
El siguiente es un ejemplo de permisos usados en sistemas operativos Linux que no corren el Linux
de Seguridad Mejorada (SELinux). Los permisos en estos ejemplos pueden diferir de su sistema. Use
el comando Js -J para ver los permisos de archivos:
$ Js -J ach1vo1
-WxW--- 1 usua1o1 gupo1 u 2uu9-u4-3u 15.42 ach1vo1
Los primeros tres bits de permisos, Wx, controlan el acceso que el usuario Linux usua1o1 (en
este caso, el dueo) tiene para el arch1vo1. Los siguientes tres bits de permisos, W-, controlan el
acceso que el grupo Linux gupo1 tiene para el arch1vo1. Los ltimos tres bits de permisos, --,
controlan el acceso que todo el mundo tiene para el arch1vo1, que incluyen a todos los usuarios y
procesos.
Linux de Seguridad Mejorada (SELinux por Security-Enhanced Linux) agrega Control de Acceso
Obligatorio (MAC en ingls) al kernel de Linux, y se habilita por defecto en Fedora. Una arquitectura
MAC de propsito general necesita la habilidad de aplicar una poltica de seguridad puesta
administrativamente sobre todos los procesos y archivos del sistema, basando decisiones en las
etiquetas que contienen informacin variada relevante para la seguridad. Cuando se implementa
apropiadamente, hace que un sistema se autodefienda adecuadamente y ofrece soporte crtico
para la seguridad de aplicaciones protegindolas de la manipulacin y sobrepaso. MAC provee una
separacin fuerte de aplicaciones que permite la ejecucin a salvo de aplicaciones no confiables.
Su habilidad para limitar los privilegios asociados con la ejecucin de procesos limita el mbito
del potencial dao que puede resultar de la explotacin de vulnerabilidades en aplicaciones y
servicios del sistema. MAC hace que la informacin est protegida de los usuarios legtimos
l
"lntegracin del Soporte Flexible para Polticas de Seguridad en el Sistema Operativo Linux", de Peter Loscocco y Stephen
Smalley. Este paper fue preparado originalmente por la Agencia de Seguridad Nacional y est, consecuentemente, en el
dominio pblico. Vaya al paper or|g|na/ [http://www.nsa.gov/research/_files/selinux/papers/freenix0l/index.shtml] para mas
detalles y el documento tal como fue lanzado la primera vez. Cualquier edicin y cambio fue hecho por Murray McAllister.
CaptuIo 2. Introduccin
4
con autorizacin limitada, as como de usuarios autorizados que involuntariamente ejecutaron
aplicaciones maliciosas.
2
El siguiente es un ejemplo de las etiquetas que contienen informacin de seguridad relevante que se
usa en los procesos, usuarios Linux y archivos, en sistemas operativos Linux que corren SELinux.
Esta informacin se llama contexto de SELinux y se visualiza usando el comando Js -Z:
$ Js -Z f1Je1
-WxW--- use1 goup1 uhcohf1hedu.obect.usehonet.su f1Je1
En este ejemplo, SELinux provee un usuario (uhcohf1hedu), un rol (obect), un tipo
(usehonet), y un nivel (su). Esta informacin se usa para tomar decisiones sobre el control de
acceso. Con DAC, el acceso se controla basado slo en los lDs de usuarios y grupos de Linux. Las
reglas de polticas de SELinux se chequean despus de las reglas DAC. Las reglas de polticas de
SELlnux no se usan si las reglas DAC niegan el acceso al principio.
Linux y Ios Usuarios SELinux
En sistemas operativos Linux que corren SELinux, hay usuarios Linux as como usuarios SELinux.
Los usuarios SELinux son parte de la poltica de SELinux. Los usuarios Linux se mapean a usuarios
SELinux. Para evitar confusin, esta gua usa "usuarios Linux" y "usuarios SELinux" para diferenciar
entre ambos.
2.l. Beneficios de usar SELinux
Todos los procesos y archivos se etiquetan con un tipo. Un tipo define un dominio para los
procesos y un tipo para los archivos. Los procesos se separan entre s corrindolos en sus propios
dominios, y las reglas de polticas de SELinux define cmo interactan los procesos con los
archivos, as como la forma en que interactan entre s. El acceso slo se permite si existe una
regla de poltica de SELinux que especficamente lo permita.
Control de acceso ms fino. Yendo un paso ms alla de los permisos tradicionales de UNlX
que se controlan a discrecin del usuario y se basa en los lDs de usuario y de grupos de Linux,
las decisiones de accesos de SELinux se basan en toda la informacin disponible, tales como un
usuario SELinux, el rol, el tipo y, opcionalmente, un nivel.
La poltica de SELinux se define administrativamente, obligando a todo el sistema, y no se pone a
discrecin del usuario.
Vulnerabilidad reducida para ataques de escalamiento de privilegios. Un ejemplo: dado que los
procesos corren en dominios, y son por lo tanto separados entresi, y las reglas de la poltica de
SELinux definen cmo los procesos acceden a los archivos y a otros procesos, si un proceso
queda comprometido, el atacante slo tiene acceso a las funciones normales de ese proceso, y
a archivos a los que el proceso tiene configurado que puede acceder. Por ejemplo, si el Servidor
HTTP Apache es comprometido, un atacante no puede usar el proceso para leer archivos en los
directorios home de los usuarios, a menos que una regla especfica de la poltica de SELinux haya
sido agregada o configurada para permitir tal acceso.
2
"Consiguiendo Objetivos de Seguridad Crticos con Linux de Seguridad Mejorada", por Peter Loscocco y Stephen Smalley.
Este paper fue preparado originalmente por la Agencia de Seguridad Nacional y est, consecuentemente, en el dominio
pblico. Vaya al paper or|g|na/ [http://www.nsa.gov/research/_files/selinux/papers/ottawa0l/index.shtml] para detalles y por el
documento tal como fue lanzado la primera vez. Cualquier edicin y cambio fue hecho por Murray McAllister.
Ejemplos
5
Se linux se puede usar para asegurar la confidencialidad e integridad de los datos, as como
proteger los procesos de entradas no confiables.
SELinux no es:
software antivirus.
un reemplazo para las contraseas, cortafuegos y otros sistemas de seguridad.
una solucin todo en uno.
SELinux est diseado para mejorar las soluciones de seguridad existentes, no reemplazarlas. An
cuando corra SELinux, siga las buenas prcticas de seguridad, tales como mantener el software
actualizado, usar contraseas difciles de adivinar, cortafuegos y dems.
2.2. EjempIos
Los siguientes ejemplos demuestran cmo SELinux aumenta la seguridad:
la accin por defecto es denegar. Si una regla de la poltica de SELinux no existe para permitir el
acceso, como para que un proceso pueda abrir un archivo, el acceso es denegado.
SELinux puede confinar a usuarios Linux. Existe un nmero de usuarios SELinux confinados. Los
usuarios Linux se pueden mapear a usuarios SELinux para sacar ventaja de los usuarios SELinux
confinados. Por ejemplo, mapear un usario Linux al usuario SELinux user_u, resulta en un usuario
Linux que no puede ejecutar (a menos que se configure de otra forma) aplicaciones con el lD del
usuario (setuid), tales como sudo y su, as como previene la ejecucin de archivos y aplicaciones
en sus directorios de inicio (home)- si se configura, esto evita que los usuarios ejecuten archivos
maliciosos desde sus directorios de inicio.
separacin de procesos. Los procesos que corren en sus propios dominios, previenen que estos
accedan a archivos usados por otros procesos, as como el acceso a otros procesos. Por ejemplo,
cuando se ejecuta SELinux, a menos que se configure de otra forma, un atacante no puede
comprometer un servidor Samba, y luego usar ese servidor Samba para leer y escribir archivos
usados por otros procesos, tales como las bases de datos usadas por MySQL.
ayuda a limitar los daos hechos por errores en la configuracin. Los servidores S|stema
de Nombres de Dom|n|o {DNS)
3
pueden replicar informacin entre si. Esto se conoce como
transferencia de zona. Los atacantes pueden usar las transferencias de zonas para actualizar los
servidores de DNS con informacin falsa. Cuando se ejecuta el servidor de DNS Berke/ey lnternet
Name Doma|n {BlND)
4
en Fedora ll, an si un administrador se olvida de limitar qu servidores
pueden realizar las transferencias de zona, la poltica predeterminada de SELinux evita que los
archivos de zonas
5
sean actualizados por transferencias, por el demonio BlND haned y por otros
procesos.
vaya al artculo de Ped Hat Magaz|ne
6
, lnlorme de r|esgo. Tres aos de/ l|nux para Fmpresas de
Ped Hat 4
78
, para explotaciones que fueron restringidas gracias a la poltica destinada de SELinux
en el Linux para Empresas de Red Hat 4.
vaya al artculo en l|nuxWor/d.com
9
article, Un c|nturn de segur|dad para soltware serv|dor.
SFl|nux b/oquea exp/otac|ones de/ mundo rea/
l0ll
, para un poco de informacin sobre SELinux, y
sobre varias explotaciones que SELinux evita.
CaptuIo 2. Introduccin
6
vaya al blog de James Morris SFl|nux m|t|ga /a vu/nerab|/|dad de root en OpenPegasus
l2
, para
informacin acerca de una brecha en OpenPegasus
l3
que fue mitigada por SELinux tal como fue
distribuido con el Linux para Empresas de Red Hat 4 y 5.
El sitio web de Tresys Techno/ogy
l4
tiene una seccin de Not|c|as de M|grac|n a SFl|nux
l5
(en la
parte derecha), que lista los ataques recientes que fueron mitigados o prevenidos por SELinux.
2.3. Arquitectura de SELinux
SELinux es un mdulo de seguridad de Linux que se construye dentro del kernel de Linux. SELinux
se maneja por reglas de polticas cargables. Cuando un acceso de seguridad relevante se lleva a
cabo, tal como un proceso que trata de abrir un archivo, la operacin es interceptada por SELinux
en el kernel. Si una regla de poltica de SELinux permite la operacin, contina, sino, la operacin se
bloquea y el proceso recibe un error.
Las decisiones de SELinux, tales como permitir o negar accesos, son cacheadas. Este cach se
conoce como Cach Vector de Acceso (AVC). Las decisiones de cacheado disminuye la necesidad
de que las reglas de polticas de SELinux sean chequeadas muy a menudo, lo que mejora la
performance. Las reglas de polticas de SELinux no tienen efecto si las reglas DAC niegan el acceso
primero.
2.4. SELinux en otros Sistemas Operativos
Vaya a la siguiente informacin sobre cmo correr SELinux en sistemas operativos:
Gentoo endurecido: http.//www.gentoo.org/proj/en/hardened/se/|nux/se/|nux-handbook.xm/.
Debian: http.//w|k|.deb|an.org/SFl|nux.
Ubuntu: https.//w|k|.ubuntu.com/SFl|nux and https.//he/p.ubuntu.com/commun|ty/SFl|nux.
Linux para Empresas de Red Hat: Guia de Desp/|egue de/ l|nux para Fmpresas de Ped Hat
l6
y la
Guia de SFl|nux para e/ l|nux para Fmpresas de Ped Hat
l7
.
Fedora: http.//ledoraproject.org/w|k|/SFl|nux y el lAQ de SFl|nux de ledora Core 5
l8
.
l4
http://www.tresys.com/
l5
http://www.tresys.com/innovation.php

7
Contextos de SELinux
Los procesos y archivos se etiquetan con un contexto SELinux que contiene informacin adicional, tal
como un usuario SELinux, rol, tipo y, opcionalmente, un nivel. Cuando se ejecuta SELinux, toda esta
informacin se usa para tomar decisiones de control de acceso. En Fedora ll, SELinux provee una
combinacin de Control de Acceso Basado en Roles (RBAC en ingls), Obligacin de Tipos (TE en
ingls), y, opcionalmente, Seguridad Multi-nivel (MLS en ingls).
El siguiente es un ejemplo de contexto de SELinux. Los contextos de SELinux se usan en procesos,
usuarios de Linux y archivos, en sistemas operativos Linux que corren SELinux. Use el comando Js
-Z para ver el contexto SELinux de archivos y directorios:
$ Js -Z f1Je1
-WxW--- use1 goup1 uhcohf1hedu.obect.usehonet.su f1Je1
Los contextos de SELinux siguen la SFl|nux nombre-de-usuar|o.ro/e.type./eve/ sintaxis:
Usuar|o SFl|nux
La identidad de usuario SELinux es una identidad conocida para la poltica a la que se le autoriza
un conjunto especfico de roles, y un rango especfico de MLS. Cada usuario Linux se mapea a
un usuario SELinux va la poltica de SELinux. Esto permite a los usuarios de Llnux heredar las
restricciones de los usuarios SELinux. La identidad del usuario SELinux mapeado se usa en el
contexto de SELinux para procesos en esa sesin, para agrupar a qu roles y niveles pueden
ingresar. Ejecute el comando semanage Jog1n -J como usuario root de Linux para ver una
lista de mapeos entre cuentas de usuarios Linux y SELinux:
# 7us7sb1h7senahage Jog1h -J
Log1h Nane 5EL1hux Use hL57hC5 Rahge
defauJt uhcohf1hedu su-su.cu.c1u23
oot uhcohf1hedu su-su.cu.c1u23
systenu systenu su-su.cu.c1u23
La salida puede ser distinta de sistema a sistema. La columna Nonbe de Thgeso lista los
usuarios Linux, y la columna Usua1o 5EL1hux lista qu a usuario SELinux es mapeado un
usuario Linux. Para procesos, el usuario SELinux limita qu roles y niveles son accesibles. La
ltima columna, Rahgo hL57hC5, es el nivel usado por la Seguridad Multi Nivel (MLS) y por la
Seguridad Multi Categora (MCS). Los niveles se describen brevemente ms adelante.
ro/
Parte de SELinux es el modelo de seguridad de Control de Acceso Basado en Roles (RBAC). El
rol es un atributo de RBAC. Los usuarios de SELinux son autorizados para ciertos roles y los roles
son autorizados para ciertos dominios. Los roles sirven como un intermediario entre dominios y
usarios SELinux. Los roles en los que se puede ingresar determinan los dominios a los que se
ingresan - al final, esto controla los tipos de objetos que se pueden acceder. Esto ayuda a reducir
la vulnerabilidad de ataques de escalada de privilegios.
t|po
El tipo es un atributo de la Obligacin de Tipos. El tipo define un dominio para procesos y un tipo
para los archivos. Las reglas de polticas de SELinux define cmo se acceden los tipos entre si,
CaptuIo 3. Contextos de SELinux
8
ya sea un dominio que accede a un tipo o un dominio que accede a otro dominio. Los acceso slo
se permiten si existe una regla de poltica de SELinux que lo permita.
n|ve/
El nivel es un atributo de MLS y la Seguridad Multi Categora (MCS). Un rango MLS es un par
de niveles, escrito como bajon|ve/-a/ton|ve/ si los niveles sin distintos, o bajon|ve/ si los niveles
son idnticos (su-su es lo mismo que su). Cada nivel es un par sensible a categoras, donde las
categoras son opcionales. Si no hay categoras, el nivel se escribe como sens|b|/|dad.conjunto-
de-categoria. Si no hay categoras, se escribe como sens|b|/|dad.
Si el conjunto de categora es una serie contigua, se puede abreviar. Por ejemplo, cu.c3
es lo mismo que cu,c1,c2,c3. El archivo 7etc7seJ1nux7targeted7setrans.conf
mapea los niveles (su.cu) a una forma legible al humano (ConpahyCohf1deht1aJ). No edite
setrans.conf con un editor de texto: use semanage para hacer cambios. Vaya a la pgina de
manual de semanage(8) para ms informacin. En Fedora ll, la poltica destinada obglica MCS,
y en MCS hay slo una sensibilidad, la su. MCS en Fedora ll soporta l024 categoras distintas:
cu a c1u23. su-su.cu.c1u23 es la sensibilidad su y autorizado para todas las categoras.
MLS aplica el Mode/o de Acceso Ob/|gator|o Be//-laPadu/a
l
, y se usa en entornos de Perfil de
Proteccin de Seguirdad Etiquetada (LSPP en ingls). Para usar las restricciones MLS, instale
el paquete se/|nux-po/|cy-m/s, y configure a MLS como la poltica de SELinux predeterminada.
La poltica MLS puesta en Fedora mite muchos dominios de programa que no eran parte
de la configuracin evaluada, y por lo tanto, MLS es intil en un escritorio (no hay soporte
para el Sistema de Ventanas X); sin embargo, una poltica MLS se puede incluir desde los
desarro//adores de /a Po/it|ca de Pelerenc|a de SFl|nux
2
que incluya todos los dominios de
programa.
3.l. Transiciones de Dominios
Un proceso transiciona de un dominio a otro ejecutando una aplicacin que tiene el tipo ehtypo1ht
en el nuevo dominio. Los permisos ehtypo1ht se usan en las polticas de SELinux, y controlan qu
aplicaciones pueden usarse para ingresar a un dominio. El siguiente ejemplo muestra una transicin
de dominio.
l. Un usuario desea cambiar su contrasea. Para cambiar sus contraseas, corren la aplicacin
passWd. El ejecutable 7usr7b1n7passWd est etiquetado con el tipo passWdexect:
$ Js -Z 7us7b1h7passWd
-Ws-x-x oot oot systenu.obect.passWdexect.su 7us7b1h7passWd
La aplicacin passwd accede 7etc7shadoW, que est etiquetado con el tipo shadoWt:
$ Js -Z 7etc7shadoW
--------- oot oot systenu.obect.shadoWt.su 7etc7shadoW
2. Una regla de poltica de SELinux dice que los procesos que se ejecutan en el dominio passWdt
no pueden leer y escribir archivos etiquetados con el tipo shadoWt. El tipo shadoWt slo se
aplica a archivos que necesitan un cambio de contraseas. Esto incluye a 7etc7gshadoW, 7
etc7shadoW, y sus archivos de respaldo.
l
http://en.wikipedia.org/wiki/Bell-LaPadula_model
2
http://oss.tresys.com/projects/refpolicy
Contextos de SELinux para los Procesos
9
3. Una regla de poltica de SELinux fija que el dominio passWdt tiene permiso de ehtypo1ht al
tipo passWdexect.
4. Cuando un usuario ejecuta la aplicacin 7usr7b1n7passWd, el proceso shell del usuario
transiciona al dominio passWdt. Con SELinux, dado que la accin por defecto es negar, y existe
una regla que permite (entre otras cosas) a aplicaciones que corran en el dominio passWdt
acceder a archivos etiquetados con el tipo shadoWt, se le permite a passwd acceder a 7etc7
shadoW, y actualizar la contrasea del usuario.
Este ejemplo no es exhaustivo, y se usa como un ejemplo bsico para explicar la transicin de
dominio. Aunque hay una regla actual que permite a sujetos corriendo en el dominio passWdt
accedan objetos etiquetados con el tipo de archivo shadoWt, otras reglas de poltica de SELinux
se deben cumplir para que el sujeto pueda transicionar a un nuevo dominio. En este ejemplo, la
Obligacin de Tipo asegura:
el dominio passWdt slo se puede ingresar ejecutando una aplicacin con la etiqueta del tipo
passWdexect; slo pueden ejecutar desde bibliotecas compartidas autorizadas, tales como las
del tipo J1bt; y no pueden ejecutar ninguna otra aplicacin.
slo los dominios autorizados, tales como passWdt, pueden escribir en archivos con la etiqueta
del tipo shadoWt. An si otros procesos corren con privilegios de superusuario, esos procesos
no podrn escribir archivos etiquetados con el tipo shadoWt, porque no estn corriendo en el
dominio passWdt.
slo los dominios autorizados pueden transicionar al dominio passWdt. Por ejemplo, el proceso
sehdna1J corriendo en el dominio sehdna1Jt no tiene una razn legtima para ejecutar passWd;
por lo tanto, no puede transicionar nunca al dominio passWdt.
los procesos que se ejecutan en el dominio passWdt slo pueden leer y escribir a tipos
autorizados, tales como archivos etiquetados con los tipos etct o shadoWt. Esto impide a la
aplicacin passwd de ser modificada para leer o escribir en archivos arbitrarios.
3.2. Contextos de SELinux para Ios Procesos
Use el comando ps -eZ para ver los contextos de SELinux para los procesos. Por ejemplo:
l.
Abra una terminal, como la de ApIicaciones Herramientas deI Sistema TerminaI.
2. Ejecute el comando 7usr7b1n7passWd. No ingrese una nueva contrasea.
3. Abra una nueva pestaa, u otra terminal, y ejecute el comando ps -eZ grep passWd. La
salida es similar a la siguiente:
uhcohf1hedu.uhcohf1hed.passWdt.su-su.cu.c1u23 13212 pts71 uu.uu.uu
passWd
4. En la primer pestaa, presione CtrJ+C para cancelar la aplicacin passwd.
En este ejemplo, cuando la aplicacin 7usr7b1n7passWd (etiquetada con el tipo passWdexect)
se ejecuta, el proceso shell del usuario transiciona al dominio passWdt. Recuerde: el tipo define un
dominio para procesos y un tipo para archivos.
CaptuIo 3. Contextos de SELinux
l0
Use el comando ps -eZ para ver los contextos SELinux de los procesos en ejecucin. El siguiente
es un ejemplo limitado de la salida, y puede cambiar en su sistema:
systenu.systen.setoubJeshootdt.su 1B ? uu.uu.uB setoubJeshootd
systenu.systen.dhcpct.su 1B9 ? uu.uu.uu dhcJ1eht
systenu.systen.sshdt.su-su.cu.c1u23 1BB2 ? uu.uu.uu sshd
systenu.systen.gpnt.su 194 ? uu.uu.uu gpn
systenu.systen.cohdt.su-su.cu.c1u23 1973 ? uu.uu.uu cohd
systenu.systen.keheJoopst.su 19B3 ? uu.uu.u5 keheJoops
systenu.systen.cohdt.su-su.cu.c1u23 1991 ? uu.uu.uu atd
El rol systen se usa para procesos de sistema, como los demonios. El tipo obligatorio los separa
luego en dominios.
3.3. Contextos de SELinux para Ios Usuarios
Use el comando 1d -Z para ver el contexto SELinux asociado con su usuario Linux:
uhcohf1hedu.uhcohf1hed.uhcohf1hedt.su-su.cu.c1u23
En Fedora ll, los usuarios Linux corren no confinados por defecto. Este contexto de SELinux
muestra que el usuario Linux se mapea al usuario SELinux uhcohf1hedu, corriendo con el rol
uhcohf1hed y en el dominio uhcohf1hedt. su-su es un rango MLS, que en este caso, es el
mismo que su. Las categoras a las que el usuario tiene acceso se definen por cu.c1u23, que son
todas las categoras (cu a c1u23).

ll
PoItica Destinado
La poltica destinada es la poltica predeterminada de SELinux usada en Fedora ll. Cuando la
poltica destinada est en uso, los procesos son destinados a correr en dominios confinados, y
los procesos que no son destinados a correr en un dominio corren en un dominio no confinado.
Por ejemplo, por defecto, los usuarios que ingresaron corren en el dominio uhcohf1hedt, y los
procesos del sistema iniciado por init corren en el dominio 1h1tct - ambos dominios estn no
confinados.
Unconfined domains (as well as confined domains) are subject to executable and writeable memory
checks. By default, subjects running in an unconfined domain can not allocate writeable memory and
execute it. This reduces vulnerability to buller overl/ow attacks
l
. These memory checks are disabled
by setting Booleans, which allow the SELinux policy to be modified at runtime. Boolean configuration
is discussed later.
4.l. Procesos Confinados
Casi todos los servicios que escuchan en la red se confinan en Fedora ll. Tambin, la mayora
de los procesos que corren como usuario root de Linux y realizan tareas para los usuarios, tales
como la aplicacin passwd, estn confinadas. Cuando un proceso se confina, corre en su propio
dominio, tal como el proceso httpd ejecutndose en el domino httpdt. Si un proceso confinado es
comprometido por un atacante, dependiendo de la configuracin de poltica de SELinux, el acceso del
atacante a recursos y el posible dao que puedan causar es limitado.
El siguiente ejemplo muestra cmo previene SELinux la lectura por parte del Servidor HTTP
Apache (httpd) de archivos que no se etiquetaron correctamente, tales como archivos a usar con
Samba. Este es un ejemplo, y no se debe usar en produccin. Asume que los paquetes httpd, wget,
setroub/eshoot-server y aud|t estn instalados, que se usa la poltica destinada de SELinux y que
SELinux est corriendo en modo obligatorio:
l. Ejecute el comando sestatus para confirmar que SELinux est activado, se ejecuta en modo
obligatorio y que la poltica destinada se est usando:
$ 7us7sb1h7sestatus
5EL1hux status. ehabJed
5EL1huxfs nouht. 7seJ1hux
Cueht node. ehfoc1hg
hode fon cohf1g f1Je. ehfoc1hg
PoJ1cy ves1oh. 23
PoJ1cy fon cohf1g f1Je. tageted
5EL1hux status. ehabJed is returned when SELinux is enabled. Cueht node.
ehfoc1hg is returned when SELinux is running in enforcing mode. PoJ1cy fon cohf1g
f1Je. tageted is returned when the SELinux targeted policy is used.
2. Como usuario root de Linux, ejecute el comando touch 7var7WWW7htmJ7prueba para crear
un archivo.
3. Ejecute el comando Js -Z 7var7WWW7htmJ7prueba para ver el contexto SELinux:
l
http://en.wikipedia.org/wiki/Buffer_overflow
CaptuIo 4. PoItica Destinado
l2
-W----- oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su 7va7
WWW7htnJ7pueba
Por defecto, los usuarios Linux corren no confinados en Fedora ll, razn por la cual el archivo
prueba se etiqueta con el usuario SELinux uhcohf1hedu. RBAC se usa para procesos,
y no para archivos. Los roles no tienen significado para archivos - el rol obect es un
rol genrico usado para archivos (en sistemas de archivos persistentes y de red). Bajo el
directorio 7proc7, los archivos relacionados con procesos pueden usar el rol systen.
2
El tipo
httpdsyscohtehtt permite al proceso httpd acceder a este archivo.
4. Como usuario root de Linux, ejecute el comando serv1ce httpd start para iniciar el proceso
httpd. La salida escomo sigue si httpd inicia con xito:
# 7sb1h7sev1ce httpd stat
Th1c1ahdo httpd. | uK
5. Cambie al directorio donde su usuario Linux tenga acceso de escritura y ejecute el comando
Wget http:77JocaJhost7prueba. A menos que hubieran cambios en la configuracin
predeterminada, este comando tiene xito:
--2uu9-u5-u 23.uu.u1-- http.77JocaJhost7pueba
ResoJv1hg JocaJhost... 127.u.u.1
Cohhect1hg to JocaJhost|127.u.u.1|.Bu... cohhected.
hTTP equest seht, aWa1t1hg espohse... 2uu uK
Lehgth. u |text7pJa1h
5av1hg to. `pueba'
| <=> u --.-K7s 1h us

2uu9-u5-u 23.uu.u1 {u.uu B7s} - `pueba' saved |u7u
6. El comando chcon reetiqueta archivos; sin embargo, tales cambios de etiquetas no sobreviven
cuando el sistema se reetiqueta. Para que los cambios sobrevivan un reetiquetado del sistema,
use el comando semanage, que se discute ms adelante. Como usuario root de Linux, corra el
siguiente comando para cambiar el tipo a un tipo usado por Samba:
chcon -t sambasharet 7var7WWW7htmJ7prueba
Ejecute el comando Js -Z 7var7WWW7htmJ7prueba para ver los cambios:
-W----- oot oot uhcohf1hedu.obect.sanbashaet.su 7va7WWW7
htnJ7pueba
7. Nota: los permisos de DAC actuales permiten al proceso httpd acceder al prueba. Cambie
al directorio donde el usuario Linux tenga permiso de escritura y ejecute el comando Wget
http:77JocaJhost7prueba. A menos que hayan cambios en la configuracin predeterminada,
este comando fallar:
--2uu9-u5-u 23.uu.54-- http.77JocaJhost7pueba
Procesos Confinados
l3
ResoJv1hg JocaJhost... 127.u.u.1
Cohhect1hg to JocaJhost|127.u.u.1|.Bu... cohhected.
hTTP equest seht, aWa1t1hg espohse... 4u3 Fob1ddeh
2uu9-u5-u 23.uu.54 ERRuR 4u3. Fob1ddeh.
8. Como usuario root de Linux, corra el comando rm -1 7var7WWW7htmJ7prueba para borrar
prueba.
9. Si no necesita que corra httpd, como usuario root de Linux corra el comando serv1ce httpd
stop para detener a httpd:
# 7sb1h7sev1ce httpd stop
ueteh1ehdo httpd. | uK
Este ejemplo muestra la seguridad adicional agregada por SELinux. Aunque las reglas de DAC
permitieron al proceso httpd acceder a prueba en el paso 7, dado que estaba etiquetado con un
tipo al que el proceso httpd no tena acceso, SELinux neg el acceso. Despus del paso 7, un error
similar al siguiente se guarda en 7var7Jog7messages:
hay 23.uu.54 JocaJhost setoubJeshoot. 5EL1hux 1s peveht1hg httpd
{httpdt} "getatt"
to 7va7WWW7htnJ7pueba {sanbashaet}. Fo conpJete 5EL1hux nessages.
uh seaJet -J cu5911d3-eBu-4e42-Be3-fe2ab9fBe54
Archivos log previos pueden usar el formato 7var7Jog7messages.YYYYMM00. Cuando se ejecuta
sysIog-ng, los archivos log previos pueden usar el formato 7var7Jog7messages.X. Si los procesos
setoubJeshootd y aud1td estn ejecutndose, errores similares a los siguientes se registran en
7var7Jog7aud1t7aud1t.Jog:
type=AvC nsg=aud1t{122u7u212.937.7u}. avc. deh1ed { getatt }
fo p1d=19u4 conn="httpd" path="7va7WWW7htnJ7pueba"
dev=sda5 1ho=24757 scohtext=uhcohf1hedu.systen.httpdt.su
tcohtext=uhcohf1hedu.obect.sanbashaet.su tcJass=f1Je
type=5Y5CALL nsg=aud1t{122u7u212.937.7u}. ach=4uuuuuu3 syscaJJ=19
success=ho ex1t=-13 au=b9e21dau a1=bf95B1dc a2=555ff4 a3=2uuB171 1tens=u
pp1d=19u2 p1d=19u4 au1d=5uu u1d=4B g1d=4B eu1d=4B su1d=4B fsu1d=4B eg1d=4B
sg1d=4B fsg1d=4B tty={hohe} ses=1 conn="httpd" exe="7us7sb1h7httpd"
sub=uhcohf1hedu.systen.httpdt.su key={huJJ}
Tambin, un error similar al siguiente se registra en 7var7Jog7httpd7errorJog:
|Wed hay u 23.uu.54 2uu9 |eo |cJ1eht 127.0.0.1 {13}Pen1ss1oh
deh1ed. access to 7pueba deh1ed
Nota
En Fedora ll, los paquetes setroub/eshoot-server y aud|t se instalan por defecto. Estos
paquetes incluyen los demonios setoubJeshootd y aud1td respectivamente. Estos
demonios se ejecutan por defecto. Detener alguno de ellos provoca un cambio de en
CaptuIo 4. PoItica Destinado
l4
dnde se graban las negaciones de SELinux. Vaya a Secc|n 5.2, "Qu Arch|vo log se
usa para ms informacin.
4.2. Procesos no Confinados
Los procesos no confinados corren en dominios no confinados, por ejemplo, los programas init (del
arranque) corren en el dominio no confinado 1h1tct, los procesos no confinados del kernel corren
en el dominio keheJt y los usuarios no confinados deLlnux corren en el dominio uhcohf1hedt.
Para procesos no confinados, las reglas de la poltica de SELinux son aplicadas, pero hay reglas de la
poltica que permiten que los procesos se ejecuten en dominios no confinados tengan casi todos los
accesos. Los procesos que corren en dominios no confinados terminan usando exclusivamente las
reglas DAC. Si un proceso no confinado es comprometido, SELinux no impide que un atacante gane
acceso a los recursos del sistema y a los datos, pero, por supuesto, las reglas DAC todava se usan.
SELinux es una mejora de seguridad sobre las reglas DAC - no las reemplaza.
El siguiente ejemplo muestra cmo el Servidor HTTP Apache (httpd) puede acceder datos que
se suponen son para ser usados por Samba, cuando se corre no confinado. Nota: en Fedora ll, el
proceso httpd corre en el dominio confinado httpdt por defecto. Este es un ejemplo, y no debe
usarse en produccin. Se asume que los paquetes httpd, wget, setroub/eshoot-server, y aud|t estn
instalados, que se usa la poltica destinada de SELinux y que SELinux corre en modo obligatorio:
l. Ejecute el comando sestatus para confirmar que SELinux est activado, se ejecuta en modo
obligatorio y que la poltica destinada se est usando:
$ 7us7sb1h7sestatus
5EL1hux status. ehabJed
5EL1huxfs nouht. 7seJ1hux
Cueht node. ehfoc1hg
hode fon cohf1g f1Je. ehfoc1hg
PoJ1cy ves1oh. 23
PoJ1cy fon cohf1g f1Je. tageted
5EL1hux status. ehabJed is returned when SELinux is enabled. Cueht node.
ehfoc1hg is returned when SELinux is running in enforcing mode. PoJ1cy fon cohf1g
f1Je. tageted is returned when the SELinux targeted policy is used.
2. Como usuario root de Linux, corra el comando touch 7var7WWW7htmJ7prueba2 para crear un
archivo.
3. Ejecute el comando Js -Z 7var7WWW7htmJ7prueba2 para ver el contexto SELinux:
-W----- oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su 7va7
WWW7htnJ7pueba2
Por defecto, los usuarios Linux corren no confinados en Fedora ll, razn por la cual el archivo
prueba2 est etiquetado con el usuario SELinux uhcohf1hedu. RBAC se usa para procesos,
no para archivos. Los roles no tienen un significado para archivos - el rol obect es el rol
genrico que se usa para archivos (en almacenamiento persistente y sistemas de archivos
de red). Bajo el directorio 7proc7, los archivos relacionados con procesos pueden usar el rol
systen.
3
El tipo httpdsyscohtehtt permite al proceso httpd acceder a este archivo.
Procesos no Confinados
l5
4. El comando chcon reetiqueta archivos; sin embargo, tales cambios de etiquetas no sobreviven
cuando el sistema se reetiqueta. Para que los cambios sobrevivan un reetiquetado del sistema,
use el comando semanage, que se discute ms adelante. Como usuario root de Linux, corra el
siguiente comando para cambiar el tipo a un tipo usado por Samba:
chcon -t sambasharet 7var7WWW7htmJ7prueba2
Ejecute el comando Js -Z 7var7WWW7htmJ7prueba2 para ver los cambios:
-W----- oot oot uhcohf1hedu.obect.sanbashaet.su 7va7WWW7
htnJ7pueba2
5. Corra el comando serv1ce httpd status para confirmar que el proceso httpd no se est
ejecutando:
$ 7sb1h7sev1ce httpd status
httpd est deteh1do
Si la salida difiere, ejecute serv1ce httpd stop como usuario root de Linux para detener el
proceso httpd:
# 7sb1h7sev1ce httpd stop
ueteh1ehdo httpd. | uK
6. Para hacer que el proceso httpd corra no confinado, ejecute el siguiente comando como usuario
root de Linux para cambiar el tipo de 7usr7sb1n7httpd, a un tipo que no transicione a un
dominio confinado:
chcon -t unconf1nedexect 7usr7sb1n7httpd
7. Ejecute el comando Js -Z 7usr7sb1n7httpd para confirmar que 7usr7sb1n7httpd est
etiquetado con el tipo uhcohf1hedexect:
-Wx-x-x oot oot systenu.obect.uhcohf1hedexect 7us7sb1h7
httpd
8. Como usuario root de Linux, ejecute el comando serv1ce httpd start para iniciar el proceso
httpd. La salida escomo sigue si httpd inicia con xito:
# 7sb1h7sev1ce httpd stat
Th1c1ahdo httpd. | uK
9. Ejecute el comando ps -eZ grep httpd para ver si httpd est corriendo en el dominio
uhcohf1hedt:
$ ps -eZ | gep httpd
uhcohf1hedu.systen.uhcohf1hedt 7721 ? uu.uu.uu httpd
uhcohf1hedu.systen.uhcohf1hedt 7723 ? uu.uu.uu httpd
uhcohf1hedu.systen.uhcohf1hedt 7724 ? uu.uu.uu httpd
uhcohf1hedu.systen.uhcohf1hedt 7725 ? uu.uu.uu httpd
CaptuIo 4. PoItica Destinado
l6
uhcohf1hedu.systen.uhcohf1hedt 7726 ? uu.uu.uu httpd
uhcohf1hedu.systen.uhcohf1hedt 7727 ? uu.uu.uu httpd
uhcohf1hedu.systen.uhcohf1hedt 772B ? uu.uu.uu httpd
uhcohf1hedu.systen.uhcohf1hedt 7729 ? uu.uu.uu httpd
uhcohf1hedu.systen.uhcohf1hedt 7730 ? uu.uu.uu httpd
l0. Cambie al directorio donde su usuario Linux tenga permiso de escritura y ejecute el comando
Wget http:77JocaJhost7prueba2. A menos que hayan cambios en la configuracin
predeterminada, este comando debera tener xito:
--2uu9-u5-u7 u1.41.1u-- http.77JocaJhost7pueba2
ResoJv1hg JocaJhost... 127.u.u.1
Cohhect1hg to JocaJhost|127.u.u.1|.Bu... cohhected.
hTTP equest seht, aWa1t1hg espohse... 2uu uK
Lehgth. u |text7pJa1h
5av1hg to. `pueba2.1'
| <=> --.-K7s 1h us

2uu9-u5-u7 u1.41.1u {u.uu B7s} - `pueba2.1' saved |u7u
Aunque el proceso httpd no tiene acceso a archivos etiquetados con el tipo sanbashaet,
httpd se ejecuta en el dominio uhcohf1hedt, y termina usando las reglas DAC, como tal, el
comando Wget tiene xito. Teniendo a httpd ejecutndose en el dominio httpdt, el comando
Wget habra fallado.
ll. El comando restorecon restaura el contexto SELinux predeterminado de los archivos. Como
usuario root de Linux, ejecute el comando restorecon -v 7usr7sb1n7httpd para restaurar
el contexto SELinux de 7usr7sb1n7httpd:
# 7sb1h7estoecoh -v 7us7sb1h7httpd
estoecoh eset 7us7sb1h7httpd cohtext
systenu.obect.uhcohf1hedhotahsexect.su-
>systenu.obect.httpdexect.su
Ejecute el comando Js -Z 7usr7sb1n7httpd para confirmar que 7usr7sb1n7httpd est
etiquetado con el tipo httpdexect:
$ Js -Z 7us7sb1h7httpd
-Wx-x-x oot oot systenu.obect.httpdexect 7us7sb1h7httpd
l2. Como usuario root de Linux, corra el comando 7sb1n7serv1ce httpd restart para reiniciar
httpd. Despus de reiniciar, ejecute ps -eZ grep httpd para confirmar que httpd se
est ejecutando en el dominio confinado httpdt:
# 7sb1h7sev1ce httpd estat
5topp1hg httpd. | uK
5tat1hg httpd. | uK
# ps -eZ | gep httpd
uhcohf1hedu.systen.httpdt BBBu ? uu.uu.uu httpd
Usuarios Confinados y no Confinados
l7
uhcohf1hedu.systen.httpdt BBB2 ? uu.uu.uu httpd
uhcohf1hedu.systen.httpdt BBB3 ? uu.uu.uu httpd
uhcohf1hedu.systen.httpdt BBB4 ? uu.uu.uu httpd
uhcohf1hedu.systen.httpdt BBB5 ? uu.uu.uu httpd
uhcohf1hedu.systen.httpdt BBB ? uu.uu.uu httpd
uhcohf1hedu.systen.httpdt BBB7 ? uu.uu.uu httpd
uhcohf1hedu.systen.httpdt BBBB ? uu.uu.uu httpd
uhcohf1hedu.systen.httpdt BBB9 ? uu.uu.uu httpd
l3. Como usuario root de Linux, corra el comando rm -1 7var7WWW7htmJ7prueba2 para eliminar
prueba2.
l4. Si no necesita que corra httpd, como usuario root de Linux corra el comando serv1ce httpd
stop para detener a httpd:
# 7sb1h7sev1ce httpd stop
ueteh1ehdo httpd. | uK
Los ejemplos en estas secciones muestran cmo proteger los datos desde un proceso confinado
comprometido (protegido por SELinux), as como cunto ms accesible son los datos para un
atacante si el proceso comprometido estaba no confinado (no protegido por SELinux).
4.3. Usuarios Confinados y no Confinados
Cada usuario Linux se mapea a un usuario SELinux va la poltica de SELinux. Esto permite a los
usuarios Linux heredar las restricciones sobre los usuarios SELinux. Este mapeo de usuarios Linux se
ve ejecutando el comando semanage Jog1n -J como usuario root de Linux:
# 7us7sb1h7senahage Jog1h -J
Log1h Nane 5EL1hux Use hL57hC5 Rahge
defauJt uhcohf1hedu su-su.cu.c1u23
oot uhcohf1hedu su-su.cu.c1u23
systenu systenu su-su.cu.c1u23
En Fedora ll, los usuarios de Linux se mapean por defecto al ingreso defauJt de SELinux (el
cual se mapea al usuario SELinux uhcohf1hedu). Lo siguiente define el mapeo por defecto:
defauJt uhcohf1hedu su-su.cu.c1u23
El siguiente ejemplo muestra el agregado de un usuario de Linux nuevo y el mapeo de ese usuario al
usuario SELinux uhcohf1hedu. Asume que el usuario root corre no confinado, como es por defecto
en Fedora ll:
l. Como usuario root de Linux, ejecute el comando 7usr7sb1n7useradd usuar1onuevo para
crear un nuevo usuario Linux con nombre usuarionuevo.
2. As the Linux root user, run the passWd neWuser command to assign a password to the Linux
newuser user:
CaptuIo 4. PoItica Destinado
l8
# passWd usua1ohuevo
Chahg1hg passWod fo use usua1ohuevo.
NeW UNTX passWod. En!er a password
Retype heW UNTX passWod. En!er !he sane password agan
passWd. aJJ autheht1cat1oh tokehs updated successfuJJy.
3. Salga de su sesin actual e ingrese como el usuario Linux usuarionuevo. Cuando ingrese,
pam_selinux mapea el usuario Linux a un usuario SELinux (en este caso, unconfined_u), y
configura el contexto SELinux resultante. El shell del usuario Linux es entonces lanzado en este
contexto. Corra el comando 1d -Z para ver el contexto de un usuario Linux:
|usua1ohuevoJocaJhost ~$ 1d -Z
uhcohf1hedu.uhcohf1hed.uhcohf1hedt.su-su.cu.c1u23
4. Salga de la sesin del usuarionuevo de Linux e ingrese con su cuenta. Si no quiere el usuario
usuarionuevo, ejecute el comando 7usr7sb1n7userdeJ -r usuar1onuevo como usuario
root de Linux para eliminarlo, junto con su directorio de inicio.
Los usuarios Linux confinados y no confinados son sujeto a chequeso de memoria escribible y
ejecutable, y tambin son restringidos por MCS (y MLS, si la poltica MLS est siendo usada). Si
los usuarios Linux no confinados ejecutan una aplicacin que la poltica de SELinux define que
puede transicionar del dominio uhcohf1hedt a su propio dominio confinado, los usuarios Linux
no confinados estn sujetos a restricciones de ese dominio confinado. El beneficio de seguridad de
esto es que, aunque un usuario Linux corra no confinado, la aplicacin permanece confinada, y por lo
tanto, la explotacin de una brecha en la aplicacin est limitada por la poltica. Nota: esto no protege
al sistema del usuario. En su defecto, el usuario y el sistema estn siendo protegidos de posibles
daos causados por una brecha en la aplicacin.
Los siguientes usuarios SELinux confinados estn disponibles en Fedora ll:
Usuario Dominio Sistema de
Ventanas X
su y sudo Ejecute en eI
directorio de
inicio y /tmp/
Red
guest_u guest_t no no opcional no
xguest_u xguest_t si no opcional slo Firefox
user_u user_t si no opcional si
staff_u staff_t si slo sudo opcional si
Tabla 4.l. Capacidades del Usuario SELinux
Los usuarios Linux en los dominios guestt, xguestt y uset slo pueden ejecutar
aplicaciones con lD de usuario (setuid) si la poltica de SELinux lo permite (tal como passWd). No
podrn ejecutar su y 7usr7b1n7sudo
Los usuarios Linux en el dominio guestt no tienen acceso a la red, y slo pueden ingresar va
una terminal (incluyendo ssh; pueden ingresaro por ssh, pero no se pueden ssh conectar a otro
sistema).
El nico acceso de red que tienen los usuarios en el dominoi xguestt es con Firefox
conectndose a pginas web.
Usuarios Confinados y no Confinados
l9
Los usuarios Linux en los dominios xguestt, uset y stafft pueden ingresar va el Sistema
de Ventanas X o por una terminal.
Por defecto, los usuarios Linux en el dominio stafft no tienen permisos para ejecutar
aplicaciones con 7usr7b1n7sudo. Estos permisos deben ser configurados por un administrador.
Por defecto, los usuarios de Linux en los dominios guestt y xguestt no pueden ejecutar
aplicaciones en sus directorios de inicio o en 7tmp7, previnindolos de ejecutar aplicaciones (que
hereden los permisos de los usuarios) en directorios a los que tienen acceso de escritura. Esto ayuda
a prevenir que aplicaciones maliciosas modifiquen archivos de los usuarios.
Por defecto, los usuarios Linux en los dominios uset y stafft pueden ejecutar aplicaciones en
sus directorios de inicio y en 7tmp7. Vaya a Secc|n 6.6, "Boo/eanos para que /os Usuar|os Fjecuten
Ap/|cac|ones para informacin sobre permitir y evitar que los usuarios ejecuten aplicaciones en sus
directorios de inicio y en 7tmp7.
20

2l
Trabajando con SELinux
Las siguientes secciones dan un breve repaso de los paquetes de SELinux principales en Fedora ll;
instalacin y actualizacin de paquetes; qu archivos de registro se usan; el archivo de configuracin
principal de SELinux; habilitacin y deshabilitacin de SELinux; modos de SELinux; configuracin de
Booleanos; cambios temporales y permanentes de etiquetas de archivos y directorios; superposicin
de las etiquetas de sistemas de archivos con el comando mount; montaje de sistemas de archivos
NFS; y cmo preservar contextos de SELinux cuando se copia y compacta archivos y directorios.
5.l. Paquetes de SELinux
En Fedora ll, los paquetes SELinux se instalan por defecto, a menos que hayan sido manualmente
excludos durante la instalacin. Por defecto, la poltica destinada de SELinux se usa y SELinux corre
en modo Obediente. La siguiente es una descripcin breve de los paquetes SELinux principales:
po/|cycoreut|/s: provee utilitarios, tales como semanage, restorecon, aud1t2aJJoW, semoduJe,
JoadpoJ1cy y setsebooJ, para la operacin y administracin de SELinux.
po/|cycoreut|/s-gu|: provee system-conf1g-seJ1nux, una herramienta grfica para la
administracin de SELinux.
se/|nux-po/|cy: provee una Poltica de Referencia de SELinux. La Poltica de Referencia de SELinux
en una poltica de SELinux completa, y se usa como base para otras polticas, tales como la poltica
destinada de SELinux. Vaya a la pgina Po/it|ca de Pelerenc|a de SFl|nux
l
de Tresys Technology
para ms informacin. El paquete se/|nux-po/|cy-deve/ provee herramientas de desarrollo, tales
como7usr7share7seJ1nux7deveJ7poJ1cygentooJ y 7usr7share7seJ1nux7deveJ7
poJ1cyheJp, as como archivos de poltica ejemplos. Este paquete fue mezclado con el paquete
se/|nux-po/|cy.
se/|nux-po/|cy-poJcy: provee las polticas de SELinux. Para la poltica destinada, instale se/|nux-
po/|cy-targeted. Para MLS, instale se/|nux-po/|cy-m/s. En Fedora 8, la poltica estricta fue mezclada
con la poltica destinada, permitiendo a los usuarios confinados y no confinados coexistir en el mismo
sistema.
setroub/eshoot-server: traduce mensajes de negaciones, producidos cuando el acceso es denegado
por SELinux, en descripciones detalladas que se ven con seaJert (que se provee en este paquete).
setoo/s, setoo/s-gu| y setoo/s-conso/e: estos paquetes proveen la D|str|buc|n de SFHerram|entas de
Tresys Techno/ogy
2
, un nmero de herramientas y bibliotecas para analizar y consultar la poltica,
monitorear e informes de auditora, y administracin de contexto de archivos
3
. El paquete setoo/s
es un metapaquete para las SEHerramientas. El paquete setoo/s-gu| provee las herramientas apoJ,
seaud1t y sed1ffx. El paquete setoo/s-conso/e provee las herramientas de lnea de comando
seaud1t-report, sechecker, sed1ff, se1nfo, sesearch, f1ndcon, repJcon y 1ndexcon.
Vaya a la pgina de las SFHerram|entas de Tresys Techno/ogy
4
para informacin sobre estas
herramientas.
/|bse/|nux-ut|/s: provee las herramientas avcstat, getenforce, getsebooJ, matchpathcon,
seJ1nuxconJ1st, seJ1nuxdefcon, seJ1nuxenabJed, setenforce, toggJesebooJ.
l
http://oss.tresys.com/projects/refpolicy
2
http://oss.tresys.com/projects/setools
3
Brindle, Joshua. "Re: blurb for fedora setools packages" Email para Murray McAllister. l Noviembre 2008. Cualquier edicin o
cambio en esta versin fue hecha por Murray McAllister.
4
http://oss.tresys.com/projects/setools
CaptuIo 5. Trabajando con SELinux
22
mcstrans: traduce niveles, tales como su-su.cu.c1u23, a una forma legible como 5ystenLoW-
5ystenh1gh. Este paquete no se instala por defecto.
Para instalar paquetes en Fedora ll, como usuario root de Linux ejecute el comando yum 1nstaJJ
nobre~de~aquete. Por ejemplo, para instalar el paquete mcstrans, ejecute el comando yum
1nstaJJ mcstrans. Para actualizar todos los paquetes instalados en Fedora ll, ejecute el
comando yum update.
Vaya a Adm|n|strac|n de Soltware con yum
56
para ms informacin sobre el uso de yum para
administrar paquetes.
Nota
En versiones anteriores de Fedora, el paquete se/|nux-po/|cy-deve/ es necesario cuando
se crea un mdulo de poltica local con aud1t2aJJoW -M.
5.2. Qu Archivo Log se usa
En Fedora ll, los paquetes setroub/eshoot-server y aud|t se instalan si los paquetes no se
eliminan de la seleccin de paquetes predeterminada. Estos paquetes incluyen a los demonios
setoubJeshootd y aud1td respectivamente. Estos demonios se ejecutan por defecto.
Los mensajes de negacin de SELinux, tales como el siguiente, se escriben por defecto en 7var7
Jog7aud1t7aud1t.Jog:
type=AvC nsg=aud1t{1223u24155.B4.49}. avc. deh1ed { getatt }
fo p1d=2uuu conn="httpd" path="7va7WWW7htnJ7ach1vo1"
dev=dn-u 1ho=3991B5 scohtext=uhcohf1hedu.systen.httpdt.su
tcohtext=systenu.obect.sanbashaet.su tcJass=f1Je
Tambin, si setoubJeshootd est ejecutndose, lo que es por defecto, los mensajes de negacin
desde 7var7Jog7aud1t7aud1t.Jog se traducen a una forma ms fcil de leer en 7var7Jog7
messages:
hay 7 1B.55.5 JocaJhost setoubJeshoot. 5EL1hux 1s peveht1hg
httpd {httpdt} "getatt" to 7va7WWW7htnJ7ach1vo1 {sanbashaet}.
Fo conpJete 5EL1hux nessages. uh seaJet -J de7e3ud-54BB-4d-
au-92c9f4ud31d
Los mensajes de negacin se envan a una ubicacin distinta, dependiendo de cules demonios se
estn ejecutando:
Daemon Log Location
auditd on 7var7Jog7aud1t7aud1t.Jog
auditd off; rsyslogd on 7var7Jog7messages
setroubleshootd, rsyslogd, and
auditd on
7var7Jog7aud1t7aud1t.Jog. Easier-to-read denial messages
also sent to 7var7Jog7messages
5
http://docs.fedoraproject.org/yum/en/
6
Administracin de Software con yum, escrito por Stuart Ellis, editado por Paul W. Frields, Rodrigo Menezes y Hugo Cisneiros.
Archivo de Configuracin Principal
23
Iniciando Demonios Automticamente
Para configurar los demonios aud1td, sysJogd, y setoubJeshootd para que inicien
automticamente al arrancar, corra los siguientes comandos como usuario root de Linux:
7sb1h7chkcohf1g --JeveJs 2345 aud1td oh
7sb1h7chkcohf1g --JeveJs 2345 sysJog oh
7sb1h7chkcohf1g --JeveJs 345 setoubJeshoot oh
Use el comando serv1ce nobre~de~serv1c1o status para chequear si estos servicios se
estn ejecutando, por ejemplo:
$ 7sb1h7sev1ce aud1td status
aud1td {p1d 131B} 1s uhh1hg...
Si los servicos de arriba no se estn ejecutando (nonbre-de-servco est deteh1do), use el
comando serv1ce nobre~de~serv1c1o start como usuario root de Linux para iniciarlos. Por
ejemplo:
# 7sb1h7sev1ce setoubJeshoot stat
5tat1hg setoubJeshootd. | uK
5.3. Archivo de Configuracin PrincipaI
El archivo 7etc7seJ1nux7conf1g es el archivo de configuracin principal de SELinux. Controla el
modo de SELinux y la poltica de SELinux a usar:
# Th1s f1Je cohtoJs the state of 5EL1hux oh the systen.
# 5ELTNUX= cah take ohe of these thee vaJues.
# ehfoc1hg - 5EL1hux secu1ty poJ1cy 1s ehfoced.
# pen1ss1ve - 5EL1hux p1hts Wah1hgs 1hstead of ehfoc1hg.
# d1sabJed - No 5EL1hux poJ1cy 1s Joaded.
5ELTNUX=ehfoc1hg
# 5ELTNUXTYPE= cah take ohe of these tWo vaJues.
# tageted - Tageted pocesses ae potected,
# nJs - huJt1 LeveJ 5ecu1ty potect1oh.
5ELTNUXTYPE=tageted
5ELTNUX=ehfoc1hg
La opcin 5ELTNUX pone el modo en el que corre SELinux. SELinux tiene tres modos: obediente,
permisivo y deshabilitado. Cuando se usa modo obediente, la poltica de SELinux es aplicada
y SELinux niega el acceso basndose en las reglas de polticas de SELinux. Los mensajes de
negacin se guardan. Cuando se usa modo permisivo, la poltica de SELinux no es obediente.
Los mensajes son guardados. SELinux no niega el acceso, pero se guardan las negaciones de
acciones que hubieran sido negadas si SELinux estaba en modo obediente. Cuando se usa el
modo deshabilitado, SELinux est deshabilitado (el mdulo de SELinux no se registra con el
kernel de Linux), y slo se usan las reglas DAC.
CaptuIo 5. Trabajando con SELinux
24
5ELTNUXTYPE=tageted
La opcin 5ELTNUXTYPE pone la poltica SELinux a usar. La poltica Destinada es la
predeterminada. Slo cambie esta opcin si quiere usar la poltica MLS. Para usar la poltica MLS,
instale el paquete se/|nux-po/|cy-m/s; configure 5ELTNUXTYPE=nJs en 7etc7seJ1nux7conf1g;
y reinicie su sistema.
Importante
Cuando los sistemas corren con SELinux en modo permisivo o deshabilitado, los usuarios
tiene permiso para etiquetar los archivos incorrectamente. Tambin, los archivos creados
con SELinux deshabilitado no son etiquetados. Esto causa problemas cuando se cambia
a modo obediente. Para prevenir el etiquetado incorrecto o la falta de etiquetado, los
sistemas de archivos son automticamente reetiquetados cuando se cambie desde el
modo deshabilitado al modo permisivo u obediente.
5.4. HabiIitando y DeshabiIitando SELinux
Use los comandos 7usr7sb1n7getenforce o 7usr7sb1n7sestatus para chequear el estado
de SELinux. El comando getenforce devuelve ubed1ehte, Pen1s1vo, o ueshab1J1tado.
El comando getenforce devuelve ubed1ehte cuando SELinux est habilitado (las reglas de la
poltica de SELinux son aplicadas):
$ 7us7sb1h7getehfoce
Ehfoc1hg
El comando getenforce devuelve Pen1ss1ve cuando SELinux est activado, pero las reglas
de polticas de SELinux no estn en obligatorio, y slo se usan las reglas DAC. El comando
getenforce devuelve u1sabJed si SELinux est deshabilitado.
El comando sestatus devuelve el estado de SELinux y la poltica de SELinux que se est usando:
$ 7us7sb1h7sestatus
5EL1hux status. ehabJed
5EL1huxfs nouht. 7seJ1hux
Cueht node. ehfoc1hg
hode fon cohf1g f1Je. ehfoc1hg
PoJ1cy ves1oh. 23
PoJ1cy fon cohf1g f1Je. tageted
5EL1hux status. ehabJed is returned when SELinux is enabled. Cueht node. ehfoc1hg
is returned when SELinux is running in enforcing mode. PoJ1cy fon cohf1g f1Je. tageted
is returned when the SELinux targeted policy is used.
5.4.l. HabiIitando SELinux
En sistemas con SELinux deshabilitado, la opcin 5ELTNUX=d1sabJed se configura en 7etc7
seJ1nux7conf1g:
# Th1s f1Je cohtoJs the state of 5EL1hux oh the systen.
Habilitando SELinux
25
# 5ELTNUX= cah take ohe of these thee vaJues.
# ehfoc1hg - 5EL1hux secu1ty poJ1cy 1s ehfoced.
# pen1ss1ve - 5EL1hux p1hts Wah1hgs 1hstead of ehfoc1hg.
# d1sabJed - No 5EL1hux poJ1cy 1s Joaded.
5ELTNUX=d1sabJed
# 5ELTNUXTYPE= cah take ohe of these tWo vaJues.
# tageted - Tageted pocesses ae potected,
# nJs - huJt1 LeveJ 5ecu1ty potect1oh.
5ELTNUXTYPE=tageted
Tambin, el comando getenforce devuelve u1sabJed:
$ 7us7sb1h7getehfoce
u1sabJed
Para habilitar SELinux:
l. Use los comandos rpm -qa grep seJ1nux, rpm -q poJ1cycoreut1Js y rpm -qa
grep setroubJeshoot para confirmar que los paquetes de SELinux estn instalados. esta
gua asume que los siguientes paquetes estn instalados: se/|nux-po/|cy-targeted, se/|nux-po/|cy,
/|bse/|nux, /|bse/|nux-python, /|bse/|nux-ut|/s, po/|cycoreut|/s, setroub/eshoot, setroub/eshoot-server,
setroub/eshoot-p/ug|ns. Si estos paquetes no estn instalados, como usuario root de Linux, debe
instalarlos con el comando yum 1nstaJJ nobre~de~aquete. Los siguientes paquetes son
opcionales: po/|cycoreut|/s-gu|, setroub/eshoot, se/|nux-po/|cy-deve/ y mcstrans.
Despus de instalar el paquete setroub/eshoot-server, use el comando 7sb1n7chkconf1g --
J1st setroubJeshoot para confirmar que setoubJeshootd se inicia cuando el sistema
corre en el nivel de ejecucin
7
3, 4, y 5:
$ 7sb1h7chkcohf1g --J1st setoubJeshoot
setoubJeshoot u.off 1.off 2.off 3.oh 4.oh 5.oh .off
Si la salida difiere, como usuario root de Linux ejecute el comando 7sb1n7chkconf1g
--JeveJs 345 setroubJeshoot on. Esto hace que setoubJeshootd se inicie
automticamente cuando el sistema est en los niveles de ejecucin 3, 4 y 5.
2. Antes de activar SELinux, cada archivo en el sistema de archivo debe ser etiquetado con un
contexto de SELinux. Antes que esto ocurra, los dominios confinados pueden tener el acceso
denegado, impidiendo de que su sistema se inicie correctamente. Para prevenir esto, configure
5ELTNUX=pen1ss1ve en 7etc7seJ1nux7conf1g:
# Th1s f1Je cohtoJs the state of 5EL1hux oh the systen.
# 5ELTNUX= cah take ohe of these thee vaJues.
# ehfoc1hg - 5EL1hux secu1ty poJ1cy 1s ehfoced.
# pen1ss1ve - 5EL1hux p1hts Wah1hgs 1hstead of ehfoc1hg.
# d1sabJed - No 5EL1hux poJ1cy 1s Joaded.
5ELTNUX=pen1ss1ve
# 5ELTNUXTYPE= cah take ohe of these tWo vaJues.
# tageted - Tageted pocesses ae potected,
# nJs - huJt1 LeveJ 5ecu1ty potect1oh.
5ELTNUXTYPE=tageted
CaptuIo 5. Trabajando con SELinux
26
3. Como usuario root de Linux, corra el comando reboot para reiniciar el sistema. Durante el
siguiente arranque, los sistemas de archivo son etiquetados. El proceso etiqueta todos los
archivos con un contexto de SELinux:
*** Wah1hg -- 5EL1hux tageted poJ1cy eJabeJ 1s equ1ed.
*** ReJabeJ1hg couJd take a vey Johg t1ne, depehd1hg oh f1Je
*** systen s1ze ahd speed of had d1ves.
****
Cada carcter * en la lnea de abajo representa l000 archivos que han sido etiquetados. En el
ejemplo de arriba, cuatro caracteres * representan 4000 archivos etiquetados. El tiempo que
toma reetiquetar todos los archivos depende del nmero de archivos del sistema, y la velocidad
de los discos rgidos. En sistemas modernos, este proceso puede tomar l0 minutos.
4. En modo permisivo, la poltica de SELinux no es aplicada, pero las negaciones se guardan
para las acciones que hubieran sido negadas si estaba corriendo en modo obediente. Antes de
cambiar a modo obediente, como usuario root de Linux, ejecute el comando grep "5LL1nux
esta negando" 7var7Jog7messages como usuario root de Linux para confirmar que
SELinux no neg acciones durante la ltima reiniciada. Si SELinux no neg acciones durante el
ltimo arranque, este comando no devuelve nada. Vaya a Capitu/o 7, So/uc|n a Prob/emas para
informacin para resolver problemas si SELinux neg el acceso durante el arranque.
5. Si no hay mensajes de negacin en 7var7Jog7messages, configure 5ELTNUX=ehfoc1hg en
7etc7seJ1nux7conf1g:
# Th1s f1Je cohtoJs the state of 5EL1hux oh the systen.
# 5ELTNUX= cah take ohe of these thee vaJues.
# ehfoc1hg - 5EL1hux secu1ty poJ1cy 1s ehfoced.
# pen1ss1ve - 5EL1hux p1hts Wah1hgs 1hstead of ehfoc1hg.
# d1sabJed - No 5EL1hux poJ1cy 1s Joaded.
5ELTNUX=ehfoc1hg
# 5ELTNUXTYPE= cah take ohe of these tWo vaJues.
# tageted - Tageted pocesses ae potected,
# nJs - huJt1 LeveJ 5ecu1ty potect1oh.
5ELTNUXTYPE=tageted
6. Reinicie su sistema. Despus de reiniciar, confirme que getenforce devuelve Ehfoc1hg:
$ 7us7sb1h7getehfoce
Ehfoc1hg
7. Como usuario root de Linux, corra el comando 7usr7sb1n7semanage Jog1n -J para ver el
mapeo entre usuarios de SELinux y de Linux. La salida debe ser como la siguiente:
Log1h Nane 5EL1hux Use hL57hC5 Rahge
defauJt uhcohf1hedu su-su.cu.c1u23
oot uhcohf1hedu su-su.cu.c1u23
systenu systenu su-su.cu.c1u23
Deshabilitando SELinux
27
Si ste no es el caso, ejecute los siguientes comandos como usuario root de Linux para corregir los
mapeos de usuario. Es seguro ignorar los mensajes EJ usua1o 5EL1hux nonbre-de-usuaro
ya est def1h1do si es que aparecen, donde nonbre-de-usuaro puede ser uhcohf1hedu,
guestu, o xguestu:
l.
7us7sb1h7senahage usua1o -a -5 tageted -P usua1o -R "uhcohf1hed
systen" - su-su.cu.c1u23 uhcohf1hedu
2.
7us7sb1h7senahage Jog1h -n -5 tageted -s "uhcohf1hedu" - su-
su.cu.c1u23 defauJt
3.
7us7sb1h7senahage Jog1h -n -5 tageted -s "uhcohf1hedu" - su-
su.cu.c1u23 oot
4.
7us7sb1h7senahage usua1o -a -5 tageted -P usua1o -R guest guestu
5.
7us7sb1h7senahage usua1o -a -5 tageted -P usua1o -R xguest
xguestu
Importante
Cuando los sistemas corren con SELinux en modo permisivo o deshabilitado, los usuarios
tiene permiso para etiquetar los archivos incorrectamente. Tambin, los archivos creados
con SELinux deshabilitado no son etiquetados. Esto causa problemas cuando se cambia
a modo obediente. Para prevenir el etiquetado incorrecto o la falta de etiquetado, los
sistemas de archivos son automticamente reetiquetados cuando se cambie desde el
modo deshabilitado al modo permisivo u obediente.
5.4.2. DeshabiIitando SELinux
Para deshabilitar SELinux, configure 5ELTNUX=d1sabJed en 7etc7seJ1nux7conf1g:
# Th1s f1Je cohtoJs the state of 5EL1hux oh the systen.
# 5ELTNUX= cah take ohe of these thee vaJues.
# ehfoc1hg - 5EL1hux secu1ty poJ1cy 1s ehfoced.
# pen1ss1ve - 5EL1hux p1hts Wah1hgs 1hstead of ehfoc1hg.
# d1sabJed - No 5EL1hux poJ1cy 1s Joaded.
5ELTNUX=d1sabJed
# 5ELTNUXTYPE= cah take ohe of these tWo vaJues.
# tageted - Tageted pocesses ae potected,
# nJs - huJt1 LeveJ 5ecu1ty potect1oh.
5ELTNUXTYPE=tageted
Reinicie su sistema. Despus de reiniciar, confirme que getenforce devuelve u1sabJed:
$ 7us7sb1h7getehfoce
CaptuIo 5. Trabajando con SELinux
28
u1sabJed
5.5. Modos de SELinux
SELinux tiene tres modos:
Obligatorio: la poltica de SELinux es obligatoria. SELinux niega el acceso basado en las reglas de
polticas de SELinux.
Permisivo: la poltica de SELinux no es obligatoria. SELinux no niega el acceso, pero se guardan
las negaciones para acciones que hubieran sido negadas si el modo obligatorio estaba activado.
Deshabilitado: SELinux est deshabilitado. Slo se usan las reglas DAC.
Use el comando 7usr7sb1n7setenforce para cambiar entre los modos obediente y permisivo.
Los cambios hechos con 7usr7sb1n7setenforce no sobreviven a una reiniciada. Para cambiar
a modo obediente, como usuario root de Linux, ejecute el comando 7usr7sb1n7setenforce 1.
Para cambiar a modo permisivo, ejecute el comando 7usr7sb1n7setenforce 0. Use el comando
7usr7sb1n7getenforce para ver el modo de SELinux actual.
Los cambios de modo persistentes se cubren en Secc|n 5.4, "Hab|/|tando y Deshab|/|tando SFl|nux.
5.6. BooIeanos
Los booleanos permiten cambiar partes de la poltica de SELinux en tiempo de ejecucin, sin ningn
conocimiento sobre la escritura de polticas de SELinux. Esto permite cambios, como permitir el
acceso de servicios a sistemas de archivo NFS, sin recargar o recompilar la poltica de SELinux.
5.6.l. Listando Ios BooIeanos
Para una lista de los Booleanos, una explicacin de lo que son y de si estn activos o inactivos,
ejecute el comando semanage booJean -J como usuario root de Linux. El siguiente ejemplo no
lista todos los Booleanos:
# 7us7sb1h7senahage booJeah -J
5EL1hux booJeah uesc1pt1oh
ftphoned1 -> off AJJoW ftp to ead ahd W1te f1Jes
1h the use hone d1ecto1es
xehusehfs -> off AJJoW xeh to nahage hfs f1Jes
xguestcohhecthetWok -> oh AJJoW xguest to cohf1gue NetWok
hahage
La columna 5EL1hux booJeah lista los nombres de Booleanos. La columna uesc1pt1oh lista si el
booleano est activo (on) o inactivo (off) y lo que hacen.
En el siguiente ejemplo, el Booleano ftphoned1 est apagado, impidiendo al demonio FTP
(vsftpd) la lectura y escritura de archivos en los directorios de inicio de los usuarios:
ftphoned1 -> off Pen1te a ftp Jee y esc1b1 aJ
d1ecto1o de 1h1c1o de Jos usua1os
Configurando los Booleanos
29
El comando getsebooJ -a lista los Booleanos, ya sea que estn activos o inactivos, pero no da una
descripcin de cada uno. El siguiente ejemplo no lista todos los booleanos:
$ 7us7sb1h7getsebooJ -a
aJJoWcohsoJeJog1h --> off
aJJoWcvseadshadoW --> off
aJJoWdaenohsdunpcoe --> oh
Ejecute el comando getsebooJ nobre~de~booJeano para listar solamente el estado del
booleano nonbre-de-booJeano:
$ 7us7sb1h7getsebooJ aJJoWcohsoJeJog1h
aJJoWcohsoJeJog1h --> off
Una lista separada por espacio para listar los Booleanos mltiples:
$ getsebooJ aJJoWcohsoJeJog1h aJJoWcvseadshadoW
aJJoWdaenohsdunpcoe
aJJoWcohsoJeJog1h --> off
aJJoWcvseadshadoW --> off
aJJoWdaenohsdunpcoe --> oh
5.6.2. Configurando Ios BooIeanos
El comando setsebooJ nobre~de~booJeano x activa o desactiva Booleanos, donde nonbre-
de-booJeano es un nombre de Booleano, y x es oh para activar, u off para desactivar.
El siguiente ejemplo muestra la configuracin de Booleano httpdcahhetWokcohhectdb:
l. Por defecto, el booleano httpdcahhetWokcohhectdb est apagado, impidiendo a los
scripts y mdulos del Servidor HTTP Apache conectarse a servidores de bases de datos:
$ 7us7sb1h7getsebooJ httpdcahhetWokcohhectdb
httpdcahhetWokcohhectdb --> off
2. Para permitir temporalmente a los scripts y mdulos del Servidor HTTP Apache
conectarse a servidores de bases de datos, ejecute el comando setsebooJ
httpdcannetWorkconnectdb on como usuario root de Linux.
3. Use el comando getsebooJ httpdcannetWorkconnectdb para verificar que el
Booleano est activado:
$ 7us7sb1h7getsebooJ httpdcahhetWokcohhectdb
httpdcahhetWokcohhectdb --> oh
Esto permite a los scripts y mdulos del Servidor HTTP Apache conectarse a servidores de bases
de datos.
4. Este cambio no es persistente entre reinicios. Para hacer los cambios persistentes, corra el
comando setsebooJ - booJean~nae on como usuario root de Linux:
CaptuIo 5. Trabajando con SELinux
30
# 7us7sb1h7setsebooJ -P httpdcahhetWokcohhectdb oh
5. Para revertir temporalmente el comportamiento por defecto, como usuario root de Linux,
corra el comando setsebooJ httpdcannetWorkconnectdb off. Para que
los cambios sean persistentes entre reiniciadas, ejecute el comando setsebooJ -
httpdcannetWorkconnectdb off.
5.6.3. BooIeanos para NFS y CIFS
Por defecto, los montajes NFS en el lado del cliente se etiquetan con el contexto predeterminado
definido por la poltica para sistemas de archivos NFS. En polticas comnes, este contexto
predeterminado usa el tipo hfst. Tambin, por defecto, los compartidos de Samba en el lado del
cliente se etiquetan con el contexto predeterminado definido por la poltica. En polticas comnes,
este contexto predeterminado usa el tipo c1fst.
Dependiendo en la configuracin de la poltica, los servicios pueden tener bloqueado la lectura a
archivos con la etiqueta de los tipos hfst o c1fst. Esto puede prevenir que los sistemas de
archivo etiquetados con estas etiquetas se monten y sean ledos o exportados por otros servicios.
Hay Booleanos que se pueden poner en l o 0 para controlar qu servicios pueden acceder los tipos
hfst y c1fst.
Los comandos setsebooJ y semanage se deben ejecutar como usuario root de Linux. El comando
setsebooJ - hace persistentes a los cambios. No use la opcin -P si no quiere que los cambios
persistan entre reiniciadas:
Servidor HTTP Apache
Para permitir el acceso a sistemas de archivo NFS (archivos etiquetados con el tipo hfst):
7usr7sb1n7setsebooJ - httpdusenfs on
Para permitir el acceso a sistemas de archivos SAMBA (archivos etiquetados con el tipo c1fst):
7usr7sb1n7setsebooJ - httpdusec1fs on
Samba
Para exportar sistemas de archivo NFS:
7usr7sb1n7setsebooJ - sambasharenfs on
FTP (vsftpd)
Para permitir el acceso a sistemas de archivo NFS:
7usr7sb1n7setsebooJ - aJJoWftpdusenfs on
Para permitir el acceso a sistemas de archivo Samba:
7usr7sb1n7setsebooJ - aJJoWftpdusec1fs on
Otros Servicios
Para una lista de los Booleanos relacionados con NFS para otros servicios:
Contextos de SELinux - Etiquetado de Archivos
3l
7usr7sb1n7semanage booJean -J grep nfs
Para una lista de los Booleanos relacionados con SAMBA para otros servicios:
7usr7sb1n7semanage booJean -J grep c1fs
Nota
Estos Booleanos existen en la poltica de SELinux tal cual fueron puestos en Fedora ll.
No pu eden existir en la poltica puesta en otras versiones de Fedora o de otros sistemas
operativos.
5.7. Contextos de SELinux - Etiquetado de Archivos
En sistemas que corren SELinux, todos los procesos y archivos son etiquetados con una etiqueta que
contiene informacin de seguridad relevante. Esta informacin se llama contexto de SELinux. Para
archivos, esto se ve usando el comando Js -Z:
$ Js -Z ach1vo1
-W-W--- usua1o1 gupo1 uhcohf1hedu.obect.usehonet.su ach1vo1
En este ejemplo, SELinux provee un usuario (uhcohf1hedu), un rol (obect), un tipo
(usehonet) y un nivel (su). Esta informacin se usa para tomar decisiones sobre el control de
acceso. En sistemas DAC, el control de acceso se basa en los lDs de usuario y grupo de Linux. Las
reglas de la poltica de SELinux se chequean despus de las reglas DAC. Las reglas de la poltica de
SELinux no se usan si las reglas DAC niegan el acceso antes.
Hay muchos comandos para la administracin del contexto de archivos de SELinux, como por
ejemplo chcon, semanage fcontext, y restorecon.
5.7.l. Cambios TemporaIes: chcon
El comando chcon cambia el contexto SELinux de los archivos. Estos cambios no sobreviven un
reetiquetado del sistema de archivo, o el comando 7sb1n7restorecon. La poltica de SELinux
controla si los usuarios pueden modificar el contexto SELinux de algn archivo. Cuando se usa
chcon, los usuarios proveen toda o parte del contexto SELinux a cambiar. Un tipo de archivo
incorrecto es una causa comn de negacin de acceso de SELinux.
Referencia Rpida
Ejecute el comando chcon -t t1o nobre~de~arch1vo para cambiar el tipo de archivo,
donde !po es el tipo, por ejemplo httpdsyscohtehtt, y nonbre-de-archvo es un
nombre de archivo o de directorio.
Ejecute el comando chcon -R -t t1o nobre~de~d1rector1o para cambiar el tipo de un
directorio y su contenido, donde !po es el tipo, por ejemplo httpdsyscohtehtt, y nonbre-
de-drec!oro es un nombre de directorio.
Cambiando eI Tipo de un Archivo o de un Directorio
El siguiente ejemplo muestra el cambio de tipo solamente en el contexto de SELinux:
CaptuIo 5. Trabajando con SELinux
32
l. Ejecute el comando cd sin argumentos para cambiar a su directorio de inicio.
2. Ejecute el comando touch arch1vo1 para crear un archivo nuevo. Use el comando Js -Z
arch1vo1 para ver el contexto de SELinux del arch1vo1:
$ Js -Z ach1vo1
-W-W--- usua1o1 gupo1 uhcohf1hedu.obect.usehonet.su
ach1vo1
En este ejemplo, el contexto SELinux del arch1vo1 incluye el usuario uhcohf1hedu, el rol
obect, el tipo usehonet, y el nivel su. Para una descripcin de cada parte del contexto
SELinux, vaya a Capitu/o 3, Contextos de SFl|nux.
3. EJecute el comando chcon -t sambasharet arch1vo1 para cambiar el tipo a
sanbashaet. La opcin -t slo cambia el tipo. Vea el cambio con Js -Z arch1vo1:
$ Js -Z ach1vo1
-W-W--- usua1o1 gupo1 uhcohf1hedu.obect.sanbashaet.su
ach1vo1
4. Use el comando 7sb1n7restorecon -v arch1vo1 para restaurar el contexto de SELinux del
arch1vo1. Use la opcin -v para ver qu cambia:
$ 7sb1h7estoecoh -v ach1vo1
estoecoh eset ach1vo1 cohtext
uhcohf1hedu.obect.sanbashaet.su-
>systenu.obect.usehonet.su
En este ejemplo, el tipo previo sanbashaet, se restaura al tipo correcto usehonet.
Cuando se usa la poltica destinada (la poltica SELinux predeterminada en Fedora ll), el
comando 7sb1n7restorecon lee los archivos en el directorio 7etc7seJ1nux7targeted7
contexts7f1Jes7 para ver qu contexto de SELinux deben tener los archivos.
El ejemplo en esta seccin funciona igual para directorios, por ejemplo, si arch1vo1 fuera un
directorio.
Cambio de un Directorio y sus Tipos de Contenidos
El siguiente ejemplo muestra la creacin de un directorio nuevo y el cambio del tipo de archivo del
mismo (junto con su contenido) a un tipo usado por el Servidor HTTP Apache. La configuracin en
este ejemplo se usa si quiere que el Servidor HTTP Apache use una raz de documento distinta (en
vez de 7var7WWW7htmJ7):
l. Como usuario root de Linux, ejecute el comando mkd1r 7Web para crear un directorio nuevo, y
luego el comando touch 7Web7arch1vo|1,2,3) para crear 3 archivos vacos (arch1vo1,
arch1vo2 y arch1vo3). El directorio 7Web7 y los archivos en l son etiquetados con el tipo
defauJtt:
# Js -dZ 7Web
dWx-x-x oot oot uhcohf1hedu.obect.defauJtt.su 7Web
# Js -JZ 7Web
Cambios Persistentes: semanage fcontext
33
-W----- oot oot uhcohf1hedu.obect.defauJtt.su ach1vo1
-W----- oot oot uhcohf1hedu.obect.defauJtt.su ach1vo2
-W----- oot oot uhcohf1hedu.obect.defauJtt.su ach1vo3
2. Como usuario root de Linux, corra el comando chcon -R -t httpdsyscontentt 7Web7
para cambiar el tipo del directorio 7Web7 (y su contenido) a httpdsyscohtehtt:
# chcoh -R -t httpdsyscohtehtt 7Web7
# Js -dZ 7Web7
dWx-x-x oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su 7Web7
# Js -JZ 7Web7
-W----- oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo1
-W----- oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo2
-W----- oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo3
3. Como usuario root de Linux, corra el comando 7sb1n7restorecon -R -v 7Web7 para
restaurar los contextos de SELinux predeterminados:
# 7sb1h7estoecoh -R -v 7Web7
estoecoh eset 7Web cohtext
uhcohf1hedu.obect.httpdsyscohtehtt.su-
>systenu.obect.defauJtt.su
estoecoh eset 7Web7ach1vo2 cohtext
uhcohf1hedu.obect.httpdsyscohtehtt.su-
>systenu.obect.defauJtt.su
estoecoh eset 7Web7ach1vo3 cohtext
uhcohf1hedu.obect.httpdsyscohtehtt.su-
>systenu.obect.defauJtt.su
estoecoh eset 7Web7ach1vo1 cohtext
uhcohf1hedu.obect.httpdsyscohtehtt.su-
>systenu.obect.defauJtt.su
Vaya a la pgina del manual de chcon(l) para ms informacin sobre chcon.
Nota
La Obligacin de Tipo es el control de permisos principal usado en la poltica destinada
de SELinux. Para la mayor parte, los usuarios y roles de SELinux se pueden ignorar.
5.7.2. Cambios Persistentes: semanage fcontext
El comando 7usr7sb1n7semanage fcontext cambia el contexto SELinux de los archivos.
Cuando se usa la poltica destinada, los cambios hechos con este comando se agregan al archivo 7
etc7seJ1nux7targeted7contexts7f1Jes7f1Jecontexts si los cambios so para archivos
que estn en f1Jecontexts, se agregan a f1Jecontexts.JocaJ para archivos nuevos
y directorios, como sera al crear un directorio 7Web7 nuevo. setf1Jes, que se usa cuando el
CaptuIo 5. Trabajando con SELinux
34
sistema de archivo es reetiquetado, y 7sb1n7restorecon, que restaura los contextos de SELinux
predeterminados, leen estos archivos, Lo que significa que los cambios hechos por 7usr7sb1n7
semanage fcontext son persistentes, an si el sistema de archivo es reetiquetado. La poltica
de SELinux controla si los usuarios pueden modificar el contexto de SELinux para cualquier archivo
dado.
Referencia Rpida
Para hacer que los cambios de contexto de SELinux sobrevivan un reetiquetado del sistema de
archivo:
l. Ejecute el comando 7usr7sb1n7semanage fcontext -a oc1ones nobre~de~
arch1vonobre~de~d1rector1o, recuerde usar la direccin completa del archivo o del
directorio.
2. Ejecute el comando 7sb1n7restorecon -v nobre~de~arch1vonobre~de~
d1rector1o para aplicar los cambios de contexto.
Cambiando un Tipo de archivo
El siguiente ejemplo muestra el cambio de tipo de un archivo, sin tocar otros atributos del contexto de
SELinux:
l. Como usuario root de Linux, ejecute el comando touch 7etc7arch1vo1 para crear un archivo
nuevo. Por defecto, los archivos recin creados en el directorio 7etc7 se etiquetan con el tipo
etct:
# Js -Z 7etc7ach1vo1
-W----- oot oot uhcohf1hedu.obect.etct.su 7etc7ach1vo1
2. Como usuario root de Linux, ejecute el comando 7usr7sb1n7semanage fcontext -a -t
sambasharet 7etc7arch1vo1 para cambiar el tipo del arch1vo1 a sanbashaet.
La opcin -a agrega un registro nuevo, y la opcin -t define un tipo (sanbashaet). Nota:
al ejecutar este comando no se cambia directamente el tipo - el arch1vo1 todava es del tipo
etct:
# 7us7sb1h7senahage fcohtext -a -t sanbashaet 7etc7ach1vo1
# Js -Z 7etc7ach1vo1
-W----- oot oot uhcohf1hedu.obect.etct.su 7etc7ach1vo1
El comando 7usr7sb1n7semanage fcontext -a -t sambasharet 7etc7
arch1vo1 agrega la siguiente entrada a 7etc7seJ1nux7targeted7contexts7f1Jes7
f1Jecontexts.JocaJ:
7etc7ach1vo1 uhcohf1hedu.obect.sanbashaet.su
3. Como usuario root de Linux, ejecute el comando 7sb1n7restorecon -v 7etc7
arch1vo1 para cambiar el tipo. Dado que el comando semanage agreg una entrada a
f1Je.contexts.JocaJ para 7etc7arch1vo1, el comando 7sb1n7restorecon cambia el
tipo a sanbashaet:
Cambios Persistentes: semanage fcontext
35
# 7sb1h7estoecoh -v 7etc7ach1vo1
estoecoh eset 7etc7ach1vo1 cohtext uhcohf1hedu.obect.etct.su-
>systenu.obect.sanbashaet.su
4. Como usuario root de Linux, ejecute el comando rm -1 7etc7arch1vo1 para borrar el
arch1vo1.
5. Como usuario root de Linux, ejecute el comando 7usr7sb1n7semanage fcontext -d 7etc7
arch1vo1 para eliminar el contexto agregado para 7etc7arch1vo1. Cuando el contexto se
elimina, ejecutando restorecon cambia el tipo a etct, en vez de sanbashaet.
Cambiando un Tipo de Directorio
El siguiente ejemplo muestra la creacin de un directorio nuevo y el cambio del tipo de archivo del
directorio a un tipo usado por el Servidor HTTP Apache:
l. Como usuario root de Llnux, ejecute el comando mkd1r 7Web para crear un directorio nuevo.
Este directorio se etiqueta con el tipo defauJtt:
# Js -dZ 7Web
dWx-x-x oot oot uhcohf1hedu.obect.defauJtt.su 7Web
La opcin -d de Js hace que Js liste la informacin de un directorio, en vez de su
contenido, y la opcin -Z hace que Js muestre el contexto de SELinux (en este ejemplo,
uhcohf1hedu.obect.defauJtt.su).
2. Como usuario root de Linux, ejecute el comando 7usr7sb1n7semanage fcontext -a -t
httpdsyscontentt 7Web para cambiar el tipo de 7Web7 a httpdsyscohtehtt. La
opcin -a agrega un nuevo registro, y la opcin -t define un tipo (httpdsyscohtehtt).
Nota: la ejecucin de este comando no cambia el tipo directamente - 7Web7 todava tiene la
etiqueta de tipo defauJtt:
# 7us7sb1h7senahage fcohtext -a -t httpdsyscohtehtt 7Web
# Js -dZ 7Web
dWx-x-x oot oot uhcohf1hedu.obect.defauJtt.su 7Web
El comando 7usr7sb1n7semanage fcontext -a -t httpdsyscontentt 7
Web agrega la siguiente entrada a 7etc7seJ1nux7targeted7contexts7f1Jes7
f1Jecontexts.JocaJ:
7Web uhcohf1hedu.obect.httpdsyscohtehtt.su
3. Como usuario root de Linux, ejecute el comando 7sb1n7restorecon -v 7Web para cambiar el
tipo. Como el comando semanage agreg una entrada a f1Je.contexts.JocaJ para 7Web, el
comando 7sb1n7restorecon cambia el tipo a httpdsyscohtehtt:
# 7sb1h7estoecoh -v 7Web
estoecoh eset 7Web cohtext uhcohf1hedu.obect.defauJtt.su-
>systenu.obect.httpdsyscohtehtt.su
CaptuIo 5. Trabajando con SELinux
36
Por defecto, los archivos y directorios recin creados heredan el tipo SELinux de sus carpetas
padres. Cuando se us este ejemplo, y antes de eliminar el contexto SELinux agregado para 7
Web7, los archivos y directorios creados en el directorio 7Web7 fueron etiquetados con el tipo
httpdsyscohtehtt.
4. Como usuario root de Linux, ejecute el comando 7usr7sb1n7semanage fcontext -d 7Web
para borrar el contexto agregado para 7Web7.
5. Como usuario root de Linux, ejecute el comando 7sb1n7restorecon -v 7Web para restaurar
el contexto predeterminado de SELinux.
Cambio de un Directorio y sus Tipos de Contenidos
El siguiente ejemplo muestra la creacin de un directorio nuevo y el cambio del tipo de archivo del
mismo (junto con su contenido) a un tipo usado por el Servidor HTTP Apache. La configuracin en
este ejemplo se usa si quiere que el Servidor HTTP Apache use una raz de documento distinta (en
vez de 7var7WWW7htmJ7):
l. Como usuario root de Linux, ejecute el comando mkd1r 7Web para crear un directorio nuevo, y
luego el comando touch 7Web7arch1vo|1,2,3) para crear 3 archivos vacos (arch1vo1,
arch1vo2 y arch1vo3). El directorio 7Web7 y los archivos en l son etiquetados con el tipo
defauJtt:
# Js -dZ 7Web
dWx-x-x oot oot uhcohf1hedu.obect.defauJtt.su 7Web
# Js -JZ 7Web
-W----- oot oot uhcohf1hedu.obect.defauJtt.su ach1vo1
-W----- oot oot uhcohf1hedu.obect.defauJtt.su ach1vo2
-W----- oot oot uhcohf1hedu.obect.defauJtt.su ach1vo3
2. Como usuario root de Linux, ejecute el comando 7usr7sb1n7semanage fcontext -a -t
httpdsyscontentt "7Web|7.*)?" para cambiar el tipo del directorio 7Web7 junto con
los archivos dentro de l, a httpdsyscohtehtt. La opcin -a agrega un registro nuevo, y
la opcin -t define un tipo(httpd_sys_content_t). La expresin regular "7Web{7.*}?" hace que
el comando semanage aplique los cambios al directorio 7Web7, as como a los archivos dentro
de l. Nota: la ejecucin de este comando no cambia el tipo directamente - 7Web7 y los archivos
dentro de l todava tienen la etiqueta del tipo defauJtt:
# Js -dZ 7Web
dWx-x-x oot oot uhcohf1hedu.obect.defauJtt.su 7Web
# Js -JZ 7Web
-W----- oot oot uhcohf1hedu.obect.defauJtt.su ach1vo1
-W----- oot oot uhcohf1hedu.obect.defauJtt.su ach1vo2
-W----- oot oot uhcohf1hedu.obect.defauJtt.su ach1vo3
El comando 7usr7sb1n7semanage fcontext -a -t httpdsyscontentt "7
Web|7.*)?" agrega una entrada a 7etc7seJ1nux7targeted7contexts7f1Jes7
f1Jecontexts.JocaJ:
7Web{7.*}? systenu.obect.httpdsyscohtehtt.su
Cambios Persistentes: semanage fcontext
37
3. Como usuario root de Llnux, ejecute el comando 7sb1n7restorecon -R -v 7Web para
cambiar elt ipo del directorio 7Web7, junto con los archivos dentro de l. La opcin -R significa
recursivo, es decir, todos los archivos y directorios dentro del directorio 7Web7 se etiquetarn
con el tipo httpdsyscohtehtt. Dado que el comando semanage agreg una entrada
en f1Je.contexts.JocaJ para 7Web{7.*}?, el comando 7sb1n7restorecon los tipos a
httpdsyscohtehtt:
# 7sb1h7estoecoh -R -v 7Web
estoecoh eset 7Web cohtext uhcohf1hedu.obect.defauJtt.su-
>systenu.obect.httpdsyscohtehtt.su
estoecoh eset 7Web7ach1vo2 cohtext
uhcohf1hedu.obect.defauJtt.su-
>systenu.obect.httpdsyscohtehtt.su
estoecoh eset 7Web7ach1vo3 cohtext
uhcohf1hedu.obect.defauJtt.su-
>systenu.obect.httpdsyscohtehtt.su
estoecoh eset 7Web7ach1vo1 cohtext
uhcohf1hedu.obect.defauJtt.su-
>systenu.obect.httpdsyscohtehtt.su
Por defecto, los archivos y directorios recin creados heredan el tipo SELinux de sus padres. En
este ejemplo, los archivos y directorios creado en el directorio 7Web7 se etiquetarn con el tipo
httpdsyscohtehtt.
4. Como usuario root de Linux, ejecute el comando 7usr7sb1n7semanage fcontext -d "7
Web|7.*)?" para eliminar el contexto agregado para "7Web{7.*}?".
5. Como usuario root de Linux, ejecute el comando 7sb1n7restorecon -R -v 7Web para
restaurar el contexto predeterminado de SELinux.
Borrado de un Contexto agregado
El siguiente ejemplo muestra el agregado y su eliminacin del contexto de SELinux:
l. Como usuario root de Linux, ejecute el comando 7usr7sb1n7semanage fcontext -a
-t httpdsyscontentt 7prueba. El directorio 7prueba7 no tiene que existir. Este
comando agrega el siguiente contexto a 7etc7seJ1nux7targeted7contexts7f1Jes7
f1Jecontexts.JocaJ:
7pueba systenu.obect.httpdsyscohtehtt.su
2. Para eliminar el contexto, como usuario root de Linux, ejecute el comando 7usr7sb1n7
semanage fcontext -d nobre~de~arch1vonobre~de~d1rector1o, donde nonbre-
de-archvo|nonbre-de-drec!oro es la primera parte en f1Jecontexts.JocaJ. El
siguiente es un ejemplo de un contexto en f1Jecontexts.JocaJ:
7pueba systenu.obect.httpdsyscohtehtt.su
Siendo la primera parte 7pueba. Para evitar que el directorio 7prueba7 se etiquete con
httpdsyscohtehtt despus de ejecutar 7sb1n7restorecon, o despus de un
CaptuIo 5. Trabajando con SELinux
38
reetiquetado del sistema, ejecute el siguiente comando como usuario root de Linux para eliminar
el contexto de f1Jecontexts.JocaJ:
7usr7sb1n7semanage fcontext -d 7prueba
Si el contexto es parte de una expresin regular, por ejemplo 7Web{7.*}?, use las comillas para
encerrar la expresin regular:
7usr7sb1n7semanage fcontext -d "7Web|7.*)?"
Vaya a la pgina de manual de semanage(8) para informacin adicional sobre 7usr7sb1n7
semanage.
Importante
Cuando se cambia el contexto de SELinux con 7usr7sb1n7semanage fcontext -
a, use la direccin completa del archivo o directorio para evitar etiquetar mal los archivos
despus de un reetiquetado del sistema de archivo, o despus ejecutar el comando 7
sb1n7restorecon.
5.8. Los tipos fiIe_t y defauIt_t
En sistemas de archivo que soportan atributos extendidos, cuando se accede a un archivo en disco
al que le falta el contexto de SELinux, se trata como si tuviera un contexto predeterminado tal como
fue definido en la poltica de SELinux. En polticas comunes, este conexto por defecto usa el tipo
f1Jet. Este debera ser el nico uso de este tipo, por lo que los archivos sin un contexto en el disco
se podran distinguir en la poltica, y generalmente mantenerse inaccesibles a dominios confinados.
El tipo f1Jet no debera existir en sistemas de archivo correctamente etiquetados, porque todos los
archivos dado que todos los archivos en un sistema corriendo SELinux deberan tener un contexto de
SELinux, y el tipo f1Jet no sebera usarse en la configuracin de contexto de archivos
8
.
El tipo defauJtt se usa en archivos que no coinciden con ningn otro patrn en la configuracin
de contexto de archivo, por lo que tales archivos se pueden distinguir de aquellos que no tienen
un contexto en el disco, y generalmente mantenerse inaccesibles a los dominios confinados. Si
crea un directorio de alto nivel, tal como 7m1d1r7, este directorio puede ser etiquetado con el tipo
defauJtt. Si los servicios necesitan acceder a tal directorio, actualice la configuracin de contextos
de archivo para esta ubicacin. Vaya a Secc|n 5.7.2, "Camb|os Pers|stentes. semanage lcontext
para ms detalles sobre agragado de un contexto para la configuracin de contexto de archivos.
5.9. Montaje de Sistemas de Archivos
Por defecto, cuando un sistema de archivo que soporta atributos extendidos se monta, el contexto
de seguridad para cada archivo se obtiene de atributo extendido secur|ty.se/|nux del archivo. A los
archivos en sistemas de archivo que no dan soporte a atributos extendidos se les asigna un nico
contexto de seguridad predeterminado desde la configuracin de la poltica, basada en el tipo de
sistema de archivo.
Use el comando mount -o context para superponer los atributos extendidos actuales, o para
especificar uno distinto y por defecto para sistemas de archivo que no dan soporte a atributos
8
Los archivos en 7etc7seJ1nux7targeted7contexts7f1Jes7 definen los contextos de los archivos y directorios. Los
archivos en este directorio son accedidos por restorecon y por setf1Jes para restaurar al valor predeterminado los
contextos de los archivos y directorios.
Montajes de Contexto
39
extendidos. Esto es til si no confa en que un sistema de archivo provea los atributos correctos,
por ejemplo, medios removibles en sistemas mltiples. El comando mount -o context tambin
se puede ussar para dar soporte al etiquetado de sistemas de archivos que no soportan atributos
extendidos, tales como la Tabla de Ubicacin de Archivos (FAT) o los sistemas de archivo NFS. El
contexto especificado con la opcin cohtext no se escribe al disco: los contextos originales son
preservados, y se ven cuando se lo monta sin la opcin cohtext (si el sistema de archivo ya tena
sopoorte para atributos extendidos).
Para ms informacin sobre el etiquetado de sistemas de archivo, vaya al artculo de James Morris
"Etiquetado del Sistema de Archivo en SELinux": http.//www./|nuxjourna/.com/art|c/e/7426.
5.9.l. Montajes de Contexto
Para montar un sistema de archivo con el contexto especificado, superponiendo los contextos
existentes si existieran, o para especificar uno predeterminado distinto para un sistema de archivo
que no da soporte para atributos extendidos, como usuario root de Linux, use el comando mount -o
context=5L1nuxuser.roJe.tye.JeveJ cuando monte el sistema de archivo deseado. Los
cambios de contexto no se graban en el disco. Por defecto, los montajes NFS en el lado del cliente se
etiquetan con un contexto distinto definido por una poltica para sistemas de archivo NFS. En polticas
comunes, este contexto predeterminado usa el tipo hfst. Sin las opciones de montaje adicionales,
esto podra evitar el que sistemas de archivo NFS sean compartidos va otros servicios, como el
Servidor HTTP Apache. El siguiente ejemplo monta un sistema de archivo NFS para que se pueda
acceder a travs del Servidor HTTP Apache:
# nouht sev1do.7expot 7JocaJ7nouht7po1ht -o`
cohtext="systenu.obect.httpdsyscohtehtt.su"
Los archivos y directorios recin creados en este sistema de archivo parecen tener un contexto
SELinux especificado con -o cohtexto; sin embargo, dado que los cambios del contexto no se
escriben en el disco en estas situaciones, el contexto especificado por la opcin -o cohtexto slo
se mantiene si se usa la misma opcin en la siguiente montada, y si adems se especifica el mismo
contexto.
La Obligacin de Tipo es el control de permiso principal en la poltica destinada de SELinux. Para la
mayor parte, los usuarios y roles de SELinux se pueden ignorar, por lo que, cuando se superponga
el contexto de SELinux con -o cohtext, use el usuario SELinux systenu y el rol obect, y
concntrese en el tipo. Si no est usando la poltica MLS o seguridad multi-categora, use el nivel su.
Nota
Cuando se monta un sistema de archivo con la opcin cohtext, los cambios de contexto
(por usuarios y procesos) son prohibidos. Por ejemplo, ejecutando chcon en un sistema
de archivo montado con la opcin cohtext resulta en un error de upeac1oh ho
sopotada.
5.9.2. Cambio deI Contexto Predeterminado
Como se mencion en Secc|n 5.8, "los t|pos l|/e_t y delau/t_t, en sistemas de archivo que soportan
atributos extendidos, cuando se accede a un archivo en disco que le falta el contexto SELinux, se
trata como si hubiera tenido el contexto predeterminado tal como se define en la poltica SELinux. En
CaptuIo 5. Trabajando con SELinux
40
polticas comnes, este contexto predeterminados usa el tipo f1Jet. Si se desea usar un contexto
predeterminado diferente, monte el sistema de archivo con la opcindefcohtext.
El siguiente ejemplo monta un sistema de archivo recin creado (en 7dev7sda2) en el directorio
recin creado 7prueba7. Asume que no hay reglas en 7etc7seJ1nux7targeted7contexts7
f1Jes7 que definan el contexto del directorio 7prueba7:
# nouht 7dev7sda2 7pueba7 -o
defcohtext="systenu.obect.sanbashaet.su"
En este ejemplo:
la opcin defcohtext define que systenu.obect.sanbashaet.su es "el contexto de
seguridad predeterminado para archivos no etiquetados"
9
.
cuando sea montado, el directorio raz (7prueba7) del sistema de archivo se trata como si
estuviera etiquetado con el contexto especificado por defcohtext (esta etiqueta no se guarda en
el disco). Esto afecta el etiquetado de archvios creados en 7prueba7: los archivos nuevos heredan
el tipo sanbashaet, y estas etiquetas se guardan en el disco.
los archivos creados bajo 7prueba7 mientras el sistema de archivo estaba montado con la opcin
defcohtext retendrn sus etiquetas.
5.9.3. Montando un Sistema de Archivos NFS
Por defecto, los montajes NFS en el lado del cliente son etiquetados con un contexto predeterminado
por la poltica para los sistemas de archivo NFS. En polticas comunes, este contexto predeterminado
usa el tipo hfst. Dependiendo de la configuracin de la poltica, los servicios, como el Servidor
HTTP Apache y MySQL, pueden no poder leer archivos etiquetados con el tipo hfst. Esto puede
prevenir que los sistemas de archivos etiquetados con este tipo se monten y sean ledos o exportados
por otros servicios.
Si desea montar un sistema de archivo NFS y leer o exportar ese sistema de archivo con otro
servicio, use la opcin cohtexto cuando monte para anular el tipo hfst. Use la siguiente opcin
de contexto para montar sistemas de archivo NFS para que puedan compartirse va el Servidor HTTP
Apache:
nouht sev1do.7expot 7JocaJ7puhto7de7nohtae -o`
cohtext="systenu.obect.httpdsyscohtehtt.su"
Dado que los cambios de contexto no se escriben al disco para estas situaciones, el contexto
especificado con la opcin cohtext slo se retiene si la opcin cohtext se usa en el siguiente
montaje, y si el mismo contexto se especifica.
Como una alternativa a montar sistemas de archivo con la opcin cohtexto, los Booleanos se
pueden activar para permitir a los servicios acceder sistemas de archivos etiquetados con el tipo
hfst. Vaya a Secc|n 5.6.3, "Boo/eanos para NlS y CllS para instrucciones sobre configuracin
de Booleanos para permitir a servicios acceder al tipo hfst.
5.9.4. Montajes NFS MItipIes
Cuando se monten mltiples montajes desde el mismo NFS exportado, el intento de sobreescribir el
contexto de SELinux e cada montaje con un contexto diferente, resulta en fallos de los comandos de
Haciendo Persistente los Contextos de Montajes
4l
montaje subsecuentes. En el siguiente ejemplo, el servidor NFS tiene un exportado nico, 7export,
que tiene dos subdirectorios, Web7 and database7. El siguiente comando intenta dos montajes
desde un nico export NFS e intenta sobreescribir el contexto para cada uno:
# nouht sev1do.7expot7Web 7JocaJ7Web -o`
cohtext="systenu.obect.httpdsyscohtehtt.su"
# nouht sev1do.7expot7database 7JocaJ7database -o`
cohtext="systenu.obect.nysqJddbt.su"
El segundo comando mount falla, y se graba lo siguiente en 7var7Jog7messages:
keheJ. 5EL1hux. nohtae 1hvJ1do. 51n1Ja supebJock, cohf1guac1oh de
segu1dad d1feehte paa {dev u.15, t1po hfs}
Para montar montajes mltiples de un exportado NFS nico, con cada montaje teniendo un contexto
diferente, use las opciones -o hoshaecache,cohtext. El siguiente ejemplo monta montajes
mltiples de un nico export de NSF, con un contexto diferente para cada montaje (permitiendo un
nico acceso de servicio a cada uno):
# nouht sev1do.7expot7Web 7JocaJ7Web -o`
hoshaecache,cohtext="systenu.obect.httpdsyscohtehtt.su"
# nouht sev1do.7expot7database 7JocaJ7database -o`
hoshaecache,cohtext="systenu.obect.nysqJddbt.su"
En este ejemplo, seve.7expot7Web se monta localmente en 7JocaJ7Web7, con todos los
archivos etiquetados con el tipo httpdsyscohtehtt, lo que permite el acceso al Servidor HTTP
Apache. seve.7expot7database est montado localmente en 7JocaJ7database, con los
archivos etiquetados con el tipo nysqJddbt, lo que permite a MySQL el acceso. Estos cambios de
tipo no se escriben en el disco.
Importante
Las opciones hoshaecache le permiten montar el mismo subdirectorio de un exportado
varias veces con distintos contextos (por ejemplo, montar 7export7Web varias veces).
No monte el mismo directorio de un exportado varias veces con distintos contextos, dado
que esto crea un montado solapado, donde los archivos se pueden acceder con dos
contextos diferentes.
5.9.5. Haciendo Persistente Ios Contextos de Montajes
Para hacer que los contextos de montajes persistentes entre remontadas y reiniciadas, agregue las
entradas de los sistemas de archivos en 7etc7fstab o un mapa de automontador, y use el contexto
deseado como una opcin de montaje. El siguiente ejemplo agrega una entrada en 7etc7fstab
para un montaje de contexto NFS:
sev1do.7expot 7JocaJ7nohtae7 hfs
cohtext="systenu.obect.httpdsyscohtehtt.su" u u
CaptuIo 5. Trabajando con SELinux
42
Vaya a la Guia de Desp/|egue de/ l|nux para Fmpresas de Ped Hat 5, Secc|n 19.2. "Conl|gurac|n
de C/|ente NlS"
l0
para informacin adicional sobre montaje de sistemas de archivo NFS.
5.l0. Mantencin de Ias Etiquetas de SELinux
Estas secciones describen qu les pasa a los contextos SELinux cuando se copia, mueve y compacta
archivos y directorios. Tambin explica cmo preservar los contextos cuando se copia o se compacta.
5.l0.l. Copia de Directorios y Archivos
Cuando se copia un archivo o directorio, se crea uno si no exista. El contexto de ese archivo o
directorio nuevo est basado en las reglas de etiquetados predeterminada, y no el contexto original
del archivo o directorio (a menos que se usen opciones para preservar el contexto original). Por
ejemplo, los archivos creados en los directorios home de los usuarios se etiquetan con el tipo
usehonet:
$ touch ach1vo1
$ Js -Z ach1vo1
-W-W--- usua1o1 gupo1 uhcohf1hedu.obect.usehonet.su ach1vo1
Si un archivo se copia a otro directorio, tal como 7etc7, el archivo nuevo se crea de acuerdo a las
reglas de etiquetado predeterminado del directorio 7etc7. El copiado de un archivo (sin opciones
adicionales) puede no preservar el contexto original:
$ Js -Z ach1vo1
-W-W--- usua1o1 gupo1 uhcohf1hedu.obect.usehonet.su ach1vo1
# cp ach1vo1 7etc7
$ Js -Z 7etc7ach1vo1
-W----- oot oot uhcohf1hedu.obect.etct.su 7etc7ach1vo1
Cuando el arch1vo1 se copia a 7etc7, si 7etc7arch1vo1 no existe, 7etc7arch1vo1 se crea
como un archivo nuevo. Como se muestra en el ejemplo de arriba, 7etc7arch1vo1 se etiqueta con
el tipo etct, de acuerdo con las reglas de etiquetado predeterminadas.
Cuando un archivo se copia sobre otro existente, el contexto del archivo existente se preserva, a
menos que el usuario especifique opciones de cp para preservar el contexto del archivo original, tal
como --peseve=cohtext. La poltica de SELinux puede prevenir que se preserver los contextos
al copiar.
Copia sin Preservar Ios Contextos de SELinux
Cuando se copia un archivo con el comando cp, si no se dan opciones, el tipo se hereda desde el
directorio padre destino:
$ touch ach1vo1
$ Js -Z ach1vo1
-W-W--- usua1o1 gupo1 uhcohf1hedu.obect.usehonet.su ach1vo1
$ Js -dZ 7va7WWW7htnJ7
dWx-x-x oot oot systenu.obect.httpdsyscohtehtt.su 7va7WWW7
htnJ7
l0
http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.2/html/Deployment_Guide/sl-nfs-client-config.html
Copia de Directorios y Archivos
43
# cp ach1vo1 7va7WWW7htnJ7
$ Js -Z 7va7WWW7htnJ7ach1vo1
-W----- oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su 7va7
WWW7htnJ7ach1vo1
En este ejemplo, arch1vo1 se crea en el directorio de inicio del usuario, y se etiqueta con el tipo
usehonet. El directorio 7var7WWW7htmJ7 est etiquetado con el tipo httpdsyscohtehtt,
como se muestra con el comando Js -dZ 7var7WWW7htmJ7. Cuando el arch1vo1 se copia a 7
var7WWW7htmJ7, hereda el tipo httpdsyscohtehtt, como se muestra con el comandoJs -
Z 7var7WWW7htmJ7arch1vo1.
Preservacin de Ios Contextos de SELinux cuando se copia
Use el comando cp --preserve=context para preservar los contextos cuando se copia:
$ touch ach1vo1
$ Js -Z ach1vo1
-W-W--- usua1o1 gupo1 uhcohf1hedu.obect.usehonet.su ach1vo1
$ Js -dZ 7va7WWW7htnJ7
dWx-x-x oot oot systenu.obect.httpdsyscohtehtt.su 7va7WWW7
htnJ7
# cp --peseve=cohtext ach1vo1 7va7WWW7htnJ7
$ Js -Z 7va7WWW7htnJ7ach1vo1
-W----- oot oot uhcohf1hedu.obect.usehonet.su 7va7WWW7htnJ7
ach1vo1
En este ejemplo, el arch1vo1 se crea en el directorio de inicio del usuario, y se etiqueta con el tipo
usehonet. El directorio 7var7WWW7htmJ7 est etiquetado con el tipo httpdsyscohtehtt,
como se muestra con el comando Js -dZ 7var7WWW7htmJ7. Usando la opcin --
peseve=cohtext se mantienen los contextos de SELinux durante operaciones de copia.
Como se muestra con el comando Js -Z 7var7WWW7htmJ7arch1vo1, el tipo usehonet del
arch1vo1 fue preservado cuando el archivo se copi a 7var7WWW7htmJ7.
Copiado y Cambio deI Contexto
Use el comando cp -Z para cambiar el contexto destino de copia. El siguiente ejemplo se realiz en
el directorio de inicio del usuario:
$ touch ach1vo1
$ cp -Z systenu.obect.sanbashaet.su ach1vo1 ach1vo2
$ Js -Z ach1vo1 ach1vo2
-W-W--- usua1o1 gupo1 uhcohf1hedu.obect.usehonet.su ach1vo1
-W-W--- usua1o1 gupo1 systenu.obect.sanbashaet.su ach1vo2
$ n ach1vo1 ach1vo2
En este ejemplo, el contexto se define en la opcin -Z. Sin la opcin -Z, arch1vo2 se etiquetara
con el contexto uhcohf1hedu.obect.usehonet.
Copia de un Archivos sobre un otro existente
Cuando un archivo se copia sobre otro existente, el contexto del archivo existente se preserva (a
menos que se use una opcin para preservar los contextos). Por ejemplo:
CaptuIo 5. Trabajando con SELinux
44
# touch 7etc7ach1vo1
# Js -Z 7etc7ach1vo1
-W----- oot oot uhcohf1hedu.obect.etct.su 7etc7ach1vo1
# touch 7tnp7ach1vo2
# Js -Z 7tnp7ach1vo2
-W----- oot oot uhcohf1hedu.obect.usetnpt.su 7tnp7ach1vo2
# cp 7tnp7ach1vo2 7etc7ach1vo1
# Js -Z 7etc7ach1vo1
-W----- oot oot uhcohf1hedu.obect.etct.su 7etc7ach1vo1
En este ejemplo, se crean dos archivos: 7etc7arch1vo1, etiquetado con el tipo etct, y 7
tmp7arch1vo2, etiquetado con el tipo usetnpt. Ell comando cp 7tmp7arch1vo2 7etc7
arch1vo1 sobreescribe arch1vo1 con arch1vo2. Despus de copiar, el comando Js -Z 7etc7
arch1vo1 muestra a arch1vo1 etiquetado con el tipo etct, en vez del usetnpt de 7tmp7
arch1vo2 que reemplaz a 7etc7arch1vo1.
Importante
Copie archivos y directorios, en vez de moverlos. Esto ayuda a asegurar que se etiquetan
con los contextos de SELinux correctos. Los contextos SELinux incorrectos pueden hacer
que los procesos no puedan acceder a esos archivos y directorios.
5.l0.2. Movimiento de Archivos y Directorios
Los archivos y directorios mantienen su contexto SELinux actual cuando se mueven. En muchos
casos, esto es incorrecto para la ubicacin nueva a donde se los mueve. El siguiente ejemplo muestra
la movida de un archivo desde el directorio de inicio del usuario a 7var7WWW7htmJ7, que es usado
por el Servidor HTTP Apache. Dado que el archivo es movido, no hereda el contexto SELinux
correcto:
l. Ejecute el comando cd sin ningn argumento para cambiar a su directorio de inicio. Una vez ah,
ejecute el comando touch arch1vo1 para crear un archivo. Este archivo se etiqueta con el tipo
usehonet:
$ Js -Z ach1vo1
-W-W--- usua1o1 gupo1 uhcohf1hedu.obect.usehonet.su
ach1vo1
2. Ejecute el comando Js -dZ 7var7WWW7htmJ7 para ver el contexto de SELinux del directorio 7
var7WWW7htmJ7:
$ Js -dZ 7va7WWW7htnJ7
dWx-x-x oot oot systenu.obect.httpdsyscohtehtt.su 7va7WWW7
htnJ7
Por defecto, el directorio 7var7WWW7htmJ7 se etiqueta con el tipo httpdsyscohtehtt. Los
archivos y directorios creados bajo el directorio 7var7WWW7htmJ7 heredan este tipo, y como tal,
son etiquetados con este tipo.
Chequeando el Contexto SELinux Predeterminado
45
3. Como usuario root de Linux, ejecute el comando mv arch1vo1 7var7WWW7htmJ7 para mover
el arch1vo1 al directorio 7var7WWW7htmJ7. Dado que el archivo es movido, mantiene su tipo
usehonet actual:
# nv ach1vo1 7va7WWW7htnJ7
# Js -Z 7va7WWW7htnJ7ach1vo1
-W-W--- usua1o1 gupo1 uhcohf1hedu.obect.usehonet.su 7va7
WWW7htnJ7ach1vo1
Por defecto, el Servidor HTTP Apache no puede leer archivos etiquetados con el tipo usehonet.
Si todos los archivos de una pgina web se etiquetaron con usehonet, u otro tipo al que el
Servidor HTTP Apache no puede leer, el permiso es negado cuando intente accederlo va Firefox o
algn otro navegador web basado en texto.
Importante
Mover archivos y directorios con el comando mv puede resultar en el contexto SELinux
incorrecto, evitando que los procesos tales como el Servidor HTTP Apache y Samba
puedan acceder a tales archivos y directorios.
5.l0.3. Chequeando eI Contexto SELinux Predeterminado
Use el comando 7usr7sb1n7matchpathcon para chequear si los archivos y directorios tienen el
contexto SELinux correcto. De la pgina de manual de matchpathcon(8): "matchpathcon consulta
la poltica del sistema y muestra el contexto de seguridad predeterminado asociado con una direccin
de archivo."
ll
. El siguiente ejemplo muestra el uso del comando 7usr7sb1n7matchpathcon para
verificar que los archivos dentro del directorio 7var7WWW7htmJ7 estn etiquetados correctamente:
l. Como usuario root de Linux, ejecute el comando touch 7var7WWW7htmJ7arch1vo|1,2,3)
para crear tres archivos (arch1vo1, arch1vo2 y arch1vo3). Estos heredan el tipo
httpdsyscohtehtt del directorio 7var7WWW7htmJ7:
# touch 7va7WWW7htnJ7ach1vo{1,2,3}
# Js -Z 7va7WWW7htnJ7
-W----- oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo1
-W----- oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo2
-W----- oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo3
2. Como usuario root de Linux, ejecute el comando chcon -t sambasharet 7var7WWW7
htmJ7arch1vo1 para cambiar el tipo del arch1vo1 a sanbashaet. Nota: El Servidor HTTP
Apache no puede leer archivos o directorios etiquetados con el tipo sanbashaet.
3. La opcin 7usr7sb1n7matchpathcon -v compara el contexto SELinux actual con el contexto
predeterminado correcto dado por la poltica de SELinux. Ejecute el comando 7usr7sb1n7
ll
La pgina de manual matchpathcon(8), tal como se incluy en el paquete /|bse/|nux-ut|/s en Fedora, fue escrita por Daniel
Walsh. Cualquier edicin o cambio en esta versin fue hecha por Murray McAllister.
CaptuIo 5. Trabajando con SELinux
46
matchpathcon -V 7var7WWW7htmJ7* para chequear todos los archivos del directorio 7var7
WWW7htmJ7:
$ 7us7sb1h7natchpathcoh -v 7va7WWW7htnJ7*
7va7WWW7htnJ7ach1vo1 t1ehe eJ cohtexto
uhcohf1hedu.obect.sanbashaet.su, debe1a se
systenu.obect.httpdsyscohtehtt.su
7va7WWW7htnJ7ach1vo2 ve1f1ed.
7va7WWW7htnJ7ach1vo3 ve1f1ed.
La siguiente salida del comando 7usr7sb1n7matchpathcon explica que el arch1vo1
est etiquetado con el tipo sanbashaet, pero debera estar etiquetado con el tipo
httpdsyscohtehtt:
7va7WWW7htnJ7ach1vo1 t1ehe eJ cohtexto
uhcohf1hedu.obect.sanbashaet.su, debe1a tehe
systenu.obect.httpdsyscohtehtt.su
Para resolver el problema de etiqueta y permitir al Servidor HTTP Apache acceder a arch1vo1,
como usuario root de Linux corra el comando 7sb1n7restorecon -v 7var7WWW7htmJ7
arch1vo1:
# 7sb1h7estoecoh -v 7va7WWW7htnJ7ach1vo1
estoecoh eset 7va7WWW7htnJ7ach1vo1 cohtext
uhcohf1hedu.obect.sanbashaet.su-
>systenu.obect.httpdsyscohtehtt.su
5.l0.4. Archivando archivos con tar
tar no retiene los atributos extendidos por defecto. Dado que los contextos SELinux se almacenan
en los atributos extendidos, los contextos se pueden perder cuando se compactan archivos. Use tar
--seJ1nux para crear archivos que retengan los contextos. Si un archivo Tar contiene archivos sin
los atributos extendidos, o si quiere que los atributos extendidos coincidan con los predeterminados
del sistema, ejecute el archivado a travs de 7sb1n7restorecon:
$ ta -xvf archvo.!ar | 7sb1h7estoecoh -f -
Nota: dependiendo del directorio, puede necesitar ser el usuario root de Linux para ejecutar el
comando 7sb1n7restorecon.
El siguiente ejemplo muestra la creacin de un archivo Tar que mantiene sus contextos SELinux:
l. Como usuario root de Linux, ejecute el comando touch 7var7WWW7htmJ7arch1vo|1,2,3)
para crear tres archivos (arch1vo1, arch1vo2 y arch1vo3). Estos heredan el tipo
httpdsyscohtehtt del directorio 7var7WWW7htmJ7:
# touch 7va7WWW7htnJ7ach1vo{1,2,3}
# Js -Z 7va7WWW7htnJ7
-W----- oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo1
Archivando archivos con tar
47
-W----- oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo2
-W----- oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo3
2. Ejecute el comando cd 7var7WWW7htmJ7 para cambiar al directorio 7var7WWW7htmJ7. Una
vez en este directorio, como usuario root de Linux ejecute el comando tar --seJ1nux -cf
prueba.tar arch1vo|1,2,3) para crear un archivo Tar con nombre prueba.tar.
3. Como usuario root de Linux, corra el comando mkd1r 7prueba para crear un directorio nuevo,
y luego ejecute el comando chmod 777 7prueba7 para permitir a los usuarios acceso total al
directorio 7prueba7.
4. Ejecute el comando cp 7var7WWW7htmJ7prueba.tar 7prueba7 para copiar el archivo
prueba.tar en el directorio 7prueba7.
5. Ejecute el comando cd 7prueba7 para cambiar al directorio 7test7. Una vez ah, ejecute el
comando tar -xvf prueba.tar para extraer el archivo Tar.
6. Ejecute el comando Js -JZ 7prueba7 para ver los contextos SELinux. El tipo
httpdsyscohtehtt fue retenido, en vez de haberse cambiado al defauJtt, lo que
hubiera pasado si la opcin --seJ1hux no se hubiera usado:
$ Js -JZ 7pueba7
-W----- usua1o1 gupo1 uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo1
-W----- usua1o1 gupo1 uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo2
-W----- usua1o1 gupo1 uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo3
-W----- usua1o1 gupo1 uhcohf1hedu.obect.defauJtt.su
pueba.ta
7. Si el directorio 7prueba7 no se necesita ms, como usuario root de Linux ejecute el comando
rm -r1 7prueba7 para eliminarlo, as como todos los archivos en l.
Vaya a la pgina man de tar(l) para informacin adicional de tar, tal como la opcin --xatts para
retener todos los atributos extendidos.
5.l0.5. Archivando archivos con tar
star no retiene los atributos extendidos por defecto. Dado que los contextos SELinux se almacenan
en los atributos extendidos, los contextos se pueden perder cuando se crean esos archivos. Use
star -xattr -h=exustar para crear archivos que retengan los contextos. El paquete star no se
instala por defecto. Para instalar star, ejecute el comando yum 1nstaJJ star como usuario root
de Linux.
El siguiente ejemplo muestra la creacin de un archivo Star que retiene los contextos SELinux:
l. Como usuario root de Linux, ejecute el comando touch 7var7WWW7htmJ7arch1vo|1,2,3)
para crear tres archivos (arch1vo1, arch1vo2 y arch1vo3). Estos heredan el tipo
httpdsyscohtehtt del directorio 7var7WWW7htmJ7:
CaptuIo 5. Trabajando con SELinux
48
# touch 7va7WWW7htnJ7ach1vo{1,2,3}
# Js -Z 7va7WWW7htnJ7
-W----- oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo1
-W----- oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo2
-W----- oot oot uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo3
2. Ejecute el comando cd 7var7WWW7htmJ7 para cambiar al directorio 7var7WWW7htmJ7.
Una vez en este directorio, como usuario root de Linux ejecute el comando star -xattr -
h=exustar -c -f=prueba.star arch1vo|1,2,3) para crear un archivo Star llamado
prueba.star:
# sta -xatt -h=exusta -c -f=pueba.sta ach1vo{1,2,3}
sta. 1 bJocks + u bytes {totaJ of 1u24u bytes = 1u.uuk}.
3. Como usuario root de Linux, corra el comando mkd1r 7prueba para crear un directorio nuevo,
y luego ejecute el comando chmod 777 7prueba7 para permitir a los usuarios acceso total al
directorio 7prueba7.
4. Ejecute el comando cp 7var7WWW7htmJ7prueba.star 7prueba7 para copiar el archivo
prueba.star al directorio 7prueba7.
5. Ejecute el comando cd 7prueba7 para cambiar al directorio 7prueba7. Una vez ah, ejecute el
comando star -x -f=prueba.star para extraer el archivo Star:
$ sta -x -f=pueba.sta
sta. 1 bJocks + u bytes {totaJ of 1u24u bytes = 1u.uuk}.
6. Ejecute el comando Js -JZ 7prueba7 para ver los contextos SELinux. El tipo
httpdsyscohtehtt fue retenido, en vez de haberse cambiado al defauJtt, lo que
hubiera pasado si la opcin --seJ1hux no se hubiera usado:
$ Js -JZ 7pueba7
-W----- usua1o1 gupo1 uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo1
-W----- usua1o1 gupo1 uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo2
-W----- usua1o1 gupo1 uhcohf1hedu.obect.httpdsyscohtehtt.su
ach1vo3
-W----- usua1o1 gupo1 uhcohf1hedu.obect.defauJtt.su
pueba.sta
7. Si el directorio 7prueba7 no se necesita ms, como usuario root de Linux ejecute el comando
rm -r1 7prueba7 para eliminarlo, as como todos los archivos en l.
8. Si star ya no se necesita, como usuario root de Linux, ejecute el comando yum remove star
para eliminar el paquete.
Archivando archivos con tar
49
Vaya a la pgina man de star(l) para ms informacin acerca de star.
50

5l
Confinando a Ios Usuarios
Un nmero de usuarios confinados SELinux estn disponibles en Fedora ll. Cada usuario Linux se
mapea aun usuario SELinux va la poltica de SELinux, permitiendo a los usuarios Linux heredar las
restricciones sobre los usuarios SELinux, por ejemplo (dependiendo del usuairo), no poder: ejecutar el
sistema de ventanas X; usar la red; ejecutar aplicaciones setuid (a menos que la poltica de SELinux
lo permita); o ejecutar comandos su y sudo para volverse el usuario root de Linux. Esto ayuda a
proteger el sistema del usuario. Vaya a Secc|n 4.3, "Usuar|os Conl|nados y no Conl|nados para
informacin adicional sobre usuarios confinados en Fedora ll.
6.l. Linux y Ios Mapeos de Usuarios de SELinux
Como usuario root de Linux, corra el comando semanage Jog1n -J para ver el mapeo entre los
usuarios de Linux y los usuarios de SELinux:
# 7us7sb1h7senahage Jog1h -J
Log1h Nane 5EL1hux Use hL57hC5 Rahge
defauJt uhcohf1hedu su-su.cu.c1u23
oot uhcohf1hedu su-su.cu.c1u23
systenu systenu su-su.cu.c1u23
En Fedora ll, los usuarios Linux se mapean al ingreso SELinux defauJt por defecto (que
se mapea al usuario SELinux uhcohf1hedu). Cuando se crea un usuario Linux con el comando
useradd, si no se especifica ninguna opcion, son mapeados al usuario SELinux uhcohf1hedu. Lo
siguiente define el mapeo por defecto:
defauJt uhcohf1hedu su-su.cu.c1u23
6.2. Confinando Usuarios Nuevos de Linux: useradd
Los usuarios Linux mapeados al usuario SELinux uhcohf1hedu corren en el dominio
uhcohf1hedt. Esto se ve ejecutando el comando 1d -Z luego de haber ingresado como el usuario
Linux que se mapea a uhcohf1hedu:
$ 1d -Z
uhcohf1hedu.uhcohf1hed.uhcohf1hedt.su-su.cu.c1u23
Cuando los usuarios linux ejecuten en el dominio uhcohf1hedt, se aplican las reglas de la poltica
de SELinux, pero las reglas de polticas que existen para usuarios Linux que corren en el dominio
uhcohf1hedt permiten casi todos los accesos. Si los usuarios Linux no confinados ejecutan una
aplicacin que la poltica de SELinux define pueden transicionar desde el dominio uhcohf1hedt
a su propio dominio confinado, los usuarios Linux no confinados todava pueden ser sujetos a
restricciones del dominio confinado. El beneficio de seguridad de esto es que, aunque el usuario
Linux corre en un dominio confinado, la aplicacin permanece confinada, y por lo tanto, la explotacin
de una brecha en la aplicacin se puede limitar por la poltica. Nota: esto no protege al sistema del
usuario. En su lugar, el usuario y el sistema estn siendo protegido de posibles daos causados en
alguna debilidad en la aplicacin.
CaptuIo 6. Confinando a Ios Usuarios
52
Cuando se crean usuarios Llnux con useradd, use la opcin -Z para especificar a qu usuario
SELinux se debe mapear. El siguiente ejemplo crea un usuario Linux nuevo, useruuser, y mapea ese
usuario al usuario SELinux useu. Los usuarios Linux mapeados al usuario SELinux useu corren
en el dominio uset. En este dominio, los usuarios Linux no pueden correr aplicaciones setuid a
menos que la poltica de SELinux lo permita (tal como passWd), y tampoco pueden correr su o sudo,
lo que evita que se puedan volver usuarios root de Linux con estos comandos.
l. Como usuario root de Linux, corra el comando 7usr7sb1n7useradd -Z useru useruuser
para crear el usuario Linux nuevo (useruuser) que se mapear al usuario SELinux useu.
2. Como usuario root de Linux, corra el comando semanage Jog1n -J para ver el mapeo entre el
usuario Linux useuuse y useu:
# 7us7sb1h7senahage Jog1h -J
Log1h Nane 5EL1hux Use hL57hC5 Rahge
defauJt uhcohf1hedu su-su.cu.c1u23
oot uhcohf1hedu su-su.cu.c1u23
systenu systenu su-su.cu.c1u23
useuuse useu su
3. Como usuario root de Linux, corra el comando passWd useruuser para asignar una contrasea
para el usuario useruuser de Linux:
# passWd useuuse
Canb1ahdo Ja cohtasea deJ usua1o useuuse.
Nueva cohtasea de UNTX. 1ngrese una con!rasea
Re1hgese Ja hueva cohtasea de UNTX. 1ngrese Ja nsna con!rasea de
nuevo
passWd. todos Jos tokehs actuaJ1zados ex1tosanehte.
4. Salga de su sesin actual, e ingrese como el usuario useruuser de Linux. Cuando ingrese,
pam_selinux mapea el usuario Linux a un usuario SELinux (en este caso, useu), y configura el
contexto SELinux resultante. El shell del usuario Linux es luego lanzado con este contexto. Corra
el comando 1d -Z para ver el contexto de un usuario Linux:
|useuuseJocaJhost ~$ 1d -Z
useu.use.uset.su
5. Salga de la sesin useruuser de Linux, y vuelva a ingresar en su cuenta. Si no quiere el usuario
useruuser, ejecute el comando 7usr7sb1n7userdeJ -r useruuser como usuario root de
Linux para borrarlo junto con su directorio de inicio.
6.3. Confinando Usuarios Linux Existentes: semanage
Iogin
Si un usuario Linux se mapea al usuario uhcohf1hedu (el comportamiento predeterminado), y
desea cambiar le usuario SELinux al que se mapea, use el comando semanage Jog1n. El siguiente
Confinando Usuarios Linux Existentes: semanage login
53
ejemplo crea un usuario de Linux nuevo llamado usuarionuevo, luego lo mapea al usuario SELinux
useu:
l. Como usuario root de Linux, ejecute el comando 7usr7sb1n7useradd usuar1onuevo para
crear un nuevo usuario (usuarionuevo). Dado que este usuario usa el mapeo por defecto, no
aparece en la salida de 7usr7sb1n7semanage Jog1n -J:
# 7us7sb1h7senahage Jog1h -J
Log1h Nane 5EL1hux Use hL57hC5 Rahge
defauJt uhcohf1hedu su-su.cu.c1u23
oot uhcohf1hedu su-su.cu.c1u23
systenu systenu su-su.cu.c1u23
2. Para mapear un usuario usuarionuevo de Linux al usuario useu de SELinux, corra el siguiente
comando como usuario root de Linux:
7usr7sb1n7semanage Jog1n -a -s useru usuar1onuevo
La opcin -a agrega un registro nuevo y la opcin -s especifica el usuario SELinux al que mapea
el usuario Linux. El ltimo argumento usua1ohuevo, es el usuario Linux al que quiere que se
mapee el usuario SELinux especificado.
3. Para ver el mapeo entre el usuario usarionuevo de Linux y useu, corra el comando semanage
Jog1n -J como usuario root de Linux:
# 7us7sb1h7senahage Jog1h -J
Log1h Nane 5EL1hux Use hL57hC5 Rahge
defauJt uhcohf1hedu su-su.cu.c1u23
usua1ohuevo useu su
oot uhcohf1hedu su-su.cu.c1u23
systenu systenu su-su.cu.c1u23
4. As the Linux root user, run the passWd neWuser command to assign a password to the Linux
newuser user:
# passWd usua1ohuevo
Canb1ahdo Ja cohtasea deJ usua1o usua1ohuevo.
Nueva cohtasea de UNTX. 1ngrese una con!rasea
Re1hgese Ja hueva cohtasea de UNTX. 1ngrese Ja nsna con!rasea de
nuevo
passWd. todos Jos tokehs de auteht1cac1oh se actuaJ1zaoh ex1tosanehte.
5. Salga de su sesin actual e ingrese como el usuario de Linux usuarionuevo. Corra el comando 1d
-Z para ver el contexto SELinux de usuarionuevo:
|usua1ohuevoJocaJhost ~$ 1d -Z
CaptuIo 6. Confinando a Ios Usuarios
54
useu.use.uset.su
6. Salga de la sesin de Linux del usuarionuevo y vuelva a ingresar en su cuenta. Si no quiere el
usuarionuevo de Linux, corra el comando userdeJ -r usuar1onuevo como usuario root
de Linux, junto con su directorio de inicio. Tambin, el mapeo del usuario Linux usuarionuevo y
useu se elimina:
# 7us7sb1h7usedeJ - usua1ohuevo
# 7us7sb1h7senahage Jog1h -J
Log1h Nane 5EL1hux Use hL57hC5 Rahge
defauJt uhcohf1hedu su-su.cu.c1u23
oot uhcohf1hedu su-su.cu.c1u23
systenu systenu su-su.cu.c1u23
6.4. Cambiando eI Mapeo Predeterminado
En Fedora ll, los usuarios Linux se mapean al ingreso SELinux defauJt por defecto (que
se mapea al usuario SELinux uhcohf1hedu). Si quiere que los usuarios nuevos de Linux y los
usuarios Linux no mapeados especficamente a un usuario SELinux sean confinados por defecto,
cambie el mapeo predeterminado con el comando semanage Jog1n.
Por ejemplo, corra el siguiente comando como usuario root de Linux para cambiar el mapeo
predeterminado de uhcohf1hedu a useu:
7usr7sb1n7semanage Jog1n -m -5 targeted -s "useru" -r s0 defauJt
Corra el comando semanage Jog1n -J como usuario root de Linux para verificar que el ingreso
defauJt se mapea a useu:
# 7us7sb1h7senahage Jog1h -J
Log1h Nane 5EL1hux Use hL57hC5 Rahge
defauJt useu su
oot uhcohf1hedu su-su.cu.c1u23
systenu systenu su-su.cu.c1u23
Si un usuario Linux nuevo se crea y el usuario SELinux no se especifica, o si un usuario Linux
existente ingresa y no coincide una entrada especfica de la salida de semanage Jog1n -J, se
mapean a useu, segn el ingreso defauJt.
Para volver al comportamiento predeterminado, corra el siguiente comando como usuario root de
Linux para mapear el ingreso defauJt al usuario SELinux uhcohf1hedu:
7us7sb1h7senahage Jog1h -n -5 tageted -s "uhcohf1hedu" -`
su-su.cu.c1u23 defauJt
xguest: Modo Kiosk
55
6.5. xguest: Modo Kiosk
El paquete xguest provee una cuenta de usuario kiosk. Esta cuenta se usa para asegurar mquinas
a las que ingresan personas y las usan, como las de las bibliotecas, bancos, aeropuertos, quioscos
de informacin y cyber cafs. La cuenta de usuario kiosk est muy bloqueada: escencialmente, s
olo permite a los usuarios ingresar y usar Firefox para navegar sitios de lnternet. Cualquier cambio
hecho mientras se ingres con esa cuenta, tal como la creacin y cambio de la configuracin, se
pierde cuando se sale.
Para configurar la cuenta kiosk:
l. Como usuario root de Linux, corra el comando yum 1nstaJJ xguest para instalar el paquete
xguest. lnstale las dependencias requeridas.
2. Para permitir a la cuenta kiosk usarse para una variedad de personas, la cuenta no se protege
con contrasea, y como tal, la cuenta slo se puede proteger si SELinux est funcionando en
modo obediente. Antes de ingresar con esta cuenta, use el comando getenforce para confirmar
que SELinux est funcionando en modo obediente:
$ 7us7sb1h7getehfoce
Ehfoc1hg
Si no es ste el caso, vaya a Secc|n 5.5, "Modos de SFl|nux para informacin acerca del
cambio de modo de obligatorio. No es posible ingresar con esta cuenta si SELinux est en modo
permisivo o deshabilitado.
3. Solamente puede ingresar a esta cuenta a travs del Administracin de Pantalla de GNOME
(GDM). Una vez que el paquete xguest se instala, se agrega una cuenta Thv1tado a GDM. Para
ingresar, haga clic en la cuenta Thv1tado:
6.6. BooIeanos para que Ios Usuarios Ejecuten
ApIicaciones
No permitir que los usuarios Linux ejecuten aplicaciones (que heredan los permisos del usuario) en
sus directorios de inicio (home) y 7tmp7, a los que tienen acceso de escritura, lo que ayuda a evitar
CaptuIo 6. Confinando a Ios Usuarios
56
que aplicaciones con brechas o maliciosas puedan modificar archivos del usuario. En Fedora ll, por
defecto, los usuarios Linux en los dominios guestt y xguestt no pueden ejecutar aplicaciones
en los directorios de inicio o en 7tmp7; however, por defecto, los usuarios Linux en los dominios
uset and stafft si pueden.
Hay booleanos disponibles para cambiar este comportamiento, y se configuran con el comando
setsebooJ. El comando setsebooJ se debe usar con el usuario root de Linux. El comando
setsebooJ - hace los cambios persistentes. No use la opcin -P si no quiere que los cambios
persistan entre reiniciadas:
guest_t
Para perm|t|r a los usuarios Linux en el dominio guestt que ejecuten aplicaciones en sus
directorios de inicio y en 7tmp7:
7usr7sb1n7setsebooJ - aJJoWguestexeccontent on
xguest_t
Para perm|t|r a los usuarios Linux en el dominio xguestt ejecutar aplicaciones en sus directorios
inicios y 7tmp7:
7usr7sb1n7setsebooJ - aJJoWxguestexeccontent on
user_t
Para |mped|r que los usuarios Linux en el dominio uset ejecuten aplicaciones en sus directorios de
inicio y 7tmp7:
7usr7sb1n7setsebooJ - aJJoWuserexeccontent off
staff_t
Para |mped|r que los usuarios Linux en el dominio stafft ejecuten aplicaciones en sus directorios
de inicio y en 7tmp7:
7usr7sb1n7setsebooJ - aJJoWstaffexeccontent off

57
SoIucin a ProbIemas
El siguiente captulo describe qu pasa cuando SELinux niega el acceso; las principales tres causas
de problemas; dnde encontrar informacin acerca del correcto etiquetado; anlisis de las negaciones
de SELinux; y creacin de mdulos de polticas personalizados con aud1t2aJJoW.
7.l. Qu pasa cuando eI Acceso es Denegado
Las decisiones de SELinux, tales como permitir o negar el acceso, son cacheadas. Este cache
se conoce como Cach Vector de Acceso (AVC). Los mensajes de negacin se registran cuando
SELinux niega el acceso. Estas negaciones se conocen tambin como "negaciones AVC", y se
guardan en una ubicacin distinta, dependiendo de los demonios que se ejecutan:
Daemon Log Location
auditd on 7var7Jog7aud1t7aud1t.Jog
auditd off; rsyslogd on 7var7Jog7messages
setroubleshootd, rsyslogd, and
auditd on
7var7Jog7aud1t7aud1t.Jog. Easier-to-read denial messages
also sent to 7var7Jog7messages
Si est corriendo el Sistema de Ventanas X, ya tienen los paquetes setroub/eshoot y setroub/eshoot-
server instalados, y los demonios setoubJeshootd y aud1td estn ejecutndose, se muestra una
estrella amarilla y una advertencia cuando SELinux deniega el acceso:
Haciendo clic en las estrelas se presenta un anlisis detallado de por qu SELinux neg el acceso,
y una posible solucin para permitir el acceso. Si no est corriendo el Sistema de Ventanas X, es
menos obvio cuando un acceso es negado por SELinux. Por ejemplo, los usuarios navegando su sitio
web pueden recibir un error similar al siguiente:
Poh1b1do
No t1ehe pen1so paa accede eJ archvo xx eh este sev1do
Para estas situaciones, si las reglas DAC (los permisos estndares de Linux) permiten el acceso,
busque en 7var7Jog7messages y 7var7Jog7aud1t7aud1t.Jog la cadena de los errores
"5EL1hux est hegahdo" y "hegado" respectivamente. Esto se puede hacer con los siguientes
comandos como usuario root de Linux:
grep "5LL1nux esta prev1n1endo" 7var7Jog7messages
grep "denegado" 7var7Jog7aud1t7aud1t.Jog
CaptuIo 7. SoIucin a ProbIemas
58
7.2. Tres PrincipaIes Causas de ProbIemas
Las siguientes secciones describen las tres principales causas de problemas: problemas de
etiquetados, configuracin de Booleanos y puertos para servicios, y la evolucin de las reglas
SELinux.
7.2.l. ProbIemas de Etiquetados
En sistemas que corren SELinux, todos los procesosy archivos se etiquetan con una etiqueta que
contiene informacin de seguridad relevante. Esta informacin se llama contexto de SELinux. Si estas
etiquetas estn mal, el acceso puede ser negado. Si una aplicacin se etiqueta incorrectamente, el
proceso al que transiciona puede no tener la etiqueta correcta, causando negaciones de acceso de
SELinux, y los procesos pueden crear archivo con las etiquetas incorrectas.
Una causa comn de problemas de etiquetados es cuando un directorio no estandar se usa para un
servicio. Por ejemplo, en vez de usar 7var7WWW7htmJ7 para un sitio web, un administrador prefiere
usar 7srv7m1Web7. En Fedora ll, el directorio 7srv7 se etiqueta con el tipo vat. Los archivos y
directorios creados en 7srv7 heredan este tipo. Tambin, los directorios de alto nivel recin creados
(como 7m1serv1dor7) puede ser etiquetado con el tipo defauJtt. SELinux impide al Servidor
HTTP Apache (httpd) el acceso a estos dos tipos. Para permitirle el acceso, SELinux debe saber
qu archivos en 7srv7m1Web7 son accesibles a httpd:
# 7us7sb1h7senahage fcohtext -a -t httpdsyscohtehtt `
"7sv7nyWeb{7.*}?"
Este comando semanage agrega el contexto para el directorio 7srv7m1Web7 (y todos los archivos
dentro de l) a la configuracin de contexto de archivos de SELinux
l
. El comando semanage no
cambia el contexto. Como usuario root de Linux, ejecute el comando restorecon para aplicar los
cambios:
# 7sb1h7estoecoh -R -v 7sv7nyWeb
Vaya a Secc|n 5.7.2, "Camb|os Pers|stentes. semanage lcontext para ms informacin sobre
agregado de contextos a la configuracin de contexto de archivo.
7.2.l.l. CuI es eI contexto correcto?
El comando matchpathcon chequea el contexto de un nombre completo de archivo y lo
compara con la etiqueta por defecto para esa direccin. El siguiente ejemplo muestra el uso de
matchpathcon en un directorio con archivos etiquetados incorrectamente:
$ 7us7sb1h7natchpathcoh -v 7va7WWW7htnJ7*
7va7WWW7htnJ71hdex.htnJ t1ehe eJ cohtexto
uhcohf1hedu.obect.usehonet.su, debe1a se
systenu.obect.httpdsyscohtehtt.su
7va7WWW7htnJ7page1.htnJ t1ehe eJ cohtexto
uhcohf1hedu.obect.usehonet.su, debe1a se
systenu.obect.httpdsyscohtehtt.su
l
Los archivos en 7etc7seJ1nux7targeted7contexts7f1Jes7 definen los contextos de archivos y directorios. Los
archivos en este directorio son ledos por restorecon y setf1Jes para restaurar archivos y directorios a sus contextos
predeterminados.
Cmo se Ejecutan los Servicios Confinados?
59
En este ejemplo, los archivos 1ndex.htmJ and pag1na1.htmJ se etiquetan con el tipo
usehonet. Este tipo se usa para archivos en los directorios de inicio de los usuarios. Usando el
comando mv para mover archivos puede resultar en archivos etiquetados con el tipo usehonet.
Este tipo no debera existir fuera de los directorios home. Use el comando restorecon para
restaurar tales archivos a su tipo correcto:
# 7sb1h7estoecoh -v 7va7WWW7htnJ71hdex.htnJ
estoecoh eset 7va7WWW7htnJ71hdex.htnJ cohtext
uhcohf1hedu.obect.usehonet.su-
>systenu.obect.httpdsyscohtehtt.su
Para restaurar el contexto de todos los archivos bajo un directorio, use la opcin -R:
# 7sb1h7estoecoh -R -v 7va7WWW7htnJ7
estoecoh eset 7va7WWW7htnJ7page1.htnJ cohtext
uhcohf1hedu.obect.sanbashaet.su-
>systenu.obect.httpdsyscohtehtt.su
estoecoh eset 7va7WWW7htnJ71hdex.htnJ cohtext
uhcohf1hedu.obect.sanbashaet.su-
>systenu.obect.httpdsyscohtehtt.su
Vaya a Secc|n 5.10.3, "Chequeando e/ Contexto SFl|nux Predeterm|nado para un ejemplo ms
detallado de matchpathcon.
7.2.2. Cmo se Ejecutan Ios Servicios Confinados?
Los servicios se pueden ejecutar en una variedad de formas. Para cambiar esto, debe decirle a
SELinux cmo correr los servicios. Esto se puede conseguir va los Booleanos que permiten que
parte de las polticas de SELinux se cambien en tiempo de ejecucin, sin ningn conocimiento
sobre la escritura de polticas de SELinux. Esto permite cambios, tales como permitir a servicios que
accedan a sistemas de archivo NFS, sin recargar o recompilar una poltica SELinux. Tambin, correr
servicios en nmeros de puerto no predeterminados requiere que la configuracin de la poltica se
actualice va el comando semanage.
Por ejemplo, para permitir al Servidor HTTP Apache comunicarse con MySQL, active el Booleano
httpdcahhetWokcohhectdb:
# 7us7sb1h7setsebooJ -P httpdcahhetWokcohhectdb oh
Si el acceso es denegado para un servicio particular, use los comandos getsebooJ y grep para ver
si algn Booleano est disponible para permitir el acceso. Por ejemplo, use el comando getsebooJ
-a grep ftp para buscar un Booleano relacionado con FTP:
$ 7us7sb1h7getsebooJ -a | gep ftp
aJJoWftpdahohW1te --> off
aJJoWftpdfuJJaccess --> off
aJJoWftpdusec1fs --> off
aJJoWftpdusehfs --> off
ftphoned1 --> off
httpdehabJeftpseve --> off
CaptuIo 7. SoIucin a ProbIemas
60
tftpahohW1te --> off
Para una lista de los Booleanos y de si estn activos o inactivos, corra el comando 7usr7sb1n7
getsebooJ -a. Para una lista de los Booleanos y una explicacin de lo que son, y de si estn
activos o no, ejecute el comando 7usr7sb1n7semanage booJean -J como usuario root de Linux.
vaya a Secc|n 5.6, "Boo/eanos para informacin sobre listado y configuracin de Booleanos.
Nmeros de Puertos
Dependiendo de la configuracin de la poltica, los servicios pueden tener permitido correr sobre
ciertos nmeros de puerto. lntentar cambiar el puerto en el que corre un servicio sin cambiar la
poltica puede resultar en un fallo al iniciar el servicio. Por ejemplo, ejecute el comando semanage
port -J grep http como usuario root de Linux para listar los puertos relacionados con http:
# 7us7sb1h7senahage pot -J | gep http
httpcachepott tcp 312B, BuBu, B11B
httpcachepott udp 313u
httppott tcp Bu, 443, 4BB, BuuB, Buu9, B443
pegasushttppott tcp 59BB
pegasushttpspott tcp 59B9
El tipo de puerto httppott define los puertos en los que el Servidor HTTP Apache puede
escuchar, que en este caso son los puertos TCP 80, 443, 488, 8008, 8009, y 8443. Si un
administrador configura httpd.conf para que httpd escuche en el puerto 9876 (L1steh 9B7),
pero la poltica no fue actualizada para reflejar esto, el comando serv1ce httpd start falla:
# 7sb1h7sev1ce httpd stat
5tat1hg httpd. {13}Pen1ss1oh deh1ed. nakesock. couJd hot b1hd to addess
|...9B7
{13}Pen1ss1oh deh1ed. nakesock. couJd hot b1hd to addess u.u.u.u.9B7
ho J1steh1hg sockets ava1JabJe, shutt1hg doWh
UhabJe to opeh Jogs
|FATLEu
Una negacin de SELinux es similar a la siguiente y se guarda en 7var7Jog7aud1t7aud1t.Jog:
type=AvC nsg=aud1t{122594B455.u1.294}. avc. deh1ed { haneb1hd } fo
p1d=4997 conn="httpd" sc=9B7 scohtext=uhcohf1hedu.systen.httpdt.su
tcohtext=systenu.obect.pott.su tcJass=tcpsocket
Para permitir a httpd escuchar en un puerto que no est listado en el tipo de puerto httppott,
ejecute el comando semanage port para agregar un puerto a la configuracin de la poltica
2
:
# 7us7sb1h7senahage pot -a -t httppott -p tcp 9B7
La opcin -a agrega un nuevo registro; la opcin -t define un tipo; y la opcin -p define un
protocolo. El ltimo argumento es el nmero de puerto a agregar.
2
El comando semanage port -a agrega una entrada al archivo 7etc7seJ1nux7targeted7moduJes7act1ve7
ports.JocaJ. Nota: por defecto, este archivo slo puede ser visto por el usuario root de Linux.
Evolucionando las Reglas y las Aplicaciones Rotas
6l
7.2.3. EvoIucionando Ias RegIas y Ias ApIicaciones Rotas
Las aplicaciones se pueden romper, provocando que SELinux niegue el acceso. Tambin, las reglas
de SELinux evolucionan - SELinux no se debe ver como una aplicacin que se ejecuta en una cierta
forma, haciendo que deniegue el acceso, an cuando la aplicacin est funcionado como se espera
que lo haga. Por ejemplo, si una nueva versin de PostgreSQL se lanza, puede realizar acciones
sobre la poltica actual que no han sido vistas antes, haciendo que el acceso sea denegado, an
cuando el acceso debera ser permitido.
Para estas situaciones, despus de que se niegue el acceso, use aud1t2aJJoW para crear un
mdulo de poltica personalizado para permitir el acceso. Vaya a Secc|n 7.3.8, "Perm|t|endo e/
Acceso. aud|t2a//ow para ms informacin sobre el uso de aud1t2aJJoW.
7.3. Correccin de ProbIemas
Las siguientes secciones ayudan a resolver problemas. Cubren los temas: chequeo de los permisos
de Linux, que se chequean antes que las reglas de SELinux; posibles causas de negaciones de
acceso de SELinux, pero no negaciones que se estn guardando; pginas man de los servicios, que
contienen informacin sobre etiquetado y Booleanos; dominios permisivos, para permitir a un proceso
correr en modo permisivo, en vez de todo el sistema; cmo buscar y encontrar mensajes; anlisis de
negaciones; y creacin de mdulos de polticas personalizados con aud1t2aJJoW.
7.3.l. Permisos de Linux
Cuando el acceso se niega, verifique los permisos estndares de Llnux. Como se mencion en
Capitu/o 2, lntroducc|n, la mayora de los sistemas operativos usan un sistema de Control de Acceso
Discrecional (DAC) para controlar el acceso, permitiendo a los usuarios controlar los permisos de sus
propios archivos. Las reglas de polticas de SELinux se verifican despus de estas reglas DAC. Las
reglas de polticas de SELinux no se usan si las reglas DAC niegan el acceso al principio.
Si el acceso es denegado y no hay negaciones SELinux guardadas, use el comando Js -J para ver
los permisos estndares de Linux:
$ Js -J 7va7WWW7htnJ71hdex.htnJ
-W------ 1 oot oot u 2uu9-u5-u7 11.u 1hdex.htnJ
En este ejemplo, 1ndex.htmJ pertenece al usuario y al grupo root. El usuario root tiene permisos de
lectura y escritura (-W), y los miembros del grupo root tienen permisos de lectura (--). Cualquier
otro no tiene acceso (---). Por defecto, tales permisos no permiten a httpd leer este archivo. Para
resolver esto, use el comando choWn el dueo y el grupo. Este comando se debe ejecutar como
usuario root de Linux:
# choWh apache.apache 7va7WWW7htnJ71hdex.htnJ
Esto asume la configuracin predeterminada, en la que httpd corre como usuario apache de Linux.
Si corre httpd con un usuario diferente, reemplace apache.apache con ese usuario.
Vaya al borrador Proyecto de Documentac|n de ledora - "Perm|sos"
3
para informacin sobre el
manejo de los permisos de Linux.
3
http://fedoraproject.org/wiki/Docs/Drafts/AdministrationGuide/Permissions
CaptuIo 7. SoIucin a ProbIemas
62
7.3.2. PosibIes Causas de Ias Negaciones SiIenciosas
En ciertas situaciones, las negaciones AVC pueden no ser guardadas cuando SELinux niega el
acceso. Las aplicaciones y las funciones de las bibliotecas del sistema a menudo prueban ms
accesos que los pedidos para realizar sus tareas. Para mantener el menor privilegio sin llenar los
informes de auditora con negaciones AVC para pruebas sin peligro de las aplicaciones, la poltica
puede silenciar las negaciones AVC sin permitir el uso de reglas dohtaud1t. Estas reglas son
comnes en la poltica estndar. La contraparte de dohtaud1t es que, aunque SELinux niega el
acceso, los mensajes no se guardan, lo que dificulta resolver el problema.
Deshabilite temporalmente las reglas dohtaud1t, permitiendo que se guarden todas las negaciones,
ejecute el siguiente comando como usuario root de Linux:
7usr7sb1n7semoduJe -0
La opcin -u deshabilita las reglas dohtaud1t; la opcin -B reconstruye la poltica. Despus de
ejcutar semoduJe -0, pruebe ejercitar la aplicacin que tuvo problemas de permisos, y vea si ahora
se guardan negaciones de SELinux relacionadas con la aplicacin. Tenga cuidado con la decicin
de qu negaciones se deben permitir, dado que algunas se deben ignorar y manejarse va reglas
dohtaud1t. Si tiene duda, o busca alguna gua, contacte a otros usuarios y desarrolladores de
SELinux en una lista de SELinux, tal como ledora-se/|nux-/|st
4
.
Para reconstruir la poltica y habilitar las reglas dohtaud1t, ejecute el siguiente comando como
usuario root de Linux:
7usr7sb1n7semoduJe -
Esto restaura la poltica a su estado original. Para una lista completa de las reglas dohtaud1t, corra
el comando sesearch --dontaud1t. Bsquedas ms refinadas usando la opcin -s donno y
el comando grep. Por ejemplo:
$ seseach --dohtaud1t -s snbdt | gep squ1d
WARNTNu. Th1s poJ1cy cohta1hed d1sabJed aJ1ases, they have beeh enoved.
dohtaud1t snbdt squ1dpott . tcpsocket haneb1hd ,
dohtaud1t snbdt squ1dpott . udpsocket haneb1hd ,
Vaya a Secc|n 7.3.6, "Mensajes Crudos de Aud|toria y a Secc|n 7.3.7, "Mensajes sea/ert para
informacin acerca del anlisis de las negaciones.
7.3.3. Pginas de ManuaI para Servicios
Las pginas de manual para los servicios conteniendo informacin valiosa, tal como qu tipo de
archivo usar para una situacin dada, y los Booleanos para cambiar el acceso que un servicio tiene
(tal como httpd para acceder sistemas de archivos NFS). Esta informacin puede estar en la pgina
de manual estndar o una pgina de manual con seJ1hux como prefijo o sufijo.
Por ejemplo, la pgina de manual httpd_selinux(8) tiene informacin sobre qu tipo de archivo usar
para una situacin dada, as como los Booleanos para permitir scripts, compartir archivos, acceder
directorios dentro de los directorios home, y as sucesivamente. Otras pginas de manual con
informacin de SELinux para servicios incluyen a:
4
http://www.redhat.com/mailman/listinfo/fedora-selinux-list
Dominios Permisivos
63
Samba: la pgina de manual samba_selinux(8) describe que los archivos y directorios exportar va
Samba deben ser etiquetados con el tipo sanbashaet, as como los Booleanos para permitir
archivos etiquetados con otros tipos distintos a sanbashaet para exportarlos va Samba.
NFS: la pgina de manual nfs_selinux(8) describe que, por defecto, los sistemas de archivo no se
pueden exportar va NFS, y que no se permite exportar sistemas de archivos. Los Booleanos como
hfsexpotaJJo o hfsexpotaJJW deben activarse.
Berkeley lnternet Name Domain (BlND): la pgina de manual de named(8) describe qu tipo de
archivo usar para una situacin dada (vea la seccin Pef1J de 5egu1dad de 5EL1hux
paa BTNu de Red hat section). La pgina man de named_selinux(8) describe que, por
defecto, haned no puede escribir a archivos de zona maestros y que, para permitir ese acceso, el
Booleano hanedW1tenastezohes debe ser puesto en l.
La informacin en las pginas del manual le ayudan a configurar los tipos de archivos correctos y los
Booleanos, ayudndolo a prevenir las negaciones de acceso por parte de SELinux.
7.3.4. Dominios Permisivos
Cuando SELinux se ejecuta en modo permisivo, SELinux no niega el acceso, sino que las negaciones
para las acciones se guardan como si fuera que corre en modo obediente. Previamente, no era
posible hacer permisivo un nico dominio (recuerde: los procesos corren en dominios). En ciertas
situaciones, esto llev a hacer el sistema permisivo para poder corregir los problemas.
Fedora ll introduce los dominios permisivos, donde un administrador puede configurar un nico
proceso (dominio) para que corra permisivo, en vez de hacer todo el sistema permisivo. Los chequeos
de SELinux se realizan igualmente para dominios permisivos; sin embargo, el kernel permite el
acceso e informa la negacin AVC para situaciones donde SELinux hubiera negado el acceso.
Los dominios permisivos estn tambin disponibles en Fedora 9 (con las ltimas actualizaciones
aplicadas).
En el Linux para Empresas de Red Hat 4 y 5, los Booleanos donnod1sabJetahs estn
disponibles para prevenir que una aplicacin transicione a un dominio confinado, y por lo tanto, el
proceso se ejecute en un dominio no confinado, tal como 1h1tct. Poniendo en l tales booleanos
pueden causar problemas serios. Por ejemplo, si el Booleano httpdd1sabJetahs se pone en l:
httpd corre en el dominio no confinado 1h1tct. Los archivos creados por los procesos en el
dominio 1h1tct puede no tener aplicadas las mismas reglas de etiquetados como los archivos
creados por el proceso corriendo en el dominio httpdt, permitiendo que los procesos puedan
potencialmente crear archivos mal etiquetados. Esto causa problemas ms adelante.
dominios confinados que pueden comunicarse con httpdt no pueden comunicarse con
1h1tct, posiblemente causan fallas adicionales.
Los Booleanos donand1sabJetahs fueron eliminados de Fedora 7, y no se pusieron
reemplazos. Los dominios permisivos pueden resolver esos problemas: se aplican las reglas de
transicin y los archivos se crean con las etiquetas correctas.
Los dominios permisivos se pueden usar para:
hacer que un nico proceso (dominio) corra permisivo para solucionar alguna cuestin, en vez de
poner todo el sistema en riesgo haciendo permisivo a todo el sistema.
creacin de polticas para nuevas aplicaciones. Previamente, era recomendado crear una poltica
mnima, y luego poner la mquina completa en modo permisivo, para que la aplicacin pudiera
CaptuIo 7. SoIucin a ProbIemas
64
funcionar, pero las negaciones de SELinux eran igualmente grabadas. aud1t2aJJoW podra
usarse luego para ayudar a escribir la poltica. Esto pone todo el sistema en riesgo. Con dominios
permisivos, slo el dominio en la nueva poltica puede marcarse como permisivo, sin poner en
riesgo todo el sistema.
7.3.4.l. Creando un Dominio Permisivo
Para hacer un dominio permisivo, ejecute el comando semanage perm1ss1ve -a do1n1o,
donde donno es el dominio que quiere hacer permisivo. Por ejemplo, ejecute el siguiente comando
como usuario root de Linux para hacer permisivo el dominio httpdt (el dominio en el que corre el
Servidor HTTP Apache):
7usr7sb1n7semanage perm1ss1ve -a httpdt
Para ver una lista de los dominios que hizo permisivos, corra el comando semoduJe -J grep
perm1ss1ve como usuario root de Linux. Por ejemplo:
# 7us7sb1h7senoduJe -J | gep pen1ss1ve
pen1ss1vehttpdt 1.u
Si ya no quiere que un dominio sea permisivo, corra el comando semanage perm1ss1ve -d
do1n1o como usuario root de Linux. Por ejemplo:
7usr7sb1n7semanage perm1ss1ve -d httpdt
7.3.4.2. Negaciones para Dominios Permisivos
El mensaje 5Y5CALL es diferente para dominios permisivos. El siguiente es un ejemplo de una
negacin de AVC (y la llamada a sistema asociada) desde el Servidor HTTP Apache:
type=AvC nsg=aud1t{122BB273.442.B}. avc. deh1ed { getatt }
fo p1d=2427 conn="httpd" path="7va7WWW7htnJ7ach1vo1"
dev=dn-u 1ho=2B4133 scohtext=uhcohf1hedu.systen.httpdt.su
tcohtext=uhcohf1hedu.obect.sanbashaet.su tcJass=f1Je

type=5Y5CALL nsg=aud1t{122BB273.442.B}. ach=4uuuuuu3 syscaJJ=19
success=ho ex1t=-13 au=b9a1e19B a1=bfc2921c a2=54dff4 a3=2uuB171 1tens=u
pp1d=2425 p1d=2427 au1d=5u2 u1d=4B g1d=4B eu1d=4B su1d=4B fsu1d=4B eg1d=4B
sg1d=4B fsg1d=4B tty={hohe} ses=4 conn="httpd" exe="7us7sb1h7httpd"
sub=uhcohf1hedu.systen.httpdt.su key={huJJ}
Por defecto, el dominio httpdt es no permisivo, y como tal, la accin es negada, y el mensaje
5Y5CALL contiene success=ho. El siguiente es un ejemplo de negacin AVC para la misma
situacin, excepto que el comando semanage perm1ss1ve -a httpdt se ejecut para hacer el
dominio httpdt permisivo:
type=AvC nsg=aud1t{122BB2925.714.13}. avc. deh1ed
{ ead } fo p1d=2512 conn="httpd" hane="ach1vo1" dev=dn-u
1ho=2B4133 scohtext=uhcohf1hedu.systen.httpdt.su
tcohtext=uhcohf1hedu.obect.sanbashaet.su tcJass=f1Je
Bsqueda y Revisin de Negaciones
65

type=5Y5CALL nsg=aud1t{122BB2925.714.13}. ach=4uuuuuu3 syscaJJ=5
success=yes ex1t=11 au=b92a1eB a1=Buuu a2=u a3=Buuu 1tens=u pp1d=2511
p1d=2512 au1d=5u2 u1d=4B g1d=4B eu1d=4B su1d=4B fsu1d=4B eg1d=4B
sg1d=4B fsg1d=4B tty={hohe} ses=4 conn="httpd" exe="7us7sb1h7httpd"
sub=uhcohf1hedu.systen.httpdt.su key={huJJ}
En este caso, aunque la negacin AVC fue grabada, el acceso no fue negado, como se muestra en el
mensaje 5Y5CALL success=yes.
Vaya al blog de Dan Walsh "Dom|n|os Perm|s|vos"
5
para ms informacin sobre dominios permisivos.
7.3.5. Bsqueda y Revisin de Negaciones
Esta seccin asume que los paquetes setroub/eshoot, setroub/eshoot-server, y aud|t estn instalados,
y que los demonios aud1td, sysJogd y setoubJeshootd estn ejecutndose. Vaya a
Secc|n 5.2, "Qu Arch|vo log se usa para informacin sobre cmo iniciar estos demonios. Hay
disponibles un nmero de herramientas para ver las negaciones de SELinux, tales como ausearch,
aureport y seaJert.
ausearch
El paquete aud|t provee ausearch. De la pgina de manual de ausearch(8): "ausearch es una
herramienta que puede consultar los registros del demonio audit basados en distintos criterios de
bsqueda"
6
. La herramienta ausearch accede a 7var7Jog7aud1t7aud1t.Jog, y como tal, sebe
ser ejecutada como usuario root de Linux:
Buscando Comando
todas las negaciones 7sb1n7ausearch -m avc
negaciones de hoy 7sb1n7ausearch -m avc -ts today
negaciones desde los ltimos l0
minutos
7sb1n7ausearch -m avc -ts recent
Para buscar negaciones de SELinux para un servicio particular, use la opcin -c nonbre-de-
conando, donde nonbre-de-conando "es el nombre del ejecutable"
7
, por ejemplo, httpd para el
Servidor HTTP Apache, y snbd para Samba:
7sb1n7ausearch -m avc -c httpd
7sb1n7ausearch -m avc -c smbd
Vaya a la pgina de manual de ausearch(8) para ms opciones de ausearch.
aureport
El paquete aud|t provee aureport. De la pgina de manual de aureport(8): "aureport es
una herramienta que produce informes resumen de los registros de auditora del sistema"
8
. La
herramienta aureport accede a 7var7Jog7aud1t7aud1t.Jog, y como tal, se debe ejecutar como
5
http://danwalsh.livejournal.com/24537.html
6
De la pgina man de ausearch(8), como se incluy en el paquete aud|t en Fedora ll.
7
De la pgina de manual de ausearch(8), como se incluy en el paquete aud|t en Fedora ll.
8
de la pgina de manual de aureport(8) como se incluy en el paquete aud|t en Fedora ll.
CaptuIo 7. SoIucin a ProbIemas
66
usuario root de Linux. Para ver una lista de las negaciones de SElinux y cun a menudo ocurren,
ejecute el comando aureport -a. El siguiente es un ejemplo de la salida en donde se incluyen dos
negaciones:
# 7sb1h7auepot -a
AvC Repot
========================================================
# date t1ne conn sub syscaJJ cJass pen1ss1oh ob eveht
========================================================
1. u57u172uu9 21.41.39 httpd uhcohf1hedu.systen.httpdt.su 195 f1Je
getatt systenu.obect.sanbashaet.su deh1ed 2
2. u57u372uu9 22.uu.25 vsftpd uhcohf1hedu.systen.ftpdt.su 5 f1Je ead
uhcohf1hedu.obect.c1fst.su deh1ed 4
Vaya a la pgina de manual de aureport(8) para ms opciones de aureport.
seaIert
El paquete setroub/eshoot-server provee seaJert, que lee los mensajes de negacin traducidos por
setroub/eshoot-server. A las negaciones se le asignan lDs, como se ve en 7var7Jog7messages. El
siguiente es un ejemplo de negacin en messages:
setoubJeshoot. 5EL1hux esta pev1h1ehdo aceca de Ja 1htehc1oh de
httpd {httpdt} "getatt" to 7va7WWW7htnJ7ach1vo1 {sanbashaet}.
Paa nehsaes 5EL1hux conpJetos, eecute seaJet -J B4eubu4d-
duad-4347-B317-22e74fcdu2u
En este ejemplo, el lD de negacin es B4eubu4d-duad-4347-B317-22e74fcdu2u. La
opcin -J toma un lD como argumento. Ejecutando el comando seaJert -J 84e0b04d-
d0ad-4347-8317-22e74f6cd020 le presenta un anlisis detallado de por qu SELinux neg el
acceso, y una posible solucin para permitir el acceso.
Si est corriendo el Sistema de Ventanas X, tenga los paquetes setroub/eshoot y setroub/eshoot-
server instalados, y los demonios setoubJeshootd y aud1td ejecutndose, una estrella amarilla y
una advertencia se muestran cuando un acceso es negado por SELinux. Con clic sobre la estrella se
lanza seaJert modo grfico y se muestra la negacin como HTML:
Mensajes Crudos de Auditora
67
Ejecute el comando seaJert -b para lanzar la GUl de seaJert.
Ejecute el comando seaJert -J \* para ver un anlisis detallado de todas las negaciones.
Como usuario root de Linux, ejecute el comando seaJert -a 7var7Jog7aud1t7aud1t.Jog -
h > aud1t.htmJ para crear una versin HTML del anlisis de seaJert, como si se viera en la
GUl de seaJert.
Vaya a la pgina man de sealert(8) para ms opciones de seaJert.
7.3.6. Mensajes Crudos de Auditora
Los mensajes crudos de auditora se guardan en 7var7Jog7aud1t7aud1t.Jog. El siguiente es
un ejemplo de negacin AVC (y su llamada a sistema asociado) que ocurro cuando el Servidor
HTTP Apache (corriendo en el dominio httpdt) intent acceder el 7var7WWW7htmJ7arch1vo1
(etiquetado con el tipo sanbashaet):
type=AvC nsg=aud1t{122B74u73.147.9}. avc. deh1ed { getatt }
fo p1d=245 conn="httpd" path="7va7WWW7htnJ7ach1vo1"
dev=dn-u 1ho=2B4133 scohtext=uhcohf1hedu.systen.httpdt.su
tcohtext=uhcohf1hedu.obect.sanbashaet.su tcJass=f1Je
type=5Y5CALL nsg=aud1t{122B74u73.147.9}. ach=4uuuuuu3 syscaJJ=19
success=ho ex1t=-13 au=b9Bdf19B a1=bfecB5dc a2=54dff4 a3=2uuB171 1tens=u
pp1d=243 p1d=245 au1d=5u2 u1d=4B g1d=4B eu1d=4B su1d=4B fsu1d=4B eg1d=4B
sg1d=4B fsg1d=4B tty={hohe} ses= conn="httpd" exe="7us7sb1h7httpd"
sub=uhcohf1hedu.systen.httpdt.su key={huJJ}
CaptuIo 7. SoIucin a ProbIemas
68
{ ge!a!!r }
El item entre llaves indica el permiso que fue negado. getatt indica el proceso fuente que
intent leer la informacin de estado del archivo destino. Esto ocurre antes de leer archivos. Esta
accin es negada dado que el archivo est siendo accedido con la etiqueta equivocada. Los
permisos vistos comnmente incluyen a getatt, ead y W1te.
comm="h!!pd"
El ejecutable que lanz el proceso. La direccin completa del ejecutable se encuentra en la
seccin exe= del mensaje de la llamada al sistema (5Y5CALL), que es en este caso exe="7
us7sb1h7httpd".
path="varwwwh!nJarchvo1"
La direccin al objeto (destino) al que quiere acceder el proceso.
scontext="unconfnedu.sys!enr.h!!pd!.s0"
El contexto de SELinux del proceso que intent la accin denegada. En este caso, es el contexto
SELinux del Servidor HTTP Apache, que core en el dominio httpdt.
tcontext="unconfnedu.obec!r.sanbashare!.s0"
El contexto de SELinux del objeto (destino) al que intent acceder el proceso. En este caso, es el
contexto SELinux del arch1vo1. Nota: el tipo sanbashaet no es accesible para procesos
que corren el dominio httpdt.
En ciertas cituacines, el tcohtext puede coincidir con scohtext, por ejemplo, cuando
un proceso intenta ejecutar un servicio del sistema que cambiar las caractersticas de ese
proceso en ejecucin, tales como el lD del usuario. Tambin el tcohtext puede coincidir con
el scohtext cuando un proceso intenta usar ms recursos (como la memoria) ms all de los
lmites normales permitidos, lo que resulta en un chequeo de seguridad para ver si el proceso
tiene permitido romper esos lmites.
Desde el mensaje de llamado al sistema (5Y5CALL) nos interesan dos tems:
success=no: indica si la negacin (AVC) fue aplicada o no. success=ho indica que la llamada al
sistema no fue exitosa(SELinux neg el acceso). success=yes indica que la llamada al sistema
fue exitosa - esto se puede ver en dominios permisivos o en dominios no confinados, tales como
1h1tct y keheJt.
exe="usrsbnh!!pd": la direccin completa al ejecutable que inici el proceso, que es en
este caso exe="7us7sb1h7httpd".
Un tipo de archivo incorrecto es una causa comn de que SELinux niegue el acceso. Para comenzar
a resolver el problema, compare el contexto fuente (scohtext) con el contexto destino (tcohtext).
Debera el proceso (scohtext) acceder a un objeto (tcohtext)? Por ejemplo, el Servidor HTTP
Apache (httpdt) slo debera acceder tipos especificados en la pgina man httpd_selinux(8),
tales como httpdsyscohtehtt, pubJ1ccohtehtt, y as sucesivamente, a menos que se
configure de otra forma.
7.3.7. Mensajes seaIert
Las negaciones tienen lDs asignados, como se ve en 7var7Jog7messages. El siguiente es
un ejemplo de negacin AVC (guardado en messages) que ocurri cuando el Servidor HTTP
Apache (corriendo en el dominio httpdt domain) intent acceder el 7var7WWW7htmJ7arch1vo1
(etiquetado con el tipo sanbashaet):
Mensajes sealert
69
hos!nane setoubJeshoot. 5EL1hux est pev1h1ehdo aceca de Ja 1htehc1oh de
httpd {httpdt} de "getatt" sobe 7va7WWW7htnJ7ach1vo1 {sanbashaet}.
Paa Jos nehsaes conpJetos de 5EL1hux, eecute seaJet -J B4eubu4d-
duad-4347-B317-22e74fcdu2u
Como se sugiri, ejecute el comando seaJert -J 84e0b04d-d0ad-4347-8317-22e74f6cd020
para ver el mensaje completo. Este comando slo funciona en la mquina local, y presenta la misma
informacin que la interfase grfica de seaJert:
$ seaJet -J B4eubu4d-duad-4347-B317-22e74fcdu2u
5unnay.
5EL1hux 1s peveht1hg httpd {httpdt} "getatt" to 7va7WWW7htnJ7ach1vo
{sanbashaet}.
ueta1Jed uesc1pt1oh.
5EL1hux deh1ed access to 7va7WWW7htnJ7ach1vo1 equested by httpd.
7va7WWW7htnJ7f1Je1 has a cohtext used fo sha1hg by d1ffeeht pogan. Tf
you
WouJd J1ke to shae 7va7WWW7htnJ7f1Je1 fon httpd aJso, you heed to chahge
1ts
f1Je cohtext to pubJ1ccohtehtt. Tf you d1d hot 1htehd to th1s access,
th1s
couJd s1ghaJ a 1htus1oh attenpt.
AJJoW1hg Access.
You cah aJte the f1Je cohtext by execut1hg chcoh -t pubJ1ccohtehtt
'7va7WWW7htnJ7f1Je1'
F1x Connahd.
chcoh -t pubJ1ccohtehtt '7va7WWW7htnJ7ach1vo1'
Add1t1ohaJ Thfonat1oh.
5ouce Cohtext uhcohf1hedu.systen.httpdt.su
Taget Cohtext uhcohf1hedu.obect.sanbashaet.su
Taget ubects 7va7WWW7htnJ7ach1vo1 | f1Je
5ouce httpd
5ouce Path 7us7sb1h7httpd
Pot <UhkhoWh>
host hos!nane
5ouce RPh Packages httpd-2.2.1u-2
Taget RPh Packages
PoJ1cy RPh seJ1hux-poJ1cy-3.5.13-11.fc11
5eJ1hux EhabJed Tue
PoJ1cy Type tageted
hL5 EhabJed Tue
CaptuIo 7. SoIucin a ProbIemas
70
Ehfoc1hg hode Ehfoc1hg
PJug1h Nane pubJ1ccohteht
host Nane hos!nane
PJatfon Inux hos!nane 2.6.27.4-6B.fc11.6B6 #1 Shl
7hu 0c!
3u uu.49.42 EuT 2uuB 1B 1B
AJet Couht 4
F1st 5eeh Wed Nov 5 1B.53.u5 2uuB
Last 5eeh Wed Nov 5 u1.22.5B 2uuB
LocaJ Tu B4eubu4d-duad-4347-B317-22e74fcdu2u
L1he Nunbes
RaW Aud1t hessages
hode=hos!nane type=AvC nsg=aud1t{1225B1217B.7BB.1u1}. avc. deh1ed
{ getatt } fo p1d=2441 conn="httpd" path="7va7WWW7htnJ7ach1vo1"
dev=dn-u 1ho=2B491 scohtext=uhcohf1hedu.systen.httpdt.su
tcohtext=uhcohf1hedu.obect.sanbashaet.su tcJass=f1Je
hode=hos!nane type=5Y5CALL nsg=aud1t{1225B1217B.7BB.1u1}. ach=4uuuuuu3
syscaJJ=19 success=ho ex1t=-13 au=bBe971BB a1=bfB7aaac a2=54dff4
a3=2uuB171 1tens=u pp1d=2439 p1d=2441 au1d=5u2 u1d=4B g1d=4B eu1d=4B
su1d=4B fsu1d=4B eg1d=4B sg1d=4B fsg1d=4B tty={hohe} ses=3 conn="httpd"
exe="7us7sb1h7httpd" sub=uhcohf1hedu.systen.httpdt.su key={huJJ}
Resumen
Un breve resumen de la accin negada. Esto es lo mismo que la negacin en 7var7Jog7
messages. En este ejemplo, al proceso httpd se le neg el acceso al (arch1vo1), que est
etiquetado con el tipo sanbashaet.
Descripcin Detallada
Una descripcin ms detallada. En este ejemplo arch1vo1 est etiquetado con el tipo
sanbashaet. Este tipo se usa para archivos y directorios que quiere exportar va Samba. La
descripcin sugiere cambiar el tipo a un tipo que pueda ser accedido por Samba y por el Servidor
HTTP Apache, si tal acceso es deseado.
Permitiendo Acceso
Una sugerencia sobre cmo permitir el acceso. Esto puede hacerse reetiquetando archivos,
poniendo en l un Booleano, o creando un mdulo de poltica local. En este caso, la sugerencia es
etiquetar el archivo con un tipo accesible por el Servidor HTTP Apache y por Samba.
Comando para Corregir
Un comando sugerido para permitir el acceso y resolver la negacin. En este ejemplo, se d el
comando para cambiar el tipo del arch1vo1 a pubJ1ccohtehtt, que es accesible por el
Servidor HTTP Apache y por Samba.
lnformacin Adicional
lnformacin que es til en los informes de errores, como el nombre de paquete de poltica y la
versin (seJ1hux-poJ1cy-3.5.13-11.fc11), pero que no puede ser de ayuda para resolver
por qu ocurri la negacin.
Permitiendo el Acceso: audit2allow
7l
Mensajes Crudos de Auditora
Los mensajes crudos de auditora de 7var7Jog7aud1t7aud1t.Jog que son asociados con la
negacin. Vaya a Secc|n 7.3.6, "Mensajes Crudos de Aud|toria para informacin acerca de cada
tem en la negacin AVC.
7.3.8. Permitiendo eI Acceso: audit2aIIow
No use el ejemplo en esta seccin en produccin. Se usa slo para mostrar el uso de aud1t2aJJoW.
De la pgina de manual de audit2allow(l): "aud1t2aJJoW - genera reglas para habilitar de la
poltica de SELinux a partir de operaciones negadas"
9
. Despus de analizar las negaciones como en
Secc|n 7.3.7, "Mensajes sea/ert, y si ningn cambio de etiqueta o de Booleano permiti el acceso,
use aud1t2aJJoW para crear un mdulo de poltica local. Despus de que el acceso es negado
por SELinux, ejecutando el comando aud1t2aJJoW presenta reglas de Obligacin de Tipo que
permitiran el acceso previamente negado.
El siguiente ejemplo muestra el uso de aud1t2aJJoW para crear un mdulo de poltica:
l. Una negacin y la llamada al sistema asociado se graban en 7var7Jog7aud1t7aud1t.Jog:
type=AvC nsg=aud1t{12227u35B.B4B.23B}. avc. deh1ed
{ W1te } fo p1d=13349 conn="cetWatch" hane="cache"
dev=dn-u 1ho=21B171 scohtext=systenu.systen.cetWatcht.su
tcohtext=systenu.obect.vat.su tcJass=d1
type=5Y5CALL nsg=aud1t{12227u35B.B4B.23B}. ach=4uuuuuu3 syscaJJ=39
success=ho ex1t=-13 au=39a2bf a1=3ff a2=3au354 a3=947u3cB 1tens=u
pp1d=13344 p1d=13349 au1d=429497295 u1d=u g1d=u eu1d=u su1d=u fsu1d=u
eg1d=u sg1d=u fsg1d=u tty={hohe} ses=429497295 conn="cetWatch" exe="7
us7b1h7cetWatch" sub=systenu.systen.cetWatcht.su key={huJJ}
En este ejemplo, a certwatch (conn="cetWatch") se le neg el acceso
de escritura ({ W1te }) a un direcotiro etiquetado con el tipo vat
(tcohtext=systenu.obect.vat.su). Analice la negacin como en Secc|n 7.3.7,
"Mensajes sea/ert. Si no hay cambios de etiquetas o Boleanos que permitan el acceso, use
aud1t2aJJoW para crear un mdulo de poltica local.
2. Con una negacin grabada, tal como la negacin de cetWatch en el paso l, corra el comando
aud1t2aJJoW -W -a para producir una descripcin legible al humano sobre por qu el acceso
fue negado. La opcin -a hace que se lean todos los registros de autidora. La opcin -W produce
una descripcin legible al humano. La herramienta aud1t2aJJoW accede a 7var7Jog7aud1t7
aud1t.Jog, y como tal, debe ser ejecutada como usuario root de Linux:
# aud1t2aJJoW -W -a
type=AvC nsg=aud1t{12227u35B.B4B.23B}. avc. deh1ed
{ W1te } fo p1d=13349 conn="cetWatch" hane="cache"
dev=dn-u 1ho=21B171 scohtext=systenu.systen.cetWatcht.su
tcohtext=systenu.obect.vat.su tcJass=d1
Was caused by.
h1ss1hg type ehfoceneht {TE} aJJoW uJe.
9
De la pgina man de audit2allow(l), tal como fue incluida en el paquete po/|cycoreut|/s en Fedora ll.
CaptuIo 7. SoIucin a ProbIemas
72
You cah use aud1t2aJJoW to geheate a JoadabJe noduJe to aJJoW
th1s access.
Como se muestra, el acceso fue negado debido a que falta una regla de Obligacin de Tipo.
3. Ejecute el comando aud1t2aJJoW -a para ver la regla de Obligacin de Tipo que permite el
acceso negado:
# aud1t2aJJoW -a
#============= cetWatcht ==============
aJJoW cetWatcht vat.d1 W1te,
Importante
La falta de reglas de Ejecucin de Tipos son usualmente causados por errores en
la poltica de SELinux, y deben ser informadas en el Bugz|//a de Ped Hat
l0
. Para
Fedora, crear informes sobre el producto Fedoa, y seleccione el componente
seJ1hux-poJ1cy. lncluya la salida de los comandos aud1t2aJJoW -W -a y
aud1t2aJJoW -a en el informe del error.
4. Para usar la regla mostrada por aud1t2aJJoW -a, ejecute el comando aud1t2aJJoW -a -M
ycertwatch como usuario root de Linux. La opcin -h crea un archivo de Obligacin de Tipo
(.te) con el nombre especificado en -h, en su directorio actual de trabajo:
# aud1t2aJJoW -a -h nycetWatch
******************** ThPuRTANT ***********************
To nake th1s poJ1cy package act1ve, execute.
senoduJe -1 nycetWatch.pp
# Js
nycetWatch.pp nycetWatch.te
Tambin, aud1t2aJJoW compila la regla de Obediencia de Tipo en un paquete de poltica (.pp).
Para instalar el mdulo, ejecute el comando 7usr7sb1n7semoduJe -1 ycertwatch.
como usuario root de Linux.
Importante
Los mdulos creados con aud1t2aJJoW pueden permitir ms acceso que el
requerido. Se recomienda que la poltica creada con aud1t2aJJoW sea enviada a
una lista de SELinux, tal como ledora-se/|nux-/|st
ll
, para su revisin. Si cree que hay
un error en la poltica, informe un error en Bugz|//a de Ped Hat
l2
.
Permitiendo el Acceso: audit2allow
73
Si tiene mltiples negaciones de mltiples procesos, pero solo quiere crear una poltica personalizada
para un proceso nico, use el comando grep para una bsqueda ms refinada de aud1t2aJJoW.
El siguiente ejemplo muestra el uso de grep para slo enviar negaciones de certWatch a
aud1t2aJJoW:
# gep cetWatch 7va7Jog7aud1t7aud1t.Jog | aud1t2aJJoW -h nycetWatch2
******************** ThPuRTANT ***********************
To nake th1s poJ1cy package act1ve, execute.
# 7us7sb1h7senoduJe -1 nycetWatch2.pp
Vaya a la entrada blog "Uso de aud|t2a//ow para constru|r mdu/os de po/it|cas. Pev|sado."
l3
de Dan
Walsh para informacin adicional sobre el uso de aud1t2aJJoW para construir mdulos de polticas.
l3
http://danwalsh.livejournal.com/24750.html
74

75
Informacin AdicionaI
8.l. Contributors
Geert Warr|nk
l
(translation - Dutch)
Dom|ngo Becker
2
(translation - Spanish)
Dan|e/ Cabrera
3
(translation - Spanish)
8.2. Other Resources
La Agencia de Seguridad NacionaI (NSA)
De la pgina Contr|buyentes de SFl|nux
4
:
los |nvest|gadores de/ /aborator|o de lnvest|gac|n en Segur|dad de /a lnlormac|n Nac|ona/ {NlAPl)
de /a NSA d|searon e |mp/ementaron contro/es de acceso ob/|gator|os l/ex|b/es en /os susbs|stemas
pr|nc|pa/es de/ kerne/ de l|nux e |mp/ementaron nuevos componentes de/ s|stema operat|vo prov|stos
por /a arqu|tectura l/ask, //amado serv|dor de segur|dad y cach vector de acceso. los |nvest|gadores
de /a NSA red|searon e/ SFl|nux basado en lSM para |nc/uir/o en l|nux 2.6. NSA tamb|n /|der e/
desarro//o de contro/es s|m|/ares para e/ S|stema de Ventanas X {XACF/XSFl|nux) y para Xen {XSM/
l/ask).
El sitio web de SELinux principal: http.//www.nsa.gov/research/se/|nux/|ndex.shtm/.
Documentacin de SELinux: http.//www.nsa.gov/research/se/|nux/docs.shtm/.
Trasfondo de SELinux: http.//www.nsa.gov/research/se/|nux/background.shtm/.
TecnoIoga de Tresys
Tresys Techno/ogy
5
son los desarrolladores de:
Herram|entas y b|b/|otecas en e/ espac|o de/ usuar|o para SFl|nux
6
.
Po/it|ca de Pelerenc|a de SFl|nux
7
.
Noticias de SELinux
Noticias: http.//se/|nuxnews.org/wp/.
Planeta SELinux (blogs): http.//se/|nuxnews.org/p/anet/.
Wiki deI Proyecto SELinux
Pgina principal: http.//se/|nuxproject.org/page/Ma|n_Page.
Recursos del usuario, incluyendo en laces a documentacin, listas de correo, sitios web y
herramientas: http.//se/|nuxproject.org/page/User_Pesources.
4
http://www.nsa.gov/research/selinux/contrib.shtml
5
http://www.tresys.com/
CaptuIo 8. Informacin AdicionaI
76
Linux para Empresas de Red Hat
La Guia de Desp/|egue de/ l|nux para Fmpresas de Ped Hat
8
contiene una seccin de Pelerenc|as
9
SELinux, que tiene enlaces a tutoriales de SELinux, informacin general y la tecnologa detrs de
SELinux.
La Guia de SFl|nux de/ l|nux para Fmpresas de Ped Hat 4
l0
.
Fedora
Pgina principal: http.//ledoraproject.org/w|k|/SFl|nux.
Resolucin de problemas: http.//ledoraproject.org/w|k|/SFl|nux/Troub/eshoot|ng.
FAQ de SELinux para Fedora Core 5: http.//docs.ledoraproject.org/se/|nux-laq-lc5/.
Las Preguntas Frecuentes No OficiaIes de SELinux
http.//www.crypt.gen.nz/se/|nux/laq.htm/
IRC
En lreenode
ll
:
#selinux
#fedora-selinux
ll
http://freenode.net/
77
Apndice A. Revision History
Revisin l.3 Tue May l2 2009 Scott Radvan sradvanredha!.con
Revisin para Fedora ll
Revisin l.2 Mon Jan l9 2009 Murray McAllister nncaJJsredha!.con
Actualizacin de los enlaces a sitios web de la NSA
Revisin l.l Sat Dec 6 2008 Murray McAllister nncaJJsredha!.con
Resolucin del Bugz|//a de Ped Hat #472986, "httpd no escr|be en /etc/httpd//ogs/"
l
Se agreg la seccin nueva, "6.6. Booleanos para que los Usuarios Ejecuten Aplicaciones"
Revisiones menores del texto
Revisin l.0 Tue Nov 25 2008 Murray McAllister nncaJJsredha!.con
El contenido inicial se guarda en http.//docs.ledoraproject.org/
78

You might also like