Tema I Introducción a la computación segura. 1. Bases de Computación Segura. La sociedad siempre se ha fundamentado en un orden. Las sociedades que se han formado en la historia de la humanidad se han basado en factores de fuerza física o económicos o intelectuales o políticos o religiosos. El resultado de esto es que se han formado pueblos que dependiendo del grado de orden que alcancen pueden avanzar y distinguirse. Dicho orden no implica el que continuamente se tengan correctivos a dicha sociedad, tan malo es no tener alguien que cuide que se cumplan las reglas como alguien que tenga la actitud estricta de cuidar hasta el mínimo detalle en el orden social, derivando en dictaduras. Conforme la humanidad ha avanzado, ha fundamentado la sociedad en aspectos tecnológicos (desgraciadamente olvidandose de los humanos) y volviendose mucho más vulnerable, por que la tecnología es siempre un arma de dos filos, a veces otorga bondades pero inherente lleva tambien a puntos malos y dependencias hacia ella. La tecnología de información ha sido una base solida de una sociedad que se vuelva avanzada. El grado de cultura que se tenga para manipular la información define que tan facilmente pueden conocerse los distintos motores de la sociedad. Sin embargo, para poder mover la información, la tecnología asociada tiene riesgos, por el hecho de ser construida por seres humanos. El tener información de manera electrónica es un hecho muy reciente, si se mide lo que es la historia de la humanidad, sin embargo su evolución ha sido veloz. Y se han formado sociedades que ahora tienen como base la información electrónica. Dichas sociedades han surgido muchas veces de manera independiente a entidades políticas, económicas y son el resultado de humanos con un nivel intelectual aceptable. Pero como toda sociedad, no existen utopías, y dado que la cibersociedad no tiene regulaciones es imposible imponer reglas del tipo "NO HAGAS", dado que la tecnología permite que se rompan desde dos perspectivas, con avances y con defectos. Con avances, se puede construir software eficiente que permita sobrepasar cualquier regla. Con defectos, entre mas complejo se vuelve el software, más dificil de controlar es y por ende, tendiente a errores. Ante esto, voluntariamente o involuntariamente, miembros de la cibersociedad son capaces de brincar cualquier brecha y rapidamente derrumbar un sistema de información hasta el grado de desaparecerlo. Ante esto, la ciencia de la computación tiene una rama de conocimiento que permite estudiar las vulnerabilidades y defensas del software que es base de los sistemas de información, dicha rama es la computación segura. 1.1 Definición de computación segura. Computación Segurar es el estudio de como lograr que los seres humanos puedan depender de una computadora (hardware, software) y confiar que su comportamiento sea el esperado. 1.2 Participantes de la computación segura. En la computación segura, no solo la computadora es el actor principal, existen varios participantes. Los usuarios o las personas que explotan la información La información. La computadora que desde la perspectiva de computación segura tienen una propiedad denominada vulnerabilidad Una serie de eventos que pueden provocar la destrucción parcial o total de la información denominadas amenazas (threats) Personas que desencadenan de manera intencionada una o mas amenazas, es decir atacan a la información, los denominados crackers Personas que protegen a la información de las posibles amenazas, los denominados hackers Las salvaguardias (safeguards) o defensas que establecen los hackers para evitar el ataque a la información Asi como en las ciencias de la programación un desarrollador es el motor, en la computación segura un hacker es quien lleva la pauta. Pero que es un hacker ? "... the word hacker doesn't refer to computer criminals but what the word originally meant: a person who wants to do something that one is passionate about, something in which one can realize oneself creatively, and something in which one can build things for the good of all. " "... la palabra hacker no se refiere a criminales informáticos sino a lo que realmente significa: una persona que quiere hacer algo que le apasiona, algo con lo que uno puede autorealizarse de manera creativa, y algo en lo cual uno puede construir cosas para el bien de todos" (http://www.hackerethic.org/) Es decir, un hacker no busca dañar a nadie. Pueden existir hackers en muchos ambitos, de hecho existen desde antes de las computadoras, músicos (Bach, Beethoven), pintores (Miguel Angel, Van Gogh), escritores (Tolstoi ,Tolkien), filósofos (Platón, Nietzche), matemáticos (Pitágoras,Gauss), físicos (Newton,Einstein), biólogos ( Darwin,Pasteur ), religiosos (Cristo, Buda), inventores ( Arquimedes, Edison) , políticos (Gandhi,Martin Luther King Jr) Sin embargo, la ciencia de la computación ha permitido que muchas personas dejen volar su inventiva y es capaz de proporcionar su conocimiento como los grandes hombres que se mencionaron anteriormente, la lista es larga, empezando desde Richard Stallman y obviamente excluyendo a Bill Gates que pretende apodarse hacker por el hecho de crear una serie de rutinas para manipular PCs y que le dio el nombre de sistema operativo MSDOS (aunque no niego su habilidad para hacer negocios) y usarlo para fines económicos Un hacker en terminos de computación, disfruta de aprender los detalles de los sistemas de cómputo y como llevar hasta el límite las capacidades de los mismos. Un hacker es capaz de entender las partes más ocultas de un sistema, y mucho mejor si tiene código . (Perdon por el ejemplo "hollywoodense" que voy a dar, pero si se piensa en la serie de Matrix, Neo, Morpheus y Trinity son los hackers y Neo la máxima realización del mismo, el superheroe que entiende lo intrinseco del sistema y es capaz de usar sus habilidades para el bien de la humanidad, olvidando sus intereses personales; si el lector de este texto esta a punto de cerrarlo o atacar el sitio de web donde está almacenado, le pido disculpas y le doy a cambio la sugerencia de leer una historia que esté de acuerdo a la naturaleza humana, Neuromancer de William Gibson) A partir de esta larga deliberación, lo que se quiere demostrar es que el perfil de persona capaz de defender a un sistema de información de las vulnerabilidades de software/hardware es basicamente un hacker. Un hacker en computación segura es aquel que se especializa en estudiar las vulnerabilidades, existentes y potenciales y proponer las salvaguardas correspondientes. Cuando una persona que usa su pasión por aprender detalles de cómputo para empezar a beneficiarse y no precisamente para ser un humano sabio, sino para tener facilmente "poder", explotando cualuqier vulnerabilidad de la que tenga conocimiento y usando el conocimiento de los demás se llama "cracker" y son los principales agentes que activan las posibles amenazas. En conclusión, de aquí en adelante, un cracker no debe ser confundido ni por error con un hacker (se recomienda al lector que ha llegado hasta estas lineas defender apasionadamente esta idea y explicarla a los no computologos). Deben ser llamados intrusos, vandalos o criminales. El llamarlos asi no pretende darles un calificativo despectivo o degradarlos como humanos, pero si deben ser rechazados como parte de la cibersociedad y esta misma debe encontrar la manera de juzgarlos pero no olvidando sus derechos como seres humanos. 2.Planeacion de infraestructura de seguridad. Para identificar los recursos que deben ser asignados a seguridad se debe aplicar una adecuada planeacion, la cual se puede dar en los siguientes pasos 2.1 Identificacion de necesidades de seguridad. Las necesidades de seguridad quedan clasificadas en los siguientes aspectos: Confidencialidad. Proteger la informacion de cualquiera que no se explicitamente autorizado por el propietario. Integridad. Proteger la informacion de ser borrada o alterada sin permiso del propietario Disponibilidad. Proteger los servicios que otorgan la informacion de sufrir degradaciones o no funcionar Consistencia. Asegurarse que el sistema se comporte como es con los usuarios autorizados Control. Regular el acceso al sistema solo a usuarios autorizados. Auditoria. Tener la capacidad de determinar quien,como,cuando y que informacion fue afectada Dependiendo de la organizacion, algunas necesidades tendran mas prioridad sobre otras. 2.2 Evaluacion de riesgos. Evaluar el riesgo consiste en identificar que proteccion se establece, de que se debe proteger y cuanto tiempo, esfuerzo y dinero se debe aplicar. Para valuar el riesgo se puede proceder de la siguiente manera Identificar QUE bienes se debe proteger. Pueden ser bienes tangibles (computadoras, datos, respaldos y archivos, software comercial, registros personales,registros deauditoria) o intangibles (seguridad y salud del personal, privacidad, claves personales, imagen publica y reputacion, confianza de los clientes, disponibilidad en el procesamiento,informacion de configuracion, conocimiento acumulado) Identificar amenazas sobre los bienes. Enfermedades de personal (simultaneo), perdidas de personal clave, perdidas de servicios de telefonia/red, fallas en electricidad,inundacion, robo de hardware, introduccion de virus, discontinuida de productos, bugs en el software, empleados incoformes, terrorismo, crackers, publicacion de informacion privada en sitios publicos Cuantificando las amenazas. Ante cada amenazas, se debe estimar la probabilidad de ocurrencia. Se pueden usar experiencias pasadas, informacion publica. Sitios como CERT o RISK Digest (www.cert.org y catless.ncl.ac.uk/Risks respectivamente) son utiles. 2.3 Justificacion Las personas pueden dudar si es necesario el esfuerzo de establecer una infraestructura de hardware/software para seguridad. Toda proteccion implica un costo, no solo en software tambien en personas, instalaciones y administracion. Existen dos criterios por los cuales se puede fundamentar la decision: Costo/beneficio. Costo de perdida(LC).Es la cantidad de dinero que se pierde ante una suspension del servicio Costo de recuperacion(RC).Es la cantidad de dinero que se invierte parar reestalecer el servicio Costo de prevencion(PC). El costo de prevenir la perdida Si (LC+RC)*p>PC,entoces considerar la proteccion del riesgo. Ejemplo: Una empresa en Internet renta su servicio por hora, teniendo un ingreso de 5000 USD por hora. En caso de no proteger su servicio, tiene que pagar 2500 USD por hora ante gastos de recuperacion. Existe una probabilidad de ataque de 60%. Si decide formar un area de seguridad usando open source y 3 personas con perfiles de hackers tiene que pagar 436 USD por hora. Conviene protegerse o esperar que se de la amenaza ? Usando la relacion (5000+2500)*0.6 = 4500 > 436 Conviene invertir en seguridad Minimo indispensable. Existen puntos de seguridad que nunca deben ser descuidados, aunque su costo no lo justifique. Un punto importante es que se debe considerar que los riesgos NUNCA pueden ser eliminados 2.4 Creacion de politicas Las politicas permiten definir que recurso debe ser considerado como valioso y los pasos que deben tomarse para proteger dichos bienes. La politica debe dejar claro que se protege y porque, dejando claro la responsabilidad que cubre dicha proteccion, y debe ayudar a resolver cualquier conflicto futuro. Una politica no debe especificar amenazas, maquinas o individuos, debe ser generica. 2.5 Implantacion. Al establecer las politicas, se deben seleccionar las protecciones que mejor convengan, usando un diseño que debe obtener como implantar los servicios de seguridad del sistema. La arquitectura de seguridad debe otorgar los siguientes servicios Autenticacion Control de acceso Integridad Auditoria Confidencialidad Al establecer que son dichos servicios, se deben seleccionar una serie de mecanismos y que son piezas de hardware y software 2.6 Auditoria y respuesta a incidentes Al concluir la implantacion del sistema, no se queda estatico, continuamente se necesita auditar para analizar como se comporta en el medio donde se desenvuelve. La seguridad no solo es un proceso automatizado, implica la intervencion humana. En caso de que surga un ataque, es necesario responder, con el fin de asegurar que el sistema de informacion conserve sus propiedades. Lo mas importante es que NUNCA se conteste un incidente de manera violenta. 3. Vulnerabilidades y amenazas Una vulnerabilidad es una debilidad que puede ser explotada para violar al sistema. Una amenaza es el evento potencial para explotar una vulnerabilidad. Cuando un sistema queda expuesto a una vulnerabilidad y una amenaza se realiza sobre el, se conoce como un abuso. El resultado de un abuso es la perdida de confidencialidad o integridad, robo de servicios o recursos de computo, denegacion de servicios. Las amenazas mas comunes son accidentes y errores, seguido del abuso de la autorizacion. Un abuso tiene un autor, motivacion, metodo de operacion, mision, victima y un daño. Los autores pueden ser personas internas o crackers. Tipicamente los ataques por personas internas son comunes, ya sea de manera involuntaria o preparada e inclusive pueden cooperar con los crackers. Un ataque tiene tres etapas Preparacion. Acumular informacion, caballos de troya, propagacion de programas, backdoors, spoofing, scanning, abuso de autoridad. Activacion. A partir de la informacion conseguida, el intruso decide abusar del sistema, ya sea utilizando una bomba de tiempo o una bomba logica Terminacion, que consiste en dejar al sistema inactivo, dejar que el ataque sea conocido y dejar pocos rastros del ataque. La mision del ataque puede consistir en un abuso activo que afecta la integridad o disponibilidad de la informacion. Un abuso pasivo es cuando el estado del sistema no es afectdo pero se viola la confidencialidad. La victima tipicamente es software vulnerable, pero inclusive se puede organizar un ataque sobre las protecciones (por ejemplo un crack de passwords o abrir una brecha en un firewall) 4. Anatomía de un ataque. Rastreo. Acotar las distintos recursos que el sistema tiene, acumulando toda la posible información del sistema. Exploracion. Análisis e identificación de los servicios del objetivo, con el fin de detectar que entradas al sistema son las vulnerables Enumeracion. Por cada servicio, detectar que directivas o instrucciones están activas, usuarios que lo usan y debilidades en las protecciones. Obtener Acceso. Intento formal de ataque, engañando al sistema o entrando a él como un usuario tipico Obtenecion de privilegios de administrador. Para poder alterar al sistema se trata de obtener total control del mismo por medio de usuarios privilegiados, usando vulnerabilidades conocidas Robo. Detectar que informacion es la mas valiosa en el sistema, donde se encuentra y como sustraerla sin que se pueda detectar Eliminación del rastro. Borrrar bitacoras para evitar una reconstrucción del ataque o generar confusiones Creación de puertas traseras (backdoors). Asegurar un futuro acceso al sistema ante cualquier medida de proteccion Negación del servicio. Sin el sistema no puede ser accesado, se trata de desactivar o enviarlo a una condicion de no operabilidad donde puede quedar expuesto. 5. Vulnerabilidades comunes. a) Ausencia de politicas de seguridad bien enunciadas, promulgadas y aceptadas y realizadas de acuerdo a los estandares de seguridad. b) Inadecuado monitoreo de acceso a los recursos c) Servicios sin autenticación d) Uso excesivo de confianza entre recursos e) Uso excesivo de controles de acceso f) Modulos de software sin actualizaciones, correciones o con uso no reportado g) Configuración incorrecta de equipos de comunicación y seguridad h) Configuración incorrecta de servicios de red k) Cuentas de usuarios con privilegios excesivos l) Mecanismos de autenticación con esquemas debiles, reutilizables, facilmente adivinables m) Servicios innecesarios activos n) Dejar que los servicios informen su medio ambiente o) Puntos de acceso remoto sin asegurar y sin monitorear 6. Diseño de sistemas de Seguridad. Dada la experiencia en el diseño de sistemas de seguridad, se deben aplicar una serie de criterios o filosofía. Dichos criterios son: Economía de los mecanismos - Mantener el diseño tan simple y pequeño como sea posible. Asegurar la configuración estándar - Existen dos maneras de aplicar la seguridad, la primera es dejar el sistema de información con la configuracion con la que se entrega e ir asegurandolo conforme se den incidentes "Todo lo que no esté prohibido está permitido" La otra filosofia es analizar la configuración estándar y checar que no tenga permisos habilitados para alguien que los tratar de explotar "Todo lo que está permitido está autorizado, lo demás debe ser denegado" Diseño Abierto. El diseño del sistema no debe ser secreto, para que se pueda revisar por varias personas. Separación de privilegios. Se debe distinguir las operaciones que una determinada entidad (persona o sistema) puede aplicar sobre la información y proveer los mecanismos necesarios para que dichos privilegios se apliquen. Minimos Privilegios. Cada programa o componente de un sistema de información debe operar con el minimo conjunto de privilegios para poder cumplir su tarea. Facilidad de uso. Se deben proporicionar facilidades para que el sistema de seguridad sea facilmente entendible. 7. Arquitectura de seguridad. Cualquier sistema de seguridad debe tener las siguientes propiedades : + Aislado. Cualquier componente del sistema no debe ser modificado y esto se debe lograr envolviendolo en mecanismos de hardware y software que rechacen accesos no autorizados. + Completo. Ningún mecanismo debe ser exento de que tenga una seguridad débil que lleve a instalación de puertas traseras. + Verificable. Se debe someter a un análisis y pruebas. Cada sistema de seguridad se puede ensamblar entre sí. Muchos de esos sistemas se usan como base de otros sistemas. Existe el concepto de la Base de Computación Segura (Trusted Computing Base o TCB) y se define como la totalidad de mecanismos de protección en un sistema de cómputo (hardware, firmware, software, middleware) cuya combinación es responsable de cumplir las políticas de seguridad" Para que un sistema de seguridad se ensamble con otro debe cumplir que sea aislado, completo y verificable. Y la unión de uno con otro forman la Base de Computación Segura, de tal manera que los nuevos sistemas que se ensamblen pueden confiar que están sobre una base segura (Es necesario notar que el confiar no implica olvidar al sistema, el cual debe ser sometido a una auditoría periódica para asegurar sus propiedades) Bajo el esquema de múltiples capas de seguridad, surge el concepto de servicio que define las funciones que un sistema de seguridad debe proveer para cumplir con las reglas de seguridad. Los servicios de seguridad que existen son: + Confidencialidad. La información no debe ser conocida por agentes ajenos al sistema. + Autenticación. Cada entidad que accese la información debe tener una identidad bien definida. + Control de acceso. Cualquier operación aplicada sobre la información debe ser autorizada o denegada bajo un criterio bien definido. + Integridad. La información no debe ser modificada por un agente ajeno y se debe detectar en caso de que se aplique. + Auditoría. Las operaciones aplicadas sobre la información debe ser guardada para su posterior análisis con el fin de reconstruir hechos. Un servicio de seguridad puede quedar implantado por uno o mas mecanismos de seguridad. Tipicamente dichos mecanismos son módulos de software o procesos logísticos para operar sobre la información. Existen varios mecanismos, de los cuales se pueden dar ejemplos por cada servicio + Confidencialidad. Criptografía + Autenticación. Usuario-Clave Secreta, métodos Biométricos, Autenticación basada en criptografía asimétrica + Control de acceso. Listas de control de Acceso (ACL) sobre recursos del sistema operativo, cortafuegos (firewalls) + Integridad. Inspectores de contenido, detectores de virus, detectores de intrusos + Auditoría. Bitacoras del sistema operativo o aplicación, exploradores de vulnerabilidades. El siguiente esquema muestra como se establece una arquitectura de seguridad +-----------------------------------+ | P O L I T I C A S | +------------------+-----------------------------------+-----------------------+ | S E R V I C I O S | +==============+============+===============+=========+===========+============+ | Comunicacion | Integridad | Autenticacion | Control | Auditoria | NO Repudio | | Segura | | | Acceso | | | +==============+============+===============+=========+===========+============+ | M E C A N I S M O S D E S E G U R I D A D | +==============================================================================+ +------------+ +-----------+ +----------------+ +--------------+ +----------+ | Detectores | |Inspectores| | Detectores | | Criptografia | | Firewall | | de | | de | | de | +--------------+ +----------+ | Intrusion | | Contenido | |Vulnerabilidades| +------------+ +-----------+ +----------------+ Un ejemplo de arquitectura de servicios de seguridad es el que se muestra a continuación A R Q U I T E C T U R A D E S E R V I C I O S D E S E G U R I D A D =========================================================================== +-----------+ +-----------------------------------------+ +---------------+ |Credencial |---+ +--->| Autenticacion | +=====+=====+ D O M I N I O +-------------+-+ | HW | SW | +---------------------------------------+ +-----------+ | +=====+=====+ | +----------+ +---O--| Servicios |<------+ | | /O o O o /| | | +-----------+-->+-------+ | +----------+o+ }---> Huecos | | +-----------+ | Proxy | \O/ =======O |Aplicacion| / +-----------+ +---O--| Servicios |-->+-+-----+ | | +----------+/ / o O /| | | +-----------+ | / \ | | +-+-----------+o+ | | +-------->+-------+-+ USUARIO | + API -----+ | Librerias | / | | | +----+ | Equipo | | | +-----------+/ | | +-| N1 | | Comunic + +-----------+ | +-+ +---------+-+ | | +----+ | HW / SW | |Dispositivo| | | +----------+ / O o O o /| | | +----+ +-+-------+ | I/O | | +===========+ | +-----------+ + | +-| N2 | | +--------+ +-----+-----+ | /O o o O /| +-> | Servicios |o/ | | +----+ +--|Detector| | | +===========+ | +-----------+/ | | +----+ | |Intrusos| | | | Sistema |o+---+ | +-| N3 | | +--------+ | | | Operativo | / | +-------------+ | | +----+ | +----------+ | | +===========+/ +--|Autenticacion| | | +-| Firewall | | | +-------------+ | +----------+ +--------+-+ | | N O D O D E C O M P U T O | | Recursos | | | +---------------------------------------+ +----------+ +-+ | | +------------+ | | +------------+ +---| Detectores | | | | Medio de | | | Cont/Vuln | | +--------------| Transporte |----------------------+ +------------+ | +------------+ | | +---------+ +--+ +------------+ | | Dominio |--|FW|----+ | Medio de | | +---------+ +--+ +--------------| Transporte |---------------------+ | |de Dominios | +---------+ +--+ | +------------+ | Dominio |--|FW|----+ +---------+ +--+