albertoun miembro del SELinux team, Pete Loscoco, presento SELinux a la cumbre del kernel para su inclusion en el mismo
alberto<raul> mas tarde, miembros de varios proyectos de seguridad empezaron a colaborar y diseñar un framework para soportar varios de los proyectos de seguiridad existentes
alberto pequeño parentesis: si hay alguna duda a: #qc ( lo siento)
alberto1. el framework deberia de ser lo sufciientemente generico para que pueda soportar varios modelos de seguridad
alberto2. debe de ser ligero y no imponer complejidades excesivas
alberto3. debe de soportar solo modelos de control de acceso (cosas como auditorias completas, a menudo necesarias para una acerditacion, no serian soportadas)
alberto 4. Necesita soportar capacidades preexistentes
albertootro aspecto de la certificacion es a menudo la abilidad de auditar en tiempo real las transaccciones de un sistema
alberto a menudo cosas como el Common Criteria o certificaciones Orange Book requieren un especial nombramiento
albertouna es muy obvia, el control de acceso
alberto otro aspecto es revisar las transacciones en tiempo real en un sistema
albertoentonces, es necesario hacer logs sobre los accesos
albertoesta auditoria/logging esta mas alla del los objetivos actuales de del proyecto LSM
alberto el registro es muy simple, el modulo simplemente responde a las llamadas requeridas, y llama a register_security()
alberto asique permitidme comenzar a explicar algunos de los aspectos del diseño de LSM
albertopero primero, una pregunta
alberto hay una lista de objetos para los cuales los modulos de seguridad puedan ser escritos ?
albertopuede LSM soportar la funcionalidad mencionada por la gente de OpenBSD que conocemos como Separacion de privilegios?
alberto Es eso una lista de objetos para los que pueden escribirse modulos de seguridad?
albertoEso es lo q estaba pensando ;)
albertosi
alberto;-)
alberto esta bien, asique aqui estan algunas de las cualidades basicas del marco de LSM
alberto1. Provee la abilidad de registrar un nuevo modulo de seguridad
albertopermiteme echarle un rapido vistazo a la lista de objetos q estan protejidos, entonces mira a la respesta del syscall.
alberto3. Trata de romper el kernel en sus objetos "core", y fundamentalmente proteje contra accessos a los datos del objeto
albertopor eso, no es muy comun ver un LSM hook que parezca sospechosamente similar al punto de entrada del syscall
albertoel registro es muy simple, el modulo simplemente rellena los callbacks que se necesitan y llama a la función register_security()
albertode echo, la api interna de sockets es basicamente solo la api del syscall para socket...
alberto< rene:#qc> cdub: puedes mostrarme un ejemplo de una carrera aqui?
albertofoo es copiado dentro dle kernel, y encerrado. Si la interface LSM fuera antes de la traduccion, esto podria colgar foo, ganando acceso.
albertoentonces otro thread puede modificar foo. y el kernel podria entonces ver "nuevofoo", sabiendo q paso el LSM, guardandolo ....
albertoblam...
albertobien, solo una recapitulacion, ya que hay cuestiones espacidas...
* slack is away: I'm busy
albertoel framework del LSM es un simple api enlazado. Provee de registro y rellamadas a dentro del kernel
alberto< rene:#qc> cdub: otra capa del kernel?  de lo contrario no entiendo
albertono, espacio de usuario.
alberto< nab:#qc> es posible usar muchos modulos de seguridad al mismo tiempo, y si ocurre, que limitaciones hay
albertonab: esa es otra pregunt interesante
albertopermiteme posponerlo antes de responder
albertouna de las cosas que la interface LSM permiete es la abilidad de etiquetar los objetos del kernel con identificadores de seguridad
albertoeste es el principio de la abilidad para decir si una accion es segura.
albertoel modulo LSM podra compara el id de la tarea de seguridad  con el ide de seguridad del inode, por ejemplo.
albertoporque la clasifiaccion y etiquetado de seguridad es dificil para varios modulos de seguridad el compartir el espacio del LSM a la misma vez.
alberto(sin añadir algunas inteligentes capacidades a la interface que sabe que modulo esta siendo llamado el objeto).
albertolinus no queria especificamente eso
albertolinus no queria esto especialmente.
albertoy de hecho, la investigacion en seguridad demuestra que los modelos arbitrarios de seguridad componen? y producen resultados aleatorios
albertono es satisfactorio para la seguridad
albertoasique....LSM provee la capacidad de apilar modulos, pero requiere un modulo para gestionar el apilado. Basicamente alghien se encarga de decidir como componer los resultados en las varias decisiones de segur
albertosemejante modulo ha sido escrito, aunque no es parte de LS
albertoeste es eun area donde el desarrollo futuro cambiara el comportamiento actual
albertopero por ahora, seguimos, KISS
alberto< zanshin:#qc> son los enlaces a llamadas de sistema y los punteros "callbacks?" lo que uno deberia rellenar a la hora de registrar un modulo LSM?
albertoLa interfaz LSM es una estructura de punteros "callback-->y eso?". Esto es lo que tienes que rellenar para registrar
albertoalgunos de los punteros "callback" imitan a l punto de entrada de la llamada del sistema que estan protegiendo, pero no todos
albertopodemos mirar un ejemplo de llamada para ver como parece esto en terminos de codigo
albertola mayoria de los modelos de seguridad se preocuparan, por ejemplo, de la creacion de una nueva tarea, y especificamente execve() que puede cambiar tus dominios de ejecucion
Arador< nab:#qc> cdub: cuanta sobrecarda esta asociada usando varios enlaces, en que parte del ekrnel (operacions de fs, de sockets, etc) se hacen las mentiras(perdidas?) mas grandes de rendimiento?
Aradornab: la sobrecarga medida en bechmarks de macro es muy baja
Aradornab: en el rango 0-2%
Arador< nab:#qc> cdub: o estaria esto relacionado mas con la implementacion de enlaces dentro del modulo de seguridad?
Aradortotalmente
Aradorlos enlaces de red tienden a causar mas sobrecarga
Aradorpero un enlace pobremente diseñado podria serializar la operacion que debe ser altamente concurrente y optimizada
Aradorasique el modulo mismo es critico en la medicion del rendimiento del sistema
Aradorpero, es posible crear un modulo muy simple para presionar el marco de trabajo
AAAse colapsooo internet
garoedai hope everybody gets back
Ocelljuer que mal trago!!!
Aradorahi vemos, como mencione, que el stack de red tiene mas impacto
Aradortambien, nuestros numeros muestran que los estados de apertura/cierre y desenlace son mayores que otros enlaces del sistema de ficheros
Aradorconsidera cualquier cosas que tenga q colgar el buscar el camino del kernel (o entrar) podra hacer varias comprobaciones de permisos, en cada directorio, ademas de una comprobacion en el final del objeto, asi que esto no es una sorpresa.
alberto considera cualquier cosas que tenga q colgar el buscar el camino del kernel (o entrar) podra hacer varias comprobaciones de permisos, en cada directorio, ademas de una comprobacion en el final del objeto, asi que esto no es una sorpresa.
albertoquieto, que esto ya lo tenemos
albertobien, aqui voy a mostrar un simple flujo de llamada...
albertoexecve("/bin/foo")
albertopara ver esto en codigo, uno debe de mirar los enlaces LSM basados en bprm.
albertocuando la tarea es etiquetada, ya sea via fork o exec, todos los accesos futuros a los objetos del kernel (superbloques via mount(2), ficheros via abrir/leer/escribir.., redes via api de sockets)
albertodeben de ir a traves del modulo LSM, y las etiquetas en los objetos del kernel son comparadas con la etiqueta de la tarea, esta es la conducta fundamental del LSM.
alberto< pdp:#qc> pero porque se permite subir de nivel de seguridad desde un "nivel de seguridad inseguro" por el principal nivel de seguridad?
albertono estoy seguro de haber entendido tu pregunta. esto es una cuestion de politicas de seguridad.
Arador<despues de  execve("/bin/foo")>
Aradoresto echara un vistazo al objeto bin/foo y devolvera este dentro de un puntero de fichero del kernel
Arador este vistazo disparara una pareja de comprobaciones de permisos en "/" y "/bin" y "/bin/foo"
Aradorentonces, asumiendo que uno tiene acceso al path completo, los manejadores del binformat seran consultados.
Aradordurante esta fase, una estructura binprm es creada, y las etiquetas LSM.
Aradoresto llega a ser limpio si piensas en un programa setuidado de UNIX
Aradorla tarea puede tener una sola etiqueta (uid 500 == chris, por ejemplo)
Arador pero la estructura binprm puede tener otra etiqueta (uid 0, por ejemplo).
Aradordespues al modulo se le pregunta si es correcto ejecutar el nuevo programa. Esto incluye ademas transiciones de la tarea actual a un nuevo dominio.
Aradorste puede ser mas elevado o menos...
Arador para ver esto en codigo, uno debe de mirar los enlaces LSM basados en bprm.
Aradorcuando la tarea es etiquetada, ya sea via fork o exec, todos los accesos futuros a los objetos del kernel (superbloques via mount(2), ficheros via abrir/leer/escribir.., redes via api de sockets)
Aradordeben de ir a traves del modulo LSM, y las etiquetas en los objetos del kernel son comparadas con la etiqueta de la tarea, esta es la conducta fundamental del LSM.
Arador< pdp:#qc> pero porque se permite subir de nivel de seguridad desde un "nivel de seguridad inseguro" por el principal nivel de seguridad?
Arador no estoy seguro de haver entendido tu pregunta. esto es una cuestion de politicas de seguridad.
Aradorpor ejemplo, puede ser correcto para el dominio de seguridad de /bin/foo (desde execve ("/bin/foo") el llamar a /bin/bar
Arador y de acuerdo con la politica d seguridad, puede ser una manera para aumentar privilegios. pero de otra forma no. esto esta todo determinado por la politica asignada al modulo de seguridad.
Aradorde echo, esto es una de las caracteristicas criticas del LSM.
Arador toda la politica esta dentro de un modulo
Aradorel framework simplemente no le presta atencion
Arador<@riel_:#qc> cdub: el LSM maneja pasandole descriptores de ficheros via unix domain sockets?
* slack is back (gone 00:37:03)
Arador si, es posible controlar el paso de fd's (descriptores de ficheros)
Aradoralgunas politicas pueden permitir esto, pero si quieres tener un niverl de seguridad menor de fd, quizas tus dominio de tareas de seguridad sera menor
Aradoro quizas simplemente no permitirias pasar el descriptor en absoluto
Aradoruna pregunta comun: "¿no son los modulos inseguros?"
Aradoresta es una pregunta debatible. Pero LSM no tiene que ser modular. Puede ser compilado estaticamente, como otros modulos, asique no es un problema real
Aradory por supuesto, el modulo de seguridad controla la carga/descarga de modulos, asique puede ejecutar un barco colgante
Aradorbien, como mencione antes, LSM es para el control de accessos
Aradores ampliamente utilizado  para Mandatory Access Control (MAC) (Control de accessos olbligatorio), pero no se limita a  esto
Aradorcomo tal, el mecanismo  Discretionary Access Control (DAC) (control de accessos discrecional) estandar de unix esta todavia en tacto
Aradory hay un problema de ordenacion entre DAC y MAC
Aradoren general, colocamos los enlaces LSM donde ya existe una logica de comprobacion de permisos
Aradory comprobamos que LSM antes de recaer en las comprobaciones DAC (como se requiere tipicamente en MAC)
Aradorandre tiene un par de preguntas que me gustaria discutir
Arador< andre:#qc> cdub: como es la adiccion de LSM contra otro tipo de cierres?
Aradorla API se diferente, sin tener en cuenta si esta adoptada nativamente
Aradorbien, la diferencia principal es el nivel de intrusismo
Aradorla mayoria de las APIs son pequeñas y viven en su propia esquina del kernel
Aradorsin embargo, dada la naturaleza de LSM, toca mucho codigo "core" (basico) del kernel
Aradory por lo tanto es diferente, especialmente cuando se refiere a la GPL y el codigo del kernel
Aradorla mayoria de los desarrolladores del kernel estan muy concienciados de la GPL y no quieren que su codigo sea explotado de una forma no-GPL
Aradorasique la API LSM es exportada solo como API solamente GPL
Aradoresto es porque toca mucho codigo basico del kernel, es importante dejar claro que el modulo de seguridad esta en el codigo basico del kernel
Aradory es un trabajo derivado del kernel linux
Aradorinsertad el apropiado "No soy abogado" aqui
Aradorno se cuanta gente habremos perdido en los slpits
Aradorasique tomare algunas preguntas
raul< andre:#qc> ahora todos los añadidos al LSM son procedentes de trabajos y estan forzados a ser GPL entonces se elimina la viable naturaleza secreta de las operaciones de LSM
raul< andre:#qc> ahora si el secreto de cada modulo LSM es desvelado, cual es el uso del LSM
raulbien, esto es una cuestion importante, pero espero no caer en la batalla de las licencias
raulprimero de todo, el uso de la interface LSM por si misma es muy proxima al kerne linux.
raul este enlaza alrededor de los objetos principales del nucleo linux, y habilita/Desabilita accesos
raulesto puede argumentar que el uso de la interface LSM es claramente un derivado del trabajo del kernel linux
raulademas...
raulen este caso, estamos hablando de seguridad
raules bien conocida la preocupacion en seguridad de que los secretos no son buenos para la seguridad
raulmientras que no se dicte que el codigo por si mismo debe de ser abierto, al menos el algoritmo debe de ser divulgado y bien entendido
raulde otra forma estas en el borde de la seguridad a traves de la oscuridad
Aradorasique, si revelar los compromisos de tu modulo de seguridad compromete la seguridad del modulo, entonces es que el modulo es inseguro para comenzar(licencias aparte)
Aradorvolviendo al asunto de licencias...el proyecto LSM no se preocupa de un camino o otro
Aradornos preocupamos sobre añadir la infraestructura de seguridad en el kernel linux
AradorLinus dijo que lo queria, y se lo dimos
Aradory el piensa que la API LSM deberia exportarse solo como GPL_ONLY
Aradores un sacrificio que queremos hacer, para asegurar que LSM no se quita del kernel
Aradorcreo que esto resuelve la pregunta. Es un tema muy contencioso,  a menudo chispas emocionales en vez de argumentos tecnicos
Arador< andre:#qc> cdub: argumento no valido, solo las futuras versiones pueden ser quitadas no las kviejas
Aradortodo bien, punto tomado
sarnold(anyone have questions?)
Aradorsin embargo, considera que LSM esta en gran parte fuera del kernel
Aradorestamos a mitad de camino de incluirlo
Aradorasique de lo que nos preocupamos es de incluirlo enteramente
Aradory 2.5 todavia no es 2.6, asique las cosas todavia pueden cambiar
AradorLinus tambien dijo, o es GPL_ONLY o lo quitare. periodo. es su arbol y hacemos lo que el (y otras cuestiones de copyright) quieren
Aradory las cosas que hay en en el arbol LSM existen como un parche al kernel. Y las restricciones de licencia tiende a ser considerada GPL por definicion
Aradorbien, hay otras preguntas
Aradorla charla se ha fragmentado, asique sentiros libres de hablar si no hay cosas claras
Arador< rene:#qc> cdub: mencionastes la compatibilidad con las capacidades como requerimiento; como encajan ahi? otra policia?
Aradorrene: esa es una buena pregutna
Aradorlinux (antes de LSM) soporto parte de POSIX.1e para Capacidades
Aradorasique tenemos que preservar eso
Aradorlas capacidades son una ligera mejor a la politica UID == 0 (politica de superusuario)
Aradorsin embargo, las capacidades son razonablemente estaticas
Aradorasique, la compatibilidad de capacidades ha hecho un API de  LSM diferente al imaginado originalmente
Arador<viXard> supongo que existe una pequeña área que no he cubierto.
AradorLSM intenta mantenerse en el kernel.
Aradoresto quiere decir que no está ampliamente presents en drivers, sistemas de archivoos, etc.
Arador(claro está, la excepción es capable() que está presente por todos lados ;-)
Aradory, casi todos los ganchos de LSM son llamados desde el contexto de procesosdic 10 23:40:03 <viXard>        sin embargo son llamados en contexto de interrupción
Aradorespecíficamente, algunoos de los async io data ready events son entregados (y LSM filtrado) allí
Arador también, llegando paquetes de redes
Aradorasique, cuando uno codifica un módulo LSM se necesita estar al tanto de los contextos de los ganchos que pueden ser llamados
Aradorsupongo que debo mencionar lo que tenemos hasta hoy.
Arador la interfaz LSM es robusta y soporta hasta 150 llamadas
Arador casi la mitad de las mismas están integradas en el árbol de Linus.
Aradorel código para redes está a punto de ser integrado, pero será un reto hacerlo, debido a cosas derivadas del procesamiento y eso
Arador además, existen al menos 5 modulos que han sido desarrollados.
Aradorlos dos primeros son simples: super usuario, y capacidades
Aradorel tercero añade algo de código de openwall
Arador(ok, son 6 ;)
Aradorlos otros 3 son mucho más complejos
Aradorok, son 7 XD
Aradorgregkh  escribió un modulo ejemplo, mostrando como se puede reforzar una política
Aradorrequiriendo un dispositivo USB específico para poder obtener permisos root
Aradorlos últimos 3, LIDS, DTE y SELinux son ejemplos más complicados del uso de LSM
AradorSELinux usa la mayor parte de la interfaz.
Aradory eso le permite controlar efectivamente cada acceso a cada objet
Aradorpermite hacer MAC, TE, MSL. cosas que son importante cuando muchos usuarios tienen acceso a una maquina,
Aradory ésta posee información confidencial.
Arador< rene:#qc> TE/MLS?
AradorType Enforcement (Tipo de reforzamiento)
AradorMulti Level Security (Securidad de multi nivel)
Arador< zanshin:#qc> Podrías explicar la parte acerca de los IDs y el registro de IDs una vez más... cuando un objeto es registrado?
Aradory cuando este es referenciado cuando un syscall es generado?
Aradory como son enganchados los ganchos internos en la zona de usuarios?
viXardbueno, te daré un vista rápida.
viXardo podemos hablar en privado
viXardla interfaz LSM proveé una estructura de llamados (punteros de funciones)
viXarduf, teléfono
Aradorel modulo rellena una estructura con sus llamados especificos de politicas
Aradorentonces se registra en el marco de trabajo
Aradordesde ese punto en adelante, los enganches LSM estan en el kernel
Aradorllamaran (a traves del puntero de la funcion) al modulo
Aradorlas llamadas hacen cosas como decir al modulo que un nuevo objeto se esta creando
Aradoruno esta siendo destruido
Aradoro otro esta siendo accedido
Aradorcuando un nuevo objeto se esta creando (un inodo por ejemplo)
Aradorel kernel crea el objeto, entonces llama el modulo para asignar el espacio especifico del modulo
Aradoren el objeto para que el modulo mantenga la etiqueta de seguridad
Aradorla etiqueta es tipicamente el ID de seguridad
Aradory despues, cuando el objeto sea accedido
Aradorel dominio de seguridad actual (tipicamente ese del proceso que se esta ejecutando actualmente que hizo la llamada por ejemplo)
Aradorpuede ser comparado con las etiqueta del objeto
Aradordependiendo de la politica, esta informatcion es usada para conceder/denegar accesso al objeto
Aradoreso es en resumidads cuentas
Aradorespero que fuera claro
Aradorasique, LSM esta lejos de ser terminado
Aradoraparte de continuar limpiando, e incluir en el kernel
Aradorestamos bucsando maneras para incluirlo mas limpiamente en la infraestructura del kernel
Aradoresto podria mantener la interfaz del modulo limpia, y facl de mantener
Aradormientras que ahora esta muy desbocado
Arador(como andre dijo)
viXardademás esperamos incorporar más módulos e ideas de proyectos similares. Por ejemplo RSBAC (para linux) y TrustedBSD
viXardtienen algunas muy buenas ideas que queremos ver si funcionan y como podemos usarlas.
viXardSi están interesados en ayudar, por favor péguense una vuelta por lsm.immunix.org.
viXardallí hay código, documentación, listas de correo, enlaces, enlaces a irc, etc
viXardMuchas gracias por su tiempo.
viXardGracias a todos los traductores y a las personas que han organizado este evento, etc etc etc.
viXardXD
Aradorplas plas plas etc XD

Generated by irclog2html.pl by Jeff Waugh - find it at freshmeat.net!