Maneira simples e fácil de prender usuários

33

Preciso de uma maneira simples e fácil de prender os usuários em seus diretórios pessoais no Oneiric. Você tem uma configuração simples para prender os usuários, com ajuda completa ou alguns bons links da web?

Eu estaria oferecendo um servidor público gratuito on-line com 10 a 20 GB de espaço livre. Não sei quantos usuários. Quero dar a eles SSH e SFTP para que eles possam se conectar através do FileZilla.

One Zero
fonte
2a atualização se os usuários não estiverem bloqueados nos diretórios pessoais
One Zero
então eu acredito em você, como mencionado pelo @Marco, você quer experimentar o ChrootDirectory for SSH 2- Você pode querer ir além das maneiras padrão de fazer as coisas, pois é necessário dimensioná-lo para lidar com "muito" de armazenamento, ... 3- SSH é sua melhor escolha? as pessoas precisam de SSH em seu serviço? 4- Boa sorte
Ali
1
Eu tenho outro plano também .... para usuários normais, estaríamos oferecendo apenas SFTP com MY SECURE SHELL, isso é muito fácil 2 handle
One Zero
Como posso remover esta prisão, por exemplo (casa / prisão)? <br> E quando adiciono alguma seção da prisão, por exemplo, jk_init -v -f / home / jail netutils, como vou remover isso?

Respostas:

23

O Jailkit é um conjunto de utilitários que podem limitar as contas de usuário a uma árvore de diretórios específica e a comandos específicos. Configurar uma prisão é muito mais fácil usando os utilitários do Jailkit, fazendo isso 'manualmente'. Uma prisão é uma árvore de diretórios que você cria no seu sistema de arquivos; o usuário não pode ver nenhum diretório ou arquivo que esteja fora do diretório da prisão. O usuário está preso nesse diretório e subdiretórios.

Baixe e instale:

http://olivier.sessink.nl/jailkit/index.html#download

VERSION=2.20 # from November 2018
cd /tmp
wget https://olivier.sessink.nl/jailkit/jailkit-$VERSION.tar.gz
tar -zxvf jailkit-$VERSION.tar.gz
cd jailkit-$VERSION/
./configure
make
su -
make install

Configurando a prisão

Agora é hora de configurar o diretório da prisão. Usuários encarcerados verão esse diretório como o diretório raiz do servidor. Eu escolhi usar / home / jail:

mkdir /home/jail
chown root:root /home/jail

O jk_init pode ser usado para criar rapidamente uma prisão com vários arquivos ou diretórios necessários para uma tarefa ou perfil específico (clique nele e leia todos os detalhes).

jk_init -v /home/jail basicshell
jk_init -v /home/jail netutils
jk_init -v /home/jail ssh
jk_init -v /home/jail jk_lsh

Adicione um usuário

Adicione um novo usuário com um diretório inicial e um shell bash e defina a senha:

useradd -d /home/jailtest -m jailtest -s /bin/bash
passwd jailtest

Agora é hora de prender esse usuário

use o seguinte comando:

jk_jailuser -m -j /home/jail jailtest

Você /etc/passwddeve conter algo assim agora:

jailtest:x:1001:1001::/home/jail/./home/jailtest:/usr/sbin/jk_chrootsh

Ativar bash

Usando jk_cp, as bibliotecas bash são copiadas para a prisão:

jk_cp -v -f /home/jail /bin/bash

Editar /home/jail/etc/passwd

substitua esta linha:

jailtest:x:1001:1001::test:/usr/sbin/jk_lsh

com isso:

jailtest:x:1001:1001::/home/jailtest:/bin/bash

Manutenção

Ao usar jk_updateatualizações no sistema real pode ser atualizado na prisão.

Um teste a seco mostrará o que está acontecendo:

jk_update -j /home/jail -d

Sem o argumento -d, a atualização real é realizada. Mais operações de manutenção podem ser encontradas aqui.

(Caso /home/jail/optesteja faltando, crie-o com mkdir -p /home/jail/opt/ E execute jk_update -j /home/jailnovamente)

Conceder acesso a outros diretórios

Você pode montar pastas especiais, que o usuário da cadeia pode acessar agora. Por exemplo:

mount --bind /media/$USER/Data/ /home/jail/home/jailtest/test/

Ajuda Tomada

http://olivier.sessink.nl/jailkit/howtos_chroot_shell.html

http://olivier.sessink.nl/jailkit/index.html#intro (uma ajuda muito boa)

Este também

Isso foi verificado e verificado, funcionando corretamente

