En la actualidad, el uso de equipos informáticos se ha extendido a la totalidad de las empresas y hogares en todo el mundo. Estos equipos informáticos intervienen de manera importante en la entrega de productos y servicios en una empresa. "Atacar" a estos sistemas o servicios es dañar enormemente la infraestructura de la empresa o el equipo personal, ocasionando pérdidas económicas por no parchear una vulnerabilidad o no asegurar correctamente los activos informáticos de la empresa.
Al igual que proteges una casa poniendo una cerradura en la puerta de tu hogar, proteger los equipos informáticos y los activos de la empresa son una misión fundamental de la seguridad informática.
En este curso introductorio de la seguridad informática no vamos a analizar en detalle la norma ISO 27001 y la norma ISO 17799, ligada a la seguridad informática sobre la preservación de la "triada de la información", ya que existen documentos públicos que hablan sobre la Metodología de Análisis y Gestión de riesgo de los Sistemas de Información (MAGERIT).
En este curso nos vamos a centrar en un enfoque práctico, conociendo los términos, conceptos y sistemas necesarios para poder afrontar futuros cursos especializados en la seguridad informática.

Conceptos básicos. Para ocultar pinchar en el botón +/-.
Pero como necesitamos una base de los conceptos de la seguridad informática, te propongo una serie de definiciones que son necesarias que conozcas para que tu desarrollo en el mundo de la SI sea completo.
Triada de la información.De acuerdo con la definición de la ISO 17799 para la seguridad informática, los principios de seguridad se basan en tres pilares:
● La confidencialidad. Indica que la información solo es accesible para el usuario autorizado.
● La integridad. Establece que la información debe ser exacta, completa y solo modificable por personal autorizado para ello.
● La disponibilidad. La información esté disponible cuando se requiera.

Riesgo en un incidente de seguridad.El riesgo es la medida que puede causar un daño a los sistemas informáticos (a partir de ahora activos), que ocasiona una amenaza específica. Por ejemplo, si no pones contraseñas en tu equipo, cualquiera en tu oficina podrá entrar a tu ordenador. En este caso, la amenaza es el acceso no autorizado, y el riesgo es el peligro que pueda ocasionar no proteger el activo.
Establecer los diferentes riesgos y los impactos que podrían generar en la empresa o en el activo se realiza en el Sistema Gestor de Seguridad Informática de la empresa, el conocido como SGSI, y más específicamente en el Modelo de Seguridad orientado a la gestión del riesgo.
En el estudio del riesgo se detallan dos planes principales:
● El análisis del riesgo: identificar amenazas, determinar vulnerabilidades (debilidades) y medir el impacto.
● La gestión del riesgo: partiendo del estudio anterior, analiza los riesgos legales o económicos y toma decisiones sobre contramedidas.
Existen muchos tipos de riesgos y amenazas que se han definido en la norma MAGERIT de España, que indica los riesgos y vulnerabilidades más expuestas en las empresas españolas.
Salvaguardas.También llamadas contramedidas, son acciones, eventos o sistemas que permiten prevenir, detectar, impedir, reducir o controlar una amenaza y el daño que puede ocasionar a los activos en una empresa. Por lo tanto, las salvaguardas son elementos de defensa, como por ejemplo tener un antivirus operativo y actualizado en tu PC (que no te garantiza una protección total de tu sistema).
Existen varios tipos de salvaguardas según la categoría:
● Salvaguardas preventivas o proactivas.
● Salvaguardas reactivas.
● Salvaguardas de aceptación del riesgo.
Las primeras intentan anticiparse a la ocurrencia del incidente. Las segundas persiguen reducir el daño una vez ocurrido. Las terceras aceptan el riesgo y deciden si la contramedida es más cara que el daño.
Sistemas gestores de seguridad informática.Un SGSI es un sistema de gestión para mantener el entorno seguro de los activos y las instalaciones. Es un gran documento donde se analiza la empresa y se establecen las necesidades de seguridad tanto físicas como lógicas e informáticas, con el fin de mejorar, mantener y actualizar las medidas de protección.
El plan de seguridad de la empresa se basa en la metodología de mejora continua de Deming.

