Encerrando usuários em particular no login

1

Todo esse negócio com cadeias e chroot é um pouco confuso para mim. Eles são usados para executar programas possivelmente perigosos com segurança, mas isso deve ser iniciado pelo usuário. Estou procurando como prender usuários como o Android e o iOS fazem isso. Isso pode ser configurado para logins remotos, mas como isso pode ser definido para logins residenciais?

Suponha que eu tenha o Ubuntu instalado em um PC de mesa. Existem quatro usuários: administrador, usuário1, usuário2 e convidado. O primeiro log in como uma conta normalmente faz. O segundo e terceiro login para uma cadeia. O quarto registra em uma cadeia mais restritiva do que o segundo e terceiro. Essas contas presas têm acesso a um tipo de ambiente virtualizado? Estas incluem cópias de binários do núcleo ou são incorporadas na interface de todos? São realizados com scripts de inicialização ou algo mais?

    
por Melab 10.11.2014 / 03:28

1 resposta

2

Configuração da jaula do Chroot

Crie um usuário para ser preso.

$sudo adduser acer

Para definir o chroot, precisamos definir o privilégio do sudo para os usuários.

Adicione o usuário ao grupo sudo

    $sudo adduser acer sudo 

Crie uma pasta para configurar um usuário na cadeia

    $sudo mkdir /chroot

O usuário da jaula pode acessar somente o que estiver dentro da pasta / chroot

Isso significa que precisamos fornecer algo lá, a menos que o usuário só possa ver uma pasta vazia

Apenas crie as coisas básicas necessárias

    $cd /chroot

    $ sudo mkdir bin dev etc home lib usr var

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

Queremos copiar o software para / chroot que o usuário da cadeia pode usar

Comando 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

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

Copie este arquivo lib para o diretório 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

comando 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

Adicione alguns arquivos de configuração do sistema e bibliotecas adicionais ao 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

Copie o arquivo nsswitch.conf para / chroot

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

Dentro do nsswitch, ele deve se parecer com o seguinte

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

Copiamos os arquivos de configuração necessários para o sistema PAM operar, para que a autorização na prisão possa funcionar

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

Adicionamos algumas bibliotecas adicionais exigidas pelo PAM e pelas facilidades de troca de serviço de nomes

    $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

Precisamos criar o arquivo login.defs em / chroot / etc / directory.Este arquivo define algumas configurações para o processo de login

    $sudo vim /chroot/etc/login.defs

Adicione a seguinte linha ao arquivo login.defs

    SULOG_FILE /var/log/sulog

Se não fizermos isso, o comando su tentará usar o utilitário syslog, que não está disponível na configuração do jail e todo o processo falharia.

Crie o script que colocará nosso usuário na cadeia, sempre que ele fizer login no sistema

Crie o arquivo jailshell no diretório / bin, fora da cadeia

    $sudo vim /bin/jailshell

Adicione o seguinte script ao arquivo

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

Torne-o executável

    $sudo chmod  +x  /bin/jailshell

Para colocar o script em ação, precisamos editar o arquivo / etc / passwd (que está fora da cadeia).

Altere / bin / bash para / bin / jailshell no usuário acer

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

Defina user acer no diretório inicial da prisão

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

O seguinte também pode ser útil

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

Tudo feito. Agora teste o login

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