logo

Suletuxe.de
Linux - Nutzer
helfen
Linux - Nutzern

Willkommen, Gast. Bitte Login oder Registrieren.
24. November 2024, 18:29:51
Übersicht Hilfe Suche Login Registrieren

Amateurfunk Sulingen
Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe  |  allgemeine Kategorie  |  Installation & Einrichtung  |  Thema: [S]erver [S]eitige [H]ölle und Docker « zurück vorwärts »
Seiten: [1] nach unten Drucken
   Autor  Thema: [S]erver [S]eitige [H]ölle und Docker  (Gelesen 2083 mal)
Chris
Full Member
***

Offline

Einträge: 164



Okay, wer hat meine Kekse gegessen?

Profil anzeigen eMail
[S]erver [S]eitige [H]ölle und Docker
« am: 16. Juli 2020, 21:12:32 »

Moin!

Vielleicht kann mir ja hier jemand helfen.

Aktueller Stand
Ich möchte auf meinem Server eine Webseite hosten. Diese ist in mehrere Docker-Container unterteilt:
  • Container "db" für MariaDB
  • Container "web" für PHP/HTML/CSS
Der Reverse-Proxy ist korrekt eingestellt und ich bekomme im Browser auch die das gewünschte Ergebnis.
Bin ich per SSH auf meinem Server, kann ich mittels "docker exec" und "docker cp" Dateien erstellen und kopieren.

Was ich möchte
Ich möchte einer dritten Person Zugriff auf die Webseite geben. Der Zugriff soll jedoch auf den "web"-Container beschränkt sein.
Zugriff per CLI ist optional. Wichtiger ist die Möglichkeit, per SCP oder SFTP Dateien tauschen zu können.
Ein Zugriff auf den Server direkt möchte ich aus Gründen der Sicherheit nicht.

Der Philosophie von Docker folgend, besitzt der "web"-Container keinen integrierten SSH-Server. Daher habe ich ein SSH-Image heruntergeladen ("ssh"). "ssh" hat Zugriff auf das Verzeichnis von "web".
"ssh" hat einen hohen Port: 30022. Der Standard-SSH Server des Systems jedoch den Standard-Port 22.

Der Benutzer soll nun vie SSH bzw. SFTP/SCP auf "ssh" Zugreifen können. Im Internet liest man viel über "Tunneling" in diesem Zusammenhang.

Vor allem soll nur dieser eine Benutzer davon betroffen sein.

