Wie kann ich jemandem sicher eine Muschel geben?


7

Ich habe eine Frage dazu, jemandem einen Shell-Account zu geben. Wie sicher ist es? Er konnte lesen / etc. Wie kann ich ein gesichertes Shell-Konto einrichten, das den Benutzer nur auf einige Behälter und sein eigenes Zuhause beschränkt? Ist der einzige Weg ein Chroot-Gefängnis?

Antworten:


4

Eine der einfachsten und effizientesten Methoden , um zu steuern, was ein Benutzer tun kann, ist lshell .

lshell ist eine in Python codierte Shell, mit der Sie die Umgebung eines Benutzers auf begrenzte Befehlssätze beschränken, Befehle über SSH aktivieren / deaktivieren (z. B. SCP, SFTP, rsync usw.), Benutzerbefehle protokollieren, Zeitbeschränkungen implementieren können. und mehr.


Die Verbindung ist unterbrochen.
Strg-Alt-Delor

Vielen Dank! Aktualisiert.
Aif

3

Wenn Sie jemandem ein Shell-Konto geben, kann er alle weltweit lesbaren Dateien sehen. Dies umfasst viele Dateien /etc, die für das Funktionieren des Systems erforderlich sind, einschließlich /etc/passwd(die Benutzernamen, aber keine Kennwörter enthalten).

Wenn Sie dem Benutzer erlauben, sich nur innerhalb einer Chroot anzumelden, kann er die Dateien außerhalb der Chroot nicht sehen. Das bedeutet, dass Sie genügend Programme, Bibliotheken usw. in die Chroot einfügen müssen - alles, worauf der Benutzer Zugriff haben muss, und jede Abhängigkeit davon.

Beachten Sie, dass eine Chroot nur den direkten Dateizugriff schützt. Der Benutzer kann verschiedene Dinge überwachen, einschließlich der Namen und Argumente der laufenden Prozesse aller Benutzer (es sei denn, Sie richten zusätzliche Schutzfunktionen wie SELinux ein). Wenn der Benutzer nicht viel tun muss, können Sie strengere Einschränkungen (einschließlich der Verhinderung, dass der Benutzer seine eigenen ausführbaren Dateien erstellt) mit einer eingeschränkten Shell festlegen. Das Einrichten einer eingeschränkten Shell ist jedoch sehr schwierig. Ich kann es nicht empfehlen.

Virtuelle Maschinen sind heutzutage sehr billig. Sie haben viele kostenlose Implementierungen zur Auswahl (Benutzermodus Linux, VirtualBox, VMware, KVM, OpenVZ, VServer usw.), und der von einer zusätzlichen Systeminstallation verwendete Speicherplatz ist minimal (und Sie benötigen ihn möglicherweise trotzdem für chroot). Eine virtuelle Maschine isoliert so ziemlich alles: Dateien, Prozesse, Netzwerke usw. Sofern Sie keine ungewöhnlichen Einschränkungen haben, ist dies der richtige Weg.


2

Eine Möglichkeit besteht darin, sie in eine eingeschränkte Shell-Sitzung zu verschieben, z. B. rbash [bash -r].

Es ist an dieser Stelle etwas unklar, was genau Sie erreichen möchten. Auf der Oberfläche gelten jedoch die Posix-Acls für "Andere" für das neue Konto sowie alle Gruppen-Acls für Gruppen, zu denen das Konto gehört, z 'Benutzer' zum Beispiel.


Nun ... Ich möchte Benutzer nur auf R / W / X-Dateien von zu Hause aus beschränken und erlauben, einen oder mehrere Prozesse auszuführen und beispielsweise nur 50 MB herunterzuladen. Ich habe es mit rbash versucht, aber ohne mv und einige andere Funktionen.
CappY

1

Beachten Sie, dass Teile von /etcauch für nicht privilegierte Benutzer lesbar sein müssen. Wenn es Dinge gibt /etc, die nicht lesbar sein sollten, aber vorhanden sind, haben Sie größere Probleme und sollten mindestens das Berechtigungsprüfungs- / Korrekturprogramm Ihrer Distribution ausführen.

Ein Gefängnis ist der einfachste Weg, drakonische Beschränkungen einzurichten. Es gibt andere Möglichkeiten, z. B. das Einrichten von SElinux und das Einrichten eines sehr eingeschränkten Sicherheitskontexts für den Benutzer.

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.