Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Tutoriales / Seguridad en Unix y redes - Listas de control de acceso: ACLs

Seguridad en Unix y redes - Listas de control de acceso: ACLs

 ****- (7 opiniones)
GNU Free Documentation License Tutorial de Antonio Villalón Huerta - 28 de Febrero de 2006
Temas Relacionados: Seguridad informática
17. Listas de control de acceso: ACLs
Las listas de control de acceso (ACLs, Access Control Lists) proveen de un nivel adicional de seguridad a los ficheros extendiendo el clásico esquema de permisos en Unix: mientras que con estos últimos sólo podemos especificar permisos para los tres grupos de usuarios habituales (propietario, grupo y resto), las ACLs van a permitir asignar permisos a usuarios o grupos concretos; por ejemplo, se pueden otorgar ciertos permisos a dos usuarios sobre unos ficheros sin necesidad de incluirlos en el mismo grupo. Este mecanismo está disponible en la mayoría de Unices (Solaris, AIX, HP-UX...), mientras que en otros que no lo proporcionan por defecto, como Linux, puede instalarse como un software adicional. A pesar de las agresivas campañas de marketing de alguna empresa, que justamente presumía de ofrecer este modelo de protección en sus sistemas operativos frente al `arcaico' esquema utilizado en Unix, las listas de control de acceso existen en Unix desde hace más de diez años ([Com88]).
Los ejemplos que vamos a utilizar aquí (órdenes, resultados...) se han realizado sobre Solaris; la idea es la misma en el resto de Unices, aunque pueden cambiar las estructuras de las listas. Para obtener una excelente visión de las ACLs es recomendable consultar [Fri95], y por supuesto la documentación de los diferentes clones de Unix para detalles concretos de cada manejo e implementación.
La primera pregunta que nos debemos hacer sobre las listas de control de acceso es obvia: >cómo las vemos? Si habitualmente queremos saber si a un usuario se le permite cierto tipo de acceso sobre un fichero no tenemos más que hacer un listado largo:
anita:~# ls -l /usr/local/sbin/sshd -rwx
1 root bin 2616160 Apr 28 1997 /usr/local/sbin/sshd anita:~#
Viendo el resultado, directamente sabemos que el fichero sshd puede ser ejecutado, modificado y leído por el administrador, pero por nadie más; sin embargo, no conocemos el estado de la lista de control de acceso asociada al archivo. Para ver esta lista, en Solaris se ha de utilizar la orden getfacl:

anita:/# getfacl /usr/local/sbin/sshd # file: /usr/local/sbin/sshd # owner: root # group: bin user::rwx group::
#effective:
mask:
other:
anita:/#

Acabamos de visualizar una lista de control de acceso de Solaris; en primer lugar se nos indica el nombre del fichero, su propietario y su grupo, todos precedidos por `#'. Lo que vemos a continuación es la propia lista de control: los campos user, group y other son básicamente la interpretación que getfacl hace de los permisos del fichero (si nos fijamos, coincide con el resultado del ls -l). El campo mask es muy similar al umask clásico: define los permisos máximos que un usuario (a excepción del propietario) o grupo puede tener sobre el fichero. Finalmente, el campo effective nos dice, para cada usuario (excepto el propietario) o grupo el efecto que la máscara tiene sobre los permisos: es justamente el campo que tenemos que analizar si queremos ver quién puede acceder al archivo y de qué forma.
Sin embargo, hasta ahora no hemos observado nada nuevo; podemos fijarnos que la estructura de la lista de control de acceso otorga los mismos permisos que las ternas clásicas. Esto es algo normal en todos los Unix: si no indicamos lo contrario, al crear un fichero se le asocia una ACL que coincide con los permisos que ese archivo tiene en el sistema (cada archivo tendrá una lista asociada, igual que tiene unos permisos); de esta forma, el resultado anterior no es más que la visión que getfacl tiene de los bits rwx del fichero ([Gal96c]).
Lo interesante de cara a la protección de ficheros es extender los permisos clásicos del archivo, modificando su lista asociada. Esto lo podemos conseguir con la orden setfacl:
anita:~# setfacl -m user:toni:r-x /usr/local/sbin/sshd anita:~# getfacl /usr/local/sbin/sshd # file: /usr/local/sbin/sshd # owner: root # group: bin user::rwx user:toni:r-x #effective:
group::
#effective:
mask:
other:
anita:~#

Como vemos, acabamos de modificar la lista de control de acceso del archivo para asignarle a toni permiso de ejecución y lectura sobre el mismo. La orden setfacl se utiliza principalmente de tres formas: o bien añadimos entradas a la ACL, mediante la opción -m seguida de las entradas que deseemos añadir separadas por comas (lo que hemos hecho en este caso, aunque no se han utilizado comas porque sólo hemos añadido una entrada), o bien utilizamos el parámetro -s para reemplazar la ACL completa (hemos de indicar todas las entradas, separadas también por comas), o bien borramos entradas de la lista con la opción -d (de sintaxis similar a -m). Cada entrada de la ACL tiene el siguiente formato:

