Está en la página 1de 4

SELinux en CentOS 5 y Fedora. Introduccin.

prctica de desactivar SELinux. Ciertamente consume bastantes recursos, pero brinda un nivel de seguridad superior que en un futuro, que esperemos sea muy lejano, podra ser de gran utilidad para impedir ataques dirigidos especficamente hacia GNU/Linux. La gran popularidad que estn teniendo las computadoras ultra-porttiles est incrementando el nmero de usuarios de GNU/Linux, lo cual eventualmente tambin significar que ir surgiendo equipamiento lgico malicioso (malware) especficamente diseado para GNU/Linux. A continuacin explico, de forma breve, como utilizar de manera bsica getsebool y setsebool (y un poco de chcon) en CentOS 5 (aplicable a Red Hat Enterprise Linux 5) y Fedora 10 (y versiones posteriores) desde la terminal, ejemplificando polticas para algunos servicios.

Qu es SELinux?
SELinux (del ingls Security-Enhanced Linux En si es una coleccin de parches que fueron integrados hace algunos aos al ncleo de Linux, fortaleciendo sus mecanismos de control de acceso y forzando la ejecucin de los procesos dentro de un entorno con los mnimos privilegios necesarios. Utiliza un modelo de seguridad de control de acceso obligatorio. Es una implementacin compleja y robusta que suele ser muy oscura para la mayora de los usuarios. Debido a sto, falta de documentacin amistosa y que muchos servicios simplemente son imposibles de operar sin una poltica correspondiente, muchas personas suelen desactivarlo editando /etc/sysconfig/selinux. El objetivo de este artculo es servir como una breve introduccin a los conceptos bsicos de administracin de SELinux.

Mandato getsebool
Este mandato permite listar polticas en SELinux, y determinar si estn activos o inactivos. Bsicamente se utiliza de la siguiente forma:
getsebool -a |grep cadena

Donde cadenaroot se puede utilizar lo siguiente:


getsebool -a |grep ftp

Lo anterior debe regresar algo similar como lo siguiente:


allow_ftpd_anon_write --> off allow_ftpd_full_access --> off allow_ftpd_use_cifs --> off allow_ftpd_use_nfs --> off ftp_home_dir --> off httpd_enable_ftp_server --> off tftp_anon_write --> off

Mandato setsebool.
Setsebool permite cambiar los valores para diferentes polticas de SELinux, mismas que pueden verse a travs de el mandato getsebool. La sintaxis bsica es la siguiente:
setsebool nombre_politica valor

Cuando se ejecuta de la manera anteriormente descrita, las polticas son aplicadas de inmediato y estarn vigentes hasta el siguiente reinicio del sistema. Para hacer permanentes las polticas, se utiliza el mismo mandato con la opcin -P:
setsebool -P nombre_politica valor

A continuacin se muestran algunos ejemplos de gestin de polticas para varios servicios.

Servicios de FTP.
Para el servicio de FTP, como sera a travs de VSFTPD, interesan las siguientes polticas: allow_ftpd_anon_write: Permite a los usuarios annimos poder escribir en el servidor. allow_ftpd_full_access: Permite lectura y escritura sobre todos los ficheros disponibles desde el servidor. allow_ftpd_use_cifs: Permite transferencias de datos desde CIFS. allow_ftpd_use_nfs: Permite transferencias de datos desde NFS ftp_home_dir: Permite a los usuarios locales poder acceder a sus directorios de inicio. Para activar estas, se utiliza el mandato setsebool con el nombre de la poltica y el valor 0 o bien 1 para desactivar o activar, respectivamente. En el siguiente ejemplo se activa poder acceder a los directorios de inicio de los usuarios:
setsebool ftp_home_dir 1

Lo anterior permitira que los usuarios puedan acceder a sus propios directorios de inicios a travs de VSFTPD, hasta que el sistema sea reiniciado. Para hacer permanente el cambio, se utiliza setsebool con la opcin -P, de ls siguiente manera:
setsebool -P ftp_home_dir 1

OpenVPN.
Otro tpico ejemplo es del OpenVPN, como cliente y servidor. Existen dos polticas: openvpn_enable_homedirs: Permite utilizar certificados almacenados en los directorios de los usuarios. openvpn_disable_trans: Por omisin, SELinux impide utilizar OpenVPN como servidor. Esta poltica permite desactiva toda gestin de SELinux sobre OpenVPN, pero permite a ste funcionar como servidor. Para la poltica de openvpn_enable_homedirs, bajo algunas circunstancias se necesita permitir a los usuarios poder conectarse a redes VPN utilizando certificados que el mismo usuario almacena en su directorio de inicio, y esta es precisamente la poltica que lo permite. Con el nivel de seguridad por omisin, solo se podran utilizar certificados definidos por el administrador en algn directorio del sistema.

Apache.
Cuando se trabaja con directorios que sern accedidos desde redes pblicas, como un directorio virtual o un directorio para dominio virtual en Apache, se activa la poltica httpd_enable_homedirs y se utiliza el mandato chcon para permitir el acceso a los directorios ~/public_html, aadiendo el tipo httpd_sys_content_t.
setsebool -P httpd_enable_homedirs 1 chcon -R -t httpd_sys_content_t ~user/public_html

Para permitir la ejecucin de programas CGI, se utiliza:


setsebool -P httpd_enable_cgi 1

Para permitir enviar correo desde apache, se utiliza:


setsebool -P httpd_can_sendmail 1

Para desactivar que SELinux controle a Apache, en su totalidad, se puede utilizar:


setsebool -P httpd_disable_trans 1

Samba.
En Samba es comn la necesidad de permitir a este servicio operar como controlador de dominio. La poltica que lo habilita es samba_domain_controller:
setsebool -P samba_domain_controller

Si se desea permitir el acceso a los directorios de inicio de los usuarios, se utiliza la poltica los directorios ~/public_html:
setsebool -P samba_enable_home_dirs on

Para poder utilizar directorios que se compartirn a travs de Samba, se utiliza chcon definiendo el tipo samba_share_t al contexto del directorio. En el siguiente ejemplo, se crear un directorio como /var/samba/publico:
mkdir -p /var/samba/publico

Para visualizar sus contextos en SELinux, se utiliza el mandato ls con la opcin -Z:
ls -Z /var/samba/

Lo anterior debe devolver una salida como la siguiente:


drwxr-xr-x root root unconfined_u:object_r:var_t:s0 publico

Para aadir el tipo samba_share_t, se utiliza el mandato chcon de la siguiente manera:


chcon -t samba_share_t /var/samba/publico

Al volver a visualizar el contexto del directorio con ls -Z, deber devolver una salida como la siguiente:

ls -Z drwxr-xr-x

root root unconfined_u:object_r:samba_share_t:s0 publico

Para compartir un directorios en Samba, hay dos polticas que se pueden utilizar: samba_export_all_ro: Permite el acceso a directorios compartidos en Samba en modo de solo lectura samba_export_all_rw: Permite el acceso a directorios compartidos en Samba en modo de lectura y escritura. Ejemplo:
setsebool -P samba_export_all_rw 1

Otros servicios.
En general, todos las polticas de todos los servicios pueden ser gestionadas buscando cuales estn relacionadas a travs del mandato getsebool. Los detalles respecto de qu es lo que hace dada poltica pueden consultarse a travs de las pginas de manual que estn instaladas en el sistema. Por ejemplo, para consultar que polticas hay para el servicio NFS, el manual que contiene las descripciones correspondientes es nfs_selinux.
man httpd_selinux

Otros manuales que pueden consultarse en el sistema para diferentes servicios son: kerberos_selinux named_selinux ftpd_selinux nis_selinux rsync_selinux ypbind_selinux pam_selinux httpd_selinux nfs_selinux samba_selinux

También podría gustarte