Bestimmte Benutzer beim Anmelden einsperren

Bestimmte Benutzer beim Anmelden einsperren

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 

verwandte Informationen