Esta metodología se aplica al SGSI analizando las necesidades de seguridad de la empresa, estableciendo las medidas de protección para alcanzar el objetivo y actualizando las políticas sobre riesgos y amenazas de acuerdo con la actualización de los activos. Es un ciclo continuo.
Seguridad Física vs Seguridad Lógica.La seguridad de la información debe abarcar tanto los ámbitos físicos como los lógicos, ya que no solo son intrusiones lógicas las que pueden afectar al plan de seguridad de una empresa.
La seguridad física es el conjunto de barreras físicas y mecanismos de control para proteger los activos de amenazas físicas y las instalaciones, como por ejemplo tornos, controles biométricos, etc.
La seguridad lógica es la que se ocupa de barreras lógicas, mecanismos y procedimientos para proteger los activos y sistemas de una empresa, como por ejemplo establecer reglas de firewalls, sistemas IDS/IPS, bloqueo de puertos, autenticación de usuarios, etc.
¿Cuál es mejor? Creo que la mejor opción es un sistema híbrido que combine ambas. Por ejemplo, aplicar un sistema multifactor para acceder a una máquina protege más al activo. Supón que para entrar a una instalación debes pasar por un lector de tarjetas (tu tarjeta es única para el acceso) y luego, en la máquina, se pide una contraseña que te envían a tu correo personal. Así minimizamos el riesgo de amenazas al disminuir la vulnerabilidad del acceso no autorizado.
Con esto y un poco más de conocimiento ya eres un fantástico analista de seguridad. ¡Enhorabuena!
Protocolos de Red.
Los protocolos de red son una serie de reglas y normas que permiten conectar los diferentes dispositivos dentro de dicha red. Para entender qué son los protocolos, debemos establecer qué es una red, ¿verdad?

Una red es un conjunto de dispositivos que se conectan entre sí mediante una serie de protocolos de forma lógica gracias a un medio físico. Venga, lo intento de nuevo: Internet es una red global donde nos conectamos a otros dispositivos que nos devuelven contenido alojado dentro de dichos servidores. ¿Mejor?
Sin tener en cuenta cómo nos conectamos a los servidores y el proceso de negociación que veremos más adelante, la conexión a dichos dispositivos se puede llevar a cabo de forma alámbrica, inalámbrica o mediante conductores internos llamados buses.
La forma de conectarnos a otros dispositivos e interactuar con ellos define las propiedades y las características de dicha red.
Los protocolos que gobiernan una red son las normas y negociaciones que se realizan en la comunicación sobre una red. Existen muchos protocolos y muchas reglas de negociación para que los activos puedan conectarse en cualquier red.
También hay que definir que el concepto de red es muy abstracto. Una red puede estar formada por tu PC únicamente cuando lo conectas mediante un puerto serie a una impresora en otra habitación (tu red está formada por tu PC y la impresora), o los antiguos cibercafés donde varios PCs se conectaban entre sí y online para navegar por Internet.

Por lo tanto, los protocolos de red deben identificar cada dispositivo de la red, organizar el tráfico de datos entre ellos y evaluar la calidad de los datos transmitidos.
Un poco de Historia.A principios de los años 70, Estados Unidos desarrolló ARPA a partir de un proyecto en el que, en caso de ataque a la red de comunicaciones o rotura de algún nodo, las comunicaciones no se interrumpiesen y se compartiesen por otros nodos. De ahí surgió el protocolo NCP (Network Control Protocol). Este protocolo se basa en fragmentar la información en paquetes para enviarla a través de la red, añadiendo en cada paquete un código de control que identifica al paquete en cuestión. Cuando el paquete llega al destino, si el destino recibe algún paquete erróneo, solicita que se reenvíe dicho paquete. Con esto se garantiza la fiabilidad de los datos. Además, como en cada paquete se incluye la dirección del destino, estos datos se pueden transmitir por varios caminos, optimizando el uso de la red.
De ese protocolo surgió a principios de los 80 el protocolo TCP/IP, que es el protocolo hoy en día en uso para conectar diferentes máquinas en una red. El protocolo TCP/IP conecta diferentes hardware y software entre sí, ya que cada máquina puede ser diferente, traduciendo la información que transmiten a un lenguaje común. Aunque antes del protocolo TCP/IP existía el modelo de red OSI, que fue de los primeros utilizados.
El modelo OSI se lanzó hace varias décadas debido a la necesidad de organizar las diferentes comunicaciones entre redes, dispositivos, hardware y software, porque cada red privada tenía protocolos de red que no eran compatibles con los otros. Por eso la ISO (Organización Internacional de Normalización) investigó muchos esquemas de red y el modelo OSI fue el resultado para implementar una comunicación entre diferentes redes.

