sábado, 11 de agosto de 2007

Windows Server 2003 - Access-Based Enumeration

En esta oportunidad voy a mencionar la herramienta Access-Based Enumeration (ABE).

Básicamente, ABE permite listar únicamente aquellos archivos y/o carpetas a los cuales los usuarios tienen acceso al browsear el contenido de, por ejemplo, un File Server (el ejemplo más común). Esto permite eliminar la confusión que puede causar en los usuarios al ingresar a un servidor en el cual existen grandes cantidades de archivos y carpetas, entre las cuales muchas no pueden ser accedidas más que por determinados usuarios.

Requisitos: Windows Server 2003 Service Pack 1.

Instalación

Se deberá descargar previamente la herramienta ABE, seleccionando el .msi que corresponda.

Asumiendo que descargamos la herramienta:

  1. 1. Ejecutar el archivo ABEUI.msi.
  2. 2. Seleccionar Next.



  3. 3. Seleccionar I Agree, y luego Next.



  4. 4. Modificar la ruta de instalación en caso de ser necesario, y luego seleccionar Next.



  5. 5. Seleccionar la opción que más se ajuste a las necesidades, en lo que respecta a la habilitación de la herramienta en todos las carpetas compartidas, o habilitar individualmente en cada carpeta compartida. Luego, seleccionar Next.
    1. Nota: En nuestro caso, y por una cuestión práctica, seleccionaremos la 2da opción, lo cual nos permitirá elegir con criterio aquellas carpetas en las cuales deseamos aplicar el uso de la herramienta.



  6. 6. Seleccionar Next para dar comienzo a la instalación.
  7. 7. Una vez finalizada la instalación, seleccionar Close.

Configuración

  1. 1. Seleccionar la carpeta compartida y acceder a sus propiedades.
  2. 2. Seleccionar el tab Access-Based Enumeration.
  3. 3. Seleccionar el Checkbox Enable access-based enumeration on this share folder.
    1. Nota: Seleccionar la 2da opción implica, como se describe, habilitar ABE en todas las carpetas compartidas del servidor, lo cual no haremos en este caso.



  1. 4. Seleccionar OK.
  2. 5. Listo, ABE ya se encuentra configurado en la carpeta compartida que seleccionamos.
Información Adicional

Perfecto, tenemos ABE configurado en la/s carpeta/s seleccionada/s, pero, ¿qué pasa si, por ejemplo, el usuario TestUser1, tiene permisos R&E this folder only en USERS\Level1\Level2 (en negrita se indican las carpetas en las cuales tiene asignado dicho permiso)?. Simplemente, el usuario no podrá acceder browseando el destino nivel por nivel dado que al ingresar a USERS, Level1 no estará visible.

¿Y qué pasa si amplificamos esta situación en un árbol mucho más amplio que el citado en el ejemplo, y además suponemos que contamos con, por ejemplo, 200 usuarios que acceden a diferentes recursos del mismo servidor? Para esto tenemos dos soluciones; 1) asignamos manualmente permisos R&E this folder only en cada nivel que requiera cada usuario, lo cual por supuesto es inviable y para nada recomendado (excepto que tengan tiempo y ganas de hacerlo), o podemos hacer uso de un archivo .BAT o .CMD que contenga lo siguiente a modo de ejemplo:

cscript xcacls.vbs [Rutadelrecursocompartido]/S /T /E /G "[grupoalqueseleasignaránpermisos]":6184B /e /spec A /L [log.txt]

Nota: No es objetivo de esta nota explicar los parámetros de la herramienta XCACLS.VBS, sin embargo en el siguiente link encontrarán todas las referencias.

Luego de haber aplicado el script, si bien los usuarios podrán ver todas carpetas dentro del recurso compartido, no podrán ver los archivos contenidos en aquellas en las cuales realmente no deban acceder. Más allá de que esta solución no sea la mejor, al menos proteje lo más importante, que es la confidencialidad y la integridad de aquellos archivos a los cuales se debe otorgar acceso solo a quien/es corresponda/n.

Por supuesto, el caso mencionado es uno de los tantos ejemplos que se pueden presentar en base a diferentes formas y definiciones que se tomen a la hora de aplicar permisos en un File Server.

Espero que les sea de utilidad.

Saludos.

Marcelo.

4 comentarios:

Venezuela Brilla dijo...

hola,

