
Todo esse negócio com prisões e chroot é um pouco confuso para mim. Eles são usados para executar programas possivelmente arriscados 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 pode ser configurado para logins remotos, mas como pode ser definido para logins domésticos?
Suponha que eu tenha o Ubuntu instalado em um PC desktop. Existem quatro usuários: administrador, usuário1, usuário2 e convidado. O primeiro faz login como uma conta normalmente faz. O segundo e terceiro login em uma prisão. O quarto entra em uma prisão mais restritiva que o segundo e o terceiro. Essas contas presas têm acesso a uma espécie de ambiente virtualizado? Eles incluem cópias dos binários principais ou estão integrados à interface de todos? Isso é realizado com scripts de inicialização ou algo mais?
Responder1
Configuração da prisão Chroot
Crie um usuário para ser preso.
$sudo adduser acer
Para definir o chroot, precisamos definir o privilégio sudo para os usuários.
Adicione o usuário no grupo sudo
$sudo adduser acer sudo
Crie uma pasta para configurar um usuário na prisão
$sudo mkdir /chroot
O usuário jail pode acessar apenas o que estiver dentro da pasta /chroot
Isso significa que precisamos fornecer algo lá, a menos que o usuário possa ver apenas a pasta vazia
Basta criar 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 do jail possa 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 deve ser parecido 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 ao funcionamento do sistema PAM para que a autorização na jail funcione
$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 pelos recursos 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 no diretório /chroot/etc/. 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 fizéssemos isso, o comando su tentaria usar o utilitário syslog, que não está disponível na configuração da prisão e todo o processo falharia.
Crie o script que colocará nosso usuário na prisão, sempre que ele fizer login no sistema
Crie um arquivo jailshell no diretório /bin, fora da prisão
$sudo vim /bin/jailshell
Adicione o seguinte script a esse 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 prisão).
Altere /bin/bash para /bin/jailshell no usuário acer
$sudo vim /etc/passwd
acer:x:1003:1003:,,,:/home/acer:/bin/jailshell
Defina o usuário acer no diretório inicial do jail
$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 pronto. Agora teste o login
$su – acer
password:xxxx
[sudo]password for acer:xxxx
acer@Snovabits:/$ ls
bin dev etc home lib usr var