Pero retomemos. El protocolo TCP/IP está formado por dos protocolos: TCP e IP. Este conjunto está estructurado en 4 capas en lugar de las 7 de OSI:
● Aplicación. Esta capa agrupa los niveles OSI superiores (aplicación, presentación y sesión). En esta capa, los usuarios llaman a una aplicación para acceder a los servicios disponibles en la red. Proporciona servicios como SMTP, FTP, SSH, HTTPS, etc.
● Transporte. Los protocolos de este nivel proporcionan comunicación entre los programas de la capa de aplicación. Regula el flujo de información, asegurando que los datos lleguen sin errores. En esta capa los datos se dividen en segmentos a los que se añade un código de control que se valida en el destino. Si falla el segmento, se reenvía. En esta capa están los protocolos TCP y UDP.
● Internet. Esta capa maneja la transmisión de una máquina a otra. Recibe la solicitud de la capa de transporte para enviar el paquete, cuya cabecera contiene el destino. Aplica un algoritmo de ruteo al destino y verifica los paquetes. En esta capa está el protocolo IP.
● Enlace. Los protocolos de este nivel se encargan de transmitir a través del medio físico al que se encuentran conectados cada host o máquina. Cada medio físico proporciona sus propios protocolos de nivel de enlace, por lo que pueden existir muchos. Pero lo mejor de todo es que TCP/IP nos abstrae del medio: no necesitamos conocerlos.

TCP/IP fragmenta la información que se va a transmitir en paquetes de menor tamaño llamados datagramas (aunque en TCP es más correcto llamarlos segmentos). A cada uno de estos fragmentos se le añaden cabeceras con información que permite el envío de cada paquete de forma independiente, de manera que las líneas de comunicación se pueden compartir con otros usuarios y más datos.
Entre las ventajas de usar estos protocolos de red están:
● Mayor eficiencia en el uso de la red.
● La fragmentación en paquetes aporta rapidez.
● Los datagramas no necesitan seguir el mismo camino y pueden elegir la ruta más eficiente.
Protocolo TCP.
Este protocolo pertenece a la capa de transporte, por lo que muchos programas pueden usarlo conectándose entre sí para el envío de un flujo de datos. TCP se asegura de que los paquetes lleguen ordenados y sin errores a la capa de aplicación. Además, proporciona un mecanismo que identifica las distintas aplicaciones dentro de una única máquina: los puertos. Cada puerto corresponde a una aplicación de tu PC.
El protocolo TCP es el que se encarga de fragmentar la información en segmentos de tamaño más manejables, que luego serán enviados por el protocolo IP como partes independientes, de forma segura. TCP añade a cada segmento una cabecera.

Esta cabecera contiene una serie de campos obligatorios que se utilizan en el destino para reconstruir la información ordenada y comprobar que llega sin error.
● Puerto de origen (16 bits). Es el puerto por el cual la aplicación envía los datos.
● Puerto de destino (16 bits). Es el puerto de destino al que llegará el segmento.
● Número de secuencia (32 bits). Indica el número de secuencia del primer byte de datos del segmento TCP. Se utiliza para ordenar los paquetes en el destino y eliminar duplicados.
En una comunicación TCP, la máquina que inicia la comunicación (el cliente) convierte los datos a binario usando un charset (codificación de caracteres). Después, los datos codificados se encapsulan en segmentos con la estructura que acabamos de ver. Dependiendo del tamaño, TCP dividirá los datos en segmentos adecuados para su transporte. A cada segmento se le añade una cabecera con número de secuencia, puertos, checksum, etc. Después se pasa al protocolo IP para el transporte por la red, donde se añade la dirección de la máquina de destino (el servidor).
El primer segmento de este proceso se llama SYN.
● Número de confirmación (32 bits). Si el flag ACK está activo, este campo contiene el valor del siguiente número de secuencia que el sistema espera recibir. Siempre que se haya establecido una conexión con SYN + ACK, este campo tendrá un valor.
A continuación vienen los flags, que designan el funcionamiento de la conexión TCP:
● ACK. Reconoce una recepción correcta de datos.
● PSH. Indica al receptor que los datos deben pasar lo más rápido posible a la capa de aplicación.
● URG. Flag de urgencia: indica que el campo de puntero urgente es significativo.
● RST. Reinicia la conexión.
● SYN. Es el segmento de inicio de la sesión para sincronizar los números de secuencia.
● FIN. No hay más datos y se comienza el cierre de la conexión.
Otros campos importantes son: ventana (16 bits), donde se especifica el número de bytes que se pueden recibir a partir del indicado en el número de confirmación; Checksum (16 bits), para la integridad de la transmisión; Urgent Pointer (16 bits), si se activa el flag URG; el campo Options (opcional), donde se negocia el tamaño máximo del segmento o MSS (Maximum Segment Size); Padding, que rellena con ceros para que la cabecera tenga un tamaño múltiplo de 32 bits; y por último el campo Datos, que almacena la información enviada.
Funcionamiento del protocolo TCP.
El protocolo TCP se conoce también como Three‑way handshake (negociación en tres pasos). Es un protocolo orientado a conexión que opera en tres fases:
● Establecimiento de la conexión.
● Transferencia de datos.
● Terminación (cierre) de la conexión.
TCP utiliza el principio de ventana deslizante para el envío de segmentos y la recepción de las confirmaciones de entrega, permitiendo control de flujo y congestión.
Establecimiento de la conexión (Three‑way handshake).Antes de poder transmitir datos entre máquinas, cliente y servidor deben establecer una conexión TCP. El servidor debe tener un socket en estado LISTEN (a la escucha) en un puerto determinado. Cuando el cliente quiere iniciar una conexión, crea su propio socket y solicita la conexión a un puerto abierto del servidor. El cliente envía al servidor un segmento con el flag SYN activado, incluyendo su número de secuencia inicial (ISN) en la cabecera TCP.

