Wie ssh -Y und dann su - <ein anderer Benutzer> und trotzdem X-Anwendungen an Ihren lokalen Computer weiterleiten

13

Es ist einfach genug, eine remote ausgeführte Linux-Anwendung abzurufen (dh lokal zu zeichnen): Wenn ich ssh -Yeine Anwendung auf dem Remote-Computer ausführe, wird diese Anwendung mit Sicherheit auf meinem lokalen Desktop angezeigt.

Wenn ich jedoch auf dem Remote-Computer suan einen anderen Benutzer weitergeleitet werde, kann ich die X-Anwendung nicht an meinen lokalen Computer weiterleiten. Es heißt wrong authentication.

Ich bin mir nicht sicher, wie ich diesen Fall angehen soll. Das echo $DISPLAYist immer noch korrekt (wird bei der ersten ssh -YAnmeldung festgelegt), aber das Sitzungscookie wird wahrscheinlich nur für den ersten Benutzer festgelegt, der sich bei ssh angemeldet hat.

Wie kann ich diese Schwierigkeit überwinden und andere X-Anwendungen weiterleiten, die von verschiedenen Benutzern ausgeführt werden?

Der Grund, warum ich nicht direkt ssh'ing, ist, dass ich nicht möchte, dass dieser Benutzer über ssh erreichbar ist (es ist der "virtualbox" -Benutzer, der offensichtlich ein einfaches Ziel für Bots ist, die versuchen, auf diesen Server ssh zu machen) ...

nass
quelle

Antworten:

12

Wenn Sie über ssh mit aktivierter X11-Weiterleitung eine Verbindung zu einem Computer zum Entfernen herstellen, erstellt ssh auf dem Server eine .XauthorityDatei im Basisverzeichnis des Benutzers. Da ssh auf einem TCP-Socket auf X11 wartet, kann jeder eine Verbindung herstellen. Da jeder eine Verbindung herstellen kann, müssen wir verhindern, dass nur einer Ihr Display verwendet. Dies geschieht mit dieser .XauthorityDatei. Die Datei enthält ein "Cookie", das dem X11-Server angezeigt wird und überprüft, ob der Client eine Verbindung herstellen darf.

Wenn Sie alle Details überspringen und diese .XauthorityDatei in das Ausgangsverzeichnis Ihres Zielbenutzers kopieren (und ihm den Besitz geben), sollten Sie eine Verbindung herstellen können.

