viernes, 4 de enero de 2008

Listas de Control de Acceso (ACL's)

Fuente: LinuTeca

Las listas de control de acceso son otro mecanismo de seguridad en nuestro sistema Linux a tener en cuenta. A primera vista puede parecer que funcionan igual que el comando ‘chmod’ ya que indican que privilegios tiene un usuario o grupo en un archivo, pero la diferencia es muy importante ya que con el comando chmod indicamos los privilegios respecto al propietario del fichero o al grupo al que pertenece, y con las listas de control de acceso (ACL’s), podemos indicar los privilegios de cada archivo de forma individual, ya que cada archivo tiene su propia ACL.

Por ejemplo, podemos indicar a través de las ACL’s que un archivo cuyo propietario es ‘pepe’ y cuyo grupo sea ‘alumnos’ pueda ser escrito por otro usuario ‘juan’ sin que este pertenezca al grupo u sin ser propietario.

Antes de comenzar a usar las ACL’s tenemos que preparar nuestro sistema, para ello, lo primero es instalar el paquete:

sudo apt-get install acl

Lo siguiente será indicarle al sistema en que unidad o unidades queremos usar las ACL’s, esto se hace añadiendo la opción ‘acl’ en la línea del fstab en la que se encuentre la unidad donde queremos usarlas. Mi línea del fstab quedaría asi:

/dev/sda1 /media/300 auto rw,user,auto,exec,acl 0 0

A continuación explicaré como trabajar con las ACL’s gracias a los comandos getfacl y setfacl:

Con el comando ‘getfacl’ obtenemos la lista de control de acceso del archivo que le indiquemos y nos devolverá algo asi:

ekhtor@servidor:~$ getfacl fichero
# file: fichero
# owner: ekhtor
# group: ekhtor
user::rw-
group::r–
other::r–

Aquí podemos ver el nombre del fichero el propietario el grupo y luego, lo que más nos interesa, los permisos del propietario (user::rw-), los permisos del grupo(group::r–) y los de los otros (other::r–).
Ahora si queremos que, por ejemplo, nuestro usuario ‘pepe’ tenga permisos de escritura, lectura y ejecución sobre el archivo ‘fichero’ usaremos el comando setfacl:

root@servidor:/media/300# setfacl -m user:pepe:rwx fichero
root@servidor:/media/300# getfacl fichero
# file: fichero
# owner: ekhtor
# group: ekhtor
user::rw-
user:pepe:rwx
group::r–
mask::rwx
other::r–

Ahora en la nueva ACL podemos ver que el usuario pepe tiene permisos rwx y que el propietario tiene sólo rw-, cosa que sólamente con chmod es imposible de conseguir,ya que un usuario que no pertenece al grupo ni es propietario tiene más privilegios que el propietario y eso sólo se consigue a través de las ACL’s.
Las opciones más usadas del comando setfacl son:

-m Para modificar la ACL. Se usa seguido de user:usuario:permisos para modificar los permisos de un usuario o group:grupo:permisos para modificar los permisos del grupo. Ejemplos:

setfacl -m user:ekhtor:r-x fichero
setfacl -m group:alumnos:rw-:fichero

-x Para eliminar los permisos de el usuario o grupo indicado:

setfacl -x user:ekhtor fichero
setfacl group:alumnos fichero

-b Restaura la ACL a su estado inicial:

setfacl -b fichero

-R Hace recursivo en caso de ser un directorio los cambios en las ACL’s.

Bueno, hasta aquí creo que es lo básico para el manejo de las ACL’s, podéis encontrar más información en internet para un uso más meticuloso porque esto sólo es una breve introducción y como ya dije, supone un extra de seguridad ya que cuando usuarios novatos intenten borrar sus huellas con rootkits o zappers, no lo conseguirán si tenemos una buena configuración con las ACL’s.

Cuidado porque, a su vez, puede suponer un fallo de seguridad si no tenemos una herramienta que controle las modificaciones en las ACL’s, si un usuario se hace en nuestra máquina con permisos de root puede modificar la ACL del /etc/shadow para tener acceso ilimitado y sin embargo los permisos sigan siendo rw- r– —.

No hay comentarios: