Infosec 2002UniNet

Español

Presentación

Programa

Desarrollo

English

Presentation

Program

Congress Details

Français

Présentation

Programme

Détails
 

 
viZard Hola
viZard Hoy presentare una version actualizada de nuestra distribucion security-enhanced OS, Openwall GNU/*/Linux o Owl
viZard no usare un archivo, asi que excusenme las malas palabras
viZard Sin embargo me referire a los slides que usamos en NordU2002
viZard http://www.openwall.com/presentations/nordu2002-owl-html+images/
viZard por favor mirenlas
viZard Asi que comencemos
viZard Slide 2:
viZard La primera pregunta que esperaria de alguien que escucha de otra distribucion de Linux es, --
viZard "por que hacen eso? que no hay ya demasiadad?"
viZard bueno, esta vez la respuesta es que no estamos satisfechos con la seguridad (y algunas otras cosas) que encontramos en otras distribuciones
viZard El problema con otras mayores distribuciones de linux:
viZard (como vimos entonces)
viZard 1. La mayoria de los parches de vulnerabilidades conocidas que con "demasiado malos", aun hacen poco para prevenir un  software vulnerable en una distribucion
viZard existen muchas razones del porque en este caso
viZard una de las razones es que ellos simplemente no evaluan mucho la seguridadf
viZard otra razon es que son  diferentes  las partes del equipo/compañia que empaquetan los nuevos software y los que son responsables por la seguridad.
viZard 2. usualmente existen mas de solo unas cuantas piezas de un software en una distribucion que proveen un cierto nivel de funcionalidad, y que incrementan inecesarimente el riesgo
viZard como resultado, el numero de vulnerabilidfades que afectan a las grades distibuciones y que se encuentran en Bugtrq es grande
viZard y esas son solo las "demasiado maleas"
viZard (por "demasiado malas" es el contexto de las grandes distribuciones quiero decir, aquellas que conllevan advertencias del vendedor)
viZard (por ejemplo, goteras temporales que permiten conseguir nombres de usuario validos, algo muy comun en bugtraq, dificilmente hareia que esos vendedores miraran siquiera para parchear el codigo)
viZard para lo que llegan, miren http://www.openwall.com/presentations/nordu2002-owl-html+images/)
viZard Otra parte de la pregunta es "por que hacen esto?" que no hay ya alguna distribucion segura de linux ?
viZard realmente la idea de hacer una aparecio no muy tarde como en 1998, cuando se crearon varios proyectos y varias listas de correo.
viZard muchos de ellos murieron antes de empezar.
viZard sin embargo, existen otras distribuciones seguras de linux
viZard de hecho, yo mantengo un directorio abierto (http://dmoz.org) para aquellas, desafortunadamente, veo muchos problemas fundamentales en ellas:
viZard 1. La mayoria ha escogido software basado en los listados de seguimiento de seguridad
viZard un buen listado de seguridad no es reemplazo para la auditacion de un codigo;
viZard a menos que el componente del software sea muy popular,
viZard las listas de seguridad raramente dicen algo del diseño o calidad del codigo.
viZard Un ejemplo es xinetd.
viZard muchos pensaban que era seguro, hasta que se empaqueto en muchas distribuciones (principalmente RH linux 7+) y las vulnerabilidades comenzaron a aparecer
viZard (si si, nosotros empaquetamos xinetd tambien, sin embargo, no nosotros tomamos ciertas medidas para reducir el riesgo y no nos dio la impresion o la asuncion de que fuese tan seghuro)
viZard entonces, no es la seleccion del software lo que importa
viZard una vez que se escoge el software, puede haber aun mas trabajo en su limpia integracion y aplicacion de separacion privilegiada dentro de SO (mas de esto luego)
viZard 2. Tambien existe mucho enfasis en las modificaciones al kernel
viZard mientras yo soy culpable de algunas de ellas, no creo en ellas religiosamente como otras personas ;-)
viZard Otro desafortunado error de ellos, es que su calidad de codigo (y a veces sus conceptos) son muchas veces inadecuados
viZard las modificaciones del kernel no son generalmente algo que justifique toda una distribucion.
viZard usualmente ellas son una medida de  "endurecimiento"
viZard y cuando tu tienes tu propia distro, tu puedes reparar las principales causas de los problemas
viZard 3.- Finalmente, no son las flautas y campanas relacionados con la seguridad lo que hace un sistema seguro, 
viZard ciertas distros caen la categoria de "seguras" por algunas definiciones simplemente porque ellas integran una variedad de herramientas (que son utiles para la seguridad)
viZard sin embargo esto no dice que tan seguras son
viZard Slide 4
viZard http://www.openwall.com/presentations/nordu2002-owl-html+images/
viZard Ahora introdzcamos nuestra distribucion, Owl
viZard Pretendemos hacer una plataforma segura para servidores, y basamos nuestra distribucion en los siguientes piezas de software:
viZard 1. The Linux kernel  y sus utilitarios
viZard 2. (some of) GNU software
viZard 3. Componentes derivados de BSD
viZard 5. Software libre desarrollado por el grupo de OpenWall,
viZard incluyendo esas para Ownl
viZard para aquellos que quieran jughar, hay un equipo corriendo OpenWall
viZard ssh uninet.tmp.openwall.com
viZard l: uninet
viZard p: franc&gather.school
viZard por favor, sean corteses, ya que no tendre tiempo para seguir los abusos durante la charla
viZard Slide 5
viZard Ahora las opciones que Owl ofrece:
viZard Primero, puede ser usado como base para la instalacion de cualquier software en general para sistemas GNU/*/Linux 
viZard incluyendo los sistemas comerciales y de codigo cerrado
viZard Aun mas, tratamos que proveer el nivel de paquete compatible para instalar en RHL en Owl, lo que no hace conflicto con nuestras metas mas importantes
viZard entonces, tratamos de incluir una creciente gama de servicios integrados para Internet
viZard En estos momentos, solo una pequeña gama esta disponible
viZard debido a nuestro estricto requerimientos de diseño y calidad de servicios de redes.
viZard mas de esto luego)
viZard tambien incluimos la platamorma para que se pueda reconstruir todo un sistema a partir de codigo fuente
viZard mas de eso luego
viZard finalmente, soportamos x86, sparc, and alpha
viZard (Slide 6)
viZard ahora, nuestro afinidad a la seguridad
viZard 1. El diseño de software y la calidad son nuestra primer prioridad;
viZard algo de lo que referimos como "calidad" sera definido luego, el resto es subjetivo ;-)
viZard 2. Si hacemos auditaciones del codigo del software que empaquetamos
viZard pedazoz de codigo que tipicamente corren con priviolegios mayores que aquellos de un usuario regular
viZard y/o un proceso tipico, son auditados antes que el software correspondiente sea incluido
viZard Esto se aplica a :
viZard - Camido de codigo relevante en muchos sistemas de librerias
viZard - todos programas SUID/SGID
viZard - todos los demonios y servicios de redes
viZard Otras pedazos de codigo fuente puedes ser re auditado una vez el software forma parte de Owl
viZard Slide 7
viZard 3. Aplicamos modificaciones al software para :
viZard - aplicar el menor principio de privilegios.
viZard - Introducir la separacionde privilegios
viZard Lo que exactamente hacemos sera presentados en los siguientes slides
viZard 4. Proveemos configuracion segura por defecto para todo lo que puedas contraer peligro en su configuracion
viZard 5. Como lo exige el proyecto, muchos de los componentes de softwares, seran reemplazados por los nuestros propios, para algunos esto ya se esta haciendo.
viZard por ejemplo
viZard al principio usamos Linux-PAM's pam_unix (o realmente pam_pwdb) para proveer autenticacion para cuentas UNix, aunque sabiamos perfectamente bien, que era algo que debia ser reemplazado.
viZard ahora hemos cambiado al nuestro propio, pam_tcb
viZard existen otros ejemplos
viZard Slide 8, continua nuestra afinidad a la seguridad ;-)
viZard 6. proveemos cierto reforzamiento de politicas  e integridad, viendo las capacidades en la distribucion
viZard en particular,
viZard todos nuestros servicios de login son capaces de manejar informacion de envejecimiento de cuentas y claves
viZard Cuando las claves son cambiadas (a traves de cualquier servicio),
viZard claves reforzadas como configuradas por el admin
viZard ademas incluimos el port BSD mtree(8) utilizado para chequeo de la integridad del sistema de archivos
viZard 7. Incluimos criptografia fuerte en los componentes del SO
viZard Bueno, esto no es muy exitante hoy en dia:
viZard muchas distros tambien lo hacen
viZard hi
viZard esto se refiere a cosas como openssl y openssh que son partes escenciales del sistema
viZard (y nuestra versionde mtree esta hecho para usar openssl)
viZard pero para mencionar unas cuantas piezas donde otros no lo hacen:
viZard <viZard> ademas proveemos glibc/libcrypt para el manejo de claves
viZard <viZard> (por favor referirse a crypt(3), la pagina man que escribi, en la maquna owl)
viZard <viZard> y tenemos criptografia aleatoria en el DNS
viZard *** Erika is now known as Leo
viZard <viZard> 8. ademas aplicamos endurecimiento para reducir el impacto de ataques del mundo real de software independiente que se pueda instalar en el sistema
viZard <viZard> esto no es limitado a parches opcionales en el kernel (si, son opcionales y sin importancia relativa para Owl, excepto cuando reparan una vulnerabilidad del kernel)
viZard <viZard> por ejemplo, en varios sistemas de librerias tambien hacemos algun "endurecimiento" para los casos en que usen
viZard <viZard> programas SUID/SGID 
viZard <viZard> esto incluye glibc, ncurses, libtermcap, openssl
viZard <viZard> 9. Finalmente, queremos tener un muy variado rango de herramientas disponibles para el uso "fuera de la maquina"
viZard <viZard> ahora mismo, no hay muchos pero eso ira cambiando una vez que terminemos con lo que consideramos mas importante.
viZard <viZard> con nuetras imagenes ISO proveiendo un sistema de redes multiusuario, Owl podria ser considerado un reemplazo de Trinux cuand haya un CD drive disponible
viZard <viZard> Slide 9
viZard Owl se mantiene similar a BSD, en los ports/paquetes y puede ser reconstruido con un simple comando  "make buildworld"
viZard como pueden ver, la implementacion de  "make buildworld" es muy diferente de aquella vista en *BSD
viZard Tenemos dos ramas:
viZard una rama "nativa", con nuestro propio software y especificaciones de construcciones en forma de tarballs
viZard y algunos paquetes son construidos en ambas ramas (*BSD-port like)
viZard otras, que son mantenidas por nosotros, existen completamente en la rama nativa durante el buildworld
viZard varios procesos de creacion de paquetes pueden ser creados para construcciones eficientes en maquina de multiprocesadores
viZard como resultado del buildworld los paquetes RPM son producidos
viZard por que RPM? se preguntaran
viZard Bueno, reconocemos para que la gente seleccione Linux por encema de *BSD, y si ellos quieren instalar software diseñados para Linux, muchos de ellos vienen en formato RPM en estos dias
viZard Para aquellos que no le gustan los RPM como a mi, no es necesario siquera que se enteren que hay RPM el buildworld y el installworld
viZard y solo ejecute los dos comandos ;-)
viZard entonces, el manejador de paquetes es algo que quiesiera reemplazar por uno de nuestro diseño, si tiene el tiempo
viZard Slide 10, el software que desarrollamos para Owl
viZard Primero, el software portable que diseñamos y usamos para Owl:
viZard Varios modulos PAM: pam_mktemp, pam_passwdqc, pam_userpass
viZard (se puede usar "rpm -qi" para aquellos en la maquina con Owl)
viZard <Solar_Diz> ssh uninet.tmp.openwall.com
viZard <Solar_Diz> l: uninet
viZard <Solar_Diz> p: franc&gather.school)
viZard pam_mktemp provee seguridad por-usuario en directorios temporales y crea $TMPDIR  de acuerdo con ello
viZard pam_passwdqc  es nuestro reforzador/endurecedor revisor de passwd con soporte para frasesclave y para las creadas aleatoriamente.
viZard http://www.openwall.com/passwdqc/ para lectura
viZard preguntas?
viZard el otro software que desarrollamos y que esta incluido en Owl es: popa3d, scanlogd, john, and libnids
viZard popa3d es un servidor pop3, mas de su diseño en otro slide
viZard scanlogd es un simple detector de scaneo de puertos
viZard john es un rompe/revisor de claves, usado para identificar claves debiles
viZard y  libnids es la libreria de redes de bajo nivel de Nergal
viZard la cual hace desfragmentacion IP y TCP Stream
viZard para la deteccion de intrusiones y analisis de trafico
viZard entonces, el "semi-portable" software que tenemos es :
viZard crypt_blowfish
viZard tambien una implementacion de bcrypt, el algoritmo de manejo de claves diseñado para OpenBSD
viZard y la suite tcb, hecho entre Nergal y yo, que consiste de libtcb, libnss_tcb, y pam_tcb
viZard de eso lo hablaremos luego
viZard owl-control, un framework para el control (habilitar/deshabilitar y no solo eso) de sistemas de facilidades sin tener que instala/desinstalar sus paquetes correspondientes
viZard la facilidad de control de owl-control incluyen cosas como :
viZard <Solar_Diz> jill!root:~# control
viZard <Solar_Diz> chage           restricted      (public restricted)
viZard <Solar_Diz> chfn            restricted      (public restricted)
viZard <Solar_Diz> chsh            restricted      (public restricted)
viZard <Solar_Diz> crontab         public          (public restricted)
viZard asi como ciertos servicios:
viZard <Solar_Diz> postfix         local           (server local)
viZard <Solar_Diz> sftp            disabled        (enabled disabled)
viZard y algunos casos menos triviales:
viZard <Solar_Diz> and some less trivial cases:
viZard <Solar_Diz> sftp            disabled        (enabled disabled)
viZard <Solar_Diz> su              wheelonly       (public wheel wheelonly restricted)
viZard (esto no es una lista exahustiva)
viZard Bueno,  y por supuesto las rutinas de inicio, el ambiente, y asi...
viZard Slide 11, el software portado
viZard Varios componente de software han sido portados de OpenBSD, con nuestro usual auditacion de codgo y modificaciones
viZard esto incluye:
viZard mailx (/bin/mail)
viZard mtree, -- y nosotros hacemos la jerarquia con el
viZard telnet and telnetd, --  con modificaciones para introducir separacion de privilegios,  mas de esto luego
viZard Vixie Cron, --  con modificaciones para SGID crontab(1)
viZard Eso es escencialmente todo
viZard - tenemos un promedio de 4 parches por paquete
viZard - (lo mas importante)  la mitad de los parches originados en Owl
viZard - la otra mitad ha sigo importada de varias distribuciones, incluyendo *BSDs
viZard -- Con el apropiado credito dado en cada archivo parche
viZard (esto nos permite y a otros saber de donde proviene un parche)
viZard Slide 13, la interaccion crontab / crontabd
viZard http://www.openwall.com/presentations/nordu2002-owl-html+images/
viZard para los slides
viZard Bien, hemos modificado crontab y crond:
viZard el directorio spool del cron fue hecho escribible para el grupo crontab mode 1730
viZard crontab(1) esta instalado SGID crontab
viZard crond(8)  no cree ciegamente en el directorio spool
viZard de hecho, verifica que cada uno de los archivos del cron pertenecen al usuario para quien hacen el trabajo
viZard asi, que un compromiso del grupo de crontab lo que mas haria (en ausencia del segundo fallo) es volverse no-root
viZard en el Owl, es iniciado y dedicado como  pseudo-usuario y grupo, syslogd
viZard En orden de ser posible el re-abrir los archivos logs en SIGHUP, 
viZard usualmente luego que los logs han sido rotados, el rotador de logs debe hacer escribibles para el usuario o grupo syslogd
viZard (slide 15, klogd architecture)
viZard similarmente, nuestro klogd ha sido parcheado para soportar correr como  non-root y ser chrooted
viZard por defecto, ejecutamos klogd como user/group klogd y chrooted to /var/empty
viZard de nuevo, es posible que un fallo en klogd (y ha sucesdido en el pasado) no resulte en un compromiso del usuario root
viZard (slide 16, popa3d architecture)
viZard Esto es un ejemplo de separacion priviegiada implementada en un servicio
viZard Nosotros hacemos eso para todos los sevicios de redes excepto SSH, lo que cambiara tan pronto como Niels Provos quien ha estado trabajando duro en la separacion de privilegio de OpenSSH
viZard de los servicios que tenemos, hay un slide para  popa3d, telnetd, and vsftpd
viZard no hay slides para Postfix sin embargo este usar separacion de privilegios y esta corriendo  chrooted  en Owl tambien
viZard asi que, la arquitectura popa3d como se puede ver en el slide, correo en dos procesos durante el estado de autorizacion
viZard ningun usuario se acerca la parte de privilegios root
viZard entonces, luego que el usuario es autenticado, popa3d  esta corriendo como usuario
viZard Esto quiere decir que popa3d nunca usa sus privilegios de root para el uso de posible ataques remotos
viZard (slide 17, telnetd architecture)
viZard El telnetd que he portado de OpenBSD  (post-3.0)
viZard las ilustraciones ilustradas en el slide son similares a las mostradas por Chris Evans
viZard en su NetKit telnetd patches
viZard aunque el codigo es diferente
viZard Slide 18, vsftpd architecture)
viZard vsftpd is Chris Evans' FTP server, usado en Owl ;-)
viZard tiene separacion de privilegios implementado desde el mismo inicio
viZard prefiero ir al slide para detalles
viZard es mas complicado que el popa3d and telnetd
viZard y no hay tiempo para ello
viZard (slide 19, una introduccion al ensombrecimiento tradicional de claves)
viZard http://www.openwall.com/presentations/nordu2002-owl-html+images/
viZard
viZard Bien, como muchos de uds sabran, con el ensombrecimiento de claves y el manejo de la informacion de envejecimiento de todos los usuarios van a un simple archivo llamado /etc/shadow
viZard esto quiere decir que:
viZard chage(1) debe poseer el privilegio de leer todos los archivos ensombrecidos (shadow)
viZard como resultado, un proceso ´passwd´ comprometido seria fatal
viZard (seria un compromiso del root)
viZard y el problema no puede ser resuelto asigando un usuario dedicado los accesos al /etc/shadow (otro usuario del archivo)
viZard esto es porque ese usuario seria capaz de cambiar la clave de cualquier otro usuario y por lo tanto capaz de hacer todo lo que el root puede.
viZard (Slide 20, tcb - nuestra alternativa al shadow)
viZard - Para cada usuario es asignado un archivo shadow separado
viZard - cada usuario es dueño de su propio archivo shadow
viZard el acceso a los archivos shadow es restringido-por-grupo para permitir el reforzamiento de politicas de clave
viZard cambiar a tcb es transparente para las aplicaciones que usan interfaces como getspnam(3) (y por lo tanto NSS) o PAM
viZard no se necesita modificacion en los fuentes de aplicaciones habilitadas
viZard tcb esta instalado en la maquina Owl:
Solar_Diz ssh uninet.tmp.openwall.com
Solar_Diz l: uninet
Solar_Diz p: franc&gather.school
viZard pueden mirar en los permisos en /usr/bin/passwd, /etc/tcb
viZard y ahora les permitire cambiar la clave para que vean que de hecho funciona (asi como funciona la fortaleza en nuestro sistema de reforzamiento de claves)
Solar_Diz         Minimum Password Age [365]: -1
viZard ok, pero porfavor pasen la nueva clave por aqui si la cambian
viZard (Slide 21, la disposicion del sistema de archivos)
viZard Bueno, solo miren el slide :-)
viZard http://www.openwall.com/presentations/nordu2002-owl-html+images/
viZard Tambien usamos los directorios por-usuario para espacio rasgado y archivos cerrados necesarios durante un cambio de clave y manejo d cuentas.
viZard hay una pagina man tcb(5), asi como otras paginas man relevantes referidas por esta
viZard (slide 22, el privilegio requerido por tcb)
viZard ( si si, se que andamos cortos de tiempo, terminaremos en 5-10 minutos despues que Kurt termine su charla :-)
viZard passwd(1) es hecho SGID shadow
viZard UN prosible compromiso solo permitiria sobrepasar las barreras reforzadas para su propia cuenta.
viZard Finalmente, con semejante esquema, puede que no exista real necesidad para binarios tipos SUID en el sistema completo y dejar el sistema perfectamente usable.
viZard (passwd funcionan, crontab funciona y asi por estilo)
viZard (slide 23, los componentes de la suite tcb)
viZard - libtcb, la libreria auxiliar usuada por casi todo en la suite tcb, -- provee funcions para encerrar y accesar archivos tcb de manera segura
viZard (No podemos confiar ciegamente en los subdirectorios /etc/tcb, si un grupo shadow se compromete puede extenderse a un compromiso del root)
viZard - libnss_tcb, el modulo NSS
viZard provee getspnmap(3) y funciones relativas, solo permitiendoles el acceso a la jerarquia /etc/tcb en vez que a /etc/shadow
viZard Finalmente, los archivos /etc/tcb/*/shadow por si solos, accesan con las credenciales apropiadas y su contenido es tratado como entrada no confiable con priviliegio-root en partes del sistema
viZard (Slide 24, mas componentes tcb)
viZard - pam_tcb, el modulo PAM
viZard Provee funcionalidad para todos los 4 componentes PAM de manejo de grupos (autenticacion, cuentas, sesiones y manejo de claves)
viZard Soporta metodos la estructura de directorio /etc/passwd, /etc/shadow, NIS y NIS+ para cambios de claves.
viZard (las otras partes no estan limitadas a las base de datos como NSS es usado y otros modulos NSS pueden ser provistos)
viZard Soporta metodos arbitrarios de manejo de claves, lo que no necesita recompilar si se añade uno nuevo
viZard esto es posible, debido a nuestro sistema de manejo de claves en glibc/libcrypt
viZard favor referirse a la pagina man crypt_gensalt(3) en la maquina con Owl :-)
viZard tambien es opcional forquear procesos hijo para manejar la informacion sensible y mantener el espacio de direcciones de la aplicacion limpio
viZard y por suspuesto, es compatible con Linux-PAM pam_unix y pam_pwdb pero ofrece funcionalidades adicionales y mayor calidad de codigo
viZard (Slide 25, los ultimos componentes tcb)
viZard nueva clave: surf-exceed;lemon
viZard tcb_convert y tcb_unconvert
viZard Estos permiten una facil conversion entre las basses de datos /etc/tcb/* y el tradicional /etc/shadow
viZard favor referirse a las paginas man de esas funciones para instrucciones de como usarlas y que otros pasos necesitan ser hechos para su conversion
viZard - los utilitarios de la suite shadow
viZard el parcheo no trivial ha sido aplicado a los fuentes de la mayoria de los utilitarios de la suite shadow
viZard la invocacion de la sintaxis se mantiene sin cambios (con algunas excepciones para accesar ciertos especificaciones-tcb)
viZard (como, con "vipw -s" ahora se debe especificar un nombre de usuario)
viZard (eso es solo en modo tcb)
viZard - una configuracion en /etc/login.defs especifica si el utilitario deberia adherirse al esquema o solo debe ser compatible
viZard (Slide 26, para mas informacion)
viZard por favor referirse al homepage de Owl http://www.openwall.com/Owl/  para mas informaciones
viZard esta presentacion ha sido preparada por Negal y por mi, quien tambien es el principal autor de la suite tcb que acabo de describir
viZard ahora, les permitire hacer preguntas pero se que andamos cortos de tiempo :-(

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