Einfache und unkomplizierte Möglichkeit, Benutzer ins Gefängnis zu bringen


33

Ich brauche eine einfache Möglichkeit, Benutzer in ihren Home-Verzeichnissen in Oneiric inhaftieren zu lassen. Haben Sie eine einfache Konfiguration für das Inhaftieren von Benutzern mit vollständiger Hilfe oder einige gute Weblinks?

Ich würde einen kostenlosen öffentlichen Online-Server mit 10 bis 20 GB freiem Speicherplatz anbieten. Ich weiß nicht, wie viele Benutzer. Ich möchte ihnen SSH und SFTP geben, damit sie sich über FileZilla verbinden können.


2. Update, wenn Benutzer nicht in Home-Verzeichnissen gesperrt sind
One Zero

Dann glaube ich, dass Sie - wie von @Marco erwähnt - ChrootDirectory für SSH ausprobieren möchten - über die Standardmethoden hinausgehen möchten, da Sie diese skalieren müssen, um "viel" Speicherplatz zu bewältigen. 3- Ist SSH Ihre beste Wahl? Brauchen die Leute SSH für Ihren Service? 4- Viel Glück
Ali

1
Ich habe auch andere Pläne ... für normale Benutzer würden wir nur SFTP mit MY SECURE SHELL anbieten, das ist sehr einfach 2-Handle
One Zero

Wie kann ich dieses Gefängnis entfernen, z. B. (home / jail)? <br> Und wenn ich einen Abschnitt zum Gefängnis hinzufüge, z. B. jk_init -v -f / home / jail netutils, wie kann ich dies entfernen?

Antworten:


23

Jailkit ist eine Reihe von Dienstprogrammen, mit denen Benutzerkonten auf einen bestimmten Verzeichnisbaum und auf bestimmte Befehle beschränkt werden können. Das Einrichten eines Gefängnisses ist mit den Jailkit-Dienstprogrammen, die dies von Hand erledigen, viel einfacher. Ein Jail ist ein Verzeichnisbaum, den Sie in Ihrem Dateisystem erstellen. Der Benutzer kann keine Verzeichnisse oder Dateien sehen, die sich außerhalb des Gefängnisverzeichnisses befinden. Der Benutzer ist in diesem Verzeichnis und seinen Unterverzeichnissen eingesperrt.

Herunterladen und installieren:

http://olivier.sessink.nl/jailkit/index.html#download

VERSION=2.20 # from November 2018
cd /tmp
wget https://olivier.sessink.nl/jailkit/jailkit-$VERSION.tar.gz
tar -zxvf jailkit-$VERSION.tar.gz
cd jailkit-$VERSION/
./configure
make
su -
make install

Das Gefängnis aufbauen

Jetzt ist es Zeit, das Gefängnisverzeichnis einzurichten. Inhaftierte Benutzer sehen dieses Verzeichnis als Stammverzeichnis des Servers. Ich habe / home / jail gewählt:

mkdir /home/jail
chown root:root /home/jail

jk_init kann verwendet werden, um schnell ein Gefängnis mit mehreren Dateien oder Verzeichnissen zu erstellen, die für eine bestimmte Aufgabe oder ein bestimmtes Profil benötigt werden (klicken Sie darauf und lesen Sie alle Details).

jk_init -v /home/jail basicshell
jk_init -v /home/jail netutils
jk_init -v /home/jail ssh
jk_init -v /home/jail jk_lsh

Fügen Sie einen Benutzer hinzu

Fügen Sie einen neuen Benutzer mit einem Basisverzeichnis und einer Bash-Shell hinzu und legen Sie das Kennwort fest:

useradd -d /home/jailtest -m jailtest -s /bin/bash
passwd jailtest

Jetzt ist es Zeit, diesen Benutzer ins Gefängnis zu bringen

benutze den folgenden Befehl:

jk_jailuser -m -j /home/jail jailtest

