NotionSSH - Remote-Server mit Notion steuern, auch ohne VPN
(github.com/mirseo)Beim Entwickeln gibt es aus Sicherheitsgründen manchmal Umgebungen, in denen nur http/https zu bestimmten Websites erlaubt ist, SSH oder RDP aber nicht freigegeben werden.
Deshalb habe ich das gebaut.
Es ist ein Projekt namens NotionSSH: Wenn man in Notion etwas wie !(docker ps) eingibt,
führt ein Rechner, der die betreffende Seite überwacht, dies in einer Shell aus und gibt das Ergebnis zurück. Es ist ein einfaches Rust-Programm.
Da es noch eine frühe Version ist, kann es viele Bugs geben.
Bitte nutzt es viel!
34 Kommentare
Es tut mir leid, dass meine Antwort so spät kommt!
Ich schäme mich wirklich. Es ist zwar schön, dass ein Projekt Aufmerksamkeit bekommt, das ich zum ersten Mal richtig mit dem Ziel von Open Source entwickelt habe, aber ich glaube, ich hatte Angst, weil ich über meine persönliche E-Mail und verschiedene andere externe Social-Media-Kanäle zu viele Hinweise und Kritik erhalten habe.
Deshalb habe ich das Projekt vorschnell für drei Tage auf privat gestellt. Es tut mir wirklich leid, dass ich euch mit meiner übereilten Entscheidung enttäuscht habe.
Ich werde diese Sache als gute Erfahrung mitnehmen und meine Open-Source-Projekte auch in Zukunft weiter verbessern. Vielen Dank!!
Es gibt auch
guacamoleals Remote-Desktop-Gateway (https://guacamole.apache.org/)Es tut mir leid, dass ich so spät antworte!
Ich hatte es vorher einmal genutzt, aber aufgrund der Eigenschaften von VNC war es langsam, und die Verzögerung durch die Latenz hatte deutliche Auswirkungen.
Deshalb habe ich während ich über eine neue Alternative nachgedacht habe, diese Lösung entwickelt. Vielen Dank!!
2025 | Entwicklung der Rust-basierten SSH-Bridge NotionSSH (2.0) (https://github.com/mirseo/notionSSH) <- nicht unterstützt und entfernt
Das haben Sie dort so vermerkt ... Es wäre wohl besser, hier zu antworten oder die News zu löschen.
Es tut mir leid, dass meine Antwort so spät kommt!
In letzter Zeit gab es viele Hinweise auf Sicherheitsprobleme, daher habe ich lange darüber nachgedacht, ob ich dieses Repository weiterhin öffentlich zugänglich machen sollte,
und es dann ohne Ankündigung auf privat umgestellt.
Es tut mir wirklich leid, dass ich Sie mit meiner vorschnellen Entscheidung enttäuscht habe. Ich werde mich bemühen, mich künftig als Entwickler weiter zu verbessern. Vielen Dank.
Aktuell plane ich den weiteren Entwicklungszeitplan und habe es wieder auf öffentlich umgestellt. Vielen Dank für die gute Rückmeldung!!
Da mehrere Entwickler etwas zu Sicherheit und Tipps gesagt haben und die Zahl der Kommentare bereits über 27 liegt, denke ich, dass dieser Beitrag nicht mehr nur mein eigener ist...
Aber wenn es einen Button zum Löschen des Beitrags gibt, ist es natürlich die eigene Freiheit, oder? haha
Ich habe selbst noch nie etwas gepostet, daher frage ich mich, ob das Löschen möglich ist.
Es tut mir leid, dass meine Antwort so spät kommt!
Eigentlich hatte ich überlegt, den Beitrag zu löschen, aber ich konnte den Löschen-Button nicht finden, daher wurde er wohl einfach liegen gelassen…
Es tut mir leid.
Da alle ihre Meinung dazu geäußert haben, war es wohl zu vorschnell von mir, allein zu entscheiden, obwohl es nicht nur mein Beitrag war.
Und ich hatte Angst. Ich bin erst seit Kurzem in der Community aktiv und habe über verschiedene Plattformen und per E-Mail immer wieder Hinweise bekommen, dass dieses Projekt ein zu großes Sicherheitsrisiko darstellt... Das hat mich psychisch ziemlich mitgenommen, es tut mir leid.
Warum kann nicht auf das Repository zugegriffen werden?
Es tut mir leid, dass die Antwort von DeepByun verspätet kam!!
In letzter Zeit wurde oft auf Sicherheitsprobleme hingewiesen, daher habe ich lange darüber nachgedacht, ob ich dieses Repository weiter öffentlich zugänglich lassen sollte oder nicht.
Dabei habe ich es ohne Ankündigung vorübergehend auf privat umgestellt.
Es tut mir wirklich leid, dass ich Sie mit meiner vorschnellen Entscheidung enttäuscht habe. Ich werde mich künftig zu einem besseren Entwickler weiterentwickeln. Danke.
Wenn SSH nicht funktioniert, weil Port 22 nicht geöffnet werden kann, gibt es auch die Möglichkeit, den SSH-Port zu ändern oder Cloudflare Tunnel zu verwenden.
Stimmt! Aber der Ort, an dem ich arbeite, blockiert das SSH-Protokoll selbst per Firewall, deshalb ist das so!
Ich habe auch CF Tunnel und Tailscale ausprobiert, aber mir wurde gesagt, dass das gegen die Regeln verstoßen könnte, deshalb nutze ich sicherheitshalber eine externe Shell :) (Als ich nach den Richtlinien gefragt habe, meinte das Sicherheitsteam der Schule, dass nur eingehendes/ausgehendes HTTP/HTTPS über 80 und 443 erlaubt ist.)
Genauer gesagt ist die Genehmigung zwar möglich, aber das Verfahren ist umständlich und die entsprechenden Vorschriften sind komplex, deshalb habe ich diese Methode entwickelt.
Wenn ich im Security-Team wäre, würde ich das wohl in dem Moment blockieren, in dem ich davon erfahre ...
Erst recht, wenn es dafür einen Prozess gibt und eine Genehmigung möglich ist, man das aber trotzdem umgeht.
Wir nennen das Shadow IT.
Stimmt, das kann natürlich so sein.
Aber der Zweck, das zu bauen, war weniger, es tatsächlich zu benutzen, sondern eher die Idee: Wie wäre es, wenn es so etwas gäbe?
Deshalb habe ich es als Side Project gebaut!!
Genau genommen ist das RCE. Ziemlich gefährlich. Hier gibt es doch keinerlei sicherheitsbezogene Validierung, oder? Auf dem Server läuft ein Agent, der regelmäßig Befehle von einer externen Seite ausführt. Dabei wird diese externe Seite ohne jede Prüfung bedingungslos als vertrauenswürdig behandelt. Auch wenn die Notion-API verwendet wird … hm, das ist riskant.
Wir haben zusätzliche Sicherheitsmaßnahmen eingebaut!
CA-Validierung – Konfiguration in 3 Schritten: 1. Validierung der CA-Zertifikatskette, 2. DoH-DNS-Validierung (cf, google), 3. Zertifikats-Pinning (Validierung des öffentlichen Schlüssels)
ACL hinzugefügt (zusätzliche Kontrolle der Berechtigung zur Ausführung von Befehlen pro Benutzer-E-Mail-/Rechtekonto + zusätzliche teambasierte Berechtigungssteuerung)
Befehle, die nicht auf der Allow-Liste stehen, werden standardmäßig blockiert
Hm … eigentlich stimmt das.
Im Moment ist es noch eine frühe Version, daher möchte ich in einer späteren Version eine Funktion hinzufügen, die die Ausführung auf Basis des Kontonamens blockiert.
(Ich plane, den über die NotionAPI erhaltenen Kontonamen zu nutzen, die ausführbaren Konten über Systemumgebungsvariablen einzuschränken und eine Berechtigungsebene einzubauen!! )
Der Schwerpunkt wird wohl auf der Härtung der Sicherheit liegen!!
Ich habe eine Frage, weil ich es nicht ganz verstehe:
Abgesehen davon dachte ich, dass das Ziel von SSH selbst ein sicherer Shell-Zugriff ist. Wenn man also diesen Ansatz verwendet, ist der Shell-Zugriff an sich sicher, weil die Struktur
(Server - Notion-Server - Benutzer)ist. Deshalb habe ich den Namen SSH verwendet!Hm … ja, stimmt. Ursprünglich war es tatsächlich ein Projekt auf Basis von Schlüsselaustausch, aber im Laufe der Entwicklung habe ich den Kurs geändert, sodass stattdessen eine Notion-Seite ausgelesen wird.
Der Grund war, dass ein Ansatz, bei dem man vom Nutzer Schlüsselaustausch verlangt und authentifiziert, sowohl von der Implementierung her schwieriger ist als auch nicht gut zu Notion passt.
(Frühe unveröffentlichte Version vor 1.0 – diese Version nutzte Schlüsselaustausch und war für Discord gedacht, war aber so unpraktisch, dass ich sie selbst nicht mehr verwendet habe. Wegen der Eigenschaften von Passwörtern war es auch etwas heikel, sie in Notion offenzulegen.)
Danke für die gute Anregung! Vielleicht wird der Projektname später noch geändert.
Interessantes Projekt. Gab es einen bestimmten Grund, warum Sie sich für Notion entschieden haben?
Ja! Ich habe tatsächlich gehört, dass Notion in der Praxis häufig genutzt wird, und in meinem Fall habe ich mich für Notion entschieden, weil ich es zum Hochladen und Organisieren von Daten verwende.
Ich habe mich auch für Notion entschieden, weil Discord, E-Mail und Slack im Hinblick auf die Unterstützung von Codeblöcken sowie die API-Nutzung und die Monitor-Umgebung unpraktisch erschienen!
Außerdem fiel die Wahl auf das für die Zusammenarbeit praktische Notion, damit – auch im Hinblick auf das Teilen von Ausführungsergebnissen und aus Unternehmenssicht – bei Supportanfragen etwa durch das Design-Team die IT-Abteilung des Unternehmens schnell in die Problemlösung eingreifen kann.
Sie haben also auch praktische Anwendungsfälle berücksichtigt. Bei SSH-Zugriffen ist es allerdings so, dass einige nur in geschlossenen Netzwerken möglich sind und daher kein Internetzugang besteht, sodass Notion vermutlich nicht genutzt werden kann ;_;
Ach … daran hatte ich nicht gedacht.
Tatsächlich wäre für einen Server, bei dem Sicherheit wichtig ist, vermutlich eher so etwas wie Tailscale sicherer als diese Methode!!
Vielen Dank für die gute Anmerkung!!
Oh … da ich das heute Morgen auf dem Weg zur Schule mobil gepostet habe, ist mir gar nicht aufgefallen, dass da Tippfehler drin waren.
Ich wünsche euch allen einen schönen Tag :)
Früher, als ich mit der Hacker School ein bisschen mit Hacking herumgespielt habe, hieß es, Web-Shells seien ein enormes Sicherheitsleck......
Eine Notion-Shell? Da kippt dem Sicherheitsverantwortlichen ja fast vom Stuhl.
Aha ... praktische Funktionen bringen eben entsprechende Trade-offs mit sich ... (...)
Hm ... vielleicht könnte es auch ähnlich wie eine Webshell funktionieren.
Immerhin werden in Bezug auf die Sicherheit Logs hinterlassen ... wenn Logs vorhanden sind, könnte man es vielleicht erkennen ...?
Es sieht so aus, als könnte man es auch als Webshell nutzen, das war mir nicht bewusst.
Danke für den Hinweis!!
!(rm -rf /)
In der neuesten Version wurden Sicherheitsfunktionen hinzugefügt!
Es wurde eine ACL ergänzt, sodass in Umgebungen mit Sicherheitseinstellungen Befehle wie
rmstandardmäßig blockiert werden!Ups ... hier müssen wir wohl die Berechtigungen einschränken, oder ..?
In der nächsten Version müssen wir vielleicht
SecureConfighinzufügen ...Danke für den Hinweis!!
Eine interessante Idee, haha
https://crates.io/crates/iroh-ssh/0.1.1 So etwas gibt es auch.
Oh ... interessant, oder?! Dadurch werde ich wohl noch weiter an Verbesserungen arbeiten.
Die Version, über die ich gerade nachdenke, sollte eigentlich eine P2P-Funktion in NotionSSH integrieren,
da haben Sie mir ja genau im richtigen Moment etwas Gutes gezeigt — vielen Dank :)