Hola! Configurar notificaciones de Telegram para recibir alertas cada vez que alguien haga login en tus sistemas Linux puede ser una excelente manera de mantener la seguridad y estar al tanto de la actividad del servidor.
En mi caso tengo muchas máquinas físicas, virtuales y en containers en mi laboratorio así que esta es una excelente manera de saber quién y cuando se conectar y desconecta alguien a ellas, bien por que tiene que ejecutar alguna acción lícita o no. En mi caso como el acceso ssh esta reservado a administradores una notificación a Telegram es perfecta pero podríamos modificar fácilmente el script para escribirlo en una base de datos o una cola de notificaciones. Lo haremos en próximas entregas …
Aquí te guiaré paso a paso sobre cómo hacerlo:
Paso 1: Crear un Bot de Telegram
- Inicia Telegram y busca el usuario
@BotFather
, que es el bot oficial para crear otros bots en Telegram. - Escribe
/newbot
y sigue las instrucciones.BotFather
te pedirá que elijas un nombre y un username para tu bot. - Una vez creado,
BotFather
te dará un token, que es una cadena larga de letras y números. Guarda este token porque lo necesitarás para enviar mensajes a través de tu bot.
Paso 2: Obtener tu Chat ID
- Busca tu nuevo bot en Telegram (por el username que elegiste) y comienza una conversación con él (simplemente pulsa “Start”).
- Escribe cualquier mensaje al bot y luego visita
https://api.telegram.org/bot<TuToken>/getUpdates
reemplazando<TuToken>
con el token que te dioBotFather
. - Deberías ver un JSON que incluye tu
chat_id
. Anota este número porque lo necesitarás para configurar tu script que envía los mensajes.
Paso 3: Script para Enviar Mensajes en Bash
Ahora, vamos a crear un script en tu servidor Linux que envía un mensaje a tu bot de Telegram cuando alguien hace login.
- Abre una terminal en tu servidor y crea un nuevo script:
nano /usr/local/bin/telegram_login_notification.sh
- Inserta el siguiente código en el script. Asegúrate de reemplazar
<TuToken>
y<TuChatID>
con el token del bot y tu chat ID, respectivamente:#!/bin/bash # La URL del API de Telegram URL="<https://api.telegram.org/bot><TuToken>/sendMessage" # Mensaje de alerta MESSAGE="Alerta de Login: $PAM_USER ha iniciado sesión en $PAM_RHOST a las $(date +'%Y-%m-%d %H:%M:%S')" # Envío del mensaje curl -s -X POST $URL -d chat_id=<TuChatID> -d text="$MESSAGE"
- Haz el script ejecutable:
chmod +x /usr/local/bin/telegram_login_notification.sh
Paso 4: Configurar PAM (Pluggable Authentication Modules)
Para hacer que Linux ejecute este script cada vez que alguien haga login, necesitarás modificar el módulo PAM (Pluggable Authentication Modules) que maneja la autenticación:
- Edita el archivo PAM para SSH, por ejemplo: nano /etc/pam.d/sshd
- Agrega la siguiente línea al final del archivo:
session optional pam_exec.so /usr/local/bin/telegram_login_notification.sh
Esto configura PAM para ejecutar tu script cada vez que se establece una sesión SSH.
Paso 5: Prueba tu Configuración
- Desde otra máquina, intenta hacer SSH hacia tu servidor Linux. Deberías recibir un mensaje en Telegram indicando el login. Ten en cuenta que también se va a notificar la salida.
Notas de Seguridad
- Seguridad del Bot: Cualquiera que tenga tu chat ID y el token del bot puede enviarte mensajes. No compartas estos datos.
- Logs de PAM: Si configuras mal el script o los PAM settings, podrías ser bloqueado fuera de tu servidor. Asegúrate de tener otra forma de acceso (como una consola de administración remota) para resolver cualquier problema que surja.
Este método te proporciona una manera efectiva y en tiempo real de ser notificado cada vez que alguien accede a tu servidor, ayudándote a mantener un alto nivel de seguridad y monitoreo. ¡Suerte!
Aquí tienes el Gist (código fuente) en Github por si quieres usarlo o contribuir:
https://gist.github.com/Taikun/a432e5c9b951959a3c01c4f99776433b
0 Comments