Ihr /etc/passwdsolltet jetzt so etwas enthalten:

jailtest:x:1001:1001::/home/jail/./home/jailtest:/usr/sbin/jk_chrootsh

Bash aktivieren

Mit jk_cp werden die Bash-Bibliotheken in das Gefängnis kopiert:

jk_cp -v -f /home/jail /bin/bash

Bearbeiten /home/jail/etc/passwd

Ersetzen Sie diese Zeile:

jailtest:x:1001:1001::test:/usr/sbin/jk_lsh

mit diesem:

jailtest:x:1001:1001::/home/jailtest:/bin/bash

Instandhaltung

Durch die Verwendung von jk_updateUpdates kann das reale System im Gefängnis aktualisiert werden.

Ein Probelauf zeigt, was los ist:

jk_update -j /home/jail -d

Ohne das Argument -d wird das eigentliche Update durchgeführt. Weitere Wartungsarbeiten finden Sie hier.

(Falls etwas /home/jail/optfehlt, erstelle es mit mkdir -p /home/jail/opt/ und starte es jk_update -j /home/jailerneut)

Zugriff auf andere Verzeichnisse gewähren

Sie können spezielle Ordner bereitstellen, auf die der Benutzer des Gefängnisses jetzt zugreifen kann. Z.B:

mount --bind /media/$USER/Data/ /home/jail/home/jailtest/test/

Hilfe erhalten

http://olivier.sessink.nl/jailkit/howtos_chroot_shell.html

http://olivier.sessink.nl/jailkit/index.html#intro (eine sehr gute Hilfe)

Dieser auch

Dies wurde überprüft und verifiziert und funktioniert ordnungsgemäß


+1 sehr gut. empfehlen die Links lesen Sie oben in der „Hilfe Taken“ genannten Abschnitt zu
cwd

2
Dies funktioniert unter Ubuntu 13.10 nicht. Wenn Sie versuchen, sich endgültig anzumelden, erhalten Sie die Begrüßungsnachricht, gefolgt von einer geschlossenen Verbindung.
Matt H

Matt H: Stellen Sie sicher, dass Sie die letzten beiden Schritte befolgen. Kopieren der Bash-Binärdateien und Bearbeiten der Datei / home / jail / etc / passwd.
ONOZ

2
Dies funktioniert entweder nicht mehr oder es hat sich etwas geändert, seitdem dieses Tutorial erstellt wurde. Ich bekomme genau die gleichen Probleme wie MattH.
James Heald

Ich hatte auch die Verbindung sofort nach der Begrüßungsnachricht geschlossen. Ich habe die Login-Shell in der chroot passwd-Datei von jk_lsh auf bash geändert, wie hier zu lesen. Linuxquestions.org/questions/linux-software-2/… Dies ist keine Lösung, sondern eine Umgehung!
Attila Fulop

6

Sie können sie nicht auf / home beschränken, da sie Zugriff auf die System-Binärdateien und Bash- und Konfigurationsdateien in / etc benötigen

IMO ist die einfachste Methode zum Sichern von Benutzern die Verwendung von Apparmor.

Sie stellen eine feste Verbindung her

ln /bin/bash /usr/local/bin/jailbash

Sie fügen Jailbash zu / etc / shells hinzu

Anschließend weisen Sie der Benutzer-Shell jailbash zu und schreiben ein Apparmor-Profil für jailbash, das nur minimalen Zugriff ermöglicht.

sudo chsh -s /usr/local/bin/jailbash user_to_confine

Sie müssen selbst ein Apparmor-Profil schreiben, aber ich habe ein Profil, mit dem Sie möglicherweise beginnen könnten

http://bodhizazen.com/aa-profiles/bodhizazen/ubuntu-10.04/usr.local.bin.jailbash


You can not confine them to /home as they need access to the system binaries and bash and configuration files in /etcNichts hindert Sie daran, Dateien zu verknüpfen oder zu kopieren, die Sie für nötig halten.
user606723

