Monitoreo Pasivo de recursos

El monitoreo pasivo es una de las funciones clave que se utilizan para detectar y responder a incidentes de seguridad. Implica la observación no intrusiva mediante fuentes de información de seguridad, sin interactuar directamente con los activos. Su objetivo principal es detectar amenazas e incidentes de seguridad al escuchar lo que sucede en el entorno.

Uptime Kuma

Manual de despliegue
herramienta Uptime Kuma

Este manual sirve como una guía paso a paso para la instalación y configuración de Uptime Kuma, una herramienta de monitoreo de código abierto. A lo largo de este manual, exploraremos cómo implementar esta solución para supervisar la disponibilidad de servicios y sitios web, permitiéndote recibir alertas en tiempo real sobre cualquier interrupción.

Con Uptime Kuma, obtendrás una visión clara y proactiva del estado de tus sistemas, garantizando la estabilidad y el rendimiento que tus proyectos y clientes merecen.

1. Instalación de Docker Compose y dependencias en el servidor.

Ejecuta las siguientes órdenes para preparar el entorno:

sudo apt update
sudo apt upgrade -y

Página oficial de instalación de Docker, caso Ubuntu. En caso de instalación mediante los pasos de la página, en el manual se tiene un resumen con los comandos a utilizar para la instalación mediante el repositorio de Docker de fuentes APT.

Agregar la clave GPG oficial de Docker

sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Añadir el repositorio de Docker a las fuentes de APT

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Instalar Docker y complementos en su versión actual.

sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Probar la instalación de Docker.

sudo docker run hello-world

Respuesta esperada del terminal:

image.png

1.1. Configuración de docker post instalación.

Agregar el usuario actual al grupo docker:

sudo usermod -aG docker $USER

Habilitar el inicio automático de Docker con systemd.

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

Respuesta esperada del terminal:

image.png

2. Instalación de uptime Kuma con servicio docker.

git clone https://github.com/louislam/uptime-kuma.git

Respuesta esperada del terminal:

image.png

docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name laboratorio-kuma louislam/uptime-kuma:1

Verifica que el contenedor esté en ejecución

docker ps

image.png

Abre en tu navegador en el siguiente enlace y selecciona el idioma Español antes de continuar.

http://IP_servidor:3001/setup 

Observará la siguiente página de inicio una vez desplegado el docker:

image.png

Es fundamental crear un usuario y una contraseña robustos para proteger tu información. Elige un nombre de usuario que no revele datos personales y combina caracteres alfanuméricos, símbolos y mayúsculas/minúsculas en tu contraseña.

3. Primeros pasos post instalación

Verificamos la pantalla de inicio.

image.png

3.1. Doble factor de autenticación (2FA).

Para comenzar, usa la aplicación de autenticación de tu preferencia en tu dispositivo móvil y escanea el código QR que se presenta a continuación. Esta acción activará una capa de seguridad esencial que requiere un código único y temporal en cada inicio de sesión, lo cual es fundamental para proteger tu información.

image.png

Una vez escaneado el token, la aplicación proporcionará un código de 6 dígitos y se debe colocar para verificar el token y presionar el botón “Verificar token”.

image.png

3.2. Añadir Nuevos Monitores en Uptime Kuma

Uptime Kuma permite crear distintos tipos de monitores para supervisar servicios, aplicaciones y recursos de red.
Al agregar un monitor, se despliega una lista con varias categorías y parámetros, cada una enfocada en un tipo específico de verificación.

Primeramente verificaremos que tipos de monitores existen para uptime Kuma.

Entre los más utilizados podemos destacar:

También tenemos la opción de utilizar para monitorear lo siguiente:

Entre los más utilizados podemos destacar:

También tenemos la opción de utilizar para monitorear lo siguiente:

3.3. Procedimiento Básico

En resumen para poder añadir un nuevo monitor deben seguirse los pasos generales:

Ejemplo 1. Monitor HTTPs.

image.png

image.png