tipo:UIDGID:permisos

El tipo indica a quién aplicar los permisos (por ejemplo, user para el propietario del archivo, o mask para la máscara), el UID indica el usuario al que queremos asociar la entrada (como hemos visto, se puede utilizar también el login, y el GID hace lo mismo con el grupo (de la misma forma, se puede especificar su nombre simbólico). Finalmente, el campo de permisos hace referencia a los permisos a asignar, y puede ser especificado mediante símbolos rwx- o de forma octal.
Acabamos de indicar que el usuario toni tenga permiso de lectura y ejecución en el archivo; no obstante, si ahora este usuario intenta acceder al fichero en estos modos obtendrá un error:
anita:/usr/local/sbin$ id uid=100(toni) gid=10(staff) anita:/usr/local/sbin$ ./sshd bash: ./sshd: Permission denied anita:/usr/local/sbin$

>Qué ha sucedido? Nada anormal, simplemente está actuando la máscara sobre sus permisos (antes hemos dicho que debemos fijarnos en el campo effective, y aquí podemos comprobar que no se ha modificado). Para solucionar esto hemos de modificar el campo mask:

anita:~# setfacl -m mask:r-x /usr/local/sbin/sshd anita:~#

Si ahora toni intenta acceder al fichero para leerlo o ejecutarlo, ya se le va a permitir:

anita:/usr/local/sbin$ id uid=100(toni) gid=10(staff) anita:/usr/local/sbin$ ./sshd /etc/sshd_config: No such file or directory ...

Aunque obtenga un error, este error ya no depende de la protección de los ficheros sino de la configuración del programa: el administrador obtendría el mismo error. No obstante, sí que hay diferencias entre una ejecución de toni y otra del root, pero también son impuestas por el resto del sistema operativo Unix: toni no podría utilizar recursos a los que no le está permitido el acceso, como puertos bien conocidos, otros ficheros, o procesos que no le pertenezcan. Hay que recordar que aunque un usuario ejecute un archivo perteneciente al root, si el fichero no está setuidado los privilegios del usuario no cambian. Sucede lo mismo que pasaría si el usuario tuviera permiso de ejecución normal sobre el fichero, pero éste realizara tareas privilegiadas: podría ejecutarlo, pero obtendría error al intentar violar la protección del sistema operativo.
En Solaris, para indicar que una lista de control de acceso otorga permisos no reflejados en los bits rwx se situa un símbolo `+' a la derecha de los permisos en un listado largo:
anita:~# ls -l /usr/local/sbin/sshd -rwx
+ 1 root bin 2616160 Apr 28 1997 /usr/local/sbin/sshd anita:~#
Otra característica que tiene Solaris es la capacidad de leer las entradas de una lista de control de acceso desde un fichero en lugar de indicarlas en la línea de órdenes, mediante la opción -f de setfacl; el formato de este fichero es justamente el resultado de getfacl, lo que nos permite copiar ACLs entre archivos de una forma muy cómoda:

anita:~# getfacl /usr/local/sbin/sshd >/tmp/fichero anita:~# setfacl -f /tmp/fichero /usr/local/sbin/demonio anita:~# getfacl /usr/local/sbin/demonio # file: /usr/local/sbin/demonio # owner: root # group: other user::rwx user:toni:r-x #effective:r-x group::
#effective:
mask:r-x other:
anita:~#

Esto es equivalente a utilizar una tubería entre las dos órdenes, lo que produciría el mismo resultado:

anita:~# getfacl /usr/local/sbin/sshd | setfacl -f - /usr/local/sbin/demonio

Antes de finalizar este apartado dedicado a las listas de control de acceso, quizás sea conveniente comentar el principal problema de estos mecanismos. Está claro que las ACLs son de gran ayuda para el administrador de sistemas Unix, tanto para incrementar la seguridad como para facilitar ciertas tareas; sin embargo, es fácil darse cuenta de que se pueden convertir en algo también de gran ayuda, pero para un atacante que desee situar puertas traseras en las máquinas. Imaginemos simplemente que un usuario autorizado de nuestro sistema aprovecha el último bug de sendmail (realmente nunca hay un `último') para conseguir privilegios de administrador en una máquina; cuando se ha convertido en root modifica la lista de control de acceso asociada a /etc/shadow y crea una nueva entrada que le da un permiso total a su login sobre este archivo. Una vez hecho esto, borra todo el rastro y corre a avisarnos del nuevo problema de sendmail, problema que rápidamente solucionamos, le damos las gracias y nos olvidamos del asunto. >Nos olvidamos del asunto? Tenemos un usuario que, aunque los bits rwx no lo indiquen, puede modificar a su gusto un archivo crucial para nuestra seguridad. Contra esto, poco podemos hacer; simplemente comprobar frecuentemente los listados de todos los ficheros importantes (ahora entendemos por qué aparece el símbolo `+' junto a las ternas de permisos), y si encontramos que un fichero tiene una lista de control que otorga permisos no reflejados en los bits rwx, analizar dicha lista mediante getfacl y verificar que todo es correcto. Es muy recomendable programar un par de shellscripts simples, que automaticen estos procesos y nos informen en caso de que algo sospechoso se detecte.
Tabla de contenidos
  1. 1 - Introducción y conceptos previos
  2. 2 - Sobre la seguridad
  3. 3 - Sobre las redes
  4. 4 - Seguridad física de los sistemas
  5. 5 - Protección del hardware
  6. 6 - Protección de los datos
  7. 7 - Radiaciones electromagnéticas
  8. 8 - Administradores, usuarios y personal
  9. 9 - Ataques potenciales
  10. 10 - Qué hacer ante estos problemas
  11. 11 - El atacante interno
  12. 12 - El sistema de ficheros
  13. 13 - Sistemas de ficheros
  14. 14 - Permisos de un archivo
  15. 15 - Los bits SUID, SGID y sticky
  16. 16 - Atributos de un archivo
  17. 17 - Listas de control de acceso: ACLs
  18. 18 - Recuperación de datos
  19. 19 - Almacenamiento seguro
  20. 20 - Programas seguros, inseguros y nocivos
  21. 21 - La base fiable de cómputo
  22. 22 - Errores en los programas
  23. 23 - Fauna y otras amenazas
  24. 24 - Programación segura
  25. 25 - Auditoría del sistema
  26. 26 - El sistema de log en Unix
  27. 27 - El demonio syslogd
  28. 28 - Algunos archivos de log
  29. 29 - Logs remotos
  30. 30 - Registros físicos
  31. 31 - Copias de seguridad
  32. 32 - Dispositivos de almacenamiento
  33. 33 - Algunas órdenes para realizar copias de seguridad
  34. 34 - Políticas de copias de seguridad
  35. 35 - Autenticación de usuarios
  36. 36 - Sistemas basados en algo conocido: contraseñas
  37. 37 - Sistemas basados en algo poseído: tarjetas inteligentes
  38. 38 - Sistemas de autenticación biométrica
  39. 39 - Autenticación de usuarios en Unix: autenticación clasi
  40. 40 - Autenticación de usuarios en Unix: mejora de la seguridad (II)
  41. 41 - PAM
  42. 42 - Solaris
  43. 43 - Seguridad física en SPARC
  44. 44 - Servicios de red
  45. 45 - Usuarios y accesos al sistema
  46. 46 - El sistema de parcheado
  47. 47 - Extensiones de la seguridad
  48. 48 - El subsistema de red
  49. 49 - Parametros del núcleo
  50. 50 - Linux
  51. 51 - Seguridad física en x86
  52. 52 - Usuarios y accesos al sistema
  53. 53 - El sistema de parcheado
  54. 54 - El subsistema de red
  55. 55 - El núcleo de Linux
  56. 56 - AIX
  57. 57 - Seguridad física en RS/6000
  58. 58 - Servicios de red
  59. 59 - Usuarios y accesos al sistema (I)
  60. 60 - Usuarios y accesos al sistema (II)
  61. 61 - El sistema de log
  62. 62 - El sistema de parcheado
  63. 63 - Extensiones de la seguridad: filtros IP
  64. 64 - El subsistema de red
  65. 65 - HP-UX
  66. 66 - Seguridad física en PA-RISC
  67. 67 - Usuarios y accesos al sistema
  68. 68 - El sistema de parcheado
  69. 69 - Extensiones de la seguridad
  70. 70 - El subsistema de red
  71. 71 - El núcleo de HP-UX
  72. 72 - Seguridad de la subred: el sistema de red
  73. 73 - Algunos ficheros importantes
  74. 74 - Algunas órdenes importantes
  1. 75 - Servicios
  2. 76 - Algunos servicios y protocolos
  3. 77 - Servicios basicos de red
  4. 78 - El servicio FTP
  5. 79 - El servicio TELNET
  6. 80 - El servicio SMTP
  7. 81 - Servidores WWW
  8. 82 - Los servicios r-
  9. 83 - XWindow
  10. 84 - Cortafuegos: Conceptos teóricos
  11. 85 - Características de diseño
  12. 86 - Componentes de un cortafuegos
  13. 87 - Arquitecturas de cortafuegos
  14. 88 - Firewall-1
  15. 89 - ipfwadm/ipchains/iptables
  16. 90 - IPFilter
  17. 91 - PIX Firewall (I)
  18. 92 - PIX Firewall (II)
  19. 93 - Escaneos de puertos
  20. 94 - Spoofing
  21. 95 - Negaciones de servicio
  22. 96 - Interceptación
  23. 97 - Ataques a aplicaciones
  24. 98 - Sistemas de detección de intrusos
  25. 99 - Clasificación de los IDSes
  26. 100 - Requisitos de un IDS
  27. 101 - IDSes basados en maquina
  28. 102 - IDSes basados en red
  29. 103 - Detección de anomalías
  30. 104 - Detección de usos indebidos
  31. 105 - Implementación real de un IDS (I)
  32. 106 - Implementación real de un IDS (II)
  33. 107 - Algunas reflexiones
  34. 108 - Kerberos
  35. 109 - Arquitectura de Kerberos
  36. 110 - Autenticación
  37. 111 - Problemas de Kerberos
  38. 112 - Criptología
  39. 113 - Criptosistemas
  40. 114 - Clasificación de los criptosistemas
  41. 115 - Criptografía clasica
  42. 116 - Un criptosistema de clave secreta: DES
  43. 117 - Criptosistemas de clave pública
  44. 118 - Funciones resumen
  45. 119 - Esteganografía
  46. 120 - Algunas herramientas de seguridad
  47. 121 - Titan (I)
  48. 122 - Titan (II)
  49. 123 - TCP Wrappers
  50. 124 - SSH
  51. 125 - Tripwire
  52. 126 - Nessus
  53. 127 - Crack
  54. 128 - Gestión de la seguridad
  55. 129 - Políticas de seguridad
  56. 130 - Analisis de riesgos
  57. 131 - Estrategias de respuesta
  58. 132 - Outsourcing
  59. 133 - El "Área de Seguridad"
  60. 134 - Apéndice 1: Seguridad basica para administradores (I)
  61. 135 - Apéndice 1: Seguridad basica para administradores (II)
  62. 136 - Apéndice 2: Normativa (I)
  63. 137 - Apéndice 2: Normativa (II)
  64. 138 - Apéndice 2: Normativa (III)
  65. 139 - Apéndice 2: Normativa (IV)
  66. 140 - Recursos de interés en INet
  67. 141 - Glosario de términos anglosajones
  68. 142 - Conclusiones
  69. 143 - Bibliografía (I)
  70. 144 - Bibliografía (II)
  71. 145 - Bibliografía (III)
  72. 146 - Bibliografía (IV)
  73. 147 - Bibliografía (V)
  74. 148 - libro
