Nach einem chroot-Gefängnis konnte die Su nicht ausgeführt werden

5285
arepo21

Auf einem 64-Bit-CentOS-Host verwende ich ein Skript make_chroot_jail.sh, um einen Benutzer in ein Gefängnis zu stecken und es ihm nicht zu gestatten, irgendetwas zu sehen, von dem erwartet wird, dass es zu Hause ist /home/jail/home/user1.

Ich habe es getan, indem ich Folgendes eingegeben habe:

sudo ./make_chroot_jail.sh user1 

Beim ersten Versuch, sich mit Benutzer1 zu verbinden, wurde ein Fehler wie folgt angezeigt:

/bin/su: user guest does not exist 

Ich habe das Problem 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/ 

Beim Versuch, eine Verbindung zu user1 herzustellen su user1und dann das Kennwort einzugeben, erhalte ich diese Fehlermeldung:

could not open session 

Die Frage ist also, wie man sich in dieser Situation mit Benutzer1 verbindet.

PS Hier sind die Berechtigungen einiger Dateien. Dies kann 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 

UPDATE1

Nach einigen Änderungen konnte ich mich mit user1 verbinden, aber die Sitzung wird sofort geschlossen! Ich denke, dies ist ein PAM-Problem, kann jedoch keinen Weg finden, um es zu beheben.

Hier der Protokolleintrag für die Schließaktion von /val/log/secure:

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

Was bewirkt, dass die Sitzung unmittelbar nach dem Start beendet wird?

1
Möglicherweise müssen Sie einige Systembenutzer und -gruppen in das Gefängnis kopieren oder einige Einstellungen ändern. Auf meinem System ist "/ etc / shadow" 640 Gruppe "Schatten". Überprüfen Sie die Systemprotokolle auf relevante Nachrichten und veröffentlichen Sie sie hier. Posten Sie auch den Inhalt von `/ home / jail / etc / pam.d / su`. Die Ausgabe von `strace -s9999 su user1` könnte ebenfalls helfen. Gilles vor 14 Jahren 0
@ Gilles Nach einigen Änderungen konnte ich mich mit Benutzer1 verbinden, aber jetzt schließt sich die Sitzung sofort. Nun ist die Frage: Was bewirkt, dass die Sitzung unmittelbar nach dem Start beendet wird (siehe UPDATE1 der Frage)? Ich gehe davon aus, dass es sich um ein PAM-Problem handelt. Ich weiß jedoch nicht, wie ich es reparieren soll. Kannst du mir dabei helfen? arepo21 vor 14 Jahren 0

2 Antworten auf die Frage

1
Randy Dey-Toth

To fix the could not open session problem, without abandoning make_chroot_jail.sh entirely, you also need to copy the /usr/lib/libcrack* libraries. Edit the script, where it has:

# 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/*.* $/lib/ # cp /lib/lib64/*.* $/lib/lib64/ 

Change to:

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

Just a quick addendum, the above fixed this problem with 64 bit SuSE - SLES 11 sp2. I also renamed the $JAILPATH/lib to $JAILPATH/lib64. And for that OS, I had to add an empty /etc/profile file in the jail (you can use it to put in a PS1 prompt).

0
arepo21

Ich habe eine Lösung gefunden.

Zuerst sollten Sie make_chroot_jail.sh vergessen und Jailkit verwenden .

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

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

A. Tun Sie, ./configure; make; make installwie es bei beschrieben ist INSTALL.txt.

B. Fügen Sie /usr/sbinzu dem hinzu, $PATHwenn es nicht bereits vorhanden ist.

C. Tun Sie dies:

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_initwechseln Sie INIPREFIX='/usr'zu INIPREFIX='/etc/jailkit' und versuchen Sie es erneut.

D. Mach das:

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 

Um dies zu beheben:

jk_init -v -j /home/jail jk_lsh 

und versuche es noch mal. Sie können stattdessen jk_lshzur Liste in Schritt C hinzufügen .

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

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

an Stelle von:

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