One Zero
fonte
+1 muito bom. recomendo a leitura dos links que você mencionou acima na "Ajuda Taken" seção também
cwd
2
Isso não funciona no Ubuntu 13.10. Quando você tenta finalmente fazer login, recebe a mensagem de boas-vindas imediatamente seguida pela conexão fechada.
Matt H
Matt H: Certifique-se de seguir os dois últimos passos; copiando os binários do bash e editando o arquivo / home / jail / etc / passwd.
ONOZ
2
Isso não funciona mais ou algo mudou desde que este tutorial foi publicado. Estou recebendo exatamente os mesmos problemas que o MattH.
James Heald 14/10
Também tive o problema de conexão encerrada imediatamente após a mensagem de boas-vindas. Mudei o shell de login no arquivo chroot passwd de jk_lsh para o bash conforme leia aqui linuxquestions.org/questions/linux-software-2/… Não é uma solução, mas uma solução alternativa!
Attila Fulop
6

Você não pode confiná-los a / home, pois eles precisam acessar os binários do sistema e os arquivos bash e de configuração em / etc

Na IMO, o método mais fácil de proteger os usuários é usar o apparmor.

Você cria um link físico

ln /bin/bash /usr/local/bin/jailbash

Você adiciona jailbash ao / etc / shells

Em seguida, você atribui o jailbash ao shell do usuário e, em seguida, escreve um perfil de apparmor para o jailbash, permitindo acesso mínimo.

sudo chsh -s /usr/local/bin/jailbash user_to_confine

Você terá que escrever um perfil de aparelho, mas eu tenho um perfil com o qual você poderia começar

http://bodhizazen.com/aa-profiles/bodhizazen/ubuntu-10.04/usr.local.bin.jailbash

Pantera
fonte
You can not confine them to /home as they need access to the system binaries and bash and configuration files in /etcNão há nada que o impeça de vincular / copiar arquivos que você acha que eles precisam.
user606723
1
Sim, você "pode" fazer o que o usuário606723 sugere, mas não é tão fácil, e a IMO de todas as soluções possíveis é menos prática ou fácil. É melhor construir um chroot ou usar lxc. Você copia um binário, depois as bibliotecas. Freqüentemente você precisará identificar manualmente as bibliotecas com o ldd. Este método leva uma tonelada de trabalho para configurar. E então você precisa manter a prisão atualizada, precisará atualizar manualmente (copiar) os binários / libs. Os links podem funcionar melhor em termos de atualizações, mas você ainda precisa configurá-los. De alguma forma, não acho que isso é o que o OP tinha em mente. Como então mantê-los confinados?
Pantera
1
Acho que o ponto principal da questão era apontar ferramentas para automatizar esse processo ... como jailkituma ferramenta mencionada pelo OP.
user606723
@ bodhi.zazen. o que você pensa sobre isso .. debootstrap (onírico) então faça um container usando lxc. usando kit de prisão> usuário para contêiner>. o que eu fiz até agora é que eu tenho debbootstrap mínimo onírico então utilizado jailkit> funcionando bem
One Zero
você pode usar o LXC para esta tarefa, tenha cuidado com o isolamento às vezes incompleto com o LXC. Desde que os usuários não tenham acesso root no contêiner, você deve estar bem e poderá se inscrever na lista de correspondência LXC.
Pantera
1

É difícil adivinhar qual o objetivo que você deseja alcançar. Se é para negar ssh / sftp enquanto fornece acesso preso via FTP ... fácil:

Adicione ao / etc / shells um novo shell:

sudo -e /etc/shells

Adicione uma linha:

/bin/false

Salve . Para cada usuário que você deseja negar ssh / sftp, altere o shell do usuário:

sudo chsh -s /bin/false userx

Agora, o userx não pode efetuar login via ssh / sftp.

Instale o vsftpd:

sudo apt-get install vsftpd

Edite o arquivo de configuração:

sudo -e /etc/vsftpd.conf

E algumas mudanças ....

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES

Salve . Reinicie o vsftpd:

sudo /etc/init.d/vsftpd restart

fonte
bem im quer dar-lhes ssh + sftp (conectar através filezilla)
Um Zero
0

Você pode conferir rbashcomo um shell para seus usuários.

man bash

Pesquisar RESTRICTED SHELLseção

Ou consulte esta página http://linux.die.net/man/1/bash

Karlson
fonte
3
Apenas tenha muito cuidado com o rbash, é muito fácil sair e considerado desatualizado. Veja blog.bodhizazen.net/linux/how-to-restrict-access-with-rbash
Panther
@ bodhi.zazen Você quer dizer rbash?
Karlson
sim, desculpe, eu consertei isso. Havia um blog, há vários anos, em que alguém quebrou uma prisão rbash que eu montei e achei que era uma prisão apertada e mínima. Levou menos de 5 minutos. Ninguém tinha escapado do jailbash.
Pantera
pode u plz me dizer como faço para configurá-lo .... jailbash
Um Zero
sim, man bash ajuda, usando bash restrited capacidades Shell é mais simplesmente
c4f4t0r