Autor y licencia de 'Seguridad en Unix y redes - Listas de control de acceso: ACLs'
Antonio Villalón Huerta Extraído de: http://es.tldp.org/Manuales-LuCAS/doc-unixsec/unixsec-html/ GNU Free Documentation License
Licencia GNU Free Documentation License: http://www.gnu.org/copyleft/
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Seguridad en Unix y redes - Listas de control de acceso: ACLs'

Es muy fácil crear archivos en el sistema operativo UNIX. Por lo tanto, los usuarios... Más »
Documento con fundamentos teóricos de control de accesos en redes telemáticas; se tratan temas como... Más »
Hablar de redes de ordenadores siempre implica hablar de Unix. Por supuesto, Unix no es... Más »
Ken Thompson y Dennis Ritchie decidieron esbozar un sistema operativo que supliera las necesidades de... Más »
Esta guía no es un documento general de seguridad. Esta guía está específicamente orientada a... Más »
Gente Wiki
Rosa Maria Fragoso Martinez
Soy pedagoga con un diplomado en desarrollo humano de la iberoamericana, cuento con más de 15 años de experiencia en...
Alejandro Juárez
Tengo 29 años y soy arquitecto egresado de la unam. Actualmente me encuentro en el programa de maestría y doctorado...
Climatización, Ejecución de obras,...
Santiago Izquierdo
Psicólogo especializado en psicología del consumidor, con larga experiencia en investigación de mercados, publicidad y ventas. Experiencia docente universitaria por...
Campañas en Internet, Fidelización en Internet,...
Fernando Garrido
Me dedico a la enseñanza, mis areas de interes son Sistemas de Informacion Geografica, Networking, Datamining, Datawarehouse, Desarrollo de Portales,...
Protección de datos
Marta Juarez
Vivo al nortedelbermejo, norte de salta, donde aun habitan 8 etnias indígenas. Me gusta escribir narrativa, mitos y poemas. Dirijo...
Tomas
Soy licenciado en administracion de empresas desde el 2003, con maestria en finanzas desde el 2006. Trabajo como analista...
Banca privada, Cajas de ahorro,...
Suscribirse
¿Estás seguro de que deseas eliminar este capítulo?