Identificación de parámetros importantes:
Ejemplo 2. Monitor DNS.

image.png

image.png

Identificación de parámetros importantes:
Ejemplo 3. Grupo de monitores.

Una vez que tengas tus primeros monitores configurados, puedes organizarlos en grupos para estructurar la Uptime Kuma según la organización interna de la institución. Los parámetros de configuración para los grupos son similares a los de los monitores individuales:

image.png

Una vez creado un grupo, puedes asignar un monitor a él. Simplemente, edita el monitor que deseas y selecciona el grupo correspondiente en el campo "Grupo de monitoreo"

image.png

4. Configurar notificaciones por Telegram.

4.1. Crear el bot de Telegram

Abrir Telegram en la versión web, y buscar el usuario @BotFather. Inicia una conversación con el comando /start.

image.png

Usa el siguiente comando para crear un nuevo bot para este caso específico.

/newbot

BotFather solicitara los siguientes datos:

BotFather te enviará un token de la API, similar a: 1234567890:ABC-DEF1234ghIkl...

image.png

Para fines prácticos de monitoreo, se utilizará la opción de notificación a un grupo de Telegram. De esta manera, más de un usuario podrá recibir las alertas en caso de caída de servicios. Sigue estos pasos:

Crear un grupo en Telegram y agregar al nuevo bot. Busca el bot por el nombre asignado, en este caso: @kuma_taller_bot.

image.png

4.2. Integración con Uptime Kuma

Accede al panel de Uptime Kuma en el servidor desplegado: https://localhost:3001 o el dominio configurado

Completa los campos solicitados:

image.png  image.png

Verifica que el mensaje haya sido enviado correctamente al grupo, y presiona Guardar.

image.png

Con la integración de notificaciones vía Telegram, se garantiza que múltiples miembros del equipo estén informados en tiempo real ante cualquier caída o interrupción del servicio. Esta capacidad mejora la velocidad de respuesta al contar con un canal de comunicación ágil y automatizado.

Reconocimiento activo y pasivo de recursos

Reconocimiento pasivo.

Es la obtención de información pública sin interactuar directamente con los servidores objetivo (sin enviar paquetes ni autenticarse). Útil para mapear superficie de ataque sin dejar rastro.

Herramientas utilizadas:

Google Dorks.

Filtra resultados de Google para encontrar páginas, ficheros o directorios específicos, por ejemplo:

Ejemplo de salida:

Shodan / Censys / FOFA

Permiten consultar por IP, dominio o servicio para ver los banners, puertos y software expuesto, por ejemplo:

Consulta: dispositivo con ip 200.12.34.56, resumen de salida:

Sublist3r.

Permite la enumeración de subdominios mediante consultas a múltiples fuentes públicas.

python3 sublist3r.py -d dominio.gob.bo -o subdoms.txt

Salida en archivo subdoms.txt:

cat subdoms.txt:
portal.dominio.gob.bo
mail.dominio.gob.bo
sri.dominio.gob.bo
dev.dominio.gob.bo

Amass (modo pasivo)
Agrega resultados de múltiples fuentes (crt.sh, ASN, servicios públicos) para hallar subdominios.

amass enum -passive -d dominio.gob.bo -o amass.txt

Salida en archivo amass.txt.

cat amass.txt, ejemplo
portal.dominio.gob.bo
api.dominio.gob.bo
backup.dominio.gob.bo

Uso de crt.sh

Busca certificados emitidos que incluyan subdominios del dominio objetivo.

URL de ejemplo: https://crt.sh/?q=%25.dominio.gob.bo

Resumen de la salida:

Certificado emitido: *.dominio.gob.bo — emitido 2025-03-12 — CN: api.dominio.gob.bo

DNSdumpster

Devuelve un mapa DNS público (registros A, MX, NS, subdominios detectados).
Resumen de la salida:

Registros A:
portal.dominio.gob.bo -> 200.12.34.10
mail.dominio.gob.bo -> 200.12.34.20

