Como criar um usuário ssh preso com Jailkit no Debian!

Prenda um usuário com Jailkit no Debian, otimize suas atividades! Este guia funciona em qualquer distribuição Linux, esteja atento apenas aos comandos específicos do Debian!

Emanuel Negromonte
7 minutos de leitura

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.

Terminal
cd /tmp
wget https://olivier.sessink.nl/jailkit/jailkit-2.23.tar.gz
tar xvfz jailkit-2.23.tar.gz
cd jailkit-2.23
Jailkit requer alguns pacotes antes de sua instalação, vamos instalá-los da seguinte forma, estou usando o ROOT!
Terminal
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:

Terminal
./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:

Terminal
rm -rf /tmp/jailkit*

Passo 2: Prender um usuário

Agora vamos criar um usuário que irá ser preso usando Jailkit como:

Terminal
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:

Terminal
egrep srijan /etc/passwd

Em seguida, vamos prisão o usuário criado. Crie um diretório/cadeia por meio Jail:

Terminal
mkdir /jail

Agora iremos fornecer o Jail environment com algum programa padrão como:

Terminal
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:

Terminal
nano /etc/jailkit/jk_init.ini

Agora Jail está pronto, basta adicionar o usuário dentro do ambiente:

Terminal
jk_jailuser -m -j /jail/ srijan

Novamente verificar os valores em /etc/passwd para Srijan usuário:

Terminal
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:

Terminal

Conexão está sendo fechada porque o usuário não tem shell login, vamos adicioná-lo no arquivo de configuração do Jail:

Terminal
nano /jail/etc/passwd

Saídas:

Saída do Terminal
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:

Terminal

Agora, verifique o conteúdo do diretório raiz, você vai notar que ele tem conteúdo como este:

Terminal
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:

Terminal
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:

Terminal
cal

Saídas:

Saída do Terminal
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:

Terminal
jk_cp -v -j /jail/ /usr/bin/cal

Saídas:

Saída do Terminal
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:

Terminal
cal

Então, nós adicionamos o comando para o ambiente “preso”. Parabéns! Agora nós configuramos com sucesso Jail environment no Debian.

Share This Article
Follow:
Fundador do SempreUPdate. Acredita no poder do trabalho colaborativo, no GNU/Linux, Software livre e código aberto. É possível tornar tudo mais simples quando trabalhamos juntos, e tudo mais difícil quando nos separamos.