Este documento descreve como instalar e configurar no Debian e Jailkit Server. Jailkit é um conjunto de utilitários para limitar as contas de usuário para arquivos específicos usando chroot () e/ou comandos específicos. Configurando um shell chroot, um shell limitado a algum comando específico, ou um daemon dentro de uma jaula é muito mais fácil e pode ser automatizado usando esses utilitários.
Sobre Jailkit
Jailkit é conhecido por ser usado em dispositivos de segurança de rede a partir de várias empresas líderes de TI de segurança, servidores de internet de várias grandes organizações empresariais, servidores de internet de provedores de serviços de internet, assim como muitas pequenas empresas e usuários domésticos que precisam garantir cvs, sftp, shell ou processos daemon.
Este tutorial é baseado no Debian como servidor, portanto, você deve configurar uma instalação básica do servidor Debian 10 ou 11 antes de continuar com este tutorial. O sistema deve ter um endereço IP estático. Eu uso 192.168.0.100 ao meu endereço IP, neste tutorial e server1.example.com como o nome da máquina.
Passo 1: instalar Jailkit
Vamos primeiro fazer o download e instalar o Jailkit. No tempo presente da escrita deste guia, a última versão disponível do Jailkit é 2.23. Vou baixá-lo e instalá-lo da seguinte forma: hostname.
cd /tmp
wget https://olivier.sessink.nl/jailkit/jailkit-2.23.tar.gz
tar xvfz jailkit-2.23.tar.gz
cd jailkit-2.23
apt install build-essential autoconf automake libtool flex bison debhelper binutils-gold python
Agora o nosso sistema está pronto para instalar o Jailkit, instale-o da seguinte forma:
./debian/rules binary
cd ..
dpkg -i jailkit_2.23-1_amd64.deb
Ele irá instalar o Jailkit no Debian Server, podemos remover os pacotes extras de /tmp:
rm -rf /tmp/jailkit*
Passo 2: Prender um usuário
Agora vamos criar um usuário que irá ser preso usando Jailkit como:
adduser srijan
root@server1:~#adduser srijan
Adding user `srijan' ...
Adding new group `srijan' (1001) ...
Adding new user `srijan' (1001) with group `srijan' ...
Creating home directory `/home/srijan' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: <--password
Retype new UNIX password:<--password
passwd: password updated successfully
Changing the user information for srijan
Enter the new value, or press ENTER for the default
Full Name []: <--ENTER
Room Number []:<--ENTER
Work Phone []:<--ENTER
Home Phone []:<--ENTER
Other []:<--ENTER
Is the information correct? [Y/n] <--Y
root@server1:~#
No meu caso eu estou criando o Srijan usuário, você pode usar qualquer nome.
Em seguida, vamos verificar as informações sobre Srijan usuário em /etc/passwd como:
egrep srijan /etc/passwd
Em seguida, vamos prisão o usuário criado. Crie um diretório/cadeia por meio Jail:
mkdir /jail
Agora iremos fornecer o Jail environment com algum programa padrão como:
jk_init -v /opt/jail netutils basicshell jk_lsh openvpn ssh sftp
Podemos dar outros valores também, a lista completa do ambiente Jail pode ser verificado no arquivo:
nano /etc/jailkit/jk_init.ini
Agora Jail está pronto, basta adicionar o usuário dentro do ambiente:
jk_jailuser -m -j /jail/ srijan
Novamente verificar os valores em /etc/passwd para Srijan usuário:
egrep srijan /etc/passwd
Agora o nosso usuário foi adicionado no ambiente e já está preso. Eu vou subir servidor Debian com o terminal com o seu IP 192.168.0.100:
ssh srijan@192.168.0.100
Conexão está sendo fechada porque o usuário não tem shell login, vamos adicioná-lo no arquivo de configuração do Jail:
nano /jail/etc/passwd
Saídas:
root:x:0:0:root:/root:/bin/bash nobody:x:65534:65534:nobody:/nonexistent:/bin/sh #srijan:x:1001:1001:,,,:/home/srijan:/usr/sbin/jk_lsh srijan:x:1001:1001:,,,:/home/srijan:/bin/bash
Ele irá adicionar o shell bash para o usuário Srijan preso. Agora tente novamente o acesso ssh com usuário Srijan e você será capaz de login:
ssh srijan@192.168.0.100
Agora, verifique o conteúdo do diretório raiz, você vai notar que ele tem conteúdo como este:
ls /
Passo 3: Execução de serviços e comandos no ambiente preso
Jail pode ser usado para executar serviços em ambiente “preso”. Suponha que queremos executar qualquer serviço em ambiente “preso” em seguida, vamos usar o comando jk_chrootlaunch para isso:
jk_chrootlaunch -j /jail -u srijan -x 'service apache2 start'
Aqui eu estou começando o serviço do Apache, da mesma forma que você pode executar qualquer serviço ou daemon com ele no ambiente preso.
Suponha que queremos executar um comando especial no ambiente Jail então vamos usar jk_cp. Vamos testá-lo no ambiente preso quando vamos correr cal seguida, ele mostra como se segue:
cal
Saídas:
srijan@server1:~$ cal bash: cal: command not found srijan@server1:~$
Significa ambiente Jail não sabe o comando cal, agora eu vou adicioná-lo no Debian Server da seguinte maneira:
jk_cp -v -j /jail/ /usr/bin/cal
Saídas:
root@server1:~# jk_cp -v -j /jail/ /usr/bin/cal Creating symlink /jail/usr/bin/cal to ncal Copying /usr/bin/ncal to /jail/usr/bin/ncal Creating symlink /jail/lib/x86_64-linux-gnu/libncurses.so.5 to libncurses.so.5.9 Copying /lib/x86_64-linux-gnu/libncurses.so.5.9 to /jail/lib/x86_64-linux-gnu/libncurses.so.5.9 /jail/lib/x86_64-linux-gnu/libtinfo.so.5 already exists, will not touch it /jail/lib/x86_64-linux-gnu/libc.so.6 already exists, will not touch it /jail/lib/x86_64-linux-gnu/libdl.so.2 already exists, will not touch it /jail/lib64/ld-linux-x86-64.so.2 already exists, will not touch it /jail/lib/x86_64-linux-gnu/libtinfo.so.5 already exists, will not touch it /jail/lib/x86_64-linux-gnu/libc.so.6 already exists, will not touch it /jail/lib/x86_64-linux-gnu/libdl.so.2 already exists, will not touch it /jail/lib64/ld-linux-x86-64.so.2 already exists, will not touch it root@server1:~#
Novamente execute o comando cal no ambiente Preso:
cal
Então, nós adicionamos o comando para o ambiente “preso”. Parabéns! Agora nós configuramos com sucesso Jail environment no Debian.