%include "default.mgp" %default 1 bgrad %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %nodefault %center, size 7, font "helmeth", fore "white", vgap 20 %charset "iso8859-1" II Jornadas sobre Software Libre y Seguridad en GNU/Linux %image "logo-jornadas.png" 1024x768 %fore "green" Programación Segura %fore "red", size 5 Chema Peribáñez %image "logo-augcyl.png" 1024x768 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Problemas de seguridad ausencia infraestructura seguridad errores administrador/usuario exploits %pause para evitar exploits, hay que programar bien entender cómo funcionan las cosas aprender buenas políticas aprender trampas habituales %page Por qué lo hacemos tan mal hay fase de prueba para errores se ve necesario automatizable (dejagnu, jakarta) comprobable se prueba lo usual %pause %fore "yellow" la seguridad se audita poca sensibilidad sí hay programas para detectar errores difícil de controlar (efecto tardío) caso rebuscado %fore "white" "recetario" complicado dependiente sistema operativo y lenguaje %page Qué hace un programa inseguro un usuario provoca comportamiento imprevisto ¿qué obtiene? denegación de servicio intrusión (privilegiada o no) información %pause ¿cómo? interactua remotamente (http) la seguridad, siempre en el servidor ejecuta localmente setuid línea comandos variables de entorno ficheros en directorio de escritura comprobar si es enlace ojo condiciones de carrera %page Algunas claves setuid nunca en shell, sólo en C, Perl, etc. soltar privilegios cuanto antes, si se puede, definitivamente cuidado al llamar extensión RSBAC puntos críticos exec y seteuid aprovechar separación de procesos (que no hilos) postfix X-Window "teclado seguro" entrada, línea de comandos, entorno, no fiable Perl, extension de seguridad núcleo secuencias de escape desbordamiento de buffer %page No reinventar la rueda PAM (ahora también en Java) módulos autentificación módulos de cuenta (decidir si se le deja) módulos de cambio de claves módulos de sesion stunnel cliente/servidor SSL con certificados