Documentos de Académico
Documentos de Profesional
Documentos de Cultura
C. Servidores Linux - Taller 11 SeLinux Basico
C. Servidores Linux - Taller 11 SeLinux Basico
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
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
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
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/
Al volver a visualizar el contexto del directorio con ls -Z, deber devolver una salida como la siguiente:
ls -Z drwxr-xr-x
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