12 puntos por mirseo 2025-09-11 | 34 comentarios | Compartir por WhatsApp

Cuando desarrollas, a veces por motivos de seguridad hay lugares donde se permite http/https hacia ciertos sitios, pero no abren SSH ni RDP,
por eso lo hice.

Es un proyecto llamado NotionSSH: si escribes algo como !(docker ps) en Notion,

el programa, que es una sencilla aplicación en Rust, lo ejecuta en shell desde una máquina que monitorea esa página y devuelve el resultado.

Todavía está en una versión inicial, así que puede tener muchos bugs.
¡Úsenlo mucho!

34 comentarios

 
mirseo 2025-10-05

¡Perdón por responder tarde!
No tengo excusa. Me alegra que un proyecto que desarrollé bien desde cero por primera vez con fines de código abierto haya recibido atención, pero creo que me asusté al recibir demasiadas críticas por correo personal y por varias otras redes sociales externas.

Por eso, tomé apresuradamente la decisión de poner el proyecto en privado durante 3 días. De verdad les pido disculpas por haberlos decepcionado con mi decisión impulsiva.

Tomaré esto como una buena experiencia y seguiré mejorando el proyecto de código abierto de aquí en adelante. ¡Gracias!!

 
seokzoo 2025-09-13

También existe guacamole como gateway de escritorio remoto (https://guacamole.apache.org/)

 
mirseo 2025-10-05

¡Perdón por responder tarde!
Lo había usado antes, pero como VNC es lento por naturaleza, me afectaba bastante la latencia y el retraso.
Así que terminé creándolo mientras ideaba un método nuevo para reemplazarlo. ¡Gracias!!

 
thinkpad 2025-09-12

2025 | Desarrollo de NotionSSH (2.0), un puente SSH basado en Rust (https://github.com/mirseo/notionSSH) <- ya no es compatible y fue eliminado

Eso es lo que dejaron escrito... Creo que sería mejor que respondieran aquí o que eliminaran la noticia.

 
mirseo 2025-10-05

Lamento la demora en responder.
Últimamente he recibido muchas observaciones por temas de seguridad, así que estuve pensando seriamente si debía seguir haciendo público ese repositorio o no,
y terminé cambiándolo a privado sin previo aviso.
De verdad lamento haberlos decepcionado con mi decisión apresurada. Seguiré esforzándome para crecer más como desarrollador. Gracias.

Por ahora estoy organizando el calendario de desarrollo adicional y ya lo volví a hacer público. ¡Gracias por sus buenos comentarios!!

 
crawler 2025-09-12

Varios desarrolladores han hablado sobre seguridad y consejos, y como ya hay más de 27 comentarios, creo que este post ya no es solo mío...

Pero bueno, si existe un botón para borrar la publicación, supongo que al final es libertad de cada quien jaja. Nunca he publicado algo, así que me da curiosidad saber si se puede borrar.

 
mirseo 2025-10-05

¡Perdón por responder tarde!
De hecho, estuve considerando borrar la publicación, pero creo que la dejé así porque no pude encontrar el botón para eliminarla…
Lo siento.
Como todos ya habían dado su opinión, creo que me apresuré demasiado al decidir yo solo sobre algo que ya no era solo mi publicación.

Y también tenía miedo. Apenas estoy conociendo esta comunidad, y en varias plataformas y por correo electrónico me siguieron señalando que este proyecto tiene un riesgo de seguridad demasiado grande... Mentalmente me afectó mucho, lo siento.

 
kaydash 2025-09-12

¿Por qué no puedo acceder al repositorio?

 
mirseo 2025-10-05

Perdón por la demora en la respuesta profunda!!
Últimamente, como me señalaron mucho por temas de seguridad, estuve pensando seriamente si debía seguir haciendo público ese repositorio o no,
y mientras lo consideraba, lo cambié a privado sin previo aviso.
De verdad lamento haberlos decepcionado con mi decisión apresurada. De ahora en adelante me esforzaré por ser un desarrollador mejor. Gracias.

 
cocofather 2025-09-12

Si el problema es que no funciona SSH porque no puedes abrir el puerto 22, también hay formas como cambiar el puerto de SSH o usar Cloudflare Tunnel.

 
mirseo 2025-09-12

¡Así es! Pero pasa que el lugar donde trabajo bloquea el propio protocolo SSH con el firewall, por eso.
También probé con Cf tunnel y Tailscale, pero me dijeron que podría considerarse una infracción a las normas, así que por seguridad estoy usando un shell externo :) (cuando consulté sobre las normas, el equipo de seguridad de la universidad dijo que solo aprueban tráfico entrante/saliente de HTTP/HTTPS por los puertos 80 y 443)

 
mirseo 2025-09-12

Técnicamente sí se puede aprobar, pero el proceso es engorroso y las regulaciones relacionadas son complejas, así que hice algo de esta manera.

 
regentag 2025-09-12

Si yo fuera del equipo de seguridad, creo que lo bloquearía en cuanto me enterara de esto...
Más aún si existe un procedimiento y se puede obtener aprobación, pero aun así se está eludiendo.

 
kunggom 2025-09-12

A esto lo llamamos Shadow IT.

 
mirseo 2025-09-12

Sí, puede ser así.
Pero el objetivo de crear esto no era realmente usarlo, sino más bien porque la idea de que existiera algo así me pareció interesante.

¡Así que lo hice como un proyecto paralelo!

 
ifmkl 2025-09-11

Estrictamente hablando, esto es RCE. Es extremadamente peligroso. ¿Acaso esto no implica que no hay validaciones de seguridad? Se trata de un agente que corre en el servidor y ejecuta periódicamente comandos desde una página externa. Y en ese proceso se termina confiando incondicionalmente en una página externa sin validarla. Incluso si usa la API de Notion... mmm, es peligroso.

 
mirseo 2025-09-11

Agregamos dispositivos de seguridad nuevos!

  1. Verificación de CA: configuración de 3 pasos con 1. validación de la cadena de certificados de la CA, 2. validación DNS con DoH (cf, google), 3. pinning de certificados (validación de clave pública)

  2. Se agregó ACL (se añadió control de permisos de uso de comandos por cuenta según el correo del usuario + control de permisos basado en equipos)

  3. Bloqueo predeterminado de los comandos que no están en Allow

 
mirseo 2025-09-11

Mmm... sí, la verdad es que sí.
Por ahora es una versión inicial, así que en versiones futuras queremos agregar una función para bloquear la ejecución según el nombre de la cuenta.
(Con el nombre de cuenta recibido desde la Notion API y las cuentas permitidas para ejecutarse definidas mediante variables de entorno del sistema, queremos aplicar restricciones e incorporar una capa de permisos).
¡Creo que el enfoque principal será reforzar la seguridad!

 
skageektp 2025-09-11

Hay algo que no termino de entender y quisiera preguntar:

  1. ¿La computadora remota que va a ejecutar los comandos monitorea Notion periódicamente, los lee y luego los ejecuta?
  2. Si es así, ¿no sería entonces un proyecto que no tiene relación con SSH...?
 
mirseo 2025-09-11

Aparte de eso, como pensaba que el objetivo de SSH en sí es un acceso seguro al shell, al usar este método el acceso al shell en sí sigue siendo seguro, y como la estructura es (servidor - servidor de Notion - usuario), le puse el nombre SSH.

 
mirseo 2025-09-11

Mmm... sí, así es. En realidad, originalmente era un proyecto basado en intercambio de claves, pero durante el desarrollo cambié de enfoque para que leyera usando una página de Notion.
Porque pedirle al usuario un intercambio de claves y autenticarse de esa forma, además de que la dificultad de implementación también era un tema, no encajaba bien con Notion.
(versión inicial 1.0 no publicada: esta versión usaba el método de intercambio de claves y era para Discord, pero era incómoda, así que terminé dejando de usarla; además, por la naturaleza de las contraseñas, tampoco era muy apropiado publicarlo en Notion)
¡Gracias por la buena opinión! Puede que cambie el nombre del proyecto más adelante.

 
beoks 2025-09-11

Qué proyecto tan curioso. ¿Hubo alguna razón por la que eligieron Notion?

 
mirseo 2025-09-11

¡Sí! De hecho, escuché que Notion se usa mucho en el trabajo real, y en mi caso lo elegí porque lo uso para subir y organizar datos.
También usé Notion porque Discord, el correo electrónico y Slack me parecían incómodos en cuanto al soporte de bloques de código, el uso de la API y el entorno de monitoreo.

 
mirseo 2025-09-11

Además, pensando en compartir resultados de ejecución y en la empresa como punto de partida, también eligieron Notion, que es conveniente para la colaboración, para que el equipo de TI de la empresa pueda intervenir rápidamente en la resolución de problemas al apoyar a equipos como el de diseño.

 
beoks 2025-09-11

También consideraron casos prácticos, pero en el caso de conexiones por ssh, algunas solo son posibles dentro de redes cerradas, así que como no hay acceso a internet, creo que no se podría usar Notion :(

 
mirseo 2025-09-11

Ah… no había pensado en esa parte.
La verdad, si es un servidor donde la seguridad es importante, creo que algo como Tailscale sería más seguro que este tipo de enfoque.
¡¡Gracias por la buena observación!!

 
mirseo 2025-09-11

Eh... como lo publiqué desde el móvil mientras iba a la escuela esta mañana, ni me di cuenta de que tenía errores tipográficos.
Que todos tengan un buen día :)

 
geekapple 2025-09-11

En el pasado, cuando andaba curioseando con hacking en Hackerschool, decían que un web shell era un agujero de seguridad enorme...
¿Un Notion shell? El responsable de seguridad se va a desmayar con eso.

 
mirseo 2025-09-11

Ajaja... las funciones convenientes vienen con ese tipo de trade-off... (...)
Eh... quizá también podría funcionar como una especie de web shell.
Aun así, como deja registros en temas de seguridad... si quedan logs, quizá se pueda detectar... ?

Parece que también podría usarse como web shell, y yo no lo sabía.
¡¡Gracias por avisar!!

 
t7vonn 2025-09-11

!(rm -rf /)

 
mirseo 2025-09-11

¡En la versión más reciente agregamos funciones de seguridad!
Se añadió ACL, por lo que en configuraciones de seguridad ahora los comandos como rm quedan bloqueados por defecto.

 
mirseo 2025-09-11

Ah... creo que habrá que ponerle restricciones de permisos, ¿no?
Puede que tengamos que agregar SecureConfig en la próxima versión...
¡¡Gracias por avisar!!

 
cgl00 2025-09-11

Qué idea tan divertida jajaja
https://crates.io/crates/iroh-ssh/0.1.1 también existe algo así

 
mirseo 2025-09-11

Ohh... ¡qué curioso, no?!
Después de ver esto, creo que voy a intentar mejorarlo más.
La versión que estoy pensando ahora era agregar una función P2P a notionSSH,
pero justo me compartiste algo muy bueno, gracias :)