Archive

HowTo: Micro-intro a SELinux

He visto, para mi pesar, muchas soluciones de "chmod 777 / -R" y estupideces por el estilo.

La gran mayoría de éstos vienen de usuarios que no saben ni qué onda; generalmente ubunteros inexpertos y no propensos a leer y a saber cómo están las cosas.

Te pido que no empieces con estas soluciones. En Fedora, seguido, debemos checar si SELinux no está impidiéndonos hacer algo y asignar la etiqueta necesaria para poder hacerlo.

SELinux nos impide hacer cosas cuando las hacemos mal; por ejemplo, poner archivos de samba en /home/samba o una página web en /home/miuser/paginas

Te recuerdo que existe el Filesystem Hierarchy Standard o HFS. Búscalo y entérate de los mejores lugares para poner las cosas.

SELinux en Fedora viene pre-configurado para permitir acceso de los daemonios solo en las carpetas reglamentadas por el FHS; por ejemplo:

Las páginas web van en /var/www

Los respaldos en /var/backup

Las DBs en /var/lib/

Los archivos de usuario en /home

Las librerías en /usr/lib, /usr/lib64, /lib, /usr/local/lib, etc.

Dicho ésto, algunas veces debes re-etiquetar algunas cosas por motivos ajenos a la distribución. Un ejemplo de esto es cuando instalas o desarrollas una aplicación web que necesita escribir en algún directorio o algún archivo. Para esto, existe una etiqueta: httpd_sys_content_rw_t; la cual permite, a apache, que escriba sobre un directorio y/o archivo específico.

Para configurar esto de manera temporal; mientras pruebas, usa:

<code>su -c 'chcon httpd_sys_content_rw_t /var/www/websites/miapp/tmp'</code>

Pero, cuando re-etiquetes, perderás esta etiqueta si no creas la política con semanage:

<code>su -c 'semanage fcontext -a -t httpd_sys_content_rw_t /var/www/websites/miapp/tmp'</code>

Una vez hecho ésto, solo haz un

<code>su -c 'restorecon -R /var/www/websites/miapp/tmp'</code>

para que se re-etiqueten los archivos debajo de ese directorio.

Para remover tu política, solo:

<code>su -c 'semanage fcontext -d /var/www/websites/miapp/tmp'</code>

Y no olvides re-etiquetar.

Si aprendes algo del FHS, no tendrás tantos problemas con SELinux. Y, por cierto, NO LO APAGUES! APR&Eacute;NDELO!

Debes leer mucho más al respecto de esto si lo quieres usar. Recuerda que SELinux es otra capa de protección/regulación. Debes tomar en cuenta el sistema de permisos de GNU & Linux y, además, los permisos avanzados.

# Páginas de referencia

http://www.pathname.com/fhs/

http://docs.fedoraproject.org/en-US/Fedora/13/html/Security-Enhanced_Linux

http://en.wikipedia.org/wiki/Filesystem_permissions

http://en.wikipedia.org/wiki/Setuid

http://en.wikipedia.org/wiki/Sticky_bit

http://en.wikipedia.org/wiki/Access_control_list

http://acl.bestbits.at/

http://en.wikipedia.org/wiki/Extended_file_attributes