SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
757
Trabajar con SELinux
SELinux presenta un nuevo paradigma de seguridad y nuevo grupo de prácticas y herramientas para
los administradores y algunos de los usuarios finales. Las herramientas y técnicas que se discuten en
este capítulo se enfocan en operaciones estándar que usuarios finales, administradores y analistan
realizan.
45.1. Control de Usuario Final de SELinux
En general, los usuarios finales tienen poca interacción con SELinux cuando Red Hat Enterprise Linux
esta ejecutando la política objetivo. Esto se debe a que los usuarios están ejecutando en el dominio
de unconfined_t junto con el resto del sistema a excepción de los demonios objetivo.
En la mayoria de los casos , los controles DAC estándares le evitan el tener que realizar tareas para
las cuales usted no tiene el acceso o los permisos requeridos antes de que se le consulte a SELinux.
Por lo tanto es muy probable que usted nunca genere un mensaje avc: denied.
Las siguientes secciones cubren las tareas y práticas generales que los usuarios finales pueden llegar
a necesita realizar en un sistema Red Hat Enterprise Linux. Estas tareas aplican a los usurios de tod
nivel de privilegios y no sólamente a usuarios finales.
45.1.1. Mover y Copiar Archivos
En operaciones del sistema de archivos, el contexto de seguridad debe ser considerado en términos
de la etiqueta del archivo, el proceso que lo evalúa y los directorios en donde está ocurriendo la
operación. Debido a esto, el mover y copiar archivos con mv y cp puede llegar a tener resultados
inesperados.
Copiar Archivos: Opciones para cp de SELinux
A menos de que especifique lo contrario, cp sigue el comportamiento predeterminado de crear un
archivo nuevo con base en el dominio del proceso de creación y el tipo de directorio objetivo. A
menos de que haya una reglas espcifica para configuara la etiqueta, el archivo hereda el tipo del
directorio objetivo.
Utilice la opción -Z user:role:type para especificar la etiqueta requerida para el nuevo archivo.
La opción -p (or --preserva=modo, propiedad, sellos de fecha) preserva los atributos
especificados y si es posible preserva los atribuots adicionales como enlaces.
touc h bar foo
ls -Z ba r foo
-rw-rw-r-- a use r auser user_u:object_r:user_home _t bar
-rw-rw-r-- a use r auser user_u:object_r:user_home _t foo
Si utiliza el comando cp sin ningún argumento de línea de comando adicional se creará una copia del
archivo en la nueva ubicación utilizando el tipo predeterminado del proceso de cración y el directorio
objetivo. En este caso, debido a que no aplica ninguna regla especifica a cp y /tmp, el nuevo archivo
tiene el tipo del directorio padre:
758
Verificar el Contexto de Seguridad de un Proceso, Usuario u Objeto de Archivo
cp bar /tmp
ls -Z /tmp/ba r
-rw-rw-r-- a user auser user_u:object_r:tmp_t /tmp/bar
El tipo tmp_t es el tipo predeterminado para archivos temporales.
Utilice la opción -Z para especificar la etiqueta para el nuevo archivo:
cp -Z user_u:object_r:user_home_t foo /tmp
ls -Z /tmp/foo
-rw-rw-r-- a user auser user_u:object_r:user_home _t /tmp/foo
Mover Archivos: SELinux O pciones para mv
Moving files with mv retains the original type associated with the file. Care should be taken using this
command as it can cause problems. For example, if you move files with the type user_home_t into
~/public_html, then the httpd daemon is not able to serve those files until you relabel them. Refer
to Sección 45.1.3, “Nuevas Etiquetas para un Archivo o Directorio” for more information about file
labeling.
Comando Comportamiento
mv The file retains its original label. This may cause problems,
confusion, 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 Hace una copia del archivo utilizando el comportamiento
predeterminado con base en el dominio del procesode
creación (cp) y el tipo del directorio objetivo.
cp -p Hace una copia del archivo preservando los atributos
especificados y los contextos de seguridad si es posible. Los
atributos predeterminados son mode, ownership y timestamps.
Los atributos adicionales son links y all.
cp -Z <user:role:type> Hace una copia del archivo con las etiquetas especificadas. La
opción -Z es sinónimo de --context.
Tabla 45.1. Comportamiento de los Comandos mv y cp
45.1.2. Verificar el Contexto de Seguridad de un Proceso, Usuario u
Objeto de Archivo
Verificar un ID de Proceso
In Red Hat Enterprise Linux, the -Z option is equivalent to --context, and can be used with the ps,
id, ls, and cp commands. The behavior of the cp command with respect to SELinux is explained in
Tabla 45.1, “Comportamiento de los Comandos mv y cp”.
El siguiente ejemplo es una pequeña muestra de la salida del comando ps. La mayoría de los
procesos están ejecutando en el dominio unconfined_t, con pocas excepciones.
759
Verificar el Contexto de Seguridad de un Proceso, Usuario u Objeto de Archivo
[user@localhost ~]$ ps auxZ
LABEL USER PID %CPU %MEM VSZ RSS TTY STAT START
TIME COMMAND
syste m_u:syste m_r:init_t root 1 0.0 0.1 2032 620 ? Ss 15:09
0:00 init [5]
syste m_u:syste m_r:kernel_t root 2 0.0 0.0 0 0 ? S 15:09
0:00 [migra tion/0]
syste m_u:syste m_r:kernel_t root 3 0.0 0.0 0 0 ? SN 15:09
0:00 [ksoftirqd/0]
user_u:system_r:unc onfined_t user 3122 0.0 0.6 6908 3232 ? S 16:47
0:01 /usr/libe xec/gc onfd-2 5
user_u:system_r:unc onfined_t user 3125 0.0 0.1 2540 588 ? S 16:47
0:00 /usr/bin/gnome-keyring-daemon
user_u:system_r:unc onfined_t user 3127 0.0 1.4 33612 6988 ? Sl 16:47
0:00 /usr/libe xec/gnome -settings-dae mon
user_u:system_r:unc onfined_t user 3144 0.1 1.4 16528 7360 ? Ss 16:47
0:01 me tac ity --s m-clie nt-id=de fa ult1
user_u:system_r:unc onfined_t user 3148 0.2 2.9 79544 14808 ? Ss 16:47
0:03 gnome-panel --s m-c lie nt-id de fa ult2
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.
[root@localhost ~]# id -Z
user_u:syste m_r:unconfine d_t
Observe que no puede utilizar la opción -Z con el comando id para inspeccionar el contexto de
seguridad de un usario diferente. Es decir que usted sólamente puede visualizar el contexto de
seguridad del usuario conectado actualmente:
[user@localhost ~]$ id
uid=501(user) gid=501(user) groups=501(user) context=user_u:syste m_r:unc onfine d_t
[user@localhost ~]$ id root
uid=0(root) gid=0(root) groups=0(root),1(bin),2(dae mon),3(sys),4(a dm),6(disk),10(wheel)
[user@loca lhost ~]$ id -Z root
id: ca nnot displa y c onte xt when selinux not ena ble d or when displaying the id
of a differe nt use r
Verifica el ID de un Archivo
Puede utilizar la opción -Z con el comando ls para agrupar información con formato común largo.
Puede visualizar información sobre el modo, usuario, grupo, contexto de seguridad y nombre del
archivo.
cd /etc
ls -Z h* -d
drwxr-xr-x root root syste m_u:objec t_r:e tc _t ha l
-rw-r--r-- root root system_u:object_r:etc_t host.conf
-rw-r--r-- root root user_u:object_r:etc_t hosts
760
Verificar el Contexto de Seguridad de un Proceso, Usuario u Objeto de Archivo
-rw-r--r-- root root syste m_u:objec t_r:etc _t hosts.a llow
-rw-r--r-- root root syste m_u:objec t_r:etc _t hosts.ca nna
-rw-r--r-- root root syste m_u:objec t_r:etc _t hosts.de ny
drwxr-xr-x root root syste m_u:object_r:hotplug_etc _t hotplug
drwxr-xr-x root root syste m_u:object_r:etc _t hotplug.d
drwxr-xr-x root root syste m_u:objec t_r:httpd_sys_c onte nt_t htdig
drwxr-xr-x root root syste m_u:object_r:httpd_c onfig_t httpd
45.1.3. Nuevas Etiquetas para un Archivo o Directorio
Puede que necesite volver a etiquetar un archivo cunaod lo está moviendo o copiando a directorios
especiales relacionados con los demonios objetivo así como los directorios ~/public_html o
cuando se escriben scripts que funcionan en directorios fuera de /home.
Hay dos tipos generales de operaciones para volver a etiquetar:
• Cambiando deliberadamente el tipo de archivo
• Restablecer archivos a su estado predeterminado de acuerdo con la política
There are also relabeling operations that an administrator performs. These are covered in
Sección 45.2.2, “Creación de Etiquetas Nuevas para Sistemas de Archivos”.
Tip
Gran parte del control de permisos de SELinux en la política objetivo es el Tipo de
Refuerzo (TE). Por lo tanto, generalmente puede ignorar la información de la
etiqueta de seguridad sobre el usuario y el rol y enfocarse en sólo cambiar el tipo.
Normalmente no necesita considerar la configuración del rol y del usuario en los
archivos.
Nota
If relabeling affects the label on a daemon's executable, you should restart the
daemon to be sure it is running in the correct domain. For example, if /usr/sbin/
mysqld has the wrong security label, and you address this by using a relabeling
operation such as restorecon, you must restartmysqld after the relabeling
operation. Setting the executable file to have the correct type (mysqld_exec_t)
ensures that it transitions to the proper domain when started.
Utilice el comando chcon para cambiar un archivo al tipo correcto. Necesita saber el tipo correcto
que quiere aplicar para utilizar este comando. Los directorios y archivos en el siguiente ejemplo se
encuentran etiquetados con el tipo predeterminado definido por los objetos del sistema de archivos
creados en /home:
cd ~
ls -Zd public _html/
drwxrwxr-x ause r auser user_u:object_r:use r_home _t public_html/
ls -Z web_files/
-rw-rw-r-- a user ause r user_u:object_r:user_home_t 1.html
-rw-rw-r-- a user ause r user_u:object_r:user_home_t 2.html
-rw-rw-r-- a user ause r user_u:object_r:user_home_t 3.html
761
Nuevas Etiquetas para un Archivo o Directorio
-rw-rw-r-- auser auser user_u:object_r:user_home _t 4.html
-rw-rw-r-- auser auser user_u:object_r:user_home _t 5.html
-rw-rw-r-- auser auser user_u:object_r:user_home _t index.html
Si mueve estos archivos al directorio public_html retienen el tipo original:
mv web_files/* public _html/
ls -Z public _html/
-rw-rw-r-- auser auser user_u:object_r:user_home _t 1.html
-rw-rw-r-- auser auser user_u:object_r:user_home _t 2.html
-rw-rw-r-- auser auser user_u:object_r:user_home _t 3.html
-rw-rw-r-- auser auser user_u:object_r:user_home _t 4.html
-rw-rw-r-- auser auser user_u:object_r:user_home _t 5.html
-rw-rw-r-- auser auser user_u:object_r:user_home _t index.html
Para que estos archivos sean visibles desde una carpeta especial HTML de usuarios públicos, ellos
necesitan tener un tipo httpd que tenga permiso de leer, aumiendo que el Servidor HTTP Apache se
encuentra configurado para UserDir y que el valor boleano httpd_enable_homedirs esté activado.
chcon -R -t httpd_user_c ontent_t public _html/
ls -Z public _html
-rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t 1.html
-rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t 2.html
-rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t 3.html
-rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t 4.html
-rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t 5.html
-rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t index.html
ls -Z public _html/ -d
drwxrwxr-x auser auser user_u:objec t_r:httpd_user_c onte nt_t public _html/
Tip
Si el archivo no tiene etiqueta así como un archivo creado mientras que SELinux
estaba deshabilitado en el kernel, necesita darle una etiqueta completa con chcon
system_u:object_r:shlib_t foo.so. De otra manera, recibirá un error sobre
aplicación de un contexto parcial a un archivo sin etiqueta.
Use the restorecon command to restore files to the default values according 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 these methods requires superuser privileges. Cautions against
both of these methods appear in Sección 45.2.2, “Creación de Etiquetas Nuevas para Sistemas de
Archivos”.
The following example demonstrates 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 /tmp/
-rw-rw-r-- auser auser user_u:object_r:tmp_t /tmp/file1
-rw-rw-r-- auser auser user_u:object_r:tmp_t /tmp/file2
762
Nuevas Etiquetas para un Archivo o Directorio
-rw-rw-r-- auser auser user_u:object_r:tmp_t /tmp/file3
mv /tmp/{1,2,3} arc hive s/
mv public_html/* arc hives/
ls -Z archives/
-rw-rw-r-- auser auser user_u:object_r:tmp_t file1
-rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t file1.html
-rw-rw-r-- auser auser user_u:object_r:tmp_t file2
-rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t file2.html
-rw-rw-r-- auser auser user_u:object_r:tmp_t file3
-rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t file3.html
-rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t file4.html
-rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t file5.html
-rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t index.html
The archives/ directory already has the default type because it was created in the user's home
directory:
ls -Zd arc hive s/
drwxrwxr-x auser auser user_u:object_r:user_home_t arc hives/
Utilizando el comando restorecon para darle una nueva etiqueta a los archivos utiliza los contextos
de los archivos predeterminados establecidos por la política así que estos archivos se les da la
etiqueta predeterminada para el directorio actual.
/sbin/restorecon -R arc hives/
ls -Z archives/
-rw-rw-r-- auser auser system_u:object_r:user_home _t file1
-rw-rw-r-- auser auser system_u:object_r:user_home _t file1.html
-rw-rw-r-- auser auser system_u:object_r:user_home _t file2
-rw-rw-r-- auser auser system_u:object_r:user_home _t file2.html
-rw-rw-r-- auser auser system_u:object_r:user_home _t file3
-rw-rw-r-- auser auser system_u:object_r:user_home _t file3.html
-rw-rw-r-- auser auser system_u:object_r:user_home _t file4.html
-rw-rw-r-- auser auser system_u:object_r:user_home _t file5.html
-rw-rw-r-- auser auser system_u:object_r:user_home _t index.html
45.1.4. Creación de Archivos que Retienen Contextos de Seguridad
Puede utilizar las utilidades tar o star para crear ficheros que retengan contextos de seguridad
SELinux. El siguiente ejemplo utiliza star para demostrar como crear tal fichero. Necesita utilizar
las opciones apropiadas -xattr y -H=exustar para asegurarse de que los atributos extras son
capturados y de que el encabezamiento para el archivo *.star sea de un tipo que soporta por
completo xattrs. Consulte la página del manual patra obtener mayor información sobre estas y otras
opciones.
The following example illustrates the creation and extraction of a set of html files and directories. Note
that the two directories have different labels. Unimportant parts of the file context have been omitted
for printing purposes (indicated by ellipses '...'):
ls -Z public _html/ we b_file s/
public _html/:
-rw-rw-r-- a user a user ...httpd_user_c onte nt_t 1.html
763
Creación de Archivos que Retienen Contextos de Seguridad
-rw-rw-r-- a user a user ...httpd_user_c onte nt_t 2.html
-rw-rw-r-- a user a user ...httpd_user_c onte nt_t 3.html
-rw-rw-r-- a user a user ...httpd_user_c onte nt_t 4.html
-rw-rw-r-- a user a user ...httpd_user_c onte nt_t 5.html
-rw-rw-r-- a user a user ...httpd_user_c onte nt_t index.html
we b_files/:
-rw-rw-r-- a user ause r user_u:object_r:user_home_t 1.html
-rw-rw-r-- a user ause r user_u:object_r:user_home_t 2.html
-rw-rw-r-- a user ause r user_u:object_r:user_home_t 3.html
-rw-rw-r-- a user ause r user_u:object_r:user_home_t 4.html
-rw-rw-r-- a user ause r user_u:object_r:user_home_t 5.html
-rw-rw-r-- a user ause r user_u:object_r:user_home_t inde x.html
El siguiente comando crea el fichero reteniendo todos los contextos de seguridad de SELinux:
star -xattr -H=e xustar -c -f a ll_we b.sta r public _html/ we b_file s/
star: 11 blocks + 0 bytes (total of 112640 bytes = 110.00k).
Utilice el comando ls con la opción -Z para validar el contexto de seguridad:
ls -Z all_web.star
-rw-rw-r-- a user auser user_u:object_r:user_home _t  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 política especifica para tomar un tipo temporal derivativo, el comportamiento
predeterminado es adquirir el tipo tmp_t.
cp all_we b.sta r /tmp/ cd /tmp/
ls -Z all_web.star
-rw-rw-r-- a use r a user user_u:objec t_r:tmp _t a ll_we b.sta r
Ahora puede expandir los ficheros utilizando star y restablece los atributos extendidos:
star -xattr -x -f all_web.star
star: 11 blocks + 0 bytes (total of 112640 bytes = 110.00k).
ls -Z /tmp/public _html/ /tmp/we b_file s/
/tmp/public _html/:
-rw-rw-r-- auser auser ...httpd_sys_c onte nt_t 1.html
-rw-rw-r-- auser auser ...httpd_sys_c onte nt_t 2.html
-rw-rw-r-- auser auser ...httpd_sys_c onte nt_t 3.html
-rw-rw-r-- auser auser ...httpd_sys_c onte nt_t 4.html
-rw-rw-r-- auser auser ...httpd_sys_c onte nt_t 5.html
-rw-rw-r-- auser auser ...httpd_sys_c onte nt_t inde x.html
/tmp/we b_files/:
-rw-rw-r-- auser auser user_u:object_r:user_home _t 1.html
-rw-rw-r-- auser auser user_u:object_r:user_home _t 2.html
-rw-rw-r-- auser auser user_u:object_r:user_home _t 3.html
-rw-rw-r-- auser auser user_u:object_r:user_home _t 4.html
-rw-rw-r-- auser auser user_u:object_r:user_home _t 5.html
-rw-rw-r-- auser auser user_u:object_r:user_home _t  inde x.html
764
Creación de Archivos que Retienen Contextos de Seguridad
Atención
Si utiliza una ruta absoluta cuando crea un fichero utilizando star, el fichero se
expande en esa misma ruta. Por ejemplo, un fichero hecho son este comando
restablece los archivos a /var/log/httpd/:
star -xattr -H=e xustar -c -f httpd_logs.star /var/log/httpd/
Si trata de expandir este fichero, star emite una advertencia si los archivos en la
ruta son más nuevos que los que se encuentran el fichero.
45.2. Controles administrativos de SELinux
In addition to the tasks often performed by users in Sección 45.1, “Control de Usuario Final de
SELinux”, SELinux administrators could be expected to perform a number of additional tasks. These
tasks typically require root access to the system. Such tasks are significantly easier under the targeted
policy. For example, there is no need to consider adding, editing, or deleting Linux users from the
SELinux users, nor do you need to consider roles.
Esta sección cubre los tipos de tareas que se necesitan de un administrador que mantiene Red Hat
Enterprise Linux ejecutando SELinux.
45.2.1. Ver el Estado de SELinux
El comando sestatus proporciona una vista configurable al estado de SELinux. La forma más
simple de este comando muestra la siguiente información:
[root@localhost ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Polic y ve rsion: 21
Policy from config file: targeted
La opción -v incluye información sobre los contextos de seguridad de una serie de archivos que se
encuentran especificados en /etc/sestatus.conf:
[root @localhost ~]# sestatus -v
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Polic y ve rsion: 21
Policy from config file: targeted
Proc ess c onte xts:
Current c onte xt: user_u:syste m_r:unconfined_t
Init context: system_u:system_r:init_t
/sbin/minge tty syste m_u:syste m_r:getty_t
765
Creación de Etiquetas Nuevas para Sistemas de Archivos
/usr/sbin/sshd syste m_u:syste m_r:unc onfine d_t:s0-s0:c 0.c 1023
File contexts:
Controlling term: use r_u:objec t_r:de vpts_t
/etc /passwd syste m_u:objec t_r:etc _t
/etc/shadow system_u:object_r:sha dow_t
/bin/ba sh syste m_u:objec t_r:shell_e xec _t
/bin/login syste m_u:obje ct_r:login_e xec _t
/bin/sh syste m_u:object_r:bin_t -> syste m_u:object_r:shell_e xec _t
/sbin/a ge tty syste m_u:objec t_r:getty_e xec _t
/sbin/init system_u:object_r:init_exec_t
/sbin/mingetty syste m_u:object_r:getty_e xec _t
/usr/sbin/sshd syste m_u:obje ct_r:sshd_e xec _t
/lib/libc.so. 6 syste m_u:object_r:lib_t -> syste m_u:objec t_r:lib_t
/lib/ld-linux.so. 2 syste m_u:object_r:lib_t -> syste m_u:object_r:ld_so_t
La -b presenta el estado actual de los valores boleanos. Puede utilizar esto en combinación con grep
u otras herramientas para determinar el estado de valores boleanos en particular:
[root@host2a ~]# sesta tus -b | gre p httpd | grep on$
httpd_builtin_scripting on
httpd_disa ble _tra ns on
httpd_ena ble_cgi on
httpd_enable_homedirs on
httpd_unifie d on
45.2.2. Creación de Etiquetas Nuevas para Sistemas de Archivos
Puede que nunca necesite crear etiquetas nuevas para un sistemas de archivos completo.
Usualmente esto sólamente ocurre cuando crea una etiqueta nueva para un sistema de archivos por
primera vez para SELinux o cuando está cambiando entre diferentes tipos de políticas así como el
cambio de la política objetivo a la estricta.
Cre ación de Etique tas Nue vas para un Siste ma de Archivos Utilizando init
El método recomendado para crear una etiqueta nueva para un sistemas de archivos es reinciando la
máquina. Esto permite que el proceso init realice la creación de una nueva etiqueta asegurándose
de que las aplicaciones tienen las etiquetas correctas cuando se 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 procesos continuen ejecutándose con un contexto incorrecto. Puede llegar a ser dificil
asegurarse manualmentede que todos los demonios son reiniciados y ejecutados en el contexto
correcto.
Utilice el siguiente procedimiento para cambiar la etiqueta de un sistema de archivos utilizando este
método.
touch /.autorelabel
reboot
En tiempo de arranque init.rc verifica la existencia de /.autorelabel. Si este archivo existe,
SELinux crea etiquetas nuevas para el sistema de archivos completo (utilizando el comando /sbin/
fixfiles -f -F relabel) y luego borra /.autorelabel.
766
Creación de Etiquetas Nuevas para Sistemas de Archivos
Cre acón de Etique tas Nuevas para un Siste ma de Archivos utilizando 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 siguiente comando para crear una etiqueta nueva para un sistemas de archivos utilizando
sólamente el comando fixfiles:
fixfiles relabel
Utilice el siguiente comando para crear etiquetas nuevas para un sistema de archivos con base en la
base de datos RPM:
fixfiles -R <packagenam e> restore
Utilizando fixfiles para restablecer contextos de los paquetes es más seguro y rápido.
Atención
El ejecutar fixfiles en el sistema de archivos completo sin reiniciar puede hacer
inestable el sistema.
Si la operación de creación de una nueva etiqueta aplica una nueva política que es
diferente de la política que se encontraba cuando el sistema se reinició, los procesos
existentes pueden estar ejecutándose en dominios incorrectos e inseguros. Por
ejemplo, un proceso puede estar en un dominio que no es una transición permitida
para ese proceso en la nueva política, dados los permisos inesperados en sólo ese
proceso.
Además una de las opciones para fixfiles relabel pide aprobación para
vaciar /tmp/ ya que no es posible crear una etiqueta nueva de manera confiable
para /tmp/. Debido a que fixfiles se ejecutacomo root, se borran los archivos
temporales de los cuales dependen las aplicaciones. Esto puede hacer el sistema
inestable o que se comportede una manera inesperada.
45.2.3. Administración de Directorios Principales NFS
En Red Hat Enterprise Linux 5, la mayoría de los demonios objetivo no interactúan con los datos de
usuarios y no son afectados por los directorios principales montados con NFS. El Servidor Apache
HTTP es una excepción. Por ejemplo los scripts CGI que se encuentran montados en el sistemade
archivos tienen el tipo nfs_t, el cual es un tipo que no se le permite ejecutar a httpd_t.
Si tiene problemas con el tipo predeterminado de nfs_t trate de montar los directorios principales
con un contexto diferente:
mount -t nfs -o c onte xt=user_u:objec t_r:user_home _dir_t 
fileserver.exa mple.c om:/share d/homes/ /home
767
Otorgar Acceso a un Directorio o a un Arbol
Atención
Sección 45.2.9, “Especificación del Contexto de Seguridad del Sistema de Archivos
Entero” explains how to mount a directory so that httpd can execute scripts. If you
do this for user home directories, it gives the Apache HTTP Server increased access
to those directories. Remember that a mountpoint label applies to the entire mounted
file system.
Las versiones futuras de la política de SELinux abordan la funcionalidad de NFS.
45.2.4. Otorgar Acceso a un Directorio o a un Arbol
De manera similay a los permisos estándares de Linux DAC, un demonio objetivo tiene que tener
permisos SELinux para poder descender en el árbol de directorios. Esto no significa que un directorio
y su cotenido necesitan tener el mismo tipo. Hay muchos tipos así como root_t, tmp_t y usr_t
que otorgan acceso de lectura para un directorio. Estos tipos son apopiados para directorios que
no contienen ninguna información confidencial y que usted quiere que sean ampliamente leíbles.
También se pueden utilizar para un directorio padre de directorios más seguros con contextos
diferentes.
Si está trabajando con un mensaje avc: deniedhay algunos problemas comunes que surgen con
la traversal del directorio. Por ejemplo, muchos programas ejecutan un comando euqivalente a ls -
l / que no es necesario para su operación pero que genera un mensaje de rechazo en los registros.
Para estos necesita crear una regla dontaudit en su archivo local.te.
Al tratar de interpretar mensajes de rechazo de AVC no se confunda por el componente path=/.
La ruta no está relacionada con la etiqueta para el sistema de archivos root, /. De hecho es relativo al
root del sistema de archivos en el nodo del dipositivo. Por ejemplo, si su directorio /var/ se encuentra
ubicado en un dispositivo LVM (Administración de Volúmenes Lógicos
1
), /dev/dm-0, el nodo
dispositivo es identificado en el mensaje como dev=dm-0.Cuando vea path=/ en este ejemplo, ese
es el nivel superior del dispositivo LVM dm-0, no necesariamente el mismo que la designación del
sistema de archivos root /.
45.2.5. Copias de Seguridad y Restauración del Sistema
Refer to the explanation in Sección 45.1.4, “Creación de Archivos que Retienen Contextos de
Seguridad”.
45.2.6. Activación o Desactivación del Refuerzo
You can enable and disable SELinux enforcement at runtime or configure it to start in the correct mode
at boot time, using the command line or GUI. SELinux can operate in one of three modes: disabled,
meaning not enabled in the kernel; permissive, meaning SELinux is running and logging but not
controlling permissions; or enforcing, meaning SELinux is running and enforcing policy.
Utilice el comando setenforce para cambiar entre los modos permisivo y reforzar durante el tiempo
de ejecución. Utilice setenforce 0 para entrar en modo permisivo y utilice setenforce 1 para
entrar en modo de reforzamiento.
LVM es el agrupamiento físico en los pools virtuales que se particionan en volúmenes lógicos.
768
Otorgar Acceso a un Directorio o a un Arbol
El comando sestatus presenta el modo actual y el modo del archivo de configuración referenciado
durante el arranque:
sestatus | grep -i mode
Curre nt mode: permissive
Mode from config file: permissive
Observe que el cambio del refuerzo durante tiempo de ejecución no afecta la configuración de tiempo
de arranque:
setenforce 1
sestatus | grep -i mode
Current mode: enforcing
Mode from config file: permissive
También puede desactivar el modo de refuerzo para un sólo demonio. Por ejemplo, si está tratando
de resolver problemas del demonio named y SELinux entonces puede apagar el refuerzo para sólo
ese demonio.
Utilice el comando getsebool para obtener el estado actual del valor booleano:
[root@host2a ~]# getsebool name d_disable_trans
named_disable_trans --> off
Utilice el siguiente comando para desactivar el modo de refuerzo para este demonio:
[root@host2a ~]# setsebool na med_disable_trans 1
[root@host2a ~]# getsebool name d_disable_trans
named_disable_trans --> on
Nota
Esto configura el valor del tiempo de ejecución sólamente. Utilice la opción -P para
hacer persistentes lo cambios a través de los reinicios.
Any *_disable_trans booleans that are set to "on" invoke the conditional that prevents
the process from transitioning to the domain on execution.
Utilice el siguiente comando para ver cuales de estos valores booleanos están configurados:
ge tse bool -a | gre p disa ble.*on
httpd_disa ble _tra ns=1
mysqld_disable _trans=1
ntpd_disa ble _tra ns=1
Puede configurar cualquier número de valores booleanos utilizando el comando setsebool:
769
Activación o Desactivación del Refuerzo
setsebool -P httpd_disa ble_trans=1 mysqld_disable_trans=1 ntpd_disa ble_trans=1
You can also use togglesebool <boolean_name> to change the value of a specific boolean:
[root@host2a ~]# ge tse bool httpd_disa ble _tra ns
httpd_disa ble _tra ns --> off
[root@host2a ~]# toggle se bool httpd_disa ble _tra ns
httpd_disable_trans: active
Puede configurar todas estas características utilizando system-config-selinux. Se utilizan los
mismos archivos de configuración así que los cambios aparecen bidireccionalmente.
Cambio de un Valor Boole ano en Tiempo de Ejecución
Utilice el siguiente procedimiento para cambiar un valor boolenao en tiempo de ejecución utilizando el
GUI.
Nota
Se requieren privilegios de administrador para realizar este procedimiento.
1. En el menú Sistema vaya a Administración y luego haga click en Nivel de Seguridad y
Cortafuegos para visualizar el diálogo de Configuración del Nivel de Seguridad.
2. Luego haga click en la pestaña SELinux y después en Configuración SELinux.
3. En la lista de selección haga click en la entrada Nombre del Servicio y seleccione la opción
Desactivar la protección SELinux para un demonio nombrado.
4. Haga click sobre OK para aplicar el cambio. Observe que el recargar la política puede tomar un
poco de tiempo.
770
Activación o Desactivación del Refuerzo
Figura 45.1. Using the Security Level Configuration dialog box to change a runtime boolean.
Si quiere controlar estas características con scripts puede usar los comandos setenforce(1),
getenforce(1) y selinuxenabled(1).
45.2.7. Activar o Desactivar SELinux
Importante
Los cambios que realice a los archivos mientras que SELinux se encuentra
desactivado puede llegar a darles una etiqueta de seguridad inesperada y los arcivos
nuevos no tendrán una etiqueta. Puede que necesite darle una etiqueta nueva a una
parte o para todo el sistema de archivos despúes de re-activar SELinux.
Desde la línea de comandos puede editar el archivo /etc/sysconfig/selinux. Este archivo es un
symlink a /etc/selinux/config. El archivo de configuraciónese explíca por si mismo. El cambiar
771
Cambio de la Política
el valor de SELINUX o SELINUXTYPE cambia el estado de SELinux y el nombre de la política que se
utiliza la proxima vez que el sistema arranca.
[root@host2a ~]# cat /etc/sysconfig/selinux
# This file controls the state of SELinux on the syste m.
# SELINUX= can ta ke one of these three va lues:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instea d of e nforc ing.
# disabled - SELinux is fully disabled.
SELINU X=permissive
# SELINUXTYPE= type of polic y in use. Possible va lues are:
# targeted - Only targete d net work daemons are protected.
# strict - Full SELinux protection.
SELINUXT YP E=targeted
# SETLOCALDEFS= Check loc al definition c ha nges
SETLOCALDEFS=0
Cambio del Modo de SELinux Utilizando GUI
Utilice el siguiente procedimiento para cambiar el modo de SELinux utilizando GUI.
Nota
Necesita privilegios de administrador para realizar este procedimiento.
1. En el menú Sistema vaya a Administración y luego haga click en Nivel de Seguridad y
Cortafuegos para visualizar el diálogo de Configuración del Nivel de Seguridad.
2. Haga click en la pestaña SELinux
3. En Configuración SELinux puede selecionar Deshabilitado, Reforzar o Permisivo y
luego haga click en OK.
4. Si lo cambió de Habilitado a Deshabilitado o viceversa neceita reiniciar las máquina para
que tenga efecto el cambio.
Los cambios realizados utilizando este diálogo se reflejan de inmediato en /etc/sysconfig/
selinux.
45.2.8. Cambio de la Política
Esta sección proporciona una breve introducción para utilizar políticas personalizadas en su sistema.
Una discución completa sobre este tema se encuentra más alla del alcance de este documento.
Para cargar una política diferente en su sistema cambie la siguiente línea en /etc/sysconfig/
selinux:
SEL IN U XT YPE =<policynam e>
772
Cambio de la Política
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
reboot
Utilice el siguiente procedimiento para cargar una política diferente utilizando la utilidad system-
config-selinux:
Nota
Necesita privilegios de administrador para realizar este procedimiento.
1. Asegúrese de que la estructura del directorio para la política requerida se encuentra completa
bajo /etc/selinux .
2. En el menú Sistema vaya a Administración y luego haga click en Nivel de Seguridad y
Cortafuegos para visualizar el diálogo de Configuración del Nivel de Seguridad.
3. Haga click en la pestaña SELinux
4. En la lista Tipo de Política seleccione la política que desea cargar y luego haga click en OK.
Esta lista sólamente es visible si se instala más de una política.
5. Reinicie la máquina para que los cambios tengan efecto:
773
Especificación del Contexto de Seguridad del Sistema de Archivos Entero
Figura 45.2. Using the Security Level Configuration dialog box to load a custom policy.
45.2.9. Especificación del Contexto de Seguridad del Sistema de
Archivos Entero
Puede utilizar el comando mount -o context= para configurar un contexto individual para un
sistema de archivos completo. Este puede ser un sistema de archivos que ya se encuentra montado y
que soporta xattrs o un sistema de archivos de red que obtiene una etiqueta genfs tal como cifs_t o
nfs_t.
Por ejemplo, si necesita que el Servidor HTTP Apache lea desde un directorio montado o
que se produzcaun loopback del sistema de archivos necesitará configurar el tipo como
httpd_sys_content_t:
mount -t nfs -o context=syste m_u:object_r:httpd_sys_c onte nt_t 
server1.e xa mple.c om:/shared/scripts /var/www/c gi
774
Especificación del Contexto de Seguridad del Sistema de Archivos Entero
Tip
Cuando soluciona problemas relacionados con httpd y SELinux reduce la
complejidad de su situación. Por ejemplo, si tiene el sistema de archivos montado en
/mnt y enlazado simbólicamente a /var/www/html/foo tiene dos contextos de
seguridad de los que se debe preocupar. Debido a que un contexto de seguridad es
de la clase de objeto file y el otro de tipo lnk_file, son creados de manera diferente
por l polític y puede llegar a tener lugar un comportamiento inesperado.
45.2.10. Cambio de la Categoria de Seguridad de un Archivo o
Usuario
45.2.11. Ejecución de un Comando en un Contexto de Seguridad
Especifico
Puede utilizar el comando runcon para ejecutar un comando en un cotexto específico. Esto esútil
para scripts o para probar políticas pero se debe asegurar de que es implementado de manera
correcta.
Por ejemplo, puede utilizar el siguiente comando para ejecutar un script para probar una posible mala
etiquetación del contenido. Los argumentos que aparecen después del comando son considerados
como parte del comando (en este ejemplo, ~/bin/contexttest es un script definido por el
usuario).
runcon -t httpd_t ~/bin/contexttest -ARG1 -ARG2
También puede especificar el contexto completo así:
runcon user_u:syste m_r:httpd_t ~/bin/contexttest
45.2.12. Comandos Utiles para Scripts
La siguiente es una lista de los comandos útiles introducidos con SELinux y los cuales le pueden ser
útiles al escribir scripts para ayudar a administrar su sistema:
getenforce
Este comando devuelve el estado de refuerzo de SELinux.
setenforce [ Enforcing | Permissive | 1 | 0 ]
Este comando controla el modo de refuerzo de SELinux. La opción 1 o Refuerzo le dice a
SELinux que entre el modo de refuerzo. La opción 0 o Permisivo le dice a SELinux que entre en
modo pasivo. Todavíase registran las violaciones de acceso pero no se previenen.
selinuxenabled
El comando sale con un estado 0 si se habilita SELinux y 1 si SELinux es deshabilitado.
775
Cambio a un Rol Diferente
selinuxena bled echo $? 0
getsebool [-a] [boolean_name]
This command shows the status of all booleans (-a) or a specific boolean (<boolean_name>).
setsebool [-P] <boolean_name> value | bool1=val1 bool2=val2 ...
Este comando configura uno o más valores boolenaos. La opción -P hace que los cambios sean
persistentes en los reinicios.
togglesebool boolean ...
Este comando alterna la configuración de uno o más valores booleanos. Esto afecta la
configuración de los valores booleanos en la memoria sólamente y los cambios no son
persistentes en los reinicios.
45.2.13. Cambio a un Rol Diferente
Utilice el comando newrole para ejecutar una shell nueva con el tipo y/o rol especificado. El cambio
de roles típicamente sólo tiene sentido en la política estricta; la política objetivo generalmente está
restringida a un sólo rol. Cambiar los tipos puede ser útil para propositos de prueba, validación y
desarrollo.
newrole -r <role_r > -t <type_t> [-- [ARGS]...]
The ARGS are passed directly to the shell specified in the user's entry in the /etc/passwd file.
Nota
El comando newrole es parte del paquete policycoreutils-newrole, el cual
se necesita si instala la política MLS o la estricta. No es instalada por defecto en Red
Hat Enterprise Linux.
45.2.14. Cuando Reiniciar
La razón principal para reiniciar el sistema desde la perspectiva de SELinux es para dar etiquetas
nuevas al sistema de archivos. en ciertas ocasiones puede que necesite reinicar el sistema para
habilitar o deshabilitar SELinux.
45.3. Control Analista de SELinux
Esta sección describe algunas de las tareas comunes que un analista de seguridad puede llegar a
necesitar realizar en un sistema SELinux.
45.3.1. Activación de la Auditoría de Kernel
Como parte de un análisis de SELinux o de la solución de problemas pude que usted elija habilitar
una completa auditoría a nivel de kernel. Esto puede llegar a ser bastante verboso debido a que
genera uno o más mensajes de aditoría adicionales por cada mensaje de auditoría AVC. Para
habilitar este nivel de auditoría agregue el parámetro audit=1 a su línea de arranque de kernel ya
sea en el archivo /etc/grub.conf o en el menú GRUB en tiempo de arranque.
776
Cambio a un Rol Diferente
Este es un ejemplo de una entrada de registro de auditoríacompleta cuando se le niega
acceso a httpd a ~/public_html porque el directorio no tiene un etiqueta de contenido
de web. Note que los sellos de fecha y el número serial el el cmpo de la auditoría son
idénticos en ambos casos. Esto hace más fácil el seguirle la pista a un evento específico en
los registros de auditoría:
Jan 15 08:03:56 hostname kernel:
audit(1105805036.075:2392892):  avc: de nied { getattr
} for pid=2239 e xe =/usr/sbin/httpd 
path=/home/auser/public_html dev=h db2 ino=921135 
sconte xt=user_u:syste m_r:httpd_t 
tconte xt=syste m_u:object_r:user_home _t tclass=dir
El siguiente mensaje de auditoría dice más sobre la fuente incluyendo la clase de llamada de
sistema involucrada mostrando que el http trató de iniciar el directorio:
Jan 15 08:03:56 hostname kernel:
audit(1105805036.075:2392892):  syscall=195
exit=4294967283 a0=9ef88e0 a1=bfecc0d4 a2=a97ff4 
a3=bfecc0d4 items=1 pid=2239 loginuid=-1 uid=48 gid=48
euid=48  suid=48 fsuid=48 egid=48 sgid=48 fsgid=48
El siguiente mensaje proporciona más información sobre el objetivo:
Jan 15 08:03:56 hostname kernel: audit(1105805036.075:2392892): 
item=0 name=/home/auser/public_html inode=921135 dev=00:00
El sello de número serial siempre es idéntico para un evento revisado en particular. El sello
de fecha pude que sea o no idéntico.
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.
45.3.2. Volcado y Vista de Registros
La implementación de Red Hat Enterprise Linux 5 enruta los mensajes de auditoría AVC a
/var/ log/messages. Puede utilizar cualquiera de las utilidades de búsqueda estándar
(por ejemplo, grep) para buscar líneas que contengan avc o audit.

Mais conteúdo relacionado

Semelhante a SELinux gestión archivos y procesos

Introducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUXIntroducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUXJose Pla
 
Manual ldap
Manual ldapManual ldap
Manual ldapomarhl2
 
Curso Basico Ponencia 678
Curso Basico Ponencia 678Curso Basico Ponencia 678
Curso Basico Ponencia 678Antonio Durán
 
Guia comandos-rapidos-linux-4781
Guia comandos-rapidos-linux-4781Guia comandos-rapidos-linux-4781
Guia comandos-rapidos-linux-4781Enrique Villafuerte
 
28 el directorio sysconfig
28  el directorio sysconfig28  el directorio sysconfig
28 el directorio sysconfigAprende Viendo
 
RESUME SOBRE LA TERMINAL DE UBUNTU
RESUME SOBRE LA TERMINAL DE UBUNTU RESUME SOBRE LA TERMINAL DE UBUNTU
RESUME SOBRE LA TERMINAL DE UBUNTU Mary Tenelema
 
Comandos de ubuntu
Comandos de ubuntuComandos de ubuntu
Comandos de ubuntuAny Saula
 
Actividad v administración y comandos básicos if04 emerson
Actividad v administración y comandos básicos if04 emersonActividad v administración y comandos básicos if04 emerson
Actividad v administración y comandos básicos if04 emersonEmerson Gonzalez IF04 T I
 
Chuleta-comandos-Linux-para-no-perderse.pdf
Chuleta-comandos-Linux-para-no-perderse.pdfChuleta-comandos-Linux-para-no-perderse.pdf
Chuleta-comandos-Linux-para-no-perderse.pdfGabrielLv2
 
Comandos Basicos De Linux
Comandos Basicos De LinuxComandos Basicos De Linux
Comandos Basicos De Linuxguest238e87
 

Semelhante a SELinux gestión archivos y procesos (20)

Comandos linux
Comandos linuxComandos linux
Comandos linux
 
Presentación linux
Presentación linuxPresentación linux
Presentación linux
 
Introducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUXIntroducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUX
 
Manual ldap
Manual ldapManual ldap
Manual ldap
 
Curso Basico Ponencia 678
Curso Basico Ponencia 678Curso Basico Ponencia 678
Curso Basico Ponencia 678
 
Guia comandos-rapidos-linux-4781
Guia comandos-rapidos-linux-4781Guia comandos-rapidos-linux-4781
Guia comandos-rapidos-linux-4781
 
28 el directorio sysconfig
28  el directorio sysconfig28  el directorio sysconfig
28 el directorio sysconfig
 
44 comandos linux
44  comandos linux44  comandos linux
44 comandos linux
 
RESUME SOBRE LA TERMINAL DE UBUNTU
RESUME SOBRE LA TERMINAL DE UBUNTU RESUME SOBRE LA TERMINAL DE UBUNTU
RESUME SOBRE LA TERMINAL DE UBUNTU
 
Curso-Taller GNU-Linux Dia2
Curso-Taller GNU-Linux Dia2Curso-Taller GNU-Linux Dia2
Curso-Taller GNU-Linux Dia2
 
Intro comandos unix
Intro comandos   unixIntro comandos   unix
Intro comandos unix
 
Comandos ubuntu
Comandos ubuntuComandos ubuntu
Comandos ubuntu
 
Comandos ubuntu
Comandos ubuntuComandos ubuntu
Comandos ubuntu
 
Comandos de ubuntu
Comandos de ubuntuComandos de ubuntu
Comandos de ubuntu
 
Actividad3.1
Actividad3.1Actividad3.1
Actividad3.1
 
Utilizacion de la interface de comandos de Linux
Utilizacion de la interface de comandos de LinuxUtilizacion de la interface de comandos de Linux
Utilizacion de la interface de comandos de Linux
 
Actividad v administración y comandos básicos if04 emerson
Actividad v administración y comandos básicos if04 emersonActividad v administración y comandos básicos if04 emerson
Actividad v administración y comandos básicos if04 emerson
 
Chuleta-comandos-Linux-para-no-perderse.pdf
Chuleta-comandos-Linux-para-no-perderse.pdfChuleta-comandos-Linux-para-no-perderse.pdf
Chuleta-comandos-Linux-para-no-perderse.pdf
 
Comandos Basicos De Linux
Comandos Basicos De LinuxComandos Basicos De Linux
Comandos Basicos De Linux
 
Openldap
OpenldapOpenldap
Openldap
 

Mais de Aprende Viendo

44 seguridad y se linux
44  seguridad y se linux44  seguridad y se linux
44 seguridad y se linuxAprende Viendo
 
43 aseguramiento de su red
43  aseguramiento de su red43  aseguramiento de su red
43 aseguramiento de su redAprende Viendo
 
42 seguridad y autenticación
42  seguridad y autenticación42  seguridad y autenticación
42 seguridad y autenticaciónAprende Viendo
 
41 parámetros y módulos generales
41  parámetros y módulos generales41  parámetros y módulos generales
41 parámetros y módulos generalesAprende Viendo
 
40 configuración del kernel y dispositivos
40  configuración del kernel y dispositivos40  configuración del kernel y dispositivos
40 configuración del kernel y dispositivosAprende Viendo
 
38 reunir información del sistema
38  reunir información del sistema38  reunir información del sistema
38 reunir información del sistemaAprende Viendo
 
37 supervisión del sistema
37  supervisión del sistema37  supervisión del sistema
37 supervisión del sistemaAprende Viendo
 
36 archivos de registro
36  archivos de registro36  archivos de registro
36 archivos de registroAprende Viendo
 
34 configuración de la impresora
34  configuración de la impresora34  configuración de la impresora
34 configuración de la impresoraAprende Viendo
 
32 configuración del sistema x window
32  configuración del sistema x window32  configuración del sistema x window
32 configuración del sistema x windowAprende Viendo
 
31 el sistema x window
31  el sistema x window31  el sistema x window
31 el sistema x windowAprende Viendo
 
46 customizing se linux policy
46  customizing se linux policy46  customizing se linux policy
46 customizing se linux policyAprende Viendo
 
29 configuración de la fecha y hora
29  configuración de la fecha y hora29  configuración de la fecha y hora
29 configuración de la fecha y horaAprende Viendo
 
27 configuración del sistema
27  configuración del sistema27  configuración del sistema
27 configuración del sistemaAprende Viendo
 
25 protocolo ligero de acceso a directorios ldap
25  protocolo ligero de acceso a directorios ldap25  protocolo ligero de acceso a directorios ldap
25 protocolo ligero de acceso a directorios ldapAprende Viendo
 
24 correo electrónico
24  correo electrónico24  correo electrónico
24 correo electrónicoAprende Viendo
 

Mais de Aprende Viendo (20)

44 seguridad y se linux
44  seguridad y se linux44  seguridad y se linux
44 seguridad y se linux
 
43 aseguramiento de su red
43  aseguramiento de su red43  aseguramiento de su red
43 aseguramiento de su red
 
42 seguridad y autenticación
42  seguridad y autenticación42  seguridad y autenticación
42 seguridad y autenticación
 
41 parámetros y módulos generales
41  parámetros y módulos generales41  parámetros y módulos generales
41 parámetros y módulos generales
 
40 configuración del kernel y dispositivos
40  configuración del kernel y dispositivos40  configuración del kernel y dispositivos
40 configuración del kernel y dispositivos
 
39 o profile
39  o profile39  o profile
39 o profile
 
38 reunir información del sistema
38  reunir información del sistema38  reunir información del sistema
38 reunir información del sistema
 
37 supervisión del sistema
37  supervisión del sistema37  supervisión del sistema
37 supervisión del sistema
 
36 archivos de registro
36  archivos de registro36  archivos de registro
36 archivos de registro
 
35 automated tasks
35  automated tasks35  automated tasks
35 automated tasks
 
34 configuración de la impresora
34  configuración de la impresora34  configuración de la impresora
34 configuración de la impresora
 
33 usuarios y grupos
33  usuarios y grupos33  usuarios y grupos
33 usuarios y grupos
 
32 configuración del sistema x window
32  configuración del sistema x window32  configuración del sistema x window
32 configuración del sistema x window
 
31 el sistema x window
31  el sistema x window31  el sistema x window
31 el sistema x window
 
46 customizing se linux policy
46  customizing se linux policy46  customizing se linux policy
46 customizing se linux policy
 
29 configuración de la fecha y hora
29  configuración de la fecha y hora29  configuración de la fecha y hora
29 configuración de la fecha y hora
 
27 configuración del sistema
27  configuración del sistema27  configuración del sistema
27 configuración del sistema
 
25 protocolo ligero de acceso a directorios ldap
25  protocolo ligero de acceso a directorios ldap25  protocolo ligero de acceso a directorios ldap
25 protocolo ligero de acceso a directorios ldap
 
24 correo electrónico
24  correo electrónico24  correo electrónico
24 correo electrónico
 
22 apache http server
22  apache http server22  apache http server
22 apache http server
 

SELinux gestión archivos y procesos

  • 1. 757 Trabajar con SELinux SELinux presenta un nuevo paradigma de seguridad y nuevo grupo de prácticas y herramientas para los administradores y algunos de los usuarios finales. Las herramientas y técnicas que se discuten en este capítulo se enfocan en operaciones estándar que usuarios finales, administradores y analistan realizan. 45.1. Control de Usuario Final de SELinux En general, los usuarios finales tienen poca interacción con SELinux cuando Red Hat Enterprise Linux esta ejecutando la política objetivo. Esto se debe a que los usuarios están ejecutando en el dominio de unconfined_t junto con el resto del sistema a excepción de los demonios objetivo. En la mayoria de los casos , los controles DAC estándares le evitan el tener que realizar tareas para las cuales usted no tiene el acceso o los permisos requeridos antes de que se le consulte a SELinux. Por lo tanto es muy probable que usted nunca genere un mensaje avc: denied. Las siguientes secciones cubren las tareas y práticas generales que los usuarios finales pueden llegar a necesita realizar en un sistema Red Hat Enterprise Linux. Estas tareas aplican a los usurios de tod nivel de privilegios y no sólamente a usuarios finales. 45.1.1. Mover y Copiar Archivos En operaciones del sistema de archivos, el contexto de seguridad debe ser considerado en términos de la etiqueta del archivo, el proceso que lo evalúa y los directorios en donde está ocurriendo la operación. Debido a esto, el mover y copiar archivos con mv y cp puede llegar a tener resultados inesperados. Copiar Archivos: Opciones para cp de SELinux A menos de que especifique lo contrario, cp sigue el comportamiento predeterminado de crear un archivo nuevo con base en el dominio del proceso de creación y el tipo de directorio objetivo. A menos de que haya una reglas espcifica para configuara la etiqueta, el archivo hereda el tipo del directorio objetivo. Utilice la opción -Z user:role:type para especificar la etiqueta requerida para el nuevo archivo. La opción -p (or --preserva=modo, propiedad, sellos de fecha) preserva los atributos especificados y si es posible preserva los atribuots adicionales como enlaces. touc h bar foo ls -Z ba r foo -rw-rw-r-- a use r auser user_u:object_r:user_home _t bar -rw-rw-r-- a use r auser user_u:object_r:user_home _t foo Si utiliza el comando cp sin ningún argumento de línea de comando adicional se creará una copia del archivo en la nueva ubicación utilizando el tipo predeterminado del proceso de cración y el directorio objetivo. En este caso, debido a que no aplica ninguna regla especifica a cp y /tmp, el nuevo archivo tiene el tipo del directorio padre:
  • 2. 758 Verificar el Contexto de Seguridad de un Proceso, Usuario u Objeto de Archivo cp bar /tmp ls -Z /tmp/ba r -rw-rw-r-- a user auser user_u:object_r:tmp_t /tmp/bar El tipo tmp_t es el tipo predeterminado para archivos temporales. Utilice la opción -Z para especificar la etiqueta para el nuevo archivo: cp -Z user_u:object_r:user_home_t foo /tmp ls -Z /tmp/foo -rw-rw-r-- a user auser user_u:object_r:user_home _t /tmp/foo Mover Archivos: SELinux O pciones para mv Moving files with mv retains the original type associated with the file. Care should be taken using this command as it can cause problems. For example, if you move files with the type user_home_t into ~/public_html, then the httpd daemon is not able to serve those files until you relabel them. Refer to Sección 45.1.3, “Nuevas Etiquetas para un Archivo o Directorio” for more information about file labeling. Comando Comportamiento mv The file retains its original label. This may cause problems, confusion, 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 Hace una copia del archivo utilizando el comportamiento predeterminado con base en el dominio del procesode creación (cp) y el tipo del directorio objetivo. cp -p Hace una copia del archivo preservando los atributos especificados y los contextos de seguridad si es posible. Los atributos predeterminados son mode, ownership y timestamps. Los atributos adicionales son links y all. cp -Z <user:role:type> Hace una copia del archivo con las etiquetas especificadas. La opción -Z es sinónimo de --context. Tabla 45.1. Comportamiento de los Comandos mv y cp 45.1.2. Verificar el Contexto de Seguridad de un Proceso, Usuario u Objeto de Archivo Verificar un ID de Proceso In Red Hat Enterprise Linux, the -Z option is equivalent to --context, and can be used with the ps, id, ls, and cp commands. The behavior of the cp command with respect to SELinux is explained in Tabla 45.1, “Comportamiento de los Comandos mv y cp”. El siguiente ejemplo es una pequeña muestra de la salida del comando ps. La mayoría de los procesos están ejecutando en el dominio unconfined_t, con pocas excepciones.
  • 3. 759 Verificar el Contexto de Seguridad de un Proceso, Usuario u Objeto de Archivo [user@localhost ~]$ ps auxZ LABEL USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND syste m_u:syste m_r:init_t root 1 0.0 0.1 2032 620 ? Ss 15:09 0:00 init [5] syste m_u:syste m_r:kernel_t root 2 0.0 0.0 0 0 ? S 15:09 0:00 [migra tion/0] syste m_u:syste m_r:kernel_t root 3 0.0 0.0 0 0 ? SN 15:09 0:00 [ksoftirqd/0] user_u:system_r:unc onfined_t user 3122 0.0 0.6 6908 3232 ? S 16:47 0:01 /usr/libe xec/gc onfd-2 5 user_u:system_r:unc onfined_t user 3125 0.0 0.1 2540 588 ? S 16:47 0:00 /usr/bin/gnome-keyring-daemon user_u:system_r:unc onfined_t user 3127 0.0 1.4 33612 6988 ? Sl 16:47 0:00 /usr/libe xec/gnome -settings-dae mon user_u:system_r:unc onfined_t user 3144 0.1 1.4 16528 7360 ? Ss 16:47 0:01 me tac ity --s m-clie nt-id=de fa ult1 user_u:system_r:unc onfined_t user 3148 0.2 2.9 79544 14808 ? Ss 16:47 0:03 gnome-panel --s m-c lie nt-id de fa ult2 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. [root@localhost ~]# id -Z user_u:syste m_r:unconfine d_t Observe que no puede utilizar la opción -Z con el comando id para inspeccionar el contexto de seguridad de un usario diferente. Es decir que usted sólamente puede visualizar el contexto de seguridad del usuario conectado actualmente: [user@localhost ~]$ id uid=501(user) gid=501(user) groups=501(user) context=user_u:syste m_r:unc onfine d_t [user@localhost ~]$ id root uid=0(root) gid=0(root) groups=0(root),1(bin),2(dae mon),3(sys),4(a dm),6(disk),10(wheel) [user@loca lhost ~]$ id -Z root id: ca nnot displa y c onte xt when selinux not ena ble d or when displaying the id of a differe nt use r Verifica el ID de un Archivo Puede utilizar la opción -Z con el comando ls para agrupar información con formato común largo. Puede visualizar información sobre el modo, usuario, grupo, contexto de seguridad y nombre del archivo. cd /etc ls -Z h* -d drwxr-xr-x root root syste m_u:objec t_r:e tc _t ha l -rw-r--r-- root root system_u:object_r:etc_t host.conf -rw-r--r-- root root user_u:object_r:etc_t hosts
  • 4. 760 Verificar el Contexto de Seguridad de un Proceso, Usuario u Objeto de Archivo -rw-r--r-- root root syste m_u:objec t_r:etc _t hosts.a llow -rw-r--r-- root root syste m_u:objec t_r:etc _t hosts.ca nna -rw-r--r-- root root syste m_u:objec t_r:etc _t hosts.de ny drwxr-xr-x root root syste m_u:object_r:hotplug_etc _t hotplug drwxr-xr-x root root syste m_u:object_r:etc _t hotplug.d drwxr-xr-x root root syste m_u:objec t_r:httpd_sys_c onte nt_t htdig drwxr-xr-x root root syste m_u:object_r:httpd_c onfig_t httpd 45.1.3. Nuevas Etiquetas para un Archivo o Directorio Puede que necesite volver a etiquetar un archivo cunaod lo está moviendo o copiando a directorios especiales relacionados con los demonios objetivo así como los directorios ~/public_html o cuando se escriben scripts que funcionan en directorios fuera de /home. Hay dos tipos generales de operaciones para volver a etiquetar: • Cambiando deliberadamente el tipo de archivo • Restablecer archivos a su estado predeterminado de acuerdo con la política There are also relabeling operations that an administrator performs. These are covered in Sección 45.2.2, “Creación de Etiquetas Nuevas para Sistemas de Archivos”. Tip Gran parte del control de permisos de SELinux en la política objetivo es el Tipo de Refuerzo (TE). Por lo tanto, generalmente puede ignorar la información de la etiqueta de seguridad sobre el usuario y el rol y enfocarse en sólo cambiar el tipo. Normalmente no necesita considerar la configuración del rol y del usuario en los archivos. Nota If relabeling affects the label on a daemon's executable, you should restart the daemon to be sure it is running in the correct domain. For example, if /usr/sbin/ mysqld has the wrong security label, and you address this by using a relabeling operation such as restorecon, you must restartmysqld after the relabeling operation. Setting the executable file to have the correct type (mysqld_exec_t) ensures that it transitions to the proper domain when started. Utilice el comando chcon para cambiar un archivo al tipo correcto. Necesita saber el tipo correcto que quiere aplicar para utilizar este comando. Los directorios y archivos en el siguiente ejemplo se encuentran etiquetados con el tipo predeterminado definido por los objetos del sistema de archivos creados en /home: cd ~ ls -Zd public _html/ drwxrwxr-x ause r auser user_u:object_r:use r_home _t public_html/ ls -Z web_files/ -rw-rw-r-- a user ause r user_u:object_r:user_home_t 1.html -rw-rw-r-- a user ause r user_u:object_r:user_home_t 2.html -rw-rw-r-- a user ause r user_u:object_r:user_home_t 3.html
  • 5. 761 Nuevas Etiquetas para un Archivo o Directorio -rw-rw-r-- auser auser user_u:object_r:user_home _t 4.html -rw-rw-r-- auser auser user_u:object_r:user_home _t 5.html -rw-rw-r-- auser auser user_u:object_r:user_home _t index.html Si mueve estos archivos al directorio public_html retienen el tipo original: mv web_files/* public _html/ ls -Z public _html/ -rw-rw-r-- auser auser user_u:object_r:user_home _t 1.html -rw-rw-r-- auser auser user_u:object_r:user_home _t 2.html -rw-rw-r-- auser auser user_u:object_r:user_home _t 3.html -rw-rw-r-- auser auser user_u:object_r:user_home _t 4.html -rw-rw-r-- auser auser user_u:object_r:user_home _t 5.html -rw-rw-r-- auser auser user_u:object_r:user_home _t index.html Para que estos archivos sean visibles desde una carpeta especial HTML de usuarios públicos, ellos necesitan tener un tipo httpd que tenga permiso de leer, aumiendo que el Servidor HTTP Apache se encuentra configurado para UserDir y que el valor boleano httpd_enable_homedirs esté activado. chcon -R -t httpd_user_c ontent_t public _html/ ls -Z public _html -rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t 1.html -rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t 2.html -rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t 3.html -rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t 4.html -rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t 5.html -rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t index.html ls -Z public _html/ -d drwxrwxr-x auser auser user_u:objec t_r:httpd_user_c onte nt_t public _html/ Tip Si el archivo no tiene etiqueta así como un archivo creado mientras que SELinux estaba deshabilitado en el kernel, necesita darle una etiqueta completa con chcon system_u:object_r:shlib_t foo.so. De otra manera, recibirá un error sobre aplicación de un contexto parcial a un archivo sin etiqueta. Use the restorecon command to restore files to the default values according 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 these methods requires superuser privileges. Cautions against both of these methods appear in Sección 45.2.2, “Creación de Etiquetas Nuevas para Sistemas de Archivos”. The following example demonstrates 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 /tmp/ -rw-rw-r-- auser auser user_u:object_r:tmp_t /tmp/file1 -rw-rw-r-- auser auser user_u:object_r:tmp_t /tmp/file2
  • 6. 762 Nuevas Etiquetas para un Archivo o Directorio -rw-rw-r-- auser auser user_u:object_r:tmp_t /tmp/file3 mv /tmp/{1,2,3} arc hive s/ mv public_html/* arc hives/ ls -Z archives/ -rw-rw-r-- auser auser user_u:object_r:tmp_t file1 -rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t file1.html -rw-rw-r-- auser auser user_u:object_r:tmp_t file2 -rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t file2.html -rw-rw-r-- auser auser user_u:object_r:tmp_t file3 -rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t file3.html -rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t file4.html -rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t file5.html -rw-rw-r-- auser auser use r_u:object_r:httpd_user_c onte nt_t index.html The archives/ directory already has the default type because it was created in the user's home directory: ls -Zd arc hive s/ drwxrwxr-x auser auser user_u:object_r:user_home_t arc hives/ Utilizando el comando restorecon para darle una nueva etiqueta a los archivos utiliza los contextos de los archivos predeterminados establecidos por la política así que estos archivos se les da la etiqueta predeterminada para el directorio actual. /sbin/restorecon -R arc hives/ ls -Z archives/ -rw-rw-r-- auser auser system_u:object_r:user_home _t file1 -rw-rw-r-- auser auser system_u:object_r:user_home _t file1.html -rw-rw-r-- auser auser system_u:object_r:user_home _t file2 -rw-rw-r-- auser auser system_u:object_r:user_home _t file2.html -rw-rw-r-- auser auser system_u:object_r:user_home _t file3 -rw-rw-r-- auser auser system_u:object_r:user_home _t file3.html -rw-rw-r-- auser auser system_u:object_r:user_home _t file4.html -rw-rw-r-- auser auser system_u:object_r:user_home _t file5.html -rw-rw-r-- auser auser system_u:object_r:user_home _t index.html 45.1.4. Creación de Archivos que Retienen Contextos de Seguridad Puede utilizar las utilidades tar o star para crear ficheros que retengan contextos de seguridad SELinux. El siguiente ejemplo utiliza star para demostrar como crear tal fichero. Necesita utilizar las opciones apropiadas -xattr y -H=exustar para asegurarse de que los atributos extras son capturados y de que el encabezamiento para el archivo *.star sea de un tipo que soporta por completo xattrs. Consulte la página del manual patra obtener mayor información sobre estas y otras opciones. The following example illustrates the creation and extraction of a set of html files and directories. Note that the two directories have different labels. Unimportant parts of the file context have been omitted for printing purposes (indicated by ellipses '...'): ls -Z public _html/ we b_file s/ public _html/: -rw-rw-r-- a user a user ...httpd_user_c onte nt_t 1.html
  • 7. 763 Creación de Archivos que Retienen Contextos de Seguridad -rw-rw-r-- a user a user ...httpd_user_c onte nt_t 2.html -rw-rw-r-- a user a user ...httpd_user_c onte nt_t 3.html -rw-rw-r-- a user a user ...httpd_user_c onte nt_t 4.html -rw-rw-r-- a user a user ...httpd_user_c onte nt_t 5.html -rw-rw-r-- a user a user ...httpd_user_c onte nt_t index.html we b_files/: -rw-rw-r-- a user ause r user_u:object_r:user_home_t 1.html -rw-rw-r-- a user ause r user_u:object_r:user_home_t 2.html -rw-rw-r-- a user ause r user_u:object_r:user_home_t 3.html -rw-rw-r-- a user ause r user_u:object_r:user_home_t 4.html -rw-rw-r-- a user ause r user_u:object_r:user_home_t 5.html -rw-rw-r-- a user ause r user_u:object_r:user_home_t inde x.html El siguiente comando crea el fichero reteniendo todos los contextos de seguridad de SELinux: star -xattr -H=e xustar -c -f a ll_we b.sta r public _html/ we b_file s/ star: 11 blocks + 0 bytes (total of 112640 bytes = 110.00k). Utilice el comando ls con la opción -Z para validar el contexto de seguridad: ls -Z all_web.star -rw-rw-r-- a user auser user_u:object_r:user_home _t 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 política especifica para tomar un tipo temporal derivativo, el comportamiento predeterminado es adquirir el tipo tmp_t. cp all_we b.sta r /tmp/ cd /tmp/ ls -Z all_web.star -rw-rw-r-- a use r a user user_u:objec t_r:tmp _t a ll_we b.sta r Ahora puede expandir los ficheros utilizando star y restablece los atributos extendidos: star -xattr -x -f all_web.star star: 11 blocks + 0 bytes (total of 112640 bytes = 110.00k). ls -Z /tmp/public _html/ /tmp/we b_file s/ /tmp/public _html/: -rw-rw-r-- auser auser ...httpd_sys_c onte nt_t 1.html -rw-rw-r-- auser auser ...httpd_sys_c onte nt_t 2.html -rw-rw-r-- auser auser ...httpd_sys_c onte nt_t 3.html -rw-rw-r-- auser auser ...httpd_sys_c onte nt_t 4.html -rw-rw-r-- auser auser ...httpd_sys_c onte nt_t 5.html -rw-rw-r-- auser auser ...httpd_sys_c onte nt_t inde x.html /tmp/we b_files/: -rw-rw-r-- auser auser user_u:object_r:user_home _t 1.html -rw-rw-r-- auser auser user_u:object_r:user_home _t 2.html -rw-rw-r-- auser auser user_u:object_r:user_home _t 3.html -rw-rw-r-- auser auser user_u:object_r:user_home _t 4.html -rw-rw-r-- auser auser user_u:object_r:user_home _t 5.html -rw-rw-r-- auser auser user_u:object_r:user_home _t inde x.html
  • 8. 764 Creación de Archivos que Retienen Contextos de Seguridad Atención Si utiliza una ruta absoluta cuando crea un fichero utilizando star, el fichero se expande en esa misma ruta. Por ejemplo, un fichero hecho son este comando restablece los archivos a /var/log/httpd/: star -xattr -H=e xustar -c -f httpd_logs.star /var/log/httpd/ Si trata de expandir este fichero, star emite una advertencia si los archivos en la ruta son más nuevos que los que se encuentran el fichero. 45.2. Controles administrativos de SELinux In addition to the tasks often performed by users in Sección 45.1, “Control de Usuario Final de SELinux”, SELinux administrators could be expected to perform a number of additional tasks. These tasks typically require root access to the system. Such tasks are significantly easier under the targeted policy. For example, there is no need to consider adding, editing, or deleting Linux users from the SELinux users, nor do you need to consider roles. Esta sección cubre los tipos de tareas que se necesitan de un administrador que mantiene Red Hat Enterprise Linux ejecutando SELinux. 45.2.1. Ver el Estado de SELinux El comando sestatus proporciona una vista configurable al estado de SELinux. La forma más simple de este comando muestra la siguiente información: [root@localhost ~]# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Polic y ve rsion: 21 Policy from config file: targeted La opción -v incluye información sobre los contextos de seguridad de una serie de archivos que se encuentran especificados en /etc/sestatus.conf: [root @localhost ~]# sestatus -v SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Polic y ve rsion: 21 Policy from config file: targeted Proc ess c onte xts: Current c onte xt: user_u:syste m_r:unconfined_t Init context: system_u:system_r:init_t /sbin/minge tty syste m_u:syste m_r:getty_t
  • 9. 765 Creación de Etiquetas Nuevas para Sistemas de Archivos /usr/sbin/sshd syste m_u:syste m_r:unc onfine d_t:s0-s0:c 0.c 1023 File contexts: Controlling term: use r_u:objec t_r:de vpts_t /etc /passwd syste m_u:objec t_r:etc _t /etc/shadow system_u:object_r:sha dow_t /bin/ba sh syste m_u:objec t_r:shell_e xec _t /bin/login syste m_u:obje ct_r:login_e xec _t /bin/sh syste m_u:object_r:bin_t -> syste m_u:object_r:shell_e xec _t /sbin/a ge tty syste m_u:objec t_r:getty_e xec _t /sbin/init system_u:object_r:init_exec_t /sbin/mingetty syste m_u:object_r:getty_e xec _t /usr/sbin/sshd syste m_u:obje ct_r:sshd_e xec _t /lib/libc.so. 6 syste m_u:object_r:lib_t -> syste m_u:objec t_r:lib_t /lib/ld-linux.so. 2 syste m_u:object_r:lib_t -> syste m_u:object_r:ld_so_t La -b presenta el estado actual de los valores boleanos. Puede utilizar esto en combinación con grep u otras herramientas para determinar el estado de valores boleanos en particular: [root@host2a ~]# sesta tus -b | gre p httpd | grep on$ httpd_builtin_scripting on httpd_disa ble _tra ns on httpd_ena ble_cgi on httpd_enable_homedirs on httpd_unifie d on 45.2.2. Creación de Etiquetas Nuevas para Sistemas de Archivos Puede que nunca necesite crear etiquetas nuevas para un sistemas de archivos completo. Usualmente esto sólamente ocurre cuando crea una etiqueta nueva para un sistema de archivos por primera vez para SELinux o cuando está cambiando entre diferentes tipos de políticas así como el cambio de la política objetivo a la estricta. Cre ación de Etique tas Nue vas para un Siste ma de Archivos Utilizando init El método recomendado para crear una etiqueta nueva para un sistemas de archivos es reinciando la máquina. Esto permite que el proceso init realice la creación de una nueva etiqueta asegurándose de que las aplicaciones tienen las etiquetas correctas cuando se 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 procesos continuen ejecutándose con un contexto incorrecto. Puede llegar a ser dificil asegurarse manualmentede que todos los demonios son reiniciados y ejecutados en el contexto correcto. Utilice el siguiente procedimiento para cambiar la etiqueta de un sistema de archivos utilizando este método. touch /.autorelabel reboot En tiempo de arranque init.rc verifica la existencia de /.autorelabel. Si este archivo existe, SELinux crea etiquetas nuevas para el sistema de archivos completo (utilizando el comando /sbin/ fixfiles -f -F relabel) y luego borra /.autorelabel.
  • 10. 766 Creación de Etiquetas Nuevas para Sistemas de Archivos Cre acón de Etique tas Nuevas para un Siste ma de Archivos utilizando 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 siguiente comando para crear una etiqueta nueva para un sistemas de archivos utilizando sólamente el comando fixfiles: fixfiles relabel Utilice el siguiente comando para crear etiquetas nuevas para un sistema de archivos con base en la base de datos RPM: fixfiles -R <packagenam e> restore Utilizando fixfiles para restablecer contextos de los paquetes es más seguro y rápido. Atención El ejecutar fixfiles en el sistema de archivos completo sin reiniciar puede hacer inestable el sistema. Si la operación de creación de una nueva etiqueta aplica una nueva política que es diferente de la política que se encontraba cuando el sistema se reinició, los procesos existentes pueden estar ejecutándose en dominios incorrectos e inseguros. Por ejemplo, un proceso puede estar en un dominio que no es una transición permitida para ese proceso en la nueva política, dados los permisos inesperados en sólo ese proceso. Además una de las opciones para fixfiles relabel pide aprobación para vaciar /tmp/ ya que no es posible crear una etiqueta nueva de manera confiable para /tmp/. Debido a que fixfiles se ejecutacomo root, se borran los archivos temporales de los cuales dependen las aplicaciones. Esto puede hacer el sistema inestable o que se comportede una manera inesperada. 45.2.3. Administración de Directorios Principales NFS En Red Hat Enterprise Linux 5, la mayoría de los demonios objetivo no interactúan con los datos de usuarios y no son afectados por los directorios principales montados con NFS. El Servidor Apache HTTP es una excepción. Por ejemplo los scripts CGI que se encuentran montados en el sistemade archivos tienen el tipo nfs_t, el cual es un tipo que no se le permite ejecutar a httpd_t. Si tiene problemas con el tipo predeterminado de nfs_t trate de montar los directorios principales con un contexto diferente: mount -t nfs -o c onte xt=user_u:objec t_r:user_home _dir_t fileserver.exa mple.c om:/share d/homes/ /home
  • 11. 767 Otorgar Acceso a un Directorio o a un Arbol Atención Sección 45.2.9, “Especificación del Contexto de Seguridad del Sistema de Archivos Entero” explains how to mount a directory so that httpd can execute scripts. If you do this for user home directories, it gives the Apache HTTP Server increased access to those directories. Remember that a mountpoint label applies to the entire mounted file system. Las versiones futuras de la política de SELinux abordan la funcionalidad de NFS. 45.2.4. Otorgar Acceso a un Directorio o a un Arbol De manera similay a los permisos estándares de Linux DAC, un demonio objetivo tiene que tener permisos SELinux para poder descender en el árbol de directorios. Esto no significa que un directorio y su cotenido necesitan tener el mismo tipo. Hay muchos tipos así como root_t, tmp_t y usr_t que otorgan acceso de lectura para un directorio. Estos tipos son apopiados para directorios que no contienen ninguna información confidencial y que usted quiere que sean ampliamente leíbles. También se pueden utilizar para un directorio padre de directorios más seguros con contextos diferentes. Si está trabajando con un mensaje avc: deniedhay algunos problemas comunes que surgen con la traversal del directorio. Por ejemplo, muchos programas ejecutan un comando euqivalente a ls - l / que no es necesario para su operación pero que genera un mensaje de rechazo en los registros. Para estos necesita crear una regla dontaudit en su archivo local.te. Al tratar de interpretar mensajes de rechazo de AVC no se confunda por el componente path=/. La ruta no está relacionada con la etiqueta para el sistema de archivos root, /. De hecho es relativo al root del sistema de archivos en el nodo del dipositivo. Por ejemplo, si su directorio /var/ se encuentra ubicado en un dispositivo LVM (Administración de Volúmenes Lógicos 1 ), /dev/dm-0, el nodo dispositivo es identificado en el mensaje como dev=dm-0.Cuando vea path=/ en este ejemplo, ese es el nivel superior del dispositivo LVM dm-0, no necesariamente el mismo que la designación del sistema de archivos root /. 45.2.5. Copias de Seguridad y Restauración del Sistema Refer to the explanation in Sección 45.1.4, “Creación de Archivos que Retienen Contextos de Seguridad”. 45.2.6. Activación o Desactivación del Refuerzo You can enable and disable SELinux enforcement at runtime or configure it to start in the correct mode at boot time, using the command line or GUI. SELinux can operate in one of three modes: disabled, meaning not enabled in the kernel; permissive, meaning SELinux is running and logging but not controlling permissions; or enforcing, meaning SELinux is running and enforcing policy. Utilice el comando setenforce para cambiar entre los modos permisivo y reforzar durante el tiempo de ejecución. Utilice setenforce 0 para entrar en modo permisivo y utilice setenforce 1 para entrar en modo de reforzamiento. LVM es el agrupamiento físico en los pools virtuales que se particionan en volúmenes lógicos.
  • 12. 768 Otorgar Acceso a un Directorio o a un Arbol El comando sestatus presenta el modo actual y el modo del archivo de configuración referenciado durante el arranque: sestatus | grep -i mode Curre nt mode: permissive Mode from config file: permissive Observe que el cambio del refuerzo durante tiempo de ejecución no afecta la configuración de tiempo de arranque: setenforce 1 sestatus | grep -i mode Current mode: enforcing Mode from config file: permissive También puede desactivar el modo de refuerzo para un sólo demonio. Por ejemplo, si está tratando de resolver problemas del demonio named y SELinux entonces puede apagar el refuerzo para sólo ese demonio. Utilice el comando getsebool para obtener el estado actual del valor booleano: [root@host2a ~]# getsebool name d_disable_trans named_disable_trans --> off Utilice el siguiente comando para desactivar el modo de refuerzo para este demonio: [root@host2a ~]# setsebool na med_disable_trans 1 [root@host2a ~]# getsebool name d_disable_trans named_disable_trans --> on Nota Esto configura el valor del tiempo de ejecución sólamente. Utilice la opción -P para hacer persistentes lo cambios a través de los reinicios. Any *_disable_trans booleans that are set to "on" invoke the conditional that prevents the process from transitioning to the domain on execution. Utilice el siguiente comando para ver cuales de estos valores booleanos están configurados: ge tse bool -a | gre p disa ble.*on httpd_disa ble _tra ns=1 mysqld_disable _trans=1 ntpd_disa ble _tra ns=1 Puede configurar cualquier número de valores booleanos utilizando el comando setsebool:
  • 13. 769 Activación o Desactivación del Refuerzo setsebool -P httpd_disa ble_trans=1 mysqld_disable_trans=1 ntpd_disa ble_trans=1 You can also use togglesebool <boolean_name> to change the value of a specific boolean: [root@host2a ~]# ge tse bool httpd_disa ble _tra ns httpd_disa ble _tra ns --> off [root@host2a ~]# toggle se bool httpd_disa ble _tra ns httpd_disable_trans: active Puede configurar todas estas características utilizando system-config-selinux. Se utilizan los mismos archivos de configuración así que los cambios aparecen bidireccionalmente. Cambio de un Valor Boole ano en Tiempo de Ejecución Utilice el siguiente procedimiento para cambiar un valor boolenao en tiempo de ejecución utilizando el GUI. Nota Se requieren privilegios de administrador para realizar este procedimiento. 1. En el menú Sistema vaya a Administración y luego haga click en Nivel de Seguridad y Cortafuegos para visualizar el diálogo de Configuración del Nivel de Seguridad. 2. Luego haga click en la pestaña SELinux y después en Configuración SELinux. 3. En la lista de selección haga click en la entrada Nombre del Servicio y seleccione la opción Desactivar la protección SELinux para un demonio nombrado. 4. Haga click sobre OK para aplicar el cambio. Observe que el recargar la política puede tomar un poco de tiempo.
  • 14. 770 Activación o Desactivación del Refuerzo Figura 45.1. Using the Security Level Configuration dialog box to change a runtime boolean. Si quiere controlar estas características con scripts puede usar los comandos setenforce(1), getenforce(1) y selinuxenabled(1). 45.2.7. Activar o Desactivar SELinux Importante Los cambios que realice a los archivos mientras que SELinux se encuentra desactivado puede llegar a darles una etiqueta de seguridad inesperada y los arcivos nuevos no tendrán una etiqueta. Puede que necesite darle una etiqueta nueva a una parte o para todo el sistema de archivos despúes de re-activar SELinux. Desde la línea de comandos puede editar el archivo /etc/sysconfig/selinux. Este archivo es un symlink a /etc/selinux/config. El archivo de configuraciónese explíca por si mismo. El cambiar
  • 15. 771 Cambio de la Política el valor de SELINUX o SELINUXTYPE cambia el estado de SELinux y el nombre de la política que se utiliza la proxima vez que el sistema arranca. [root@host2a ~]# cat /etc/sysconfig/selinux # This file controls the state of SELinux on the syste m. # SELINUX= can ta ke one of these three va lues: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instea d of e nforc ing. # disabled - SELinux is fully disabled. SELINU X=permissive # SELINUXTYPE= type of polic y in use. Possible va lues are: # targeted - Only targete d net work daemons are protected. # strict - Full SELinux protection. SELINUXT YP E=targeted # SETLOCALDEFS= Check loc al definition c ha nges SETLOCALDEFS=0 Cambio del Modo de SELinux Utilizando GUI Utilice el siguiente procedimiento para cambiar el modo de SELinux utilizando GUI. Nota Necesita privilegios de administrador para realizar este procedimiento. 1. En el menú Sistema vaya a Administración y luego haga click en Nivel de Seguridad y Cortafuegos para visualizar el diálogo de Configuración del Nivel de Seguridad. 2. Haga click en la pestaña SELinux 3. En Configuración SELinux puede selecionar Deshabilitado, Reforzar o Permisivo y luego haga click en OK. 4. Si lo cambió de Habilitado a Deshabilitado o viceversa neceita reiniciar las máquina para que tenga efecto el cambio. Los cambios realizados utilizando este diálogo se reflejan de inmediato en /etc/sysconfig/ selinux. 45.2.8. Cambio de la Política Esta sección proporciona una breve introducción para utilizar políticas personalizadas en su sistema. Una discución completa sobre este tema se encuentra más alla del alcance de este documento. Para cargar una política diferente en su sistema cambie la siguiente línea en /etc/sysconfig/ selinux: SEL IN U XT YPE =<policynam e>
  • 16. 772 Cambio de la Política 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 reboot Utilice el siguiente procedimiento para cargar una política diferente utilizando la utilidad system- config-selinux: Nota Necesita privilegios de administrador para realizar este procedimiento. 1. Asegúrese de que la estructura del directorio para la política requerida se encuentra completa bajo /etc/selinux . 2. En el menú Sistema vaya a Administración y luego haga click en Nivel de Seguridad y Cortafuegos para visualizar el diálogo de Configuración del Nivel de Seguridad. 3. Haga click en la pestaña SELinux 4. En la lista Tipo de Política seleccione la política que desea cargar y luego haga click en OK. Esta lista sólamente es visible si se instala más de una política. 5. Reinicie la máquina para que los cambios tengan efecto:
  • 17. 773 Especificación del Contexto de Seguridad del Sistema de Archivos Entero Figura 45.2. Using the Security Level Configuration dialog box to load a custom policy. 45.2.9. Especificación del Contexto de Seguridad del Sistema de Archivos Entero Puede utilizar el comando mount -o context= para configurar un contexto individual para un sistema de archivos completo. Este puede ser un sistema de archivos que ya se encuentra montado y que soporta xattrs o un sistema de archivos de red que obtiene una etiqueta genfs tal como cifs_t o nfs_t. Por ejemplo, si necesita que el Servidor HTTP Apache lea desde un directorio montado o que se produzcaun loopback del sistema de archivos necesitará configurar el tipo como httpd_sys_content_t: mount -t nfs -o context=syste m_u:object_r:httpd_sys_c onte nt_t server1.e xa mple.c om:/shared/scripts /var/www/c gi
  • 18. 774 Especificación del Contexto de Seguridad del Sistema de Archivos Entero Tip Cuando soluciona problemas relacionados con httpd y SELinux reduce la complejidad de su situación. Por ejemplo, si tiene el sistema de archivos montado en /mnt y enlazado simbólicamente a /var/www/html/foo tiene dos contextos de seguridad de los que se debe preocupar. Debido a que un contexto de seguridad es de la clase de objeto file y el otro de tipo lnk_file, son creados de manera diferente por l polític y puede llegar a tener lugar un comportamiento inesperado. 45.2.10. Cambio de la Categoria de Seguridad de un Archivo o Usuario 45.2.11. Ejecución de un Comando en un Contexto de Seguridad Especifico Puede utilizar el comando runcon para ejecutar un comando en un cotexto específico. Esto esútil para scripts o para probar políticas pero se debe asegurar de que es implementado de manera correcta. Por ejemplo, puede utilizar el siguiente comando para ejecutar un script para probar una posible mala etiquetación del contenido. Los argumentos que aparecen después del comando son considerados como parte del comando (en este ejemplo, ~/bin/contexttest es un script definido por el usuario). runcon -t httpd_t ~/bin/contexttest -ARG1 -ARG2 También puede especificar el contexto completo así: runcon user_u:syste m_r:httpd_t ~/bin/contexttest 45.2.12. Comandos Utiles para Scripts La siguiente es una lista de los comandos útiles introducidos con SELinux y los cuales le pueden ser útiles al escribir scripts para ayudar a administrar su sistema: getenforce Este comando devuelve el estado de refuerzo de SELinux. setenforce [ Enforcing | Permissive | 1 | 0 ] Este comando controla el modo de refuerzo de SELinux. La opción 1 o Refuerzo le dice a SELinux que entre el modo de refuerzo. La opción 0 o Permisivo le dice a SELinux que entre en modo pasivo. Todavíase registran las violaciones de acceso pero no se previenen. selinuxenabled El comando sale con un estado 0 si se habilita SELinux y 1 si SELinux es deshabilitado.
  • 19. 775 Cambio a un Rol Diferente selinuxena bled echo $? 0 getsebool [-a] [boolean_name] This command shows the status of all booleans (-a) or a specific boolean (<boolean_name>). setsebool [-P] <boolean_name> value | bool1=val1 bool2=val2 ... Este comando configura uno o más valores boolenaos. La opción -P hace que los cambios sean persistentes en los reinicios. togglesebool boolean ... Este comando alterna la configuración de uno o más valores booleanos. Esto afecta la configuración de los valores booleanos en la memoria sólamente y los cambios no son persistentes en los reinicios. 45.2.13. Cambio a un Rol Diferente Utilice el comando newrole para ejecutar una shell nueva con el tipo y/o rol especificado. El cambio de roles típicamente sólo tiene sentido en la política estricta; la política objetivo generalmente está restringida a un sólo rol. Cambiar los tipos puede ser útil para propositos de prueba, validación y desarrollo. newrole -r <role_r > -t <type_t> [-- [ARGS]...] The ARGS are passed directly to the shell specified in the user's entry in the /etc/passwd file. Nota El comando newrole es parte del paquete policycoreutils-newrole, el cual se necesita si instala la política MLS o la estricta. No es instalada por defecto en Red Hat Enterprise Linux. 45.2.14. Cuando Reiniciar La razón principal para reiniciar el sistema desde la perspectiva de SELinux es para dar etiquetas nuevas al sistema de archivos. en ciertas ocasiones puede que necesite reinicar el sistema para habilitar o deshabilitar SELinux. 45.3. Control Analista de SELinux Esta sección describe algunas de las tareas comunes que un analista de seguridad puede llegar a necesitar realizar en un sistema SELinux. 45.3.1. Activación de la Auditoría de Kernel Como parte de un análisis de SELinux o de la solución de problemas pude que usted elija habilitar una completa auditoría a nivel de kernel. Esto puede llegar a ser bastante verboso debido a que genera uno o más mensajes de aditoría adicionales por cada mensaje de auditoría AVC. Para habilitar este nivel de auditoría agregue el parámetro audit=1 a su línea de arranque de kernel ya sea en el archivo /etc/grub.conf o en el menú GRUB en tiempo de arranque.
  • 20. 776 Cambio a un Rol Diferente Este es un ejemplo de una entrada de registro de auditoríacompleta cuando se le niega acceso a httpd a ~/public_html porque el directorio no tiene un etiqueta de contenido de web. Note que los sellos de fecha y el número serial el el cmpo de la auditoría son idénticos en ambos casos. Esto hace más fácil el seguirle la pista a un evento específico en los registros de auditoría: Jan 15 08:03:56 hostname kernel: audit(1105805036.075:2392892): avc: de nied { getattr } for pid=2239 e xe =/usr/sbin/httpd path=/home/auser/public_html dev=h db2 ino=921135 sconte xt=user_u:syste m_r:httpd_t tconte xt=syste m_u:object_r:user_home _t tclass=dir El siguiente mensaje de auditoría dice más sobre la fuente incluyendo la clase de llamada de sistema involucrada mostrando que el http trató de iniciar el directorio: Jan 15 08:03:56 hostname kernel: audit(1105805036.075:2392892): syscall=195 exit=4294967283 a0=9ef88e0 a1=bfecc0d4 a2=a97ff4 a3=bfecc0d4 items=1 pid=2239 loginuid=-1 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 El siguiente mensaje proporciona más información sobre el objetivo: Jan 15 08:03:56 hostname kernel: audit(1105805036.075:2392892): item=0 name=/home/auser/public_html inode=921135 dev=00:00 El sello de número serial siempre es idéntico para un evento revisado en particular. El sello de fecha pude que sea o no idéntico. 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. 45.3.2. Volcado y Vista de Registros La implementación de Red Hat Enterprise Linux 5 enruta los mensajes de auditoría AVC a /var/ log/messages. Puede utilizar cualquiera de las utilidades de búsqueda estándar (por ejemplo, grep) para buscar líneas que contengan avc o audit.