Patrick
quelle
Es ist erwähnenswert, dass die DISPLAY-Variable auch nach einem Benutzerwechsel korrekt gesetzt werden muss. Dies kann ein Problem sein, wenn Sie 'sudo' verwenden, wodurch die Umgebung möglicherweise herausgefiltert wird.
Chris Arguin
8
  1. ssh -Y auf die entfernte Maschine als Sie.
  2. Sobald Sie dort sind, geben Sie ein xauth list. Eine Liste der MAGIC-COOKIE-Elemente wird angezeigt. Ihre Anmeldesitzung ist höchstwahrscheinlich die unterste in der Liste. (Überprüfen Sie dies, indem Sie sich den Hostnamen und den UNIX-Nummerncode ansehen und ihn mit dem Hostnamen, von dem Sie die Shell erstellt haben, und Ihrem aktuellen lokalen Host vergleichen: ## DISPLAY env variable.)
  3. Benutzer wechseln.
  4. Geben Sie xauth add+ die gesamte MAGIC-COOKIE-Zeile von oben ein.
  5. Grafiken sollten jetzt angezeigt werden. Testen Sie es mit einem kurzen xlogo.
Geil
quelle
2
kein "+" in xauth add. ZB nur xauth add ubuntu / unix: 10 MIT-MAGIC-COOKIE-1 6b49de7c34409d5ac69beab31d12ec94
Tuntable
1
USER="otherusername" && MAGIC_COOKIE=`xauth list | tail -n1` && su -c "xauth add $MAGIC_COOKIE" $USER && su - $USER
7yl4r
3

Ich mag Randys Antwort, aber es hat bei mir nicht ganz funktioniert.

Folgendes muss ich tun:

  1. ssh -Y as user1
  2. xauth list | grep `uname -n`
  3. Wechseln Sie zu Benutzer2
  4. unset XAUTHORITY
  5. xauth generate :0 .
  6. xauth add :0 . <KEY-FROM-STEP-2>

Notieren Sie sich die beiden Punkte in den Schritten 5 und 6.

Wenn ich nur Randys Antwort folge, zeigt die XAUTHORITYVariable von Benutzer2 immer noch auf die .XauthorityDatei von Benutzer1 . Und seine Syntax der + -Taste funktionierte nicht.

Jon Daley
quelle
2

Dies ist keine Antwort. Wenn Sie also eine finden, ist dies natürlich vorzuziehen.

Wenn nicht, und das ist die Grundursache für Ihr Rätsel:

Der Grund, warum ich nicht direkt ssh'ing, ist, dass ich nicht möchte, dass dieser Benutzer über ssh erreichbar ist (es ist der "virtualbox" -Benutzer, der offensichtlich ein einfaches Ziel für Bots ist, die versuchen, auf diesen Server ssh zu machen) ...

Es scheint mir kein gutes Argument zu sein. "What bots target" WRT eine gut konfigurierte sshd ist weitgehend irrelevant. Werden sie überall in Port 22 herumschwirren? Scheinbar so. Bedeutet dies, dass sie tatsächlich eine Chance auf Erfolg haben?

Versuchen Sie, nach einer Geschichte über jemanden zu suchen , bei dem ein zufälliger anonymer Bot erfolgreich in sshd eingebrochen ist. Ich bin mir sicher, dass es irgendwo jemandem passiert ist (und natürlich wissen Sie es vielleicht nie), aber ich kann keine Berichte darüber finden. Es wäre interessant zu lesen, welche Konfiguration verwendet wurde.

SSH ist bei sachgemäßer Verwendung sehr sicher. Andernfalls wäre der Internethandel nicht realisierbar. Warum stören diese Bots? Mit "richtig verwendet" meine ich in erster Linie mit obligatorischen öffentlichen / privaten Schlüsselpaaren. Wenn Sie dies tun und sicher sind, dass Ihr privater Schlüssel sicher ist (und Sie sollten es auch sein), sollten Sie sich auf sshd verlassen.

Ich denke, der Grund, warum alle "Einbruchsversuche" überhaupt passieren, ist, dass es eine große Anzahl von Benutzern gibt, die dies nicht tun Fragen zu U & L stellen, keine Handbuchseiten lesen und nur den Passwortschutz verwenden. Das ist so, als würde man seine Geldautomatenkarte irgendwo in einem Automaten lassen, auf dem ein Schild mit der Aufschrift "Rate mal!" steht.

Wenn Sie sich Ihren privaten Schlüssel jedoch wie Ihre Geldautomatenkarte vorstellen - als etwas, das von Ihnen physisch gesichert ist (was es im Wesentlichen ist), wird das Ziel viel ätherischer. Alles, was diese Bots tun können, ist zu beweisen, dass es Tausende von Maschinen und Jahrtausende dauern würde, um einen 2048-Bit-Schlüssel zu erzwingen.

Wenn Sie es satt haben, Berichte über Einbruchsversuche zu lesen, ändern Sie Ihren Port. Ich habe Leute hier gesehen, die das als "Sicherheit durch Unbekanntheit" bezeichnet haben, aber ein sshd, das ordnungsgemäß an Port 22 gesichert ist, wird an Port 57 nicht weniger sicher sein, aber es wird nicht zufällig gestört. Natürlich könnten alle Ihre Drohnen-Feinde einfach die gesamte IP scannen - aber wissen Sie was? Sie tun es nicht. Ich nehme an, das liegt daran, dass sie jemanden suchen, der ein System betreibt, das sie noch nicht einmal gesehen /etc/ssh/sshd_config, geschweige denn erzogen und eingestellt hat.

Goldlöckchen
quelle
Ich bin mit allem einverstanden, was Sie sagen. aber ich bin immer wahnsinnig unsicher (ist es nicht das, was sie dir in vielen Situationen beibringen, nachdem du dich verbrannt hast?). Um ehrlich zu sein, ist der PC, an dem ich mich anmelden möchte, eine Firewall (kein Zugriff von außen). Es ist ssh auf einem hohen Port, hat ein schwieriges Passwort, aber ich kann immer noch nicht anders, als zu glauben, dass "virtualbox" ein öffentlicher Name ist. eine, die irgendjemand irgendwo in einen Bot-Code einbauen möchte. SSH-Schlüssel sind eine wunderbare Lösung, insbesondere wenn sie mit einem Passwortschutz verwendet werden. Aber ich müsste eine leichte Linux-Distribution auf USB haben, wenn ich sie benutzen möchte.
nass