.. _seg-seg_disp: ********************************** Seguridad en sistemas informáticos ********************************** Con el paso de los años, el tratamiento de la información se ha ido automatizando y, en consecuencia, la importancia y cantidad de los datos que manejan los sistemas informáticos ha ido aumentando. Esto ha atraído el interés de acceder fraudulentamente lo que ha supuesto el aumento de los ataques. Paralelamente a los ataques, la seguridad de estos sistemas ha ido aumentando y la importancia que ha cobrado esta también. En la actualidad, la seguridad de los sistemas, sobre todos los conectados a redes, no se parece absolutamente en nada a aquella que existía en los años 70 cuando el tráfico en internet se limitaba a un puñado de *hackers* conectados desde las principales universidades de los EE.UU. La presente unidad es meramente introductoria: presenta conceptos e ideas propias de la seguridad y cita técnicas que se estudiarán con moderada profundidad en unidades posteriores. Conceptos ********* Antes de entrar en harina es conveniente definir: :dfn:`Seguridad informática` Son las medidas y controles que aseguran la *confidencialidad*, *integridad*, *fiabilidad* y *disponibilidad* de todos los activos del sistema de información. de cuya definición, a su vez, deriva la necesidad de definir estos otros conceptos: :dfn:`Activo` Componente del sistema informático cuyo deterioro supone un coste o un agravio. Puede ser tanto *hardware*, como *software* como datos. :dfn:`Confidencialidad` Es la característica que reúnen los datos sobre los que se garantiza únicamente acceso al personal autorizado para su consulta. :dfn:`Integridad` Es la característica que reúne aquel activo que conserva su corrección y complitud. En consecuencia, procurar la integridad de un componente *hardware* implica que un mal uso o un mal mantenimiento del mismo no provoque su rotura o su mal funcionamiento; y lo propio sobre un dato, que éste no se pierda o sea modificado por alguien no autorizado. **Fiabilidad** y **Disponibilidad** para cuya :ref:`definición y estudio dedicaremos un epígrafe entero `. En la *seguridad informática* participan una serie de agentes, sucesos y actividades que podemos resumir en el siguiente cuadro: .. image:: files/EsquemaSeguridad.png aunque su completa compresión exige que introduzcamos también sus definiciones, que dividiremos en dos grandes grupos: las relacionadas con el *daño* y las relacionadas con la *reparación*. En cualquier caso, pese a todo el esfuerzo que se dedique a la seguridad, es indispensable tener presente que la seguridad absoluta no existe. De hecho, es célebre al respecto la frase del experto en seguridad y profesor universitario `Gene Spafford `_: El único sistema verdaderamente seguro es aquel que esté apagado, enterrado en un bloque de hormigón, sellado en una habitación revestida de plomo y protegido con vigilantes armados... y aun así tengo mis dudas Daño ==== De la parte del daño, podemos hacer las siguientes definiciones: :dfn:`Daño` Es el efecto indeseado que ocasiona al sistema informático un determinado suceso perjudicial. Según sea la naturaleza del efecto, se distingue los siguientes tipos de daños: + De **intercepción**: aquel que deriva en el acceso de terceros no autorizados a los datos del sistema (p.e. la consecuencia de la intercepción de una comunicación o del robo de credenciales). + De **interrupción**: aquel que deriva en un cese temporal del servicio del sistema informático (por ejemplo, como consecuencia de la rotura de algún componente, la pérdida de datos o el colapso de alguna aplicación). + De **modificación**: aquel que deriva en la alteración fraudulenta de los datos almacenados o transmitidos, o en la alteración en el comportamiento de los programas. + De **fabricación**: aquel que deriva en la creación de datos espurios que son almacenados (p.e. en una base de datos) o transmitidos (p.e. a través del correo electrónico). .. seealso:: Una explicación más detallada de estos tipos, pero aplicada al caso particular de la seguridad en redes, puede leerse en este :ref:`epígrafe dedicado a los tipos de ataques en redes `. :dfn:`Amenaza` Es un suceso o acción cuya consecuencia o propósito, de llevarse a cabo, provoca daño al sistema. Dependiendo de la característica a la que atendamos pueden ser: * **Externa** o **interna**, si atendemos al *lugar de procedencia* del agente causante. * **Fortuita** o **intencionada**, si atendemos a su intencionalidad. * **Físicas** o **lógicas**, si atendemos al *activo* del sistema al que afectan. Las :ref:`físicas ` afectan al *hardware*; mientras que las *lógicas*, al *software* y *datos*. :dfn:`Ataque` Es la materialización de una amenaza no fortuita, que persigue la consecución de un daño. :dfn:`Accidente` Es la materialización de una amenaza fortuita que provoca un daño. :dfn:`Vulnerabilidad` Es el grado de exposición del sistema a las amenazas. Las vulnerabilidades pueden presentarse: * En el *hardware* (p.e. acceso indiscriminado al servidor). * En el *software* (p.e. un *bug*). * En los datos (p.e. no firmar los mensajes). :dfn:`Riesgo` Es el grado de exposición a una amenaza, descontadas las contramedidas que se hayan tomado para evitarlas. :dfn:`Atacante` Es el agente que consuma o intenta consumar la amenaza que explota cierta vulnerabilidad. Puede ser tanto interno como externo a la organización. Referidos a los atacantes hay una serie de términos comunes: * :dfn:`Hacker` es un experto en asuntos informáticos, use como use sus conocimientos. `Dennis Ritchie `_ o `Richard Stallman `_ entran dentro de esta definición. * :dfn:`Cracker` es la persona que vulnera la seguridad de un sistema informática de forma ilícita. El nombre deriva de la fusión de las palabras **cr**\ *iminal h*\ **acker**. Si lo hiciera, en cambio, para poner a prueba el sistema e informar al propietario, deberíamos referirnos a él como :dfn:`hacker de sombrero blanco`. * :dfn:`Lamer` es la persona con escasos conocimientos técnicos (pero generalmente una excelente opinión de sí mismo) que presume ante los demás a pesar de sus carencias. Es muy común en el ámbito de la seguridad y, por lo general, intenta atacar sistemas aplicando recetas basadas en herramientas prefabricadas cuyo funcionamiento apenas entiende. :dfn:`Impacto` Es el grado de daño que produce un ataque consumado con éxito parcial o total. Defensa ======= Y de la parte de la defensa: :dfn:`Contramedida` Es la acción encaminada o bien a detectar o prevenir la amenaza que aprovecha cierta vulnerabilidad, o bien a corregir o paliar el daño provocado por un ataque o un accidente. Son, pues, de cuatro tipos: + *Detectivas*. + *Preventivas*. + *Paliativas*. + *Correctivas*. :dfn:`Análisis forense` Referido a la seguridad, es el conjunto de acciones destinadas a extraer información de los dispositivos de almacenamiento, sin alterar su estado a fin de conocer las causas por las que se ha producido un accidente o las vulnerabilidades que ha explotado o intentado explotar un ataque. :dfn:`Política de seguridad` Es el documento que recoge todas las directivas y objetivos que con respecto a la seguridad se propone una empresa u organización y establece los procedimientos y políticas para conseguirla. Se compone de: + *Análisis de riesgos*. + *Plan de seguridad*. + *Aplicación* del propio plan. + *Auditoría*. :dfn:`Análisis de riesgos` Es el análisis de todas las vulnerabilidades y amenazas de todos los activos del sistema y la valoración del impacto de cada posible daño. :dfn:`Plan de seguridad` o :dfn:`plan de contingencias` Es el conjunto de todas las contramedidas implementadas sobre un sistema y se compone de tres partes: * :dfn:`Plan de respaldo`, compuesto por todas las contramedidas preventivas (por tanto, seguridad activa). * :dfn:`Plan de emergencia`, compuesto por todas las medidas paliativas aplicadas durante el daño o inmediatamente tras éste. * :dfn:`Plan de recuperación`, compuesto por todas las medidas correctivas que intentan volver a la situación anterior al daño. :dfn:`Auditoría` Es la revisión pormenorizada del sistema en la que se buscan vulnerabilidades no conocidas y defectos en la aplicación del plan de seguridad. Como consecuencia, sirven como verificación de dicho plan y radiografían cuál es el estado en la seguridad. Un informe de auditoría recoge: + La descripción de los activos, las vulnerabilidades y las contramedidas definidas. + Una relación de vulnerabilidades y amenazas detectadas. + La verificación del plan de seguridad. + Una propuesta de mejora que incluya contramedidas adicionales. Objetivos ********* La seguridad en los sistemas de información se encamina a conseguir los siguientes objetivos: * **Confidencialidad**, que consiste en prevenir que individuos no autorizados accedan a la información almacenada, transmitida o tratada por el sistema informático. * **Integridad**, que consiste en garantizar que los datos, ya sea almacenados o transmitidos, no se vean alterados fortuitamente o fraudulentamente por un tercero ajeno al creador. * **Disponibilidad**, que consiste en garantizar en todo momento el acceso sobre el sistema y sus datos a las personas autorizadas. * **Autenticidad**, esto es, conocer fehacientemente quién se encuentra en el otro extremo. Este objetivo, junto al de la *integridad*, facilitan el **no repudio**, esto es, garantizar que el emisor de un mensaje no pueda negar que lo envió (:dfn:`repudio en origen`), así como que el receptor no pueda negar que lo recibió (:dfn:`repudio en destino`). * **Auditabilidad** o **trazabilidad**, que es la posibilidad de un sistema para ser analizado posteriormente mediante el registro de su comportamiento. Clasificación ************* Dependiendo del criterio que usemos podemos establecer dos clasificaciones diferentes para la seguridad: + Según sea el recurso que protege, puede ser **física** o **lógica**. + Según sea el momento en que se aplica, puede ser **activa** o **pasiva**. Según su objeto =============== Dado que en un sistema informático hay *hardware*, componente físico, *software*, componente lógico; y *datos*, de naturaleza lógica también; la seguridad puede ir encaminada a proteger un recurso físico o un recurso lógico. .. _seguridad-f: Seguridad física ---------------- Es, como ya se ha definido, la seguridad encaminada a proteger los componentes físicos del sistema informático. A grandes rasgos podemos identificar las siguientes amenazas físicas: .. table:: Amenazas físicas :class: amenazaf +------------+---------------------+--------------------+ | Naturaleza | Amenaza | Contramedida | +============+=====================+====================+ | | Catástrofe natural | Copia remota. | | | | Ubicación. | | +---------------------+--------------------+ | | Accidente | Mantenimiento. | | | | Protección. | | | | Ubicación. | | Fortuita +---------------------+--------------------+ | | Fallo de suministro | |SAI|, Regleta. | | +---------------------+--------------------+ | | Rotura | Copia, Redundancia | +------------+---------------------+--------------------+ | | Robo | Control físico | | Provocada +---------------------+ del acceso | | | Sabotaje | | +------------+---------------------+--------------------+ La tabla representa **amenazas** físicas que pueden derivar en un problema de seguridad física o lógica. Por ejemplo, un problema en el suministro eléctrico (una sobretensión, por ejemplo), puede provocar la rotura de un componente físico (seguridad física); pero otro fallo eléctrico como un apagón puede derivar en la pérdida de datos (seguridad lógica). Es por ello que en las contramedidas se citan en ocasiones soluciones típicas de la seguridad física (como una regleta protectora), en ocasiones soluciones de seguridad lógica (copia de datos), y en ocasiones de ambas (|SAI| o control físico del acceso). Centrándonos en las medidas propias de la seguridad física: * El |SAI| como herramienta para evitar la inutilización de componentes físicos, se tratará :ref:`en la última sección del tema `. * Para los accidentes fortuitos, es siempre conveniente: - Un adecuado **mantenimiento** del lugar donde se dispone el sistema informático. Una gotera, por ejemplo, puede provocar que el agua se cuele en el recinto y que malogre el *hardware*. Otro ejemplo, puede ser que un inapropiado mantenimiento de la red eléctrica derive en un cortocircuito que provoque un incendio. - Habilitar medidas de **protección** que minimicen el accidente. Por ejemplo, disponer detectores de incendios, colocar extintores, o usar material ignífugo para dificultar la extensión del fuego. - Evitar situar el sistema informático en un lugar con más probabilidades de sufrir accidentes (o catástrofes naturales). Por ejemplo, si situamos nuestras oficinas colindantes con un negocio donde se trabaje con materiales explosivos e inflamables, tenemos más papeletas para acabar sufriendo un incendio. * El **control físico** del acceso salvaguarda a nuestros equipos de su robo o de su sabotaje\ [#]_: - Puertas con cerradura. - Controles biométricos. - Vigilantes jurados. .. _seguridad-l: Seguridad lógica ---------------- Por su parte, la :dfn:`seguridad lógica` se encamina a proteger los componentes lógicos y los datos. .. table:: Amenazas lógicas :class: amenazasl +-------------------------+------------------------------------------------+ | Amenaza | Contramedidas | +=========================+================================================+ | Robo de datos | * Cifrado. | | | * Control del acceso. | +-------------------------+------------------------------------------------+ | Pérdida de datos | * Copia de seguridad. | | | * |RAID| | | | * Protección física del disco. | +-------------------------+------------------------------------------------+ | Corrupción de datos | * Protección física del disco. | | | * Sistemas de ficheros tolerantes a fallos | | | * Técnicas de hash. | +-------------------------+------------------------------------------------+ | Alteración del software | * Control lógico del acceso. | | | * Software de protección. | +-------------------------+------------------------------------------------+ La tabla, en especial las contramedidas propuestas, requiere cierta explicación. * El **robo de datos** puede producirse por dos vías: - Por el acceso físico al *hardware* y el robo del soporte de almacenamiento. En este caso, sería aplicable lo explicado bajo el epígrafe anterior. - Por el acceso lógico a través de la red, en cuyo caso habría que aplicar contramedidas de control como: + Política de contraseñas. + Permisos. + *Software* de contención: cortafuegos, proxies, antivirus, etc. En cualquier caso, consumado el robo hay un modo de que la información no pueda ser leída por el ladrón: haber almacenado cifrados los datos. * La **pérdida** de datos puede paliarse aplicando distintas contramedidas dependiendo de cuál sea la causa que origina la pérdida: - Contra pérdidas por la rotura del dispositivo de almacenamiento, puede habilitarse medidas que protejan al dispositivo (p.e. ante un apagón, disponer un |SAI|), redundancia en los discos (|RAID|) o copias de seguridad. - Contra pérdidas por borrado accidental, la contramedida adecuada es disponer copias de seguridad. * La **corrupción** de los datos puede derivar en pérdida (una corrupción fortuita) o en obtener información errónea (en especial, si la corrupción ha sido intencionada porque el atacante ha modificado la información inicial). Para la primera corrupción, debe procurarse proteger el sistema de almacenamiento de fallos de suministro (p.e. mediante |SAI|) y utilizar sistemas de ficheros tolerantes a fallos, que se recuperan ante un fallo inesperado. Ante una corrupción intencionada de los datos, existen mecanismos para conocer que esa corrupción se ha producido como la firma digital que incorpora técnicas de hash. .. seealso:: Para conocer en profundidad las técnicas de cifrado y firma digital hay :ref:`una unidad íntegra dedicada a la criptografía `. * La **alteración del software** puede deberse: - Una alteración *manual* llevada a cabo por alguien que ha accedido al sistema. Por ejemplo, si logra permisos de administrador, puede sustituir un programa por otro con el mismo nombre. - Una alteración provocada por algún *software* especializado (virus, troyano, etc) Otro aspecto a destacar en la seguridad son las **herramientas** que se usan para amenazarla: **Herramientas de diagnóstico** Son herramientas que sirven para encontrar vulnerabilidades, como un escaneador de puertos. No son programas maliciosos en sí, y de hecho están pensados para usarse en el diagnóstico de la seguridad. **Puertas traseras** (*backdoors*) Son agujeros que incluye el propio programador en su programa y que permiten obtener acceso ilícito al mismo. **Software malicioso** Nombre genérico que engloba todo *software* diseñado con propósitos espurios. También es conocido por el anglicismo :dfn:`malware`. Según su momento de aplicación ============================== Una contramedida puede actuar en el momento en que se produce la amenaza o después de esta. Seguridad activa ---------------- Las técnicas de seguridad **activa** se desencadenan en el momento en que se produce la amenaza con el objeto de detectarla o prevenirla. De este modo, son medidas de seguridad activa: * Todas las medidas de **control de acceso** encaminadas a salvaguardar *software*, datos y *hardware*: - Autenticación. - Políticas de permisos. - Control físico: biométricos, etc. * *Software* de defensa: - Cortafuegos. - Antivirus. - De detección de intrusos. * Sistemas de ficheros tolerantes a fallos. * *Firma digital* que evita que la información firmada pueda adulterarse\ [#]_. * *Cifrado* que evita la lectura o modificación de la información. .. note:: Es obvio que, si consideramos la amenaza como el robo en sí, cifrar no evita que ésta se consuma, sino los efectos del robo y, por tanto, sería una contramedida de seguridad *pasiva*, * Sistemas de protección ante fallos y accidentes: - |SAI| (online o interactivo) que previene las consecuencias nocivas sobre el *hardware* de picos y bajadas de tensión. - Sistemas de protección física. Seguridad pasiva ---------------- Las técnicas de seguridad **pasiva** se establecen para corregir o paliar los efectos negativos que haya producido una amenaza. * |SAI| ante cortes de suministro eléctrico que mantienen activo el sistema, al menos por un tiempo, y cuando estén a punto de agotarse son capaces de hacer que el sistema se apague ordenadamente. * La *redundancia* que permite mantener el servicio ante la pérdida de uno de los componentes redundantes. Por ejemplo, en sistemas con discos redundantes (|RAID|), la ruptura de un disco no supone ni la pérdida de información ni el cese del servicio. Pero la redundancia no sólo puede llevarse a cabo en el almacenamiento. También puede ser redundante un servicio de correo y cuando caiga el servidor prioritario de correo (fallo en la red o en *hardware* del servidor), seguir admitiendo mensajes uno alternativo. * Las *copias de seguridad* de los datos para recuperar datos perdidos por la ruptura de un dispositivo de almacenamiento. .. _disponibilidad: Fiabilidad y disponibilidad *************************** Ambos son conceptos íntimamente ligados que trataremos someramente bajo este epígrafe. La :dfn:`fiabilidad` es el grado de garantía que proporciona un sistema informático de ofrecer su servicio a los usuarios autorizados. La :dfn:`disponibilidad`, por su parte, es la medida del tiempo que un sistema ofrece servicio a los usuarios autorizados. Lo ideal es que fiabilidad y disponibilidad fueran absolutas, pero en la práctica es inevitable que se produzca **interrupciones**, que pueden tener dos naturalezas: + **Previstas**, producidas por cambios planificados en el *software* o el *hardware*. + **Imprevistas**, producidas por contingencias diversas: un fallo en el suministro eléctrico, un ataque, la rotura de algún componente físico, etc. Tres son los **factores** que influyen en la disponibilidad: * La :dfn:`tolerancia al fallo`, esto es, la capacidad de seguir funcionando aunque se haya producido algún fallo en el sistema. * La :dfn:`escalabilidad`, esto es, la capacidad para acomodarse a la variabilidad en la demanda del servicio, de manera que se puedan absorber picos en su demanda. * La :dfn:`recuperabilidad`, esto es, la capacidad para restaurar rápidamente el servicio sin sufrir pérdidas de datos, después de que algún fallo lo haya interrumpido. Técnicas ======== *Técnicas* para mejorar la *disponibilidad* son: - Cualquier técnica de seguridad activa que evite una amenaza que suponga una interrupción. Por ejemplo, un control físico del acceso que impida que se lleve a cabo un sabotaje; o labores de mantenimiento que ayuden a preservar la integridad del *hardware*. - |SAI| que mantenga el suministro eléctrico en caso de apagón. Si este no es muy prolongado y las baterías del |SAI| gozan de suficiente autonomía, el *hardware* nunca llegará a sufrir las consecuencias del percance y el servicio no sufrirá interrupciones. - La redundancia en el sistema que posibilita la continuación del servicio, cuando una de las partes redundantes falla. Pueden proporcionar redundancia: + |RAID| para la redundancia en el almacenamiento. + *Proxies* que redirijan las conexiones hacia servidores redundantes: .. image:: files/proxy.png Medida ====== Matemáticamente podemos medir la disponibilidad como la relación entre el tiempo en que se encuentra disponible el servicio y el tiempo total. Por ejemplo, si a lo largo de un año, el servidor se ha encontrado fuera de línea la mitad del tiempo, su disponibilidad habrá sido de un --inaceptable-- 50%. A esto respecto los proveedores de servicios deben indicar siempre entre las características del mismo el llamado :dfn:`SLA` ("Acuerdo de nivel de servicio" en castellano) que es la disponibilidad mínima que se comprometen a ofrecer para el servicio. En alta disponibilidad, el |SLA| ideal es el definido por la *regla de los cinco nueves* que consiste en estar disponible el 99,999% del tiempo, o lo que es lo mismo, sólo será inaccesible algo más de 5 minutos al año. Este es un nivel muy exigente que muy pocos logran alcanzar. Amazon_, por ejemplo, *sólo* se compromete a una disponibilidad del 99,95%. Otras reglas de referencia son la regla de los tres nueves (99,9%) y la de los cuatro nueves 99,99%. En cualquier caso, para el cálculo la *disponibilidad* es preciso primero estudiar la *fiabilidad* a través de varios conceptos: +---------+-----------------------------------------------------------+ | Símbolo | Descripción | +=========+===========================================================+ | *TBF* | Tiempo entre fallos consecutivos | +---------+-----------------------------------------------------------+ | *TR* | Tiempo de reparación del fallo | +---------+-----------------------------------------------------------+ | *TF* | Tiempo de funcionamiento entre fallos consecutivos | +---------+-----------------------------------------------------------+ | *N* | Número de fallos en la unidad de tiempo (1 año) | +---------+-----------------------------------------------------------+ los cuales podemos representar gráficamente así: .. image:: files/disponibilidad.png A partir de estas medias podemos definir distintas métricas: + Los totales de las anteriores: .. math:: \mathit{TTR} = \sum_i {\mathit{TR_i}} \mathit{TTF} = \sum_i {\mathit{TF_i}} \text {(Tiempo total)} \;\; \mathit{TTBF} = TT = \sum_i {\mathit{TBF_i}} + Los tiempos medios se calculan como: .. math:: \mathit{MTTR} = \dfrac{TTR}{N} \mathit{MTTF} = \dfrac{TTF}{N} \mathit{MTBF} = \dfrac{TT}{N} Y la propia **disponibilidad** tal y como la hemos definido. En consecuencia: .. math:: D = \dfrac{TTF}{TT} = \dfrac{MTTF}{MTBF} .. rubric:: Ejemplo *Calcular los tiempos medios de reparación, de funcionamiento y entre fallos, y la disponibilidad de un servidor que en el último año ha fallado diez veces, de las cuales se ha subsanado 3 veces en cinco minutos el error, cinco veces en diez minutos y dos veces en una hora.* .. math:: TTR = 3*5 + 5*10 + 2*60 = 185 \: \text{minutos} TT = 1 \: \text{año} = 525600 \; \text{minutos} TTF = 525600 - 185 = 525415 \; \text{minutos} Los tiempos medios son: .. math:: MTTR = 18,5 \; \text{minutos} MTBF = 52560 \; \text{minutos} MTTF = 52541,5 \; \text{minutos} Y la disponibilidad: .. math:: D = \dfrac{525415}{525600} = 99,96\% .. include:: /guias/0226.seg/99.ejercicios/011.intro.rst .. rubric:: Notas al pie .. [#] Es obvio que también salvaguarda del robo de información, ya que un ladrón puede tener el propósito de robar un disco duro, no por el valor del componente, sino por el valor de los datos que este contiene. .. [#] En puridad, la firma digital no evita la adulteración de la información. Lo que evita es que tal adulteración pase desapercibida y, en consecuencia, sea efectiva. Como, precisamente, lo que se pretende al firmar no es tanto imposibilitar la adulteración en sí como que la manipulación no se reconocible, consideramos que evita la adulteración. .. _Amazon: https://www.amazon.es/ .. |SLA| replace:: :abbr:`SLA (Service Level Agreement)`