Jaider Reyes Herazo

  • «Profe, nadie puede entrar a mi máquina»

    Lo que pasó después cambió la clase

    Por Jaider Enrique Reyes Herazo — Docente de Ingeniería en Sistemas



    Hay clases que uno planea con cuidado durante días. Hay otras que simplemente ocurren solas. Y esas, casi siempre, son las más memorables.

    Esta es la historia de una de esas clases.


    El contexto: laboratorio de Sistemas Operativos

    Estábamos en la unidad de operación y protección de servidores. El laboratorio de ese día tenía un objetivo claro: el estudiante configurara correctamente el firewall de su máquina usando ufw o nftables, levantara un servicio web básico con Apache, y demostrara que sabía qué puertos estaban abiertos y cuáles cerrados usando herramientas como sscurl y nc.

    Nada fuera de lo ordinario. Una práctica técnica de la clase , estructurada, evaluable.

    Hasta que …


    El reto

    «Profe, ya terminé. Tengo el firewall configurado, el servidor corriendo y bloqueé todas las entradas. Nadie puede acceder a mi máquina.«

    Lo dijo con esa seguridad particular que tienen los estudiantes cuando creen que han cerrado todas las puertas. Con orgullo legítimo, además había hecho bien su trabajo.

    Y entonces, casi como provocación amistosa, agregó:

    «Les reto a que intenten entrar. Tengo una página web de memes de la carrera corriendo en el puerto 80. A ver quién llega.«

    El salón despertó. Ese tipo de reto no se rechaza.

    Yo miré mi celular. Tenía Termux corriendo. Tenía acceso a mi Kali Linux desde ahí mismo. Y tenía una oportunidad pedagógica que ninguna diapositiva hubiera podido crear.

    «Bueno«, dije. «Veamos.«


    Primer movimiento: lo más directo primero

    Lo primero que hice fue intentar conectarme por SSH directamente como root. Sin rodeos:

    bash

    ssh -p 22 root@10.10.10.156
    Permission denied, please try again.
    Permission denied, please try again.
    Permission denied

    Tres intentos. Tres rechazos. El estudiante sonrió desde su puesto.

    Pero eso no era un fracaso era información. El servidor existía, respondía, y tenía SSH activo pero protegido. Primer dato confirmado.

    Le expliqué al grupo lo que acababa de pasar: «El firewall no me dijo ‘no existo’. Me dijo ‘no puedes entrar por aquí’. Eso es diferente. Significa que hay algo adentro.»


    Segundo movimiento: el firewall bloquea Nmap

    El siguiente paso era un escaneo con Nmap para ver qué puertos estaban realmente expuestos:

    bash

    nmap -sV -sC 10.10.10.156

    Y aquí llegó la primera lección no planeada del día:

    route_dst_netlink: cannot bind AF_NETLINK socket: Permission denied

    Nmap fallaba. El entorno desde el que operaba no tenía los privilegios de red necesarios para hacer escaneos de bajo nivel — exactamente el tipo de restricción que un firewall bien configurado puede imponer sobre el tráfico de red raw.

    El estudiante celebró desde su silla.

    Pero yo sabía que el juego no había terminado.

    «Esto es lo que pasa en el mundo real», le dije al grupo. «Los firewalls no siempre te bloquean completamente. A veces solo te complican el camino. Un ingeniero se adapta.»


    Tercer movimiento: pensar diferente

    Nmap tiene múltiples modos de operación. El escaneo SYN estándar (-sS) requiere privilegios de red de bajo nivel — raw sockets. El TCP Connect Scan (-sT) no los necesita. Usa las llamadas normales del sistema operativo y funciona incluso bajo restricciones:

    bash

    nmap -sT -sV 10.10.10.156

    Esta vez, el resultado apareció:

    22/tcp open ssh OpenSSH (Ubuntu)
    80/tcp open http Apache/2.4.58 (Ubuntu)

    Dos puertos. Dos puertas visibles.

    El puerto 22 ya lo conocíamos — SSH, con acceso root bloqueado. El puerto 80 era el interesante. HTTP. El servidor web del reto.

    Proyecté la pantalla del celular para que todos vieran en tiempo real.


    El descubrimiento: la página de memes

    Usé curl para inspeccionar el servidor. Sin navegador, sin interfaz gráfica — solo el protocolo HTTP en su forma más pura, desde la terminal:

    bash

    curl -I http://10.10.10.156

    http

    HTTP/1.1 200 OK
    Server: Apache/2.4.58 (Ubuntu)
    Last-Modified: Mon, 27 Apr 2026 19:38:17 GMT
    Content-Length: 1897
    Content-Type: text/html

    El servidor respondía perfectamente. Luego fui por el contenido completo:

    bash

    curl -s http://10.10.10.156

    Y apareció en pantalla:

    html

    <title>Memes Ingeniería en Sistemas</title>

    El salón estalló en carcajadas.

    Ahí estaba — la página de memes, completamente accesible desde el puerto 80. El estudiante había bloqueado SSH, había configurado reglas de firewall, había hecho bien gran parte del laboratorio. Pero había dejado el puerto 80 abierto al mundo porque ese era, precisamente, el propósito del reto.

    Y ese puerto abierto era todo lo que necesitábamos.


    La enumeración: buscar lo que no está a la vista

    Con acceso confirmado al servidor web, continué la demostración con Gobuster — una herramienta que realiza fuerza bruta de rutas web, preguntando al servidor por miles de direcciones posibles hasta encontrar las que realmente existen:

    bash

    gobuster dir \
    -u http://10.10.10.156 \
    -w /usr/share/wordlists/dirb/common.txt \
    -x php,html,txt,zip,bak \
    -t 50

    Y en paralelo, Nikto, que analiza el servidor buscando configuraciones inseguras, archivos expuestos y cabeceras de seguridad faltantes:

    bash

    nikto -h http://10.10.10.156

    Mientras las herramientas corrían, aproveché para lanzar una pregunta al grupo:

    «¿Qué creen que le ha pasado a ese servidor?»

    Las respuestas fueron reveladoras. Algunos dijeron «nada, si el estudiante solo subió la página de memes». Otros, los más curiosos, empezaron a especular: «¿Y si tiene un /admin sin contraseña? ¿Y si dejó un archivo de configuración expuesto?»

    Esa conversación espontánea valía más que cualquier diapositiva sobre seguridad web que yo hubiera podido preparar.


    La lección que no estaba en el plan de clase

    Cuando los primeros resultados comenzaron a aparecer, hice una pausa.

    No para mostrar qué habíamos encontrado sino para hablar de lo que significaba todo el proceso.

    Le pregunté directamente al estudiante que había lanzado el reto: «¿Qué aprendiste hoy sobre tu propio servidor?»

    Se quedó pensando un momento. Luego respondió:

    «Que configurar el firewall no es suficiente si no sé qué está corriendo adentro.»

    Exactamente.

    Un firewall es una herramienta. Puede bloquear puertos, filtrar IPs, rechazar conexiones. Pero si el servicio que corre detrás de ese firewall tiene vulnerabilidades — archivos expuestos, contraseñas débiles, configuraciones por defecto sin cambiar — el atacante no necesita «romper» el firewall. Solo necesita encontrar la puerta que quedó entreabierta.

    En este caso: el puerto 80, abierto por diseño, pero sin considerar todo lo que podía hacerse desde él.


    Lo que esta clase me recordó sobre enseñar

    Soy docente de Ingeniería en Sistemas. Trabajo con ufwnftablessscurlnc  las mismas herramientas de la rúbrica de ese laboratorio. Las enseño porque las uso. Porque sé que un egresado que no entiende cómo funciona un firewall desde adentro y desde afuera, está a medias en su formación profesional.

    Pero lo que más valoro de ese día no fue el comando que funcionó, ni haber accedido al servidor desde el celular con Termux.

    Fue la pregunta que un estudiante se hizo a sí mismo cuando vio su propio servidor desde el otro lado.

    Esa pregunta  «¿qué dejé mal configurado?» es exactamente la misma que se hace un profesional de seguridad cada vez que audita un sistema. Aprenderla en el aula, con un servidor de memes de la carrera como campo de práctica, es el tipo de aprendizaje que no se olvida.


    Reflexión final: la ética no es opcional

    Todo lo que hicimos ese día ocurrió en un entorno controlado, con autorización explícita. El estudiante mismo lanzó el reto públicamente frente al grupo, ante mí como docente. Eso no es un detalle menor — es el detalle que lo hace todo válido.

    En Colombia, la Ley 1273 de 2009 tipifica como delito el acceso abusivo a sistemas informáticos, la interceptación de datos y el daño a la integridad de sistemas. Las mismas herramientas que usamos ese día — Nmap, Gobuster, Nikto — son ilegales cuando se usan sin autorización.

    La diferencia entre un hacker ético y un atacante no está en las herramientas. Está en el consentimiento, la transparencia y el propósito.

    Enseñar seguridad informática sin enseñar ética no es enseñar seguridad. Es enseñar a romper cosas.

    Ese día, creo, enseñamos las dos.


    Guía técnica completa del laboratorio

    Si eres docente o estudiante y quieres replicar este ejercicio en tu propio entorno, preparé una guía técnica detallada con todos los comandos, explicaciones paso a paso y el flujo metodológico completo:

    📄 Descargar Guía — Lab Ethical Hacking en Red Local

    La guía incluye:

    • Reconocimiento con Nmap con y sin restricciones de firewall
    • Inspección de servidores web con curl
    • Enumeración de directorios con Gobuster
    • Análisis de vulnerabilidades con Nikto
    • Técnicas de acceso SSH y hardening del servidor objetivo
    • Template de reporte de hallazgos para usar en clase

    Jaider Enrique Reyes Herazo Docente — Ingeniería en Sistemas | Sincelejo, Colombia


    #SeguridadInformática #EthicalHacking #IngenieríaEnSistemas #SistemasOperativos #Docencia #KaliLinux #Termux #Laboratorio

  • Interoperatividad y el futuro de los sistemas

    La capacidad que tiene una sistema de acoplarse a otros sistemas, no es un tema nuevo no tampoco extraño para nadie, pero para poder entender esto vamos al año del 2002 cuando Jeff besos con su mandato API https://gist.github.com/chitchcock/1281611

    Pero en una ocasión —creo que allá por 2002, un año más o menos—, [Bezos] emitió un mandato tan ambicioso, tan enorme y descomunal, que hizo que todos sus demás mandatos parecieran bonificaciones no solicitadas. Su Gran Mandato decía algo así:

    • A partir de ahora todos los equipos expondrán sus datos y funcionalidades a través de interfaces de servicio.
    • Los equipos deben comunicarse entre sí a través de estas interfaces.
    • No se permitirá ninguna otra forma de comunicación entre procesos: enlaces directos, lecturas directas del almacén de datos de otro equipo, modelo de memoria compartida ni puertas traseras de ningún tipo. La única comunicación permitida es mediante llamadas a la interfaz de servicio a través de la red.
    • No importa qué tecnología usen. HTTP, Corba, Pubsub, protocolos personalizados… da igual. A Bezos le da igual.
    • Todas las interfaces de servicio, sin excepción, deben diseñarse desde cero para que sean externalizables. Es decir, el equipo debe planificar y diseñar para poder exponer la interfaz a los desarrolladores externos. Sin excepciones.
    • «Quien no haga esto será despedido».

    Ni Jeff Bezos ni sus ingenieros de alto nivel han negado el Mandato, y se ha convertido en un clásico de la tecnología. Con razón, porque lo que encapsula ha transformado la informática —y los negocios— para siempre.

    es importante entender que La interoperabilidad es la capacidad de que sistemas, aplicaciones o componentes “se entiendan” lo suficiente como para comunicarse, ejecutar funciones o transferir datos sin que el usuario tenga que aprenderse las rarezas internas de cada uno, el modelo asociado a ISO/IEC 25010 ubica la interoperabilidad como parte de compatibilidad, y la describe como el grado en que un sistema puede intercambiar información y usarla mutuamente con otros productos o componentes. 

    La interoperabilidad suele confundirse con “conectar sistemas”, pero en realidad es una capacidad más exigente: que diferentes componentes puedan comunicarse, ejecutar funciones o transferir datos de forma que el usuario necesite poco o ningún conocimiento de las particularidades internas de cada uno. Así la describen definiciones normativas clásicas en estándares internacionales. En términos de calidad de software, además, la interoperabilidad se asume como un atributo medible: el grado en que un sistema puede intercambiar información y usar la información intercambiadacon otros sistemas o componentes, lo que obliga a pensar en diseño, pruebas y gobierno, no solo en “pasar mensajes”. 

    Para que esa capacidad sea real (y no una demo bonita), conviene abordarla por capas: legal, organizacional, semántica y técnica. En el sector salud, esta visión es crítica porque el valor no está en mover datos, sino en preservar significado clínico, habilitar continuidad del cuidado y reducir fricciones entre historia clínica, laboratorio, imágenes, farmacia, facturación y vigilancia en salud pública. La agenda global también empuja en esa dirección: la OMS ha enfatizado la adopción de estándares abiertos y la necesidad de guías y enfoques prácticos para convertir recomendaciones clínicas y de salud pública en sistemas digitales interoperables, articulándolo con su estrategia global de salud digital 2020–2025. 

    Desde mi experiencia implementando interoperabilidad en entornos sanitarios, el salto de “integración” a “interoperabilidad” ocurre cuando se define un lenguaje común y se sostiene con arquitectura y gobierno. En la práctica, esto suele traducirse en adoptar un estándar de intercambio clínico moderno como HL7 FHIR (hoy ampliamente usado como base para APIs), apoyarse en guías de implementación para aterrizar los “campos opcionales” a reglas concretas, y complementar con un esquema robusto de autorización y contexto clínico para aplicaciones (por ejemplo, marcos tipo SMART App Launch). Dicho sin vueltas: interoperabilidad no es “API y ya”; es API + perfiles/IG + terminología + seguridad + trazabilidad.

    Un patrón que me ha funcionado para salud es avanzar por casos de uso de alto impacto y baja ambigüedad (p. ej., resumen clínicoresultados de laboratoriomedicación activacitas/encuentros), y construir una “columna vertebral” interoperable: (1) modelo canónico (basado en recursos/perfiles), (2) servicio de terminologías para garantizar semántica consistente, (3) identidad y consentimiento (quién accede y por qué), (4) auditoría y (5) conectores hacia sistemas heredados (HIS/LIS/RIS) para evitar el “big bang”. En el frente de seguridad, cuando se habilitan apps o integraciones de terceros, el uso de estándares abiertos como OAuth 2.0 y OpenID Connect dentro del ecosistema SMART on FHIR ayuda a sostener el principio mínimo necesario y a controlar accesos por alcance (scopes). 

    En síntesis, una estrategia seria de interoperabilidad en salud se mide menos por cuántas integraciones existen y más por tres resultados: (a) datos clínicos reutilizables sin reinterpretaciones manuales(b) flujos interinstitucionales sostenibles (gobierno y acuerdos), y (c) confianza (seguridad, auditoría, cumplimiento). El camino recomendado es incremental, guiado por estándares y con disciplina de ingeniería: definir qué se comparte, con qué significado, bajo qué reglas y cómo se opera en el tiempo. Y cuando eso se hace bien, la interoperabilidad deja de ser un proyecto “de TI” y se convierte en una capacidad organizacional que mejora la atención y habilita innovación (analítica, IA clínica, telemedicina, salud pública digital) sin romper la coherencia del dato.

    Aplicación práctica en el sector salud: lo que sí funciona en campo

    Desde mi experiencia implementando interoperabilidad en entornos sanitarios, el avance sostenido ocurre cuando se construye una “columna vertebral” que combine estándar, seguridad y gobierno. Un estándar moderno y ampliamente adoptado para intercambio de información clínica es FHIR, desarrollado por Health Level Seven International, diseñado para facilitar el intercambio electrónico de datos de salud y habilitar integraciones más ágiles (incluyendo enfoques basados en APIs). Pero el estándar por sí solo no resuelve el problema: en la práctica, la interoperabilidad clínica se consolida cuando se adoptan perfiles/guías de implementación (para fijar reglas de uso), un enfoque de terminologías(para coherencia semántica), y mecanismos de auditoría y trazabilidad (para confianza operativa).

    En seguridad, mi enfoque ha sido asumir que “interoperabilidad sin control de acceso” es como dejar la historia clínica en una mesa de cafetería: innovador, sí… pero no en el buen sentido. Para integraciones y aplicaciones que acceden a datos clínicos, es común apoyarse en OAuth 2.0, estándar publicado por la Internet Engineering Task Force para delegar acceso limitado a servicios HTTP. Cuando además se requiere una capa de autenticación interoperable, OpenID Connect define ese rol sobre OAuth 2.0, estandarizando cómo verificar identidad y transportar “claims” de usuario. Y en el mundo FHIR, el marco SMART App Launch formaliza el “enganche” de aplicaciones de terceros a sistemas clínicos, incluyendo contexto de lanzamiento y autorización. En conjunto, esto permite que el acceso sea sustituible, controlado y auditable, algo clave para escalar sin convertir el ecosistema en una colección de accesos especiales.

    Por qué esto importa a nivel global

    La interoperabilidad es un habilitador directo de continuidad del cuidado, salud pública digital, analítica y (sí) IA clínica, pero solo si se sostiene con estándares y gobernanza. La World Health Organization, en su estrategia global de salud digital 2020–2025, resalta la importancia de la interoperabilidad (incluida la sintáctica y semántica) y el uso de normas/estándares para posibilitar el intercambio y uso de información en salud a escala. Eso conecta con una realidad operativa: la salud es un sistema multi-actor (IPS, aseguradores, laboratorios, imágenes, farmacia, vigilancia), y sin interoperabilidad lo que crece no es el valor… es la duplicación de datos, la fricción y el riesgo.

    En salud, hablar de interoperabilidad no es un lujo académico: es la diferencia entre atención continua y “vuelva a traer los exámenes”. Con esa idea como brújula, cerré esta investigación construyendo un prototipo de historia clínica distribuida que pone el foco donde normalmente se rompe todo: el modelo de datos, el significado clínico y la capacidad de integrar componentes sin que cada integración sea una cirugía a corazón abierto. La meta no fue “conectar sistemas” por deporte, sino demostrar cómo una arquitectura bien pensada puede permitir que la información clínica viaje y se entienda de forma consistente, con trazabilidad y estructura.

    El resultado es un repositorio público que documenta el proceso y deja el proyecto reproducible: código, módulos, evidencias visuales y una ruta clara para ejecutar y extender el prototipo. Este trabajo refleja una idea simple: la interoperabilidad en salud es una disciplina de ingeniería, no un parche; combina estándares, diseño modular, validación, seguridad y gobierno del dato. Para quienes enseñamos e implementamos, es la mejor forma de cerrar el ciclo: no solo “lo expliqué”, también lo construí y lo dejé listo para que otros lo revisen, lo desplieguen y lo mejoren.

    Repositorio del proyecto: https://github.com/jaiderreyes/historia-clinica-distribuida.


    Este proyecto está pensado como base para investigación aplicada y laboratorios de formación: un punto de partida para discutir interoperabilidad, arquitectura distribuida y modelado clínico sin depender de presentaciones bonitas… porque el código, como la historia clínica, no debería improvisarse.

  • Hola! Soy Jaider Reyes

    Hola! Soy Jaider Reyes

    Soy docente universitario, investigador y consultor en transformación digital, sistemas distribuidos, interoperabilidad en salud (HL7–FHIR), arquitectura de datos y automatización (SRE & DevOps).
    Actualmente desarrollo mi investigación doctoral sobre Gestión del Conocimiento, Tecnología y Cambio Organizacional en Instituciones de Educación Superior.

    Me apasiona enseñar, construir soluciones con IA, crear ecosistemas de emprendimiento e impulsar estrategias Data-Driven para organizaciones públicas y privadas.
    Trabajo combinando pensamiento crítico, diseño sistémico y tecnologías emergentes para resolver problemas reales.

  • Congreso de ciencias multidisciplinarias

    Asistiendo al V congreso de ciencias multidisciplinarias y apropiacion de conocimiento. agradezco al equipo de Corporación Universitaria Antonio Jose De sucre Uajs por la invitación siempre es grato compartir temas que nos apasionan

    Presentando los resultados del estudio sobre Integración e Interoperabilidad Legal de Historias Clínicas Electrónicas, un análisis crítico sobre los desafíos normativos, socio-técnicos y organizacionales que enfrenta Colombia para avanzar hacia ecosistemas de salud más articulados.
    Un espacio para debatir evidencia, producir conocimiento y fortalecer la investigación aplicada en salud digital

  • Muro de la Sabiduría

    Muro de la Sabiduría

    El Muro de la Sabiduría se construye con conocimiento, rigor y diálogo honesto.
    En mi labor como Par Académico del CNA, y durante la evaluación del programa de Nanotecnología de la UPB en Medellín, reafirmé que la calidad nace donde la ciencia, la innovación y la responsabilidad académica se encuentran.
    Cada institución aporta un ladrillo distinto; la UPB aporta uno que brilla por su investigación, su visión y su compromiso con el futuro.

Jaiderreyes

Mi blogs Personal

Saltar al contenido ↓