Curiosioux

Blog Personal Dedicado a la Ciberseguridad

Evita Desastres de Datos: Configura RAID 1 y Recibe Notificaciones en Telegram al Instante

En este post creamos paso a paso un RAID1 en un Ubuntu Server 22.04 y más adelante se muestra como usar Telegram para recibir instantaneamente los eventos que ocurran en nuestro RAID1 pudiendo evitar así un desastre inminente.

Creación del RAID

Vamos a crear una máquina virtual en la que voy a poner dos discos que deben tener las mismas características y tamaño.

Comenzado el proceso de instalación, elegiremos Custom storage loyaut

En cada uno de los discos seleccionaremos Use As Boot Device

En el primer disco elegimos espacio disponible

Despues Add GPT Partition y en formato, Leave unformatted

Crear. Hacemos lo mismo con el otro disco.

Ahora entramos en Create software RAID (md)

Seleccionamos las particiones.

Creamos. Después seleccionamos el dispositivo y elegimos el formato.

Y hecho. Y hecho de nuevo

Hecho y Continuar

Rellenamos los datos que nos solicita.

Y Hecho

Yo voy a instalar el servicio openSSH

No creo que necesite nada más por ahora, así que hecho de nuevo. Esperamos… y esperamos… y esperamos… y reiniciamos por fin

Una vez reiniciado vamos a hacer algunas comprobaciones.

Ahora que sabemos que todo está correcto comienza lo bueno.

Telegram

Para poder recibir las notificaciones de lo que ocurre en el RAID1 vamos a tener que crear un bot de Telegram y un grupo al que añadiremos el bot.

Abrimos Telegram y buscamos el bot @BotFather

Tecleamos /newbot y elegimos el nombre de nuestro bot y el usuario, que debe terminar en bot. Guardamos el API token que nos facilita porque lo usaremos después.

Guardamos el API token que nos facilita y clicamos en la url hacia nuestro bot. Clicamos en start

Añadiremos el bot a nuestros contactos.

Ahora vamos a crear un grupo de Telegram. En este grupo nos añadiremos a nosotros mismos y a nuestro bot

Añadimos el bot al grupo

Una vez que tengamos el grupo…

clicamos en el nombre del grupo y en editar

En editar comprobamos si nuestro bot es administrador y si no lo es lo promovemos

Comprobamos que tenga los permisos activados

Vamos a nuestro bot y escribimos /reload, y en el grupo escribimos algún mensaje

Nota: esto es importante o no podremos encontrar el id del grupo, que vamos a necesitar.

Ahora recuperamos el token que nos dio botfather y copiamos en el navegador la siguinete url

https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates , sustituyendo <YOUR_BOT_TOKEN> por nuestro token

Guardamos el id de chat

Con todo esto ya podemos probar si podemos utilizar el bot para comunicarnos con el grupo mediante un curl

curl -s -X POST "https://api.telegram.org/bot7507838670:AAFfrQc95GO4q9qb2ae3lBG9-yXXva3jnME/sendMessage" -d "chat_id=-1002304705634" -d text="Mensaje de prueba"

Y parece que sí!!!!

Con esta parte resuelta ya podemos comenzar a elaborar este script para que mdadm nos avise cuando falle un disco.

Creación de nuestro servicio

Mdadm permite monitorear el estado del RAID y comunicarnos cualquier incidencia mediante el servicio de correo. Nosotros lo que vamos a hacer aquí es crear nuestro propio script de notificaciones, que nos llegarán instantaneamente a Telegram. Para ello, utilizaremos también un servicio personalizado.

Creamos el script, que vamos a guardar en /usr/local/bin/mdadm-xa-telegram.sh

#!/bin/bash

# Variables de configuración
TOKEN="7507838670:AAFfrQc95GO4q9qb2ae3lBG9-yXXva3jnME"
CHAT_ID="-1002304705634"
HOSTNAME=$(hostname)
TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")
MESSAGE="[$TIMESTAMP] RAID alert on $HOSTNAME: $1"

# Enviar mensaje a Telegram
curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
-d chat_id=${CHAT_ID} \
-d text="${MESSAGE}"

Le damos permisos de ejecución

chmod +x /usr/local/bin/mdadm-xa-telegram.sh

Creamos el servicio.

sudo nano /etc/systemd/system/mdadm-monitor.service
[Unit]
Description=Monitor RAID arrays with mdadm and notify via Telegram
After=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/mdadm --monitor --scan --program /usr/local/bin/mdadm-xa-telegram.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

Después de crear el archivo del servicio, recargamos systemd para reconocer el nuevo servicio y luego lo habilitamos y arrancamos

Cargamos la configuración

sudo systemctl daemon-reload

Habilitamos el servicio para que inicie el arranque

sudo systemctl enable mdadm-monitor.service 

Iniciamos el servicio

sudo systemctl start mdadm-monitor.service

Verificamos el estado del servicio

sudo systemctl status mdadm-monitor.service

Ahora causaremos un fallo en uno de los discos

 sudo mdadm --fail /dev/md0 /dev/sda2

Veamos si nos envía las notificaciones…

Como vemos, recibimos la notificación de fallo, y, como reiniciamos la máquina con el disco en fallo también nos envió un aviso.

Para reconstruir el RAID1

sudo mdadm --remove /dev/md0 /dev/sdba
sudo mdadm --add /dev/md0 /dev/sdba

Para ver el estado

sudo mdadm –detail /dev/md0

Para monitorear el progreso de reconstrución

cat /proc/mdstat

Y fin!!!! Y espero que haya resultado interesante.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *