로그인 시 특정 사용자 구금

로그인 시 특정 사용자 구금

감옥과 chroot에 대한 이 모든 거래는 나에게 약간 혼란스럽습니다. 위험할 수 있는 프로그램을 안전하게 실행하는 데 사용되지만 이는 사용자가 시작해야 합니다. Android 및 iOS와 같은 사용자를 감옥에 가두는 방법을 찾고 있습니다. 원격 로그인에 대해 설정할 수 있지만 홈 로그인에 대해서는 어떻게 설정할 수 있습니까?

데스크탑 PC에 Ubuntu가 설치되어 있다고 가정합니다. 사용자는 관리자, 사용자1, 사용자2, 게스트 등 4명입니다. 첫 번째 로그인은 일반적인 계정처럼 로그인됩니다. 두 번째와 세 번째 감옥에 로그인합니다. 네 번째는 두 번째와 세 번째보다 더 제한적인 감옥에 로그인합니다. 감옥에 갇힌 계정이 일종의 가상화 환경에 액세스할 수 있나요? 여기에는 핵심 바이너리 사본이 포함됩니까, 아니면 모든 인터페이스에 내장되어 있습니까? 초기화 스크립트나 다른 것을 사용하여 이러한 작업을 수행합니까?

답변1

Chroot 감옥 설정

투옥될 사용자를 생성합니다.

$sudo adduser acer

chroot를 설정하려면 사용자에게 sudo 권한을 설정해야 합니다.

sudo 그룹에 사용자 추가

    $sudo adduser acer sudo 

사용자를 감옥에 가두기 위한 폴더 만들기

    $sudo mkdir /chroot

감옥 사용자는 /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에 복사하고 싶습니다.

배시 명령

    $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 유틸리티를 사용하려고 시도하게 되는데, 이는 Jail 설정에서 사용할 수 없으며 전체 프로세스가 실패하게 됩니다.

사용자가 시스템에 로그인할 때마다 감옥에 가두는 스크립트를 만듭니다.

감옥 외부의 /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 

관련 정보