Este documento descreve como instalar e configurar no Debian Jessie 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.
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 8 ou 9 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.
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.19. Vou baixá-lo e instalá-lo da seguinte forma: hostname.
cd /tmp
wget https://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
tar xvfz jailkit-2.19.tar.gz
cd jailkit-2.19
apt-get install build-essential autoconf automake1.9 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.19-1_amd64.deb
Ele irá instalar o Jailkit no Debian Server, podemos remover os pacotes extras de /tmp:
rm -rf /tmp/jailkit*
3º Prender um usuário
Agora vamos criar um usuário que irá ser preso usando Jailkit como:
adduser srijan
[email protected]:~#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 [email protected]:~#
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 algunm 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á esta preso. Eu vou subir servidor Debian com o terminal de com o seu IP 192.168.0.100:
ssh [email protected]
Saídas do terminal:
[email protected]:~$ ssh [email protected] The authenticity of host '192.168.0.100 (192.168.0.100)' can't be established. ECDSA key fingerprint is 3d:ca:91:67:96:39:15:b4:0f:6e:c8:2c:92:ef:25:d7. Are you sure you want to continue connecting (yes/no)? yes [email protected]'s password: Linux server1 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64
Os programas incluídos com o sistema Debian GNU / Linux é um software livre; os termos de distribuição exatas para cada programa são descritos no arquivos individuais em /usr/share/doc/*/ copyright. Debian GNU / Linux vem com ABSOLUTAMENTE NENHUMA GARANTIA, na medida permitido pela legislação aplicável. A conexão com 192.168.0.100 fechada.
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 [email protected]
Agora, verifique o conteúdo do diretório raiz, você vai notar que ele tem conteúdo como este:
ls /
Saídas:
[email protected]:~$ ls / bin dev etc home lib lib64 usr [email protected]:~$
4º 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:
[email protected]:~$ cal bash: cal: command not found [email protected]:~$
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: [email protected]:~# 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 [email protected]:~#
Novamente execute o comando cal no ambiente Preso:
cal
Saídas: [email protected]:~$ cal September 2014 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [email protected]:~$
Então, nós adicionamos o comando para o ambiente “preso”. Parabéns! Agora nós temos configurado com sucesso Jail environment no Debian.