Conceptos Fundamentales de Seguridad (Tríada CIA) en Linux

CompTIABeginner
Practicar Ahora

Introducción

En este laboratorio, obtendrá experiencia práctica con los principios fundamentales de la seguridad de la información, conocidos como la Tríada CIA: Confidencialidad, Integridad y Disponibilidad. Trabajando en un entorno Linux, aprenderá habilidades prácticas para proteger datos y garantizar la fiabilidad del sistema. El laboratorio le guiará a través de la configuración de permisos de archivos, la demostración de la integridad de archivos con hashes criptográficos y la simulación de monitorización básica de servicios para comprender cómo se aplican estos conceptos centrales en escenarios del mundo real.

Comenzará manipulando los permisos de archivos de Linux utilizando el comando chmod para aplicar la confidencialidad y la integridad en un archivo sensible, asegurando que solo sea accesible y modificable por usuarios autorizados. A continuación, explorará la integridad de archivos generando hashes MD5 y SHA256 para crear una línea base y luego verificar que el archivo permanece inalterado. Finalmente, simulará un servicio simple y utilizará comandos de monitorización básicos para comprender el concepto de disponibilidad y cómo detectar interrupciones del servicio.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel intermedio con una tasa de finalización del 74%. Ha recibido una tasa de reseñas positivas del 99% por parte de los estudiantes.

Configurar Permisos de Archivos en Linux para Confidencialidad e Integridad

En este paso, aprenderá a utilizar los permisos de archivos fundamentales de Linux para aplicar dos principios clave de seguridad de la información: Confidencialidad e Integridad. La confidencialidad garantiza que los datos solo sean accesibles para usuarios autorizados, mientras que la integridad asegura que los datos no se alteren de manera no autorizada. Creará un archivo, examinará sus permisos predeterminados y luego usará el comando chmod para restringir el acceso y prevenir modificaciones. Todas las operaciones se realizarán en su directorio de proyecto principal, ~/project.

Ahora, dentro del directorio ~/project, cree un archivo de ejemplo que represente datos confidenciales. Usaremos el comando echo para colocar algo de texto dentro de él.

echo "Top Secret Details" > confidential_data.txt

Verifiquemos que el archivo se creó y veamos sus permisos predeterminados usando el comando ls -l, que proporciona un formato de listado largo.

ls -l confidential_data.txt

Verá una salida similar a esta. La hora y el tamaño exactos pueden variar.

-rw-rw-r-- 1 labex labex 19 Jul 21 15:09 confidential_data.txt

Analicemos la cadena de permisos -rw-rw-r--:

  • El primer carácter - indica que es un archivo regular.
  • Los siguientes tres caracteres rw- son los permisos para el propietario (usuario labex). r significa leer, w significa escribir.
  • Los siguientes tres rw- son para el grupo (grupo labex). El grupo puede leer y escribir en el archivo.
  • Los últimos tres r-- son para otros (todos los demás usuarios del sistema). Ellos también solo pueden leer el archivo.

Esta configuración predeterminada viola la confidencialidad porque cualquier usuario del sistema puede leer nuestro archivo "Top Secret". Solucionemos esto cambiando los permisos para que solo el propietario pueda leer y escribir. Usaremos el comando chmod con códigos numéricos (octales): 4 para leer, 2 para escribir y 1 para ejecutar. Para dar al propietario acceso de lectura/escritura (4+2=6) y eliminar todo acceso para el grupo (0) y otros (0), usamos el código 600.

chmod 600 confidential_data.txt

Verifique los permisos nuevamente:

ls -l confidential_data.txt

La salida ahora refleja los nuevos permisos, más seguros, que refuerzan la confidencialidad.

-rw------- 1 labex labex 19 Jul 21 15:09 confidential_data.txt

A continuación, protejamos la integridad del archivo haciéndolo de solo lectura, incluso para el propietario. Esto evita modificaciones accidentales. Estableceremos los permisos en 400, lo que significa solo lectura para el propietario, manteniendo tanto la confidencialidad como la integridad.

chmod 400 confidential_data.txt

Ahora, intentemos modificar el archivo agregando nuevo texto.

echo "This should not be added." >> confidential_data.txt

La operación fallará y verá un error de "Permiso denegado". Esto demuestra que la integridad del archivo está protegida contra cambios.

zsh: permission denied: confidential_data.txt

Finalmente, verifique los permisos una última vez para ver el estado de solo lectura.

ls -l confidential_data.txt
-r-------- 1 labex labex 19 Jul 21 15:09 confidential_data.txt

Ha configurado con éxito los permisos de archivos para proteger tanto su confidencialidad como su integridad.

Demostrar la Integridad de Archivos con Hashing (MD5/SHA256)

En este paso, aprenderá a usar el hashing criptográfico para verificar la integridad de los archivos. Si bien los permisos de archivo pueden evitar que usuarios no autorizados modifiquen un archivo, no protegen contra cambios accidentales por parte de un usuario autorizado o ataques más sofisticados. Una función hash crea una huella digital única (una cadena de caracteres de longitud fija) para un archivo. Incluso un cambio de un solo bit en el archivo producirá un hash completamente diferente, lo que lo convierte en una excelente herramienta para detectar manipulaciones. Utilizaremos el comando sha256sum, una herramienta de hashing estándar y segura en Linux.

Primero, asegúrese de estar en el directorio correcto. Si continúa desde el paso anterior, ya debería estar en ~/project.

En el último paso, hicimos que confidential_data.txt fuera de solo lectura para proteger su integridad. Para demostrar cómo funciona el hashing, primero debemos hacer que el archivo sea escribible nuevamente para el propietario. Usaremos chmod para otorgar permisos de escritura de vuelta al usuario (u+w).

chmod u+w confidential_data.txt
ls -l confidential_data.txt

Los permisos ahora deberían ser -rw-------, lo que indica que el propietario puede escribir en el archivo nuevamente manteniendo la confidencialidad.

-rw------- 1 labex labex 19 Jul 21 15:09 confidential_data.txt

Ahora, generemos el hash SHA256 para nuestro archivo original y confiable. Este hash servirá como nuestra línea de base para las comprobaciones de integridad.

sha256sum confidential_data.txt

El comando generará una larga cadena de caracteres, que es el hash, seguida del nombre del archivo.

106b4d0169831f239fec7a53b072640a2c0b815e00b088bbe44e6689e92cb96d  confidential_data.txt

Para facilitar la verificación más adelante, es una práctica común guardar este valor de hash confiable en un archivo separado. Redirigiremos la salida del comando a un nuevo archivo llamado hashes.sha256.

sha256sum confidential_data.txt > hashes.sha256

Puede ver el contenido de este nuevo archivo para confirmar que el hash se guardó.

cat hashes.sha256
106b4d0169831f239fec7a53b072640a2c0b815e00b088bbe44e6689e92cb96d  confidential_data.txt

Ahora, simulemos una modificación no autorizada. Agregaremos una nueva línea de texto a nuestro archivo confidencial.

echo "This is an unauthorized modification." >> confidential_data.txt

El archivo confidential_data.txt ha sido alterado. Para verificar su integridad, podemos usar la bandera -c (o --check) con sha256sum, indicándole que compare el hash actual del archivo con el valor confiable almacenado en hashes.sha256.

sha256sum -c hashes.sha256

Debido a que el contenido del archivo ha cambiado, el nuevo hash no coincidirá con el hash almacenado. El comando informará un error, lo que demuestra que la integridad del archivo se ha visto comprometida.

confidential_data.txt: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match

Esta poderosa técnica le permite verificar de manera rápida y confiable si algún archivo ha sido modificado desde su estado original.

Simular Disponibilidad de Servicio y Monitoreo Básico

En este paso, explorará el principio de Disponibilidad, el tercer componente de la tríada de seguridad CIA. La disponibilidad asegura que los sistemas y servicios estén operativos y accesibles cuando sea necesario. Simulará un servicio web simple, aprenderá a verificar si está en ejecución, simulará una falla del servicio y luego escribirá un script de monitoreo básico para automatizar la verificación de disponibilidad.

Primero, asegúrese de estar en el directorio ~/project.

Usaremos el servidor web integrado de Python para simular un servicio en ejecución. Este comando iniciará un servidor web en el puerto 8000 y servirá los archivos del directorio actual. El & al final ejecuta el proceso en segundo plano (background), para que pueda seguir usando su terminal.

python3 -m http.server 8000 &

Verá un mensaje que indica que el proceso se ha iniciado, junto con su ID de Proceso (PID).

[1] 12345

Presione Enter para continuar.

Su servicio ahora está en ejecución. Una forma básica de verificar si un servicio está en ejecución es ver si su proceso existe. Podemos usar el comando pgrep para encontrar el PID de un proceso por nombre.

pgrep -f http.server

Esto debería devolver el PID del proceso del servidor, confirmando que se está ejecutando en memoria.

12345

Sin embargo, un proceso en ejecución no garantiza que el servicio esté funcionando correctamente. Una mejor verificación es intentar conectarse a él, tal como lo haría un usuario. Usaremos el comando curl para enviar una solicitud a nuestro servidor local.

curl http://localhost:8000/confidential_data.txt

Dado que el servicio está disponible, responderá con el contenido del archivo que creó en los pasos anteriores.

Top Secret Details
This is an unauthorized modification.

Ahora, simulemos una falla del servicio. Usaremos el comando kill para terminar el proceso del servidor web. Necesitará el PID que encontró anteriormente.

## Reemplace 12345 con el PID real del comando pgrep
kill 12345

Después de ejecutar kill, es posible que vea un mensaje de "Terminated" para el trabajo en segundo plano. Ahora, intentemos acceder al servicio nuevamente con curl.

curl http://localhost:8000/confidential_data.txt

Esta vez, el comando fallará porque el servicio ya no se está ejecutando y no puede aceptar la conexión. Esto demuestra una falta de disponibilidad.

curl: (7) Failed to connect to localhost port 8000 after 0 ms: Connection refused

Finalmente, creemos un script de monitoreo simple para automatizar esta verificación. Cree un nuevo archivo llamado monitor.sh usando nano.

nano monitor.sh

Ingrese el siguiente script en el editor. Este script utiliza curl para verificar el servicio. Si obtiene una respuesta exitosa (200 OK), informa que el servicio está "UP" (en funcionamiento); de lo contrario, informa "DOWN" (caído).

#!/bin/bash

## Check if the service at localhost:8000 is responding
if curl -s --head http://localhost:8000 | grep "200 OK" > /dev/null; then
  echo "Service Status: UP"
else
  echo "Service Status: DOWN"
fi

Guarde el archivo y salga de nano presionando Ctrl+X, luego Y y Enter.

Haga que el script sea ejecutable usando chmod:

chmod +x monitor.sh

Ahora, ejecute su script de monitoreo. Dado que el servicio está detenido, debería informar "DOWN".

./monitor.sh
Service Status: DOWN

Ahora ha aprendido cómo iniciar un servicio, verificar su disponibilidad, simular una falla y crear un script básico para monitorearlo.

Resumen

En este laboratorio, adquirió experiencia práctica con los principios fundamentales de la tríada de seguridad CIA (Confidencialidad, Integridad, Disponibilidad) utilizando herramientas comunes de Linux. Aprendió a aplicar la Confidencialidad manipulando los permisos de archivos de Linux con el comando chmod, restringiendo el acceso a un archivo confidencial de modo que solo el propietario autorizado pudiera ver su contenido. Además, exploró la Integridad primero estableciendo permisos de archivo para prevenir modificaciones no autorizadas, y luego utilizando algoritmos de hashing como MD5 y SHA256 para generar una suma de verificación (checksum) única, lo que le permite verificar que un archivo no ha sido manipulado.

El concepto de Disponibilidad se demostró simulando el estado operativo de un servicio y realizando un monitoreo básico para confirmar que era accesible. A través de estos pasos prácticos, aplicó comandos fundamentales de Linux para implementar y comprender de manera práctica los principios básicos de la seguridad de la información.