# Guardian Telegram Security Bot — Soma9.cloud ## Documentación Completa **Fecha:** 2026-03-23 **Servidor:** atlas.soma9.cloud (91.134.54.216) **Bot:** @Soma9SecurityBot **Autor:** Claude + Franco (soma9.cloud) --- ## 1. ¿Qué es? Guardian Telegram Bot es un sistema de seguridad que controla el acceso a tu servidor dedicado desde Telegram. Permite bloquear/desbloquear SSH y WHM, monitorear eventos de seguridad en tiempo real, y recibir alertas instantáneas. El bot corre directamente en tu servidor como un servicio del sistema. No depende de servicios externos, nubes, ni terceros. Es 100% tuyo. --- ## 2. Arquitectura ``` ┌─────────────────┐ ┌──────────────────┐ ┌─────────────────────┐ │ Tu teléfono │ ──────▶ │ Telegram Cloud │ ──────▶ │ Tu servidor │ │ (Telegram) │ ◀────── │ (mensajería) │ ◀────── │ 91.134.54.216 │ └─────────────────┘ └──────────────────┘ │ │ │ bot.py (Python) │ │ ├─ Firewall ctrl │ │ ├─ SSH monitor │ │ ├─ File monitor │ │ ├─ Port monitor │ │ └─ Alert system │ └─────────────────────┘ ``` **Flujo:** 1. Tú escribes un comando en Telegram (ej: tocas el botón "Abrir acceso") 2. Telegram entrega el mensaje al bot en tu servidor 3. El bot ejecuta la acción (abre firewall) 4. El bot te responde en Telegram confirmando **Archivos en el servidor:** ``` /opt/guardian/telegram/ ├── bot.py ← Código principal del bot ├── config.py ← Configuración (token, IPs, archivos vigilados) └── state/ ├── access.json ← Estado actual (locked/unlocked/timed) ├── whitelist.json ← IPs con acceso permanente ├── blacklist.json ← IPs bloqueadas permanentemente ├── file_hashes.json ← Hashes de archivos vigilados └── events.log ← Log de todos los eventos ``` **Servicio del sistema:** ``` /etc/systemd/system/guardian-telegram.service ``` --- ## 3. Interfaz — Botones del Teclado Al abrir el bot en Telegram, ves este teclado permanente en la parte inferior: ``` ┌──────────────────┬──────────────────────┐ │ 🔓 Abrir acceso │ 🔒 Cerrar acceso │ ├──────────────────┼──────────────────────┤ │ 📊 Estado │ 👥 Quien esta conect │ ├──────────────────┼──────────────────────┤ │ 🛡️ IPs confianza │ 📋 Historial │ ├──────────────────┼──────────────────────┤ │ 🚨 Emergencia │ ❓ Ayuda │ └──────────────────┴──────────────────────┘ ``` Cada botón hace exactamente lo que dice. No necesitas escribir comandos. --- ## 4. ¿Qué hace cada botón? ### 🔓 Abrir acceso Te muestra opciones con botones: - **30 minutos** — abre y se cierra solo - **1 hora** — abre y se cierra solo - **2 horas** — abre y se cierra solo - **4 horas** — abre y se cierra solo - **Dejar abierto** — queda abierto hasta que tú lo cierres ### 🔒 Cerrar acceso Cierra SSH y WHM inmediatamente. Solo las IPs de confianza pueden entrar. ### 📊 Estado Te muestra: - Si el servidor está abierto o cerrado - Cuántas personas están conectadas - Cuántas IPs de confianza tienes - Cuántas IPs bloqueadas hay Con botones para abrir/cerrar, ver conectados, o ver IPs. ### 👥 Quién está conectado Lista todas las sesiones SSH activas: quién es, desde qué IP, y desde cuándo. Incluye botón para desconectar a todos. ### 🛡️ IPs de confianza Muestra las IPs que siempre pueden conectarse (whitelist) y las bloqueadas (blacklist). Incluye botones para quitar IPs de confianza. ### 📋 Historial Los últimos 15 eventos de seguridad con iconos para identificar rápido qué pasó. ### 🚨 Emergencia Pide confirmación antes de activarse. Cuando se activa: - Desconecta a TODOS del servidor - Bloquea SSH y WHM completamente - Solo se reabre tocando "Abrir acceso" ### ❓ Ayuda Lista de todos los comandos disponibles. --- ## 5. Alertas — Qué te llega y qué hacer ### 🟢 Alguien se conectó (IP conocida) ``` 🟢 Conexion SSH 👤 almalinux 🌐 186.86.52.246 (de confianza) 🕐 15:01 UTC [👥 Ver conectados] ``` **Qué hacer:** Nada, es una IP de confianza. Solo informativo. ### ⚠️ Alguien se conectó (IP desconocida) ``` ⚠️ Alguien se conecto al servidor 👤 Usuario: almalinux 🌐 Desde: 45.67.89.100 🕐 Hora: 15:01 UTC ¿Fuiste tu? [✅ Si, soy yo] [🚨 No fui yo] [🛡️ Agregar a confianza] [🚫 Bloquear IP] ``` **Qué hacer:** - **"Si, soy yo"** → solo confirma, no hace nada más - **"No fui yo"** → BLOQUEA la IP + desconecta a todos + cierra el servidor - **"Agregar a confianza"** → la IP podrá conectarse siempre - **"Bloquear IP"** → la IP no podrá conectarse nunca más ### 🔴 Intento de acceso fallido ``` 🔴 Intento de acceso fallido Alguien intento entrar con el usuario root desde la IP 45.67.89.100 a las 15:01 UTC. La contraseña fue incorrecta. [🚫 Bloquear esta IP] [📊 Ver estado] ``` **Qué hacer:** Si ves muchos intentos de la misma IP, toca "Bloquear esta IP". ### 👋 Alguien se desconectó ``` 👋 Sesion cerrada 👤 almalinux se desconecto 🕐 15:30 UTC [👥 Ver conectados] ``` **Qué hacer:** Solo informativo. ### ⚠️ Archivo modificado ``` ⚠️ Archivo modificado Se modifico: Archivo de usuarios /etc/passwd Si no hiciste este cambio, revisa quien esta conectado. [👥 Ver conectados] [🚨 Emergencia] ``` **Qué hacer:** Si no modificaste nada, toca "Emergencia" para cerrar todo. ### 🆕 Puerto nuevo ``` 🆕 Se abrio un puerto nuevo Puerto: 0.0.0.0:4444 Si no reconoces esto, revisa que esta pasando. [📊 Ver estado] [🚨 Emergencia] ``` **Qué hacer:** Si no abriste ningún puerto, puede ser un intruso. Toca "Emergencia". ### 🚨 Conexión sospechosa ``` 🚨 Conexion sospechosa detectada El servidor esta enviando datos a un puerto peligroso. Esto podria ser un intruso. Revisa inmediatamente. [🚨 EMERGENCIA] [👥 Ver conectados] ``` **Qué hacer:** Esto es serio. Toca "EMERGENCIA" y revisa después. ### 🔒 Acceso cerrado automáticamente ``` 🔒 Acceso cerrado automaticamente El tiempo que configuraste se acabo. Si necesitas mas tiempo, abre el acceso de nuevo. [🔓 Abrir de nuevo] ``` **Qué hacer:** Si necesitas más tiempo, toca el botón. ### 📊 Reporte diario (23:00 UTC cada día) ``` 📊 Reporte del dia — 2026-03-23 Estado: 🔒 Cerrado Conectados ahora: 0 Hoy hubo: 🟢 5 conexiones exitosas 🔴 12 intentos fallidos 🚫 2 IPs bloqueadas 🛡️ Guardian — atlas.soma9.cloud ``` **Qué hacer:** Revisar que los números sean normales. --- ## 6. Comandos de texto (opcionales) Si prefieres escribir en vez de usar botones: | Comando | Qué hace | |---------|----------| | `/unlock 30m` | Abre por 30 minutos | | `/unlock 2h` | Abre por 2 horas | | `/unlock on` | Abre indefinido | | `/lock` | Cierra todo | | `/lockdown` | Emergencia | | `/status` | Estado actual | | `/sessions` | Quién está conectado | | `/kick` | Desconectar a todos | | `/whitelist IP` | Agregar IP de confianza | | `/unwhitelist IP` | Quitar IP de confianza | | `/blacklist IP` | Bloquear IP | | `/showips` | Ver todas las IPs | | `/log` | Historial | | `/help` | Ayuda | --- ## 7. Modos de Acceso ### 🔒 CERRADO (por defecto) - Nadie puede entrar excepto IPs de confianza - Es el estado más seguro - El servidor funciona normal, solo el acceso SSH/WHM está bloqueado ### 🔓 ABIERTO (manual) - Cualquiera con las credenciales puede entrar - Usar cuando tú o una IA necesita trabajar - Toca "Cerrar acceso" cuando termines ### ⏱ TEMPORIZADO - Se abre por el tiempo que elijas - Se cierra solo cuando el tiempo acaba - Ideal para sesiones de trabajo --- ## 8. Seguridad del Bot - **Solo tú** puedes enviar comandos (verificado por tu ID de Telegram) - Si alguien más intenta usar el bot, es ignorado y registrado - El bot se reinicia solo si se cae (cada 5 segundos) - Los datos están en tu servidor, no en la nube ### Si te quedas fuera: 1. Abre Telegram 2. Toca **🔓 Abrir acceso** o escribe `/unlock on` 3. Entra normalmente ### Si el bot no responde: Desde SSH ejecuta: ```bash systemctl restart guardian-telegram ``` --- ## 9. Configuración Actual ### Bot: - **Telegram:** @Soma9SecurityBot - **Nombre:** Soma9 Security Guardian - **Admin:** Franco (chat ID: 8775016920) ### Servidor: - **Nombre:** atlas.soma9.cloud - **IP:** 91.134.54.216 - **SSH:** puerto 22847 - **WHM:** puerto 2087 (HTTPS) - **cPanel:** puerto 2083 (HTTPS) - **Puertos HTTP planos:** CERRADOS (2082, 2086) ### DNS: - **Nameservers:** imperium.soma9.cloud + sacrum.soma9.cloud - **SPF:** configurado - **DKIM:** configurado (RSA 2048-bit) - **DMARC:** configurado ### IP de confianza actual: - 186.86.52.246 (IP de Franco) ### Emails de notificación: - sebastianguiza@outlook.com - soma9holdings@gmail.com - francoglobal.es@gmail.com --- ## 10. Administración del Servicio ```bash # Ver si el bot está corriendo systemctl status guardian-telegram # Reiniciar el bot systemctl restart guardian-telegram # Parar el bot systemctl stop guardian-telegram # Ver lo que hace el bot en vivo journalctl -u guardian-telegram -f # Ver historial de eventos cat /opt/guardian/telegram/state/events.log ``` ### Modificar el bot: Cualquier IA (Claude, OpenClaw, etc.) o tú mismo: 1. Editar `/opt/guardian/telegram/bot.py` 2. Ejecutar: `systemctl restart guardian-telegram` 3. Los cambios están activos al instante --- ## 11. Módulo de Agentes IA (PENDIENTE) Para cuando configures agentes como OpenClaw: **Cada agente tendrá:** - Su propia llave SSH (separada de la tuya) - Acceso solo desde sus IPs - Notificación cada vez que se conecte - Posibilidad de pausar/reactivar su acceso desde Telegram **Comandos planificados:** - `/agents` — ver agentes autorizados - `/agent add NOMBRE` — registrar nuevo agente - `/agent pause NOMBRE` — pausar acceso - `/agent resume NOMBRE` — reactivar - `/agent revoke NOMBRE` — eliminar permanentemente --- ## 12. Expansión: IA Conversacional (PENDIENTE) Integrar una IA gratuita para hablar con el bot en lenguaje natural: ``` Tú: "¿todo bien en el servidor?" Bot: "Todo tranquilo. Tienes 2 sesiones SSH tuyas. No hubo intentos sospechosos hoy." ``` **Opciones de IA:** | Opción | Costo | Calidad | |--------|-------|---------| | Groq (Llama 3 70B) | Gratis | Muy buena | | Google Gemini | Gratis (15 req/min) | Buena | | Cloudflare Workers AI | Gratis | Decente | | Ollama (local) | Gratis | Depende del hardware | **Recomendación:** Groq API (gratis, rápida, buena calidad). --- ## 13. Expansión: Bot de WhatsApp (PENDIENTE) Crear un bot de WhatsApp Business para atención a clientes: **Costos de WhatsApp Business API:** | Tipo de conversación | Costo | |---------------------|-------| | Cliente escribe primero | GRATIS (1,000/mes) | | Tú envías marketing | ~$0.04-0.08 por conversación | | Notificaciones | ~$0.02-0.04 por conversación | **Truco legal:** Si el cliente escribe primero, las primeras 1,000 conversaciones al mes son gratis. Con un bot que responde al instante, el 90% se resuelve sin costo. **Arquitectura propuesta:** ``` ┌───────────┐ ┌──────────────────────┐ │ WhatsApp │────▶│ │ │ (clientes)│◀────│ Tu servidor │ └───────────┘ │ 91.134.54.216 │ │ │ ┌───────────┐ │ Bot unificado │ │ Telegram │────▶│ + IA (Groq gratis) │ │ (tú) │◀────│ │ └───────────┘ └──────────────────────┘ ``` Un solo bot maneja WhatsApp (clientes) y Telegram (tú). Una sola IA responde en ambos. Costo: $0. **Pasos para implementar:** 1. Crear cuenta en Meta Business (gratis) 2. Crear app en developers.facebook.com (gratis) 3. Activar WhatsApp Cloud API (gratis) 4. Verificar negocio (gratis, 2-3 días) 5. Conectar número real 6. Integrar con el bot en tu servidor --- ## 14. Notas Importantes ### Sobre el 2FA de WHM: El 2FA está habilitado pero no funciona porque `socket.so.1` (módulo MHL) manipula el reloj del sistema. Los códigos nunca coinciden. El control por Telegram reemplaza esto de forma más segura. ### Sobre socket.so.1: Está cargado en memoria por cPanel. Manipula el tiempo para las licencias. El bot lo vigila — cualquier cambio genera alerta. ### Sobre /etc/hosts: Contiene bloqueos de dominios de licencias. Protegido con `chattr +ia`. El bot vigila cambios. --- ## 15. Contacto - **Admin:** Franco - **Emails:** sebastianguiza@outlook.com, soma9holdings@gmail.com, francoglobal.es@gmail.com - **Bot:** @Soma9SecurityBot en Telegram - **Servidor:** atlas.soma9.cloud --- *Documento actualizado: 2026-03-23. Actualizar conforme se implementen nuevos módulos.*