Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SELinux pres enta un nuevo paradigma de seguridad y nuevo grupo de prcticas y herramientas para
los adminis tradores y algunos de los usuarios finales. Las herramientas y tc nic as que se disc uten en
este captulo se enfoc an en operac iones es tndar que us uarios finales, administradores y analis tan
realizan.
touc h bar fo o
ls - Z ba r f o o
-r w-r w -r- - a use r
-r w-r w -r- - a use r
auser
auser
bar
foo
Si utiliza el c omando cp sin ningn argumento de lnea de comando adicional se crear una copia del
archivo en la nueva ubic ac in utilizando el tipo predeterminado del proc es o de cracin y el directorio
objetivo. En este caso, debido a que no aplica ninguna regla es pec ific a a cp y /tmp, el nuevo archivo
tiene el tipo del directorio padre:
757
cp bar /tmp
ls - Z /t m p / b a r
-r w-r w-r -- a user
auser
/t m p/ bar
/t m p/f o o
Comportamiento
mv
The file retains its original label. This may caus e problems,
confus ion, or minor insecurity. For example, the tmpwatch
program running in the sbin_t domain might not be allowed
to delete an aged file in the /tmp directory because of the file's
type.
cp
cp -p
cp -Z <user:role:type>
Hace una copia del archivo con las etiquetas espec ific adas. La
opcin -Z es sinnimo de --context.
758
USER
PID %CPU % M E M
VSZ
ST AT ST ART
620 ?
Ss
15:09
r o ot
0.0
0.1
ro o t
0.0
0. 0
0 ?
15:09
ro o t
0.0
0. 0
0 ?
SN
15:09
20 32
RSS TT Y
0.0
0.6
69 08
32 32 ?
16:47
0.0
0.1
25 40
588 ?
16:47
0.0
1.4
3 36 12 69 88 ?
Sl
16: 47
0.1
1.4
1 65 28 73 60 ?
Ss
16: 47
0.2
2.9
7 95 44 1 48 08 ?
Ss
16: 47
Verificar un ID de Usuario
You can use the -Z option with the id command to determine a user's security context. Note that with
this command you cannot combine -Z with other options.
Obs erve que no puede utilizar la opcin -Z con el comando id para inspecc ionar el contexto de
seguridad de un usario diferente. Es decir que usted s lamente puede visualizar el contexto de
seguridad del us uario conectado actualmente:
[user@localhost ~]$ id
ui d= 5 01( user) gi d= 5 01( user) gro u ps= 5 01( user) co ntex t= user_ u:s yste m_ r:u nc onf ine d_ t
[user@localhost ~]$ id root
ui d = 0(r o o t) g i d= 0 (r o ot) gr o u ps = 0(r o ot), 1 (b i n), 2( dae m o n), 3(s ys ),4 (a d m), 6( di sk ), 10 ( wheel )
[user @l oca lh os t ~]$ i d - Z r o o t
i d: ca n n o t d is p la y c o n te x t when selin u x n ot ena ble d or when displaying the id
o f a d i ff ere n t u se r
Verifica el ID de un Archivo
Puede utilizar la opcin -Z con el comando l s para agrupar informacin con formato comn largo.
Puede visualizar informacin sobre el modo, usuario, grupo, contexto de seguridad y nombre del
archivo.
cd /etc
ls -Z h* -d
d r wx r- x r- x r o o t r o o t
-rw-r--r-root root
-rw-r--r-root root
s y ste m _ u : o b j ec t _r :e tc _ t
system_u: object_r:etc_t
user_u: object_r:etc_t
ha l
host.conf
hosts
759
-rw-r--r--rw-r--r--rw-r--r-dr wx r- xr- x
drwxr- xr-x
drwxr- xr-x
drwxr- xr-x
root
root
root
r o ot
root
root
root
root
root
root
r o ot
root
root
root
Tip
Gran parte del control de permis os de SELinux en la poltica objetivo es el Tipo de
Refuerzo (TE). Por lo tanto, generalmente puede ignorar la informacin de la
etiqueta de seguridad s obre el usuario y el rol y enfoc ars e en slo cambiar el tipo.
Normalmente no nec es ita cons iderar la configurac in del rol y del us uario en los
archivos.
Nota
If relabeling affects the label on a daemon's exec utable, you should restart the
daemon to be sure it is running in the correct domain. For example, i f /usr/sbin /
mysqld has the wrong security label, and you address this by using a relabeling
operation such as restorecon, you must restart mysqld after the relabeling
operation. Setting the exec utable file to have the correct type (mysqld_exec_t)
ensures that it transitions to the proper domain when started.
Utilice el c omando chcon para cambiar un archivo al tipo c orrec to. Nec es ita s aber el tipo c orrecto
que quiere aplicar para utilizar es te comando. Los directorios y archivos en el s iguiente ejemplo se
enc uentran etiquetados con el tipo predeterminado definido por los objetos del s istema de archivos
creados en /home :
cd ~
ls - Z d p u b li c _ h t m l /
dr wxr wx r- x ause r auser
ls -Z web_files/
-r w-r w-r-- a user
-r w-r w-r-- a user
-r w-r w-r-- a user
ause r
ause r
ause r
1. ht ml
2. ht ml
3. ht ml
760
auser
auser
auser
auser
auser
auser
4.h t ml
5.h t ml
in dex. ht ml
1.h t ml
2.h t ml
3.h t ml
4.h t ml
5.h t ml
in dex. ht ml
Para que estos archivos s ean vis ibles desde una carpeta es pec ial HTML de usuarios pblicos, ellos
nec es itan tener un tipo httpd que tenga permis o de leer, aumiendo que el Servidor HTTP Apache se
enc uentra c onfigurado para UserDir y que el valor boleano httpd_enable_homedirs est activado.
1.h t ml
2.h t ml
3.h t ml
4.h t ml
5.h t ml
in dex. ht ml
p u blic _ h t ml /
Tip
Si el archivo no tiene etiqueta as como un archivo creado mientras que SELinux
estaba des habilitado en el kernel, nec es ita darle una etiqueta completa con chcon
system_u:object_r:shlib_t foo.so. De otra manera, recibir un error sobre
aplic ac in de un contexto parcial a un archivo sin etiqueta.
Use the restorecon c ommand to restore files to the default values acc ording to the policy. There
are two other methods for performing this operation that work on the entire file system: fixfiles or
a policy relabeling operation. Each of thes e methods requires s uperus er privileges. Cautions against
both of thes e methods appear in Seccin 45.2. 2, Creacin de Etiquetas Nuev as para Sistemas de
Archivos.
The following example demons trates restoring the default user home directory context to a set of files
that have different types. The first two sets of files have different types, and are being moved into a
directory for archiving. Their contexts are different from each other, and are incorrect for a standard
user's home directory:
ls - Z /t m p /
-rw-rw-r-- auser auser
-rw-rw-r-- auser auser
user_u:object_r:tmp_t
user_u:object_r:tmp_t
/tmp/file1
/tmp/file2
761
user_u:object_r:tmp_t
/tmp/file3
mv /t m p / { 1, 2 , 3 } ar c h i ve s/
mv publ ic_ ht m l/ * arc h i v es /
ls -Z archives/
-rw-r w-r-- a user a user user _u: object _r:t m p_t
file1
-rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t file1.html
-rw-r w-r-- a user a user user _u: object _r:t m p_t
file2
-rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t file2.html
-r w-r w- r- - auser auser user _ u: o b ject _r: t m p _t
file 3
-r w-r w- r- - auser auser use r _ u: o b ject _r : ht t p d _ user _ c o nte n t _t
file3.html
-r w-r w- r- - auser auser use r _ u: o b ject _r : ht t p d _ user _ c o nte n t _t
file4.html
-r w-r w- r- - auser auser use r _ u: o b ject _r : ht t p d _ user _ c o nte n t _t
file5.html
-r w-r w- r- - auser auser use r _ u: o b ject _r : ht t p d _ user _ c o nte n t _t
in dex. ht ml
The archives/ directory already has the default type because it was created in the us er's home
directory:
ls - Z d ar c h i ve s/
dr wxr wxr- x auser
auser
arc h i v es /
Utilizando el comando restor econ para darle una nueva etiqueta a los archivos utiliza los contextos
de los archivos predeterminados establec idos por la poltica as que estos archivos s e les da la
etiqueta predeterminada para el directorio actual.
/sbin/restorecon -R
ls -Z archives/
-r w-r w- r- - auser
-r w-r w- r- - auser
-r w-r w- r- - auser
-r w-r w- r- - auser
-r w-r w- r- - auser
-r w-r w- r- - auser
-r w-r w- r- - auser
-r w-r w- r- - auser
-r w-r w- r- - auser
arc h i v es /
auser
auser
auser
auser
auser
auser
auser
auser
auser
file1
file1.html
file2
file2.html
file3
file3.html
file4.html
file5.html
in dex. ht ml
ls - Z p u b l ic _ h t m l / we b _ fi le s/
p u bl ic _ ht m l /:
-r w- r w-r -- a u ser
a us er
... h t t p d _ u ser _ c o n te nt _ t
1. h t m l
762
a u ser
a u ser
a u ser
a u ser
a u ser
a us er
a us er
a us er
a us er
a us er
... h t t p d _ u ser _ c o n te nt _ t 2. h t m l
... h t t p d _ u ser _ c o n te nt _ t 3. h t m l
... h t t p d _ u ser _ c o n te nt _ t 4. h t m l
... h t t p d _ u ser _ c o n te nt _ t 5. h t m l
... h t t p d _ u ser _ c o n te nt _ t i n dex. ht ml
a user
a user
a user
a user
a user
a user
ause r
ause r
ause r
ause r
ause r
ause r
1. ht m l
2. ht m l
3. ht m l
4. ht m l
5. ht m l
i nde x. ht m l
El s iguiente c omando crea el fichero reteniendo todos los contextos de seguridad de SELinux:
ls -Z all_web.star
-r w-r w -r -- a user au ser
all_web.star
Ahora puede copiar el fichero a un directorio diferente. En este ejemplo, el fichero es copiado a /
tmp. Si no hay una poltica espec ific a para tomar un tipo temporal derivativo, el comportamiento
predeterminado es adquirir el tipo tmp_t.
cp al l _ we b.sta r /t m p / cd /t m p /
ls -Z all_web.star
-r w- r w - r- - a u se r a us er
u ser _ u : o b j ec t _r :t m p _ t a ll _ we b .s ta r
Ahora puede expandir los ficheros utilizando star y restablec e los atributos extendidos :
auser
auser
auser
auser
auser
auser
auser
auser
auser
auser
auser
auser
1 . ht m l
2 . ht m l
3 . ht m l
4 . ht m l
5 . ht m l
i n de x . ht m l
1.h t ml
2.h t ml
3.h t ml
4.h t ml
5.h t ml
\ in de x.h t ml
763
Atencin
Si utiliza una ruta absoluta c uando crea un fichero utilizando star, el fichero se
expande en esa misma ruta. Por ejemplo, un fichero hec ho son es te c omando
restablec e los archivos a /var/log/httpd/:
enabled
/selinux
enf orci n g
enf orci n g
21
tar get e d
La opcin -v incluye informacin sobre los contextos de seguridad de una serie de archivos que se
enc uentran es pec if ic ados en /etc/sestatus.conf:
[r o ot @l o cal h o st ~ ] # sest at us
SE L in ux status:
SELinuxfs mount:
Cur ren t m o de:
Mode from config file:
Po lic y ve rsi on :
Policy fro m co nfig fil e:
P r oc es s c o n te x ts :
Cur ren t c o nte xt :
Init context:
/sb i n/ m i nge tt y
-v
enabled
/selinux
enf orci n g
enf orci n g
21
tar get e d
764
/ usr /s b i n /ss h d
s yst e m _ u : s ys te m _ r : u nc o n fi n e d _ t: s 0- s 0: c 0.c 1 0 2 3
File contexts:
Co n t r ol li n g t er m :
/etc / pass wd
/etc/shad o w
/b i n/ ba s h
/ bi n /l o g i n
/b i n/s h
/s b i n /a ge tt y
/sbi n/init
/s bi n/ m i n get t y
/ usr /s b i n /ss h d
/li b/li bc.s o. 6
/lib/l d-li nux.so. 2
use r _ u: o b jec t _r : de v pt s _t
sys te m _ u : o bjec t _r :etc _ t
system _u :o bject_ r:sha do w_t
sys te m _ u : o bjec t _r :s hel l _e xec _ t
s yst e m _ u : o b je ct _ r: l o g i n _e x ec _t
sys te m _ u: o b ject _r : bi n _ t -> s ys te m _ u: o b ject _r :s hel l _e xec _t
s ys te m _ u : o b j ec t _ r: g et t y _e x ec _ t
system _u: object_r:i nit _e xec_t
sys te m _ u: o b ject _r : get t y _e xec _t
s yst e m _ u : o b je ct _ r: ss h d _ e xec _ t
sy ste m _ u : o b j ect _ r: li b _ t - > s ys te m _ u : o b jec t _r : li b _ t
sys te m _ u: o b ject _r :l i b _t - > s yst e m _ u: o bj ect _r :l d _s o _t
La -b presenta el estado actual de los valores boleanos. Puede utilizar esto en combinac in con grep
u otras herramientas para determinar el estado de valores boleanos en particular:
Cre acin de Etique tas Nue vas para un Sis te ma de Archivos Utilizando init
El mtodo rec omendado para crear una etiqueta nueva para un sistemas de arc hivos es reinc iando la
mquina. Esto permite que el proc es o init realice la creac in de una nueva etiqueta asegurndose
de que las aplic ac iones tienen las etiquetas c orrectas c uando s e inician y de que se inician en el
orden correcto. Si crea una nueva etiqueta para un sistema de archivos si reiniciarlo, puede que
algunos de los proc es os c ontinuen ejec utndos e con un contexto inc orrecto. Puede llegar a ser dificil
as egurars e manualmente de que todos los demonios son reinic iados y ejec utados en el contexto
correcto.
Utilice el siguiente proc edimiento para cambiar la etiqueta de un sistema de archivos utilizando este
mtodo.
touch /.autorelabel
reb o ot
765
Cre acn de Etique tas Nuevas para un Sis te ma de Archivos utilizan do fixfiles
Es posible crear una etiqueta nueva para un sistema de archivos utilizando el comando fixfiles o
con base en la base de datos RPM:
Utilice el s iguiente c omando para crear una etiqueta nueva para un sis temas de archivos utilizando
slamente el c omando fixfiles:
fixfiles relabel
Utilice el s iguiente c omando para crear etiquetas nuevas para un sistema de archivos con base en la
base de datos RPM:
Atencin
El ejec utar fixfiles en el sistema de archivos completo sin reiniciar puede hac er
inestable el s is tema.
Si la operac in de creac in de una nueva etiqueta aplica una nueva poltica que es
diferente de la poltica que se enc ontraba c uando el sistema se reinici, los proc es os
existentes pueden es tar ejec utndos e en dominios incorrectos e ins eguros. Por
ejemplo, un proc es o puede estar en un dominio que no es una trans ic in permitida
para ese proceso en la nueva poltica, dados los permis os ines perados en slo ese
proc es o.
Adems una de las opc iones para fixfiles relabel pide aprobac in para
vaciar /tm p/ ya que no es posible crear una etiqueta nueva de manera confiable
para /tm p/. Debido a que fixfiles se ejecuta como root, se borran los archivos
temporales de los cuales dependen las aplic ac iones. Esto puede hac er el s istema
inestable o que s e c omporte de una manera ines perada.
766
Atencin
Seccin 45.2. 9, Especificacin del Contexto de Seguridad del Sistema de Archivos
Entero explains how to mount a directory so that httpd can exec ute scripts. If you
do this for user home directories, it gives the Apac he HTTP Server increas ed access
to thos e directories. Remember that a mountpoint label applies to the entire mounted
file system.
Las vers iones futuras de la poltica de SELinux abordan la func ionalidad de NFS.
767
El c omando sestatus pres enta el modo actual y el modo del archivo de configurac in referenc iado
durante el arranque:
sestatus | gre p -i mo de
Curre nt m ode:
perm issi ve
Mode from config file: per missi ve
Obs erve que el cambio del refuerzo durante tiempo de ejec uc in no afec ta la configurac in de tiempo
de arranque:
setenf orce 1
sestatus | gre p -i mo de
Cur ren t m o de:
enf orci n g
Mode from config file: per missi ve
Tambin puede desac tivar el modo de refuerzo para un slo demonio. Por ejemplo, si es t tratando
de resolver problemas del demonio named y SELinux entonc es puede apagar el refuerzo para slo
ese demonio.
Utilice el comando getsebool para obtener el estado actual del valor booleano:
Utilice el s iguiente c omando para des activar el modo de refuerzo para este demonio:
Nota
Esto configura el valor del tiempo de ejecuc in s lamente. Utilice la opcin -P para
hac er pers istentes lo cambios a travs de los reinic ios.
Any *_dis able_trans booleans that are set to "on" invoke the conditional that prevents
the proc ess from transitioning to the domain on execution.
Utilice el s iguiente c omando para ver cuales de es tos valores booleanos estn c onfigurados :
768
You can also use togglesebool <boolean_nam e> to change the value of a specific boolean:
Puede configurar todas estas c arac terstic as utilizando sys te m-config-selinux. Se utilizan los
mis mos archivos de configurac in as que los cambios aparec en bidirecc ionalmente.
Nota
Se requieren privilegios de adminis trador para realizar este proc edimiento.
1.
2.
3.
En la lista de selecc in haga click en la entrada Nombre del Servicio y s elecc ione la opc in
Des activar la prote ccin SELinux para un de monio nombrado.
4.
Haga click sobre OK para aplicar el cambio. Obs erve que el rec argar la poltica puede tomar un
poco de tiempo.
769
Figura 45.1. Using the Security Level Configuration dialog box to change a runtime boolean.
Si quiere controlar estas c aracterstic as con scripts puede usar los comandos setenforce(1),
getenforce(1) y selinuxenabled(1).
770
Cambio de la Poltic a
c ha n g es
Nota
Nec es ita privilegios de adminis trador para realizar este proc edimiento.
1.
2.
3.
En Configuracin SELinux puede selec ionar Deshabili tado, Reforzar o Permi sivo y
luego haga click en OK.
4.
Si lo cambi de Habili tado a Deshabili tado o vic evers a nec eita reiniciar las mquina para
que tenga efecto el cambio.
771
Cambio de la Poltic a
where <policyname> is the policy name directory under /etc/selinux/. This assumes that you
have the custom policy installed. After changing the SELINUXTYPE parameter, run the following
commands :
touch /.autorelabel
reb o ot
Utilice el siguiente proc edimiento para cargar una poltica diferente utilizando la utilidad systemconfig-se linux:
Nota
Nec es ita privilegios de adminis trador para realizar este proc edimiento.
1.
As egres e de que la es tructura del directorio para la poltica requerida s e enc uentra c ompleta
bajo /etc/selinux .
2.
3.
4.
En la lista Tipo de Poltica selecc ione la poltica que desea cargar y luego haga click en OK.
Esta lista slamente es visible si se instala ms de una poltica.
5.
772
Espec ificac in del Contexto de Seguridad del Sis tema de Archivos Entero
Figura 45.2. Using the Security Level Configuration dialog box to load a custom policy.
773
Espec ificac in del Contexto de Seguridad del Sis tema de Archivos Entero
Tip
Cuando s oluc iona problemas relac ionados con httpd y SELinux reduc e la
complejidad de su situac in. Por ejemplo, si tiene el s istema de arc hivos montado en
/mnt y enlazado s imblicamente a /var/ www/ html/foo tiene dos contextos de
seguridad de los que se debe preoc upar. Debido a que un contexto de seguridad es
de la clas e de objeto file y el otro de tipo lnk_file, son creados de manera diferente
por l poltic y puede llegar a tener lugar un comportamiento inesperado.
774
echo $? 0
The ARGS are passed directly to the shell spec ified in the user's entry in the /etc/passwd file.
Nota
El c omando newrol e es parte del paquete policycoreutils-newrole, el cual
se necesita si instala la poltica MLS o la estric ta. No es instalada por defecto en Red
Hat Enterprise Linux.
775
El s iguiente mens aje de auditora dice ms sobre la fuente incluyendo la c las e de llamada de
s istema involucrada mostrando que el http trat de iniciar el directorio:
Jan 15 08:03:56 hostname kernel: audit(1 10 580 50 36.07 5:2 392 89 2): \
item=0 name=/home/auser/public_html inode=92 1135 dev=00: 00
El sello de nmero serial s iempre es idntico para un evento revisado en particular. El sello
de fecha pude que sea o no idntico.
Nota
If you are using an audit daemon for troubleshooting, the daemon may
capture audit messages into a location other than /var/log/messages,
such as /var/log/ audit/audit.log.
776