M puedes explicar cortito que es un servidor "file based?"
soy Laura
Laurar757@gmail.com

Marcelo di Iorio dijo...

Hola Laura.

Te envié un mail a la dirección que me pasaste.

Saludos.

Leonel Riveroll dijo...

Hola Marcelo, agradezco mucho que exista gente como tu ya que las cosas que se encuentran en la red, ha veces no son utiles, pero hay momentos en los cuales encuantras algo como esta guia y quedas maravillado, yo solamente tengo una duda...

Se me ocurrio que puedo tener un file server, y ponerle los privilegios y restricciones a los usuarios sobre las carpetas correspondiente, pero para cada estructura de carpetas la raiz esta controlada por un gerente de area, suponiendo que hay varios gerentes.

Entonces lo que pretendo es que cuando un subordinado quiera utilizar archivos y carpetas, sea el gerente el que le de el privilegio de usar dicho recurso del file server, solo para ello.

Ejmplo: solo quiero subir el archivo "bancos.xls" a la ruta \\principal\areas\area1\reportes_bancarios, entonces el acceso que le dara el gerente es solo por la subida de ese archivo y en el momento en que se termine la subida se debe de cambiar los privilegios a solo lectura de esa carpeta para ese usuario.

Es esto posible?
Como lo puedo hacer?
Te agradezco de antemano la aportacion.

Saludos!

Marcelo di Iorio dijo...

Hola Leonel:

Muchas gracias por tus palabras! Justamente una de las ideas por las cuales decidí bloggear fue aportar mis conocimientos a quienes los necesiten, ya que no todos sabemos o somos expertos en todos los temas.

En cuanto a tu tema, dejame decirte que siempre los temas relacionados con el otorgamiento de permisos a nivel file system tiene varias soluciones posibles, algunas más óptimas que otras, pero en fin, todas resuelven el problema de una u otra manera.

En este caso puntual, me surgen varias suposiciones, las cuales son:

- Asumo que los permisos otorgados a los gerentes se heredan desde el nivel principal de la estructura de carpetas, a todo el árbol, o sea a todas la subcarpetas.

- Asumo que las cuentas de usuario de los gerentes no están asignadas directamente al recurso, si no que en las ACLs agregas grupos locales, los cuales a la vez tienen uno o varios grupos globales, y estos contienen las cuentas de usuarios. En resumen, se cumple con la mejor práctica AGGDLP (te puedo comentar posteriormente más en detalle de que se trata).

- Asumo, por último, que los usuarios "subordinados", no están asignados directamente a los recursos, al igual que el caso anterior.

- Asumo que los gerentes cuentan con la idoneidad suficiente como para asignar correctamente los permisos que sean necesarios, y no más, y que son capaces de revertirlos de acuerdo a las necesidades de tu requerimiento.

Ahora, una pregunta:

- ¿Tienes pensado hacer esto utilizando ABE?

Una de las soluciones que se me ocurren:

A los gerentes:

Para poder cambiar permisos, deben tener el permiso Change Permissions. Este puede aplicarse a toda la estructura con herencia, o a porciones que tu desees. Además, presta atención a los diferentes filtros:
- Solo carpetas.
- Solo archivos.
- Etc. (los puedes ver en las opciones avanzadas de cualquier ACL).

A los usuarios:

Bueno, en este caso deberán tener mínimamente permisos de lectura y ejecución a todas las carpetas hasta alcanzar el destino en el cual se copiará el archivo. En este caso puedes evitar que vean los archivos intermedios hasta el destino, aplicando permisos de Read & Execute This folder & sub folders. También puedes probar con el permiso Traverse Folder. Finalmente, para poder copiar el archivo, deberán tener permisos write, o create file/write data.

Como ves, las opciones son muchas, algunas más restrictivas y otras no tanto.

Una sugerencia: Se me ocurre que puedes crear un repositorio común para todos los usuarios que desees, y que estos solo puedan escribir en dicho lugar, no borrar ni sobreescribir ni ninguna otra tarea, solo copiar archivos, y que luego el/los gerente/s copie/n dicho archivo en la ubicación final, en la cual solo ellos tendrían acceso.

Este tema dará para hablar mucho, si quieres puedes seguir contactándome por este medio, o a través del mail que verás en mi perfil, el cual también es mi cuenta de MSN Messenger.

Espero haberte ayudado con mi respuesta.

Saludos!