![Bestimmte Benutzer beim Anmelden einsperren](https://rvso.com/image/1048342/Bestimmte%20Benutzer%20beim%20Anmelden%20einsperren.png)
Die ganze Sache mit Jails und Chroot ist für mich etwas verwirrend. Sie werden verwendet, um möglicherweise riskante Programme sicher auszuführen, aber dies muss vom Benutzer initiiert werden. Ich suche nach einer Möglichkeit, Benutzer zu jailen, so wie es Android und iOS tun. Dies kann für Remote-Logins eingerichtet werden, aber wie kann dies für Home-Logins eingestellt werden?
Angenommen, ich habe Ubuntu auf einem Desktop-PC installiert. Es gibt vier Benutzer: Administrator, Benutzer1, Benutzer2 und Gast. Der erste meldet sich wie ein normales Konto an. Der zweite und dritte melden sich bei einem Jail an. Der vierte meldet sich bei einem restriktiveren Jail an als der zweite und dritte. Haben diese Jail-Konten Zugriff auf eine Art virtualisierte Umgebung? Enthalten diese Kopien von Kernbinärdateien oder sind sie in die Schnittstelle von all integriert? Werden diese mit Initialisierungsskripten oder etwas anderem erreicht?
Antwort1
Chroot-Jail-Setup
Erstellen Sie einen Benutzer, der eingesperrt werden soll.
$sudo adduser acer
Um Chroot einzurichten, müssen wir den Benutzern Sudo-Berechtigungen erteilen.
Fügen Sie den Benutzer zur Sudo-Gruppe hinzu
$sudo adduser acer sudo
Ordner zum Einrichten eines Benutzers im Jail erstellen
$sudo mkdir /chroot
Der Jail-Benutzer kann nur auf alles im /chroot-Ordner zugreifen
Das bedeutet, dass wir dort etwas bereitstellen müssen, es sei denn, der Benutzer kann nur leere Ordner sehen
Erstellen Sie einfach die grundlegend notwendigen Dinge
$cd /chroot
$ sudo mkdir bin dev etc home lib usr var
$sudo mkdir etc/pam.d home/acer lib/security var/log usr/bin
Wir möchten die Software nach /chroot kopieren, damit der Jail-Benutzer sie verwenden kann
Bash-Befehl
$which bash
/bin/bash
$sudo cp /bin/bash /chroot/bin
$ldd /bin/bash
#This ldd command is used to list the library function
linux-gate.so.1 => (0xb772d000)
libtinfo.so.5 => /lib/i386-linux-gnu/libtinfo.so.5 (0xb76f0000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb76eb000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb753c000)
/lib/ld-linux.so.2 (0xb772e000)
Copy this lib file to chroot lib directory
$sudo cp /lib/i386-linux-gnu/libtinfo.so.5 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libdl.so.2 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libc.so.6 /chroot/lib
$sudo cp /lib/ld-linux.so.2 /chroot/lib
ls-Befehl
$which ls
/bin/ls
$sudo cp /bin/ls /chroot/bin
$ldd /bin/ls
linux-gate.so.1 => (0xb771f000)
libselinux.so.1 => /lib/i386-linux-gnu/libselinux.so.1 (0xb76e1000)
libacl.so.1 => /lib/i386-linux-gnu/libacl.so.1 (0xb76d8000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7529000)
libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb74eb000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb74e6000)
/lib/ld-linux.so.2 (0xb7720000)
libattr.so.1 => /lib/i386-linux-gnu/libattr.so.1 (0xb74e0000)
Kopieren Sie diese Lib-Datei in das Chroot-Lib-Verzeichnis
$sudo cp /lib/i386-linux-gnu/libselinux.so.1 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libacl.so.1 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libc.so.6 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libpcre.so.3 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libdl.so.2 /chroot/lib
$sudo cp lib/i386-linux-gnu/libattr.so.1 /chroot/lib
$sudo cp /lib/ld-linux.so.2 /chroot/lib
su-Befehl
$which su
/bin/su
$sudo cp /bin/su /chroot/su
$ldd /bin/su
linux-gate.so.1 => (0xb7737000)
libpam.so.0 => /lib/i386-linux-gnu/libpam.so.0 (0xb770d000)
libpam_misc.so.0 => /lib/i386-linux-gnu/libpam_misc.so.0 (0xb7709000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb755a000)
libaudit.so.1 => /lib/i386-linux-gnu/libaudit.so.1 (0xb7535000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb7530000)
/lib/ld-linux.so.2 (0xb7738000)
Copy this lib file to chroot lib directory
$sudo cp /lib/i386-linux-gnu/libpam.so.0 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libpam_misc.so.0 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libc.so.6 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libaudit.so.1 /chroot/lib
$sudo cp /lib/i386-linux-gnu/libdl.so.2 /chroot/lib
$sudo cp /lib/ld-linux.so.2 /chroot/lib
Fügen Sie dem Chroot einige Systemkonfigurationsdateien und zusätzliche Bibliotheken hinzu
$cat /etc/passwd | grep acer > /chroot/etc/passwd
$cat /etc/passwd | grep root >> /chroot/etc/passwd
$cat /etc/group | grep acer > /chroot/etc/group
$cat /etc/group | grep root >> /chroot/etc/group
$cat /etc/shadow | grep acer > /chroot/etc/shadow
Kopieren Sie die Datei nsswitch.conf nach /chroot.
$sudo cp /etc/nsswitch.conf /chroot/etc/nsswitch.conf
Innerhalb des NSswitch sollte es wie folgt aussehen
passwd: files
group: files
shadow: files
hosts: files
networks: files
protocols: files
services: files
ethers: files
rpc: files
netgroup: files
Damit die Autorisierung im Jail funktioniert, kopieren wir die für den Betrieb des PAM-Systems notwendigen Konfigurationsdateien
$sudo cp /etc/pam.d/common-account /chroot/etc/pam.d/
$sudo cp /etc/pam.d/common-auth /chroot/etc/pam.d/
$sudo cp /etc/pam.d/common-session /chroot/etc/pam.d/
$sudo cp /etc/pam.d/su /chroot/etc/pam.d/
Wir fügen einige zusätzliche Bibliotheken hinzu, die vom PAM und den Name Service Switch-Funktionen benötigt werden
$sudo cp /lib/libnss_files.so.2 /chroot/lib
$sudo cp /lib/libnss_compat.so.2 /chroot/lib
$sudo cp /lib/libnsl.so.1 /chroot/lib
$sudo cp -fa /lib/security/ /chroot/lib
Wir müssen die Datei login.defs im Verzeichnis /chroot/etc/ erstellen. Diese Datei definiert einige Einstellungen für den Anmeldevorgang
$sudo vim /chroot/etc/login.defs
Fügen Sie der Datei login.defs die folgende Zeile hinzu
SULOG_FILE /var/log/sulog
Wenn wir dies nicht tun würden, würde der Befehl „su“ versuchen, das Syslog-Dienstprogramm zu verwenden, das im Jail-Setup nicht verfügbar ist, und der gesamte Vorgang würde fehlschlagen.
Erstellen Sie das Skript, das unseren Benutzer ins Gefängnis bringt, wann immer er sich beim System anmeldet
Erstellen Sie eine Jailshell-Datei im Verzeichnis /bin außerhalb des Jails.
$sudo vim /bin/jailshell
Fügen Sie dieser Datei das folgende Skript hinzu
#!/bin/bash
sudo chroot /chroot /bin/su acer
Machen Sie es ausführbar
$sudo chmod +x /bin/jailshell
Um das Skript auszuführen, müssen wir die Datei /etc/passwd bearbeiten (die sich außerhalb des Jails befindet).
Ändern Sie /bin/bash in /bin/jailshell im Benutzer acer
$sudo vim /etc/passwd
acer:x:1003:1003:,,,:/home/acer:/bin/jailshell
Legen Sie den Benutzer „acer“ im Home-Verzeichnis des Jails fest.
$cd /home/acer
$sudo cp -fa ./ /chroot/home/acer
Das Folgende könnte auch nützlich sein
$sudo cp /etc/bash.bashrc /chroot/etc/
$sudo cp /etc/localtime /chroot/etc/
$sudo cp /etc/services /chroot/etc/
$sudo cp /etc/protocols /chroot/etc/
$sudo cp /usr/bin/dircolors /chroot/usr/bin/
$sudo cp /usr/bin/groups/ /chroot/usr/bin/
Alles erledigt.Testen Sie nun den Login
$su – acer
password:xxxx
[sudo]password for acer:xxxx
acer@Snovabits:/$ ls
bin dev etc home lib usr var