A esta petición, el servidor responde con un segmento SYN+ACK: envía su propio número de secuencia inicial (ISN del servidor) y, en el campo de confirmación (ACK), envía el número de secuencia del cliente incrementado en uno (ISN_cliente + 1), confirmando así la recepción del SYN.

Cuando el cliente recibe este segmento de confirmación, envía un tercer segmento con el flag ACK activado. En el campo de número de confirmación incluye el número de inicio de la secuencia del servidor incrementado en uno (ISN_servidor + 1), confirmando la recepción del SYN del servidor. Este tercer segmento normalmente no transporta datos.

A partir de este instante la conexión queda en estado ESTABLISHED y comienza la transmisión bidireccional de los datos.
Transferencia de datos.Durante la transferencia de datos, hay varios campos en la cabecera TCP que trabajan en equipo para que la comunicación sea fiable y no se pierda información por el camino.
Cuando el emisor envía un segmento de datos, le asigna un número de secuencia a cada byte. Es como si pusiera números de orden a los fragmentos de un mensaje. El receptor, al recibirlos, no se limita a quedarse con ellos; responde con un pequeño "vale, he llegado hasta el byte número X". Ese "vale" es el ACK (acuse de recibo). Si el emisor no recibe ese acuse después de un tiempo, reenvía los datos por si acaso se perdieron.
Otro truco que usan es el control de ventana. Imagina que el receptor va algo lento y su buffer (su memoria temporal para ir procesando datos) se empieza a llenar. Él le dice al emisor: "mira, solo me cabe esta cantidad de datos ahora mismo, no me mandes más". El emisor respeta ese límite para no colapsarlo. Así se evita que el receptor se atragante con los datos.
Además, los segmentos no tienen por qué llegar en orden. A veces la red los desordena. Pero como cada uno lleva su número de secuencia, el receptor puede reordenarlos fácilmente antes de pasárselos a la aplicación. Es como si recibieras las páginas de un libro desordenadas, pero con números de página puedes leerlo bien.
Si durante la transmisión el emisor ve que pierde muchos acuses o que la red empieza a ir lenta (congestión), él solito reduce la velocidad a la que envía datos. Esto se llama control de congestión y es como si en un atasco todos redujeran la marcha para no empeorarlo.
Con todo esto, TCP consigue que lo que envía una máquina llegue igual, completo y en orden a la otra, incluso aunque por debajo la red no sea fiable (como pasa con Internet).

Cierre de la conexión.Cuando ya no hay más datos que enviar, la conexión no se corta de golpe como quien cuelga el teléfono sin avisar. En TCP se hace un cierre educado, en cuatro pasos, para asegurarse de que ambos lados están de acuerdo y no se pierde nada por el camino.
Cualquiera de los dos (cliente o servidor) puede iniciar el cierre, aunque lo normal es que lo haga el cliente. El primero que quiere despedirse envía un segmento con el flag FIN (de "final"). Es como si dijera: "yo ya no tengo nada más que mandarte, pero si tú todavía quieres seguir enviándome cosas, adelante".
El otro lado, al recibir ese FIN, responde con un ACK para confirmar que lo ha entendido. Pero no cierra su lado todavía. Sigue pudiendo mandar datos si le quedaban pendientes. Cuando él también termina, envía su propio FIN. Y el primer lado responde con otro ACK para confirmar el cierre total.
Este baile de cuatro pasos (FIN, ACK, FIN, ACK) evita que alguien se quede esperando datos que nunca van a llegar o que se pierda el último mensaje. Es como cuando te despides de un amigo: primero dices "me voy", él dice "vale", luego él dice "me voy también", y tú respondes "vale, hasta luego". Si uno se fuera sin avisar, el otro se quedaría hablando solo.
Por cierto, el lado que envía el último ACK no lo cierra todo inmediatamente. Se queda un rato en un estado llamado TIME_WAIT (espera temporal). ¿Para qué? Por si acaso ese último ACK se pierde y el otro lado necesita reenviar su FIN. Si no existiera esa espera, el último ACK podría perderse y el otro lado se quedaría atascado pensando que la conexión sigue abierta. Tras unos segundos (normalmente el doble de la vida máxima de un paquete en la red), ya se cierra del todo.