Das Problem
ALLES! Okay, ernsthaft: Ich habe viele Ansätze ausprobiert. Fast alles funktioniert. Sofern ich direkt mit SSH-Arbeite.
Gemeint ist sowas hier:
Code:
ssh foo@bar.de
Sobald ich jedoch versuche, mittels SCP oder SFTP (fish:// in Dolphin) darauf Zugreife, wird die Verbindung geschlossen. Ohne "wenn" und "aber".

Was ich bisher versucht habe
#1 - ForceCommand Nr. 1
Mein erster Ansatz war es, den Benutzer mittels sshd_config direkt in den Docker-Container zu bewegen:
Code:
Match User foo:
    ForceCommand docker exec -it web bash
Das funktioniert - wie gesagt - mit direktem SSH perfekt. Mit SCP/SFTP jedoch nicht.
SCP bricht mit der Meldung "The input device is not a TTY" ab.
Laut Recherche liegt das an der "-it" Option. Also habe ich diese entfernt. Und siehe da, keine Meldung mehr. Leider auch keine Verbindung.

#2 - ForceCommand Nr. 2
Mein zweiter Ansatz bestand darin, einen Tunnel aufzubauen.
Die Idee dabei:
Nutzer sieht: Nutzer --> Server
Nutzer macht: Nutzer --> Server --> Container
Das habe ich mit dieser sshd_config versucht:
Code:
Match User foo
        PermitEmptyPasswords yes
        ForceCommand ssh -t -o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" -p 20022 dusker@localhost "cd /var/www/html/ ; bash"
Das gepaart mit dem Entfernen des Passwortes für "foo" (das wird vom Ziel-Container ohnehin abgefragt) erreichte erneut das Ziel: CLI klappt!
Aber auch hier SCP/SFTP nicht. Auch das Entfernen des "-t" Parameters hatte keine Auswirkungen auf das Ergebnis.

#3 - ForceCommand Nr. 3
Im Grunde wie der vorherige Versuch. Lediglich "ssh" durch "sftp" ersetzt. Ergebnis bleibt.

#4 - Tunnel-Konfiguration
Dem Beispiel dieses Eintrages: https://www.ch.cam.ac.uk/computing/scp-over-ssh-tunnel folgend, habe ich eine solche Datei angelegt. Ebenfalls kein Ergebnis. Leider.

#5 - Jail
Nach Stunden erfolgloser Suche und vielen Experimenten (auch wenn das oben nicht so wirkt!), dachte ich an ein SSH-Jail. Also eine Chroot-Umgebung, in dem der Benutzer eingesperrt wird.
Die Lösung schien ziemlich einfach zu sein:
Code:
Match User foo
        ChrootDirectory /home/foo/www
        ForceCommand internal-sftp
Ach wäre das schön, wenn das so funktioniert hätte.

#6 - Gitea
Gitea ist ein git-Server den man selbst hosten kann. Es gibt Gitea auch als Docker-Image. In deren Dokumentation steht wie man den SSH-Server des Hosts nach Gitea leiten kann.
https://docs.gitea.io/en-us/install-with-docker/#ssh-container-passthrough
Tatsächlich hoste ich einen Gitea-Server, der sich das Zunutze macht.
Bisher konnte ich das jedoch nicht für mein aktuelles Problem nutzen.

Danke!
Wer es bis hier geschafft, alles zu lesen: Danke!
Wenn euch etwas einfällt, was ich noch probieren kann oder ihr einen Fehler findet, gebt mir bitte Bescheid.

Schöne Grüße
Chris
Gespeichert

Der einzig sichere Computer der Welt ist ausgestöpselt, in einem Tresor verstaut und auf dem Meeresboden.
Und nur eine Person kennt die Kombination zum Tresor.
Und diese ist tot.
[Bruce Schneier]
Andreas
Administrator
*****

Offline

Einträge: 1320



Linux von Innen

Profil anzeigen
Re:[S]erver [S]eitige [H]ölle und Docker
« Antwort #1 am: 17. Juli 2020, 06:36:53 »

Hast Du diese Option in der sshd_config deines Dockers:
Code:
Subsystem sftp /usr/lib/ssh/sftp-server
?? Ich nutze auf meinen Servern ausschließlich diese Variante und sie funktioniert bisher in allen möglichen und auch unmöglichen Lebenslagen (via autossh-Tunnel über nicht-priviligierte Ports etc.).

LG
Andreas
« Letzte Änderung: 23. Juli 2020, 07:18:59 von Andreas » Gespeichert

Wissen ist das einzige Gut, das mehr wird, wenn man es teilt - wenn es Menschen gibt, die es teilen, und es Menschen gibt, die bereit sind, dieses Geschenk auch mit eigenem Einsatz anzunehmen.


Freiheit zu erkämpfen reicht nicht. Man muss sie auch verteidigen.


Ohne IT-Kompetenz ist man heutzutage ein willkommenes Opfer und Spielball anderer, egal, welches System oder Gerät man nutzt. Nur Wissen schützt vor Schaden!
Seiten: [1] nach oben Drucken 
Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe  |  allgemeine Kategorie  |  Installation & Einrichtung  |  Thema: [S]erver [S]eitige [H]ölle und Docker « zurück vorwärts »
Gehe zu: 


Login mit Username, Passwort und Session Länge

 Es wird die Verwendung "Blink"-basierter Browser und mindestens 1024x768 Pixel Bildschirmauflösung
für die beste Darstellung empfohlen
 
freie Software für freie Menschen!
Powered by MySQL Powered by PHP Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe | Powered by YaBB SE
© 2001-2004, YaBB SE Dev Team. All Rights Reserved.
- modified by Andreas Richter (DF8OE)
Valid XHTML 1.0! Valid CSS!