1
Ja, Sie können das tun, was user606723 vorschlägt, aber es ist nicht so einfach, und IMO aller möglichen Lösungen ist die unpraktischste oder einfachste. Könnte auch eine Chroot bauen oder lxc verwenden. Du kopierst eine Binärdatei, dann die Libs. Oft müssen Sie die Bibliotheken manuell mit ldd identifizieren. Diese Methode erfordert eine Menge Arbeit. Und dann müssen Sie das Gefängnis auf dem neuesten Stand halten, Sie müssen die Binärdateien / Bibliotheken manuell aktualisieren (kopieren). Links funktionieren in Bezug auf Updates möglicherweise besser, aber Sie müssen sie noch alle einrichten. Irgendwie denke ich nicht, dass dies das ist, was das OP im Sinn hatte. Wie kann man sie dann einsperren?
Panther

1
Ich denke, der springende Punkt der Frage war es, Tools aufzuzeigen, mit denen dieser Prozess automatisiert werden kann ... wie jailkitein Tool, das im OP erwähnt wird.
user606723

@ bodhi.zazen. Was denkst du darüber? debootstrap (oneiric) dann erstelle einen Container mit lxc. mit jail kit> user to container>. Was ich bisher getan habe, ist, ich habe Debbootstrap Oneiric Minimum dann verwendet Jailkit> funktioniert gut
One Zero

Sie können LXC für diese Aufgabe verwenden. Beachten Sie jedoch, dass die Isolierung bei LXC manchmal unvollständig ist. Solange Benutzer keinen Root-Zugriff auf den Container haben, sollten Sie in Ordnung sein und die LXC-Mailingliste abonnieren.
Panther

1

Es ist schwierig zu erraten, welchen Zweck Sie erreichen möchten. Wenn ssh / sftp verweigert werden soll, während der Zugriff über FTP im Gefängnis erfolgt ... einfach:

Füge / etc / shells eine neue Shell hinzu:

sudo -e /etc/shells

Fügen Sie eine Zeile hinzu:

/bin/false

Speichern. Ändern Sie für jeden Benutzer, den Sie ssh / sftp verweigern möchten, die Shell des Benutzers:

sudo chsh -s /bin/false userx

Jetzt kann sich userx nicht über ssh / sftp anmelden.

Installieren Sie vsftpd:

sudo apt-get install vsftpd

Bearbeiten Sie die Konfigurationsdatei:

sudo -e /etc/vsftpd.conf

Und ein paar Änderungen ....

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES

Speichern. Vsftpd neu starten:

sudo /etc/init.d/vsftpd restart

Nun, ich möchte ihnen ssh + sftp geben (Verbindung über FileZilla)
One Zero

0

Sie können rbashals Shell für Ihre Benutzer auschecken.

man bash

Suchen Sie nach RESTRICTED SHELLAbschnitt

Oder schauen Sie auf dieser Seite http://linux.die.net/man/1/bash


3
Sei nur sehr vorsichtig mit rbash, es ist sehr leicht auszubrechen und als veraltet zu betrachten. Siehe blog.bodhizazen.net/linux/how-to-restrict-access-with-rbash
Panther

@ bodhi.zazen Du meinst rbash?
Karlson

Ja, tut mir leid, das habe ich behoben. Vor einigen Jahren gab es einen Blog, in dem jemand unser von mir eingerichtetes rbash-Gefängnis kaputtmachte, und ich dachte, es war eng, minimales Gefängnis. Hat weniger als 5 Minuten gedauert. Ich habe niemanden aus dem Knast ausbrechen lassen.
Panther

u kann mir plz sagen , wie kann ich es konfigurieren .... jailbash
One Zero

Ja, man Bash hilft, mit Bash-beschränkten Shell-Fähigkeiten ist einfacher
c4f4t0r
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.