Su ist nach dem Erstellen eines Chroot-Jails fehlgeschlagen

Su ist nach dem Erstellen eines Chroot-Jails fehlgeschlagen

Auf einem 64-Bit-CentOS-Host verwende ich ein Skriptmake_chroot_jail.sheinen Benutzer in ein Gefängnis zu stecken und ihm nicht zu erlauben, irgendetwas außer seinem Zuhause zu sehen /home/jail/home/user1.

Ich habe es geschafft, indem ich Folgendes eingegeben habe:

sudo ./make_chroot_jail.sh user1

danach, als ich zuerst versuchte, eine Verbindung mit Benutzer1 herzustellen, erhielt ich eine Fehlermeldung wie:

/bin/su: user guest does not exist

ich habe dies behoben, indem ich einige fehlende Bibliotheken kopiert habe:

sudo cp /lib64/libnss_compat.so.2 /lib64/libnss_files.so.2 /lib64/libnss_dns.so.2 /lib64/libxcrypt.so.2 /home/jail/lib64/
sudo cp -r /lib64/security/ /home/jail/lib64/

Aber wenn ich jetzt versuche, eine Verbindung zu Benutzer1 herzustellen su user1, indem ich zuerst dessen Passwort eingebe, erhalte ich die folgende Fehlermeldung:

could not open session

Die Frage ist also, wie in dieser Situation eine Verbindung zu Benutzer1 hergestellt werden kann?

PS: Hier sind die Berechtigungen einiger Dateien, dies könnte hilfreich sein, um eine Lösung bereitzustellen:

-rwsr-xr-x 1 root root /home/jail/bin/su
drwxr-xr-x 4 root root /home/jail/etc
-rw-r--r-- 1 root root /home/jail/etc/pam.d/su
-rw-r--r-- 1 root root /home/jail/etc/passwd
-rw------- 1 root root /home/jail/etc/shadow

AKTUALISIERUNG1

Nach einigen Änderungen konnte ich eine Verbindung zu Benutzer1 herstellen, aber die Sitzung wird sofort geschlossen! Ich vermute, dass dies ein PAM-Problem ist, kann jedoch keine Möglichkeit finden, es zu beheben.

Hier der Logeintrag zur Schließaktion von /val/log/secure:

Oct  6 15:19:42 localhost su: pam_unix(su:session): session closed for user user1

Was führt dazu, dass die Sitzung sofort nach dem Start beendet wird?

Antwort1

Um das could not open sessionProblem zu beheben, ohne make_chroot_jail.sh vollständig aufzugeben, müssen Sie auch die Bibliotheken kopieren /usr/lib/libcrack*. Bearbeiten Sie das Skript, wo es Folgendes enthält:

# If you are using a 64 bit system and have strange problems with login comment
# the following lines in, perhaps it will work (motto: if you can't find the
# needed library just copy all of them)
#
# cp /lib/*.* ${JAILPATH}/lib/
# cp /lib/lib64/*.* ${JAILPATH}/lib/lib64/

Ändern:

cp /lib/*.* ${JAILPATH}/lib/
cp /lib64/*.* ${JAILPATH}/lib64/
cp -rp /lib64/security ${JAILPATH}/lib64/
cp /usr/lib64/libcrack* ${JAILPATH}/usr/lib64/

Nur ein kurzer Nachtrag: Das oben genannte hat dieses Problem mit 64-Bit-SuSE - SLES 11 sp2 behoben. Ich habe es auch in umbenannt $JAILPATH/lib. $JAILPATH/lib64Und für dieses Betriebssystem musste ich eine leere /etc/profile-Datei im Jail hinzufügen (Sie können sie verwenden, um eine PS1-Eingabeaufforderung einzufügen).

Antwort2

Ich habe eine Lösung gefunden.

Zunächst einmal sollten Sie make_chroot_jail.sh vergessen und verwendenJailkit.

Ich hatte bei der Verwendung einige Probleme, aber letztendlich funktioniert alles.

Hier sind die Schritte, wie ich Jailkit verwendet und die aufgetretenen Probleme behoben habe:

A. Machen Sie ./configure; make; make installes wie unter beschrieben INSTALL.txt.

B. Fügen Sie /usr/sbines hinzu $PATH, falls es nicht bereits vorhanden ist.

C. Gehen Sie folgendermaßen vor:

jk_init -v -j /home/jail basicshell editors extendedshell netutils ssh sftp scp

Dies kann mit einer Fehlermeldung wie dieser fehlschlagen:

`ERROR: configfile /usr/jk_init.ini does not exist`

Um dies zu beheben, /usr/sbin/jk_initändern Sie INIPREFIX='/usr'es in INIPREFIX='/etc/jailkit' und versuchen Sie es erneut.

D. Gehen Sie folgendermaßen vor:

jk_jailuser -v -m -j /home/jail customer01

Dies kann mit einer Fehlermeldung wie dieser fehlschlagen:

invalid shell, /home/jail/usr/sbin/jk_lsh does not exist

So beheben Sie das Problem:

jk_init -v -j /home/jail jk_lsh

und versuchen Sie es erneut. Sie können stattdessen jk_lshdie Liste bei Schritt C ergänzen.

E. Wenn Sie jetzt versuchen, eine Verbindung zu customer01 herzustellen, wird die Verbindung möglicherweise sofort nach dem Start beendet. Um dieses Problem zu beheben, /home/jail/etc/passwdändern Sie die Shell von customer01 und stellen Sie sie wie folgt auf Bash ein:

customer01:x:518:601::/home/customer01:/bin/bash

an Stelle von:

customer01:x:518:601::/home/customer01:/usr/sbin/jk_lsh

verwandte Informationen