45 trabajar con se linux

527 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
527
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

45 trabajar con se linux

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.

×