Registros MX:
mx1.dominio.gob.bo -> 200.12.34.30

Una vez realizado el reconocimiento pasivo es recomendable:

Reconocimiento activo.

Es la interacción directa con el objetivo (escanear puertos, enumerar directorios, consultas DNS directas). Dejará registros en el objetivo; se debe realizar solo con autorización.

Herramientas utilizadas:

Nmap para puertos comunes.

Escanea los puertos más comunes y detecta versiones de servicios.

nmap -sT -sV --top-ports 100 -T2 dominio_o_ip

Explicación breve de flags:

Ejemplo resumen de salida:

Nmap scan report for dominio_o_ip (200.12.34.10)
Host is up (0.023s latency).
PORT STATE SERVICE  VERSION
22/tcp  open  sshOpenSSH 7.6p1 Ubuntu
80/tcp  open  http  nginx 1.14.0
443/tcp open  https nginx 1.14.0
Service Info: OS: Linux

Nmap para escaneo completo y OS detection.

Realiza un escaneo más agresivo y detección de SO (requiere privilegios).

sudo nmap -sS -p- -sV -O -T3 dominio_o_ip

Explicación breve de flags:

Ejemplo resumen de salida:

PORTSTATE SERVICE VERSION
21/tcp open  ftp  vsftpd 3.0.3
22/tcp open  ssh  OpenSSH 7.6p1
80/tcp open  http nginx 1.14.0
443/tcpopen  httpsnginx 1.14.0
OS details: Linux 4.x

DNS (dig / host).

Realiza consultas directas al servidor DNS para obtener registros.

dig dominio.gob.bo  => Consulta A/AAAA/other por defecto; muestra servidores autoritativos y TTL.
Salida ejemplo (dig):
  ; <<>> DiG 9.16.1 <<>> dominio.gob.bo
  ;; ANSWER SECTION:
  dominio.gob.bo.  3600  IN  A  200.12.34.10
  ;; AUTHORITY SECTION:
  dominio.gob.bo.  172800 IN NS ns1.dominio.gob.bo.
  ;; ADDITIONAL SECTION:
  ns1.dominio.gob.bo. 172800 IN A 200.12.34.2
host subdominio.dominio.gob.bo   => Respuesta simple: subdominio.dominio.gob.bo has address 200.12.34.20

Gobuster.

Realiza la enumeración de directorios y archivos web mediante fuerza bruta con wordlists.

gobuster dir -u [https://dominio.gob.bo](https://dominio.gob.bo) -w wordlist.txt

Explicación:

Ejemplo de salida:

/admin (Status: 200)
/backup (Status: 403)
/config.php (Status: 200)
/robots.txt (Status: 200)

Uso de ffuf.

Es un fuzzer web rápido, útil para encontrar endpoints ocultos o parametrizados.

ffuf -u [https://dominio.gob.bo/FUZZ](https://dominio.gob.bo/FUZZ) -w wordlist.txt

Salida ejemplo:

Found: /secret (Status: 200, Size: 1534)
Found: /old-admin (Status: 200, Size: 4210)

Uso de curl.

Tiene el objetivo de solicitar recursos HTTP(S), ver cabeceras y contenido; útil para comprobar respuestas, cookies y cabeceras de seguridad.

curl -I [https://dominio.gob.bo](https://dominio.gob.bo)  => Obtiene solo cabeceras (HEAD).

Ejemplo de salida (cabeceras):

  HTTP/1.1 200 OK
  Server: nginx/1.14.0
  Content-Type: text/html; charset=UTF-8
  Strict-Transport-Security: max-age=31536000; includeSubDomains
curl -L -s -D - [https://dominio.gob.bo/login](https://dominio.gob.bo/login) -o /dev/null => Sigue redirecciones (-L), imprime cabeceras (-D -), suprime el cuerpo (-o /dev/null).

Se recomienda:

Divulgación de Credenciales

Identificación de credenciales expuestas públicamente.

Herramientas


Procedimiento