Enjaulamento de usuário no sistema operacional

Coloco neste artigo, as configurações para criar uma jaula para um usuário no sistema operacional.

[ Hits: 6.047 ]

Por: Bruno Augusto Lobo Soares em 03/09/2018


Enjaulamento de usuário no sistema operacional



Estarei pontuando abaixo as devidas configurações:

1. Criação do diretório do usuário:

# mkdir /home/squadra

2. Arquivos de suporte de sessão do usuário:

# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}
crw-rw-rw- 1 root root 1, 3 Mai 19 2014 /dev/null
crw-rw-rw- 1 root root 1, 8 Mai 19 2014 /dev/random
lrwxrwxrwx 1 root root 15 Mai 19 2014 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Mai 19 2014 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Mai 19 2014 /dev/stdout -> /proc/self/fd/1
crw-rw-rw- 1 root tty 5, 0 Jul 12 17:31 /dev/tty
crw-rw-rw- 1 root root 1, 5 Mai 19 2014 /dev/zero


3. Criação do diretório de sessão:

# mkdir -p /home/squadra/dev/

4. Com o comando mknod crie os arquivos. Lembrando de usar sempre o parâmetro -m para especificar os bits de permissões dos arquivos.

# mknod -m 666 null c 1 3
# mknod -m 666 random c 1 8
# mknod -m 666 tty c 5 0
# mknod -m 666 zero c 1 5


5. Mudar a permissão do home do usuário:

# chmod 0755 /home/squadra/

6. Validar a permissão do home do usuário:

# ls -ltr /home/squadra
dr-xr-xr-x. 27 root root 4096 Mar 22 10:50

7. Agora temos que criar o diretório bin e copiar o /bin/bash:

# mkdir -p /home/squadra/bin
# cp -v /bin/bash /home/squadra/bin/

"/bin/bash" -> "/home/squadra/bin/bash"

8. Como o bash requer as bibliotecas. Se faz necessário a criação do diretório /lib64 dentro do home do usuário e a cópia das lib.

# mkdir -p /home/squadra/lib64
# ldd /bin/bash

linux-vdso.so.1 => (0x00007fff272f6000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003b69e00000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003b59a00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003b59e00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003b59600000)


# cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/squadra/lib64/
"/lib64/libtinfo.so.5" -> "/home/squadra/lib64/libtinfo.so.5"
"/lib64/libdl.so.2" -> "/home/squadra/lib64/libdl.so.2"
"/lib64/libc.so.6" -> "/home/squadra/lib64/libc.so.6"
"/lib64/ld-linux-x86-64.so.2" -> "/home/squadra/lib64/ld-linux-x86-64.so.2"


9. Agora iremos criar o usuário:

# useradd squadra
useradd: aviso: o diretório pessoal já existe.
Não copiando nenhum arquivo do diretório skel.


10. Iremos criar o diretório /etc no home do usuário e realizar a cópia do /etc/passwd e /etc/group:

# mkdir /home/squadra/etc
# cp -vf /etc/{passwd,group} /home/squadra/etc/
"/etc/passwd" -> "/home/squadra/etc/passwd"
"/etc/group" -> "/home/squadra/etc/group"


11. Agora chegou a hora de definirmos o enjaulamento no ssh:

# vi /etc/ssh/sshd_config

#define username to apply chroot jail to
Match User squadra
#specify chroot jail
ChrootDirectory /home/squadra

12. Restart do ssh:

# service sshd restart

13. Como o meu usuário irá apenas ler logs, eu defini os comandos que ele pode executar:

# cp -v /bin/ls /home/squadr/bin/
# cp -v /bin/cat /home/squadr/bin/
# cp -v /bin/more /home/squadr/bin/
# cp -v /bin/tail /home/squadr/bin/


14. Uma dica: verificar as lib de todos os comandos. Caso não estiverem no arquivo /home/squadra/lib64/, basta copiar. Exemplo abaixo:

# ldd /bin/ls
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f544ba0c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f544b61b000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f544b3a9000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f544b1a5000)
/lib64/ld-linux-x86-64.so.2 (0x00007f544be56000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f544af86000)


Lembrando que o usuário (squadra) foi apenas o meu usuário de teste.

Espero ter ajudado com esse artigo!

   

Páginas do artigo
   1. Enjaulamento de usuário no sistema operacional
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Snort - The Open Source Network Intrusion Detection System

Principais fontes de vulnerabilidade no Linux

A Arte de HACKEAR Pessoas

Implementando uma política de segurança eficaz

Instalando o PFSense em uma máquina virtual

  
Comentários
[1] Comentário enviado por Ragen em 18/09/2018 - 11:58h

Muito bacana seu artigo! Parabéns.

Gostaria de compartilhar também uma alternativa para a cópia dos binários.

Você poderia, por exemplo, usar o mount:

mount --bind /bin /home/user/bin
mount --bind /etc /home/user/etc
mount --bind /lib/x86_64-linux-gnu /home/user/lib64

Se você não quiser montar o /etc ou /bin inteiro, pode gerar um fake chroot com a cópia dos arquivos que você listou e monta-los a partir de /chroot/{bin,etc,lib64...} por exemplo.

Outra forma seria usar hardlinks, mas eles não podem ser usados para apontar para diretórios (Pois aponta para o endereço do inode).

Se você usar apenas um conta com esse Chroot é ok, mas em caso muitos users enjaulados é muito difícil até de manter os binários e libs atualizadas, já que fica tudo esparramado. Além de usar espaço em disco desnecessário!



[2] Comentário enviado por albfneto em 19/09/2018 - 17:52h

legal isso. Favoritado!
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: [i] Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva[/i].

[3] Comentário enviado por ricardoolonca em 29/09/2018 - 11:26h

Parabéns pelo artigo.

Isso é muito útil para enjaular aplicações que não possuem esse recurso nativamente. Ou para limitar os comandos que um usuário de TI (um técnico de um parceiro que dá suporte a uma ferramenta, por exemplo).

[4] Comentário enviado por M4iir1c10 em 11/10/2018 - 16:43h

Legal 😎
Só uma pergunta... Qual é a razão para fazer isto?

Seria o caso de eu emprestar o computador para alguém usar mas eu não quero que ele acesse os meus arquivos?
Tipo guest user?

Iniciante do Linux usando o Kali é como um estudante de medicina fazendo cirurgia cerebral pela primeira vez "solo" !!!!

[5] Comentário enviado por brunols em 11/10/2018 - 17:16h


[4] Comentário enviado por M4iir1c10 em 11/10/2018 - 16:43h

Legal 😎
Só uma pergunta... Qual é a razão para fazer isto?

Seria o caso de eu emprestar o computador para alguém usar mas eu não quero que ele acesse os meus arquivos?
Tipo guest user?

Iniciante do Linux usando o Kali é como um estudante de medicina fazendo cirurgia cerebral pela primeira vez "solo" !!!!



Boa tarde, Vamos lá as respostas as suas perguntas:
Qual é a razão para fazer isto?
R.: Eu em particular enjaulo usuários/aplicações por segurança em sistemas críticos.
Seria o caso de eu emprestar o computador para alguém usar mas eu não quero que ele acesse os meus arquivos?
Tipo guest user?
+ ou - ... Para um melhor entendimento seu, o enjaulamento de usuário nada mais é um sistema operacional que vc estará disponibilizando para um usuário com certos privilégios de comandos e acessos. Sendo que, ele somente enxergará o sua árvore de sistema...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts