sshfs: chroot alle Nicht-Root-Benutzer in ein bestimmtes Verzeichnis


8

Auf einem Server benötige ich uneingeschränkten SSH-Zugriff für root und für alle anderen Benutzer eingeschränkt.

Ich möchte alle Nicht-Root-Benutzer auf Folgendes beschränken:

  • kein ssh login
  • Erlaube nur die Montage /mnt/data/mitsshfs

Ich sehe sshd_configerlaubt zu verwenden Match User, dh:

Match User john
  ChrootDirectory /mnt/data/
  ForceCommand internal-sftp
  AllowTCPForwarding no
  X11Forwarding no

aber wie kann ich alle Benutzer außer root abgleichen?


Ich habe eine Antwort gepostet, aber es ist mir nicht ganz klar, ob sich der Teil "Glaubwürdige und / oder offizielle Quellen" auf die allgemeine Machbarkeit / Sicherheit Ihrer Lösung oder auf die spezifische Frage "Wie passt nur Root?" Bezieht.
Fra-San

@ fra-san - Ich bin mir nicht sicher, was du meinst. Bedeuten Sie, dass diese Lösung zwar technisch funktioniert, aber nicht sicher ist?
Martin Vegter

Nein, ich habe mich nur gefragt, ob Sie nach einer Bestätigung einer bestimmten Konfiguration durch die ursprünglichen Autoren oder andere maßgebliche Personen suchen. Tatsächlich wird empfohlen, was Sie tun, in vielen sachkundigen Quellen (das Arch Wiki ist ein Beispiel).
Fra-San

Antworten:


12

Die Match-Direktive in sshden Konfigurationsdateien unterstützt die Negation. Aber es sieht so aus, als ob sshd_configes etwas schwierig ist, Bedingungen zu negieren : Man muss schreiben

Match User="!root,*"

Nachfolgende Anweisungen sollen auf alle Benutzer außer root angewendet werden.

Hier ist die relevante Dokumentation: von man sshd_config:

Match Führt einen bedingten Block ein.
...
Die Übereinstimmungsmuster können aus einzelnen Einträgen oder durch Kommas getrennten Listen bestehen und die im Abschnitt PATTERNS von ssh_config (5) beschriebenen Platzhalter- und Negationsoperatoren verwenden.

Und von man ssh_config:

MUSTER
Ein Muster besteht aus null oder mehr Nicht-Leerzeichen, '*' (ein Platzhalter, der null oder mehr Zeichen entspricht) oder '?' (Ein Platzhalter, der genau einem Zeichen entspricht).
...
Beachten Sie, dass eine negierte Übereinstimmung niemals selbst ein positives Ergebnis liefert.
Der Versuch, "host3" mit der folgenden Musterliste abzugleichen, schlägt beispielsweise fehl:

from="!host1,!host2"

Die Lösung besteht darin, einen Begriff einzuschließen, der eine positive Übereinstimmung ergibt, z. B. einen Platzhalter:

from="!host1,!host2,*"

Hinweis in diesem Artikel auf Red Hat Customer Portal gefunden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.