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.