登入時監禁特定用戶

登入時監禁特定用戶

整個監獄和 chroot 的處理讓我有點困惑。它們用於安全地運行可能有風險的程序,但這必須由使用者啟動。我正在尋找如何像 Android 和 iOS 那樣監禁用戶。遠端登入可以設置,但是家庭登入如何設定呢?

假設我在桌上型電腦上安裝了 Ubuntu。有四個使用者:管理員、user1、user2 和 guest。第一個像正常帳號一樣登入。第二次和第三次登入監獄。第四個登入的監獄比第二個和第三個更嚴格。這些被監禁的帳戶是否可以存取某種虛擬化環境?這些是否包含核心二進位檔案的副本,或者它們是否內建在 all 的介面中?這些是透過初始化腳本還是其他方式完成的?

答案1

Chroot 監獄設置

創建要入獄的用戶。

$sudo adduser acer

為了設定 chroot,我們需要為使用者設定 sudo 權限。

將使用者加入 sudo 群組中

    $sudo adduser acer sudo 

建立資料夾以在監獄中設定用戶

    $sudo mkdir /chroot

Jail 使用者只能存取 /chroot 資料夾內的任何內容

這意味著我們需要在那裡提供一些東西,除非用戶只能看到空資料夾

只需創建基本必需的東西

    $cd /chroot

    $ sudo mkdir bin dev etc home lib usr var

    $sudo mkdir etc/pam.d home/acer lib/security var/log usr/bin

我們希望將軟體複製到 /chroot 以便監獄使用者可以使用

bash 指令

    $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 指令

$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)

將此lib檔案複製到chroot lib目錄

    $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指令

    $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

將一些系統設定檔和附加程式庫新增到 chroot

    $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

將 nsswitch.conf 檔案複製到 /chroot

    $sudo cp /etc/nsswitch.conf /chroot/etc/nsswitch.conf

在 nsswitch 內部,它應該如下所示

    passwd: files
    group: files
    shadow: files
    hosts: files
    networks: files
    protocols: files
    services: files
    ethers: files
    rpc: files
    netgroup: files

我們複製PAM系統運行所需的配置文件,以便監獄中的授權可以工作

    $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/

我們添加了 PAM 和名稱服務交換設施所需的一些附加庫

    $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

我們需要在/chroot/etc/目錄中建立login.defs檔案。

    $sudo vim /chroot/etc/login.defs

將以下行加入 login.defs 檔案中

    SULOG_FILE /var/log/sulog

如果我們不這樣做,su 命令將嘗試使用 syslog 實用程序,該實用程式在監獄設定中不可用,整個過程將失敗。

建立腳本,每當使用者登入系統時,該腳本都會將他關進監獄

在監獄外的/bin目錄中建立檔案jailshell

    $sudo vim /bin/jailshell

將以下腳本新增至該文件中

    #!/bin/bash
    sudo chroot /chroot /bin/su acer

使其可執行

    $sudo chmod  +x  /bin/jailshell

要使腳本運行,我們需要編輯 /etc/passwd 檔案(位於監獄之外)。

將使用者 acer 中的 /bin/bash 改為 /bin/jailshell

    $sudo vim /etc/passwd
    acer:x:1003:1003:,,,:/home/acer:/bin/jailshell

在監獄的主目錄中設定使用者 acer

    $cd /home/acer
    $sudo cp -fa ./ /chroot/home/acer

以下內容也可能有用

    $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/

一切完成。

    $su – acer
    password:xxxx
    [sudo]password for acer:xxxx
    acer@Snovabits:/$ ls
    bin dev etc home lib    usr var 

相關內容