web-dev-qa-db-fra.com

Moyen simple et facile d'emprisonner les utilisateurs

J'ai besoin d'un moyen simple et facile d'emprisonner les utilisateurs dans leurs répertoires personnels dans Oneiric. Avez-vous une configuration simple pour les utilisateurs en prison, avec une aide complète ou de bons liens Web?

J'offrirais un serveur public gratuit en ligne avec 10 à 20 Go d'espace libre. Je ne sais pas combien d'utilisateurs. Je veux leur donner SSH et SFTP pour qu'ils puissent se connecter via FileZilla.

33
One Zero

Jailkit est un ensemble d'utilitaires permettant de limiter les comptes d'utilisateurs à une arborescence de répertoires spécifique et à des commandes spécifiques. Il est beaucoup plus facile de créer une prison en utilisant les utilitaires Jailkit qui le font "à la main". Une prison est une arborescence de répertoires que vous créez dans votre système de fichiers. l'utilisateur ne peut voir aucun répertoire ou fichier en dehors du répertoire jail. L'utilisateur est emprisonné dans ce répertoire et ses sous-répertoires.

Télécharger et installer:

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

Mise en place de la prison

Il est maintenant temps de configurer le répertoire jail. Les utilisateurs emprisonnés verront ce répertoire comme répertoire racine du serveur. J'ai choisi d'utiliser/home/jail:

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

jk_init peut être utilisé pour créer rapidement une prison avec plusieurs fichiers ou répertoires nécessaires à une tâche ou à un profil spécifique (cliquez dessus et lisez tous les détails).

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

Ajouter un utilisateur

Ajoutez un nouvel utilisateur avec un répertoire personnel et un shell bash, puis définissez le mot de passe:

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

Il est maintenant temps d’emprisonner cet utilisateur

utilisez la commande suivante:

jk_jailuser -m -j /home/jail jailtest

Votre /etc/passwd devrait contenir quelque chose comme ceci maintenant:

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

Activer bash

En utilisant jk_cp , les bibliothèques bash sont copiées dans la prison:

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

Éditer /home/jail/etc/passwd

remplace cette ligne:

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

avec ça:

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

Entretien

En utilisant jk_update, les mises à jour sur le système réel peuvent être mises à jour dans la prison.

Un essai à blanc montrera ce qui se passe:

jk_update -j /home/jail -d

Sans l'argument -d, la véritable mise à jour est effectuée. Vous trouverez plus d'opérations de maintenance ici.

(Si /home/jail/opt est manquant, créez-le avec mkdir -p /home/jail/opt/ et relancez jk_update -j /home/jail)

Donner accès à d'autres répertoires

Vous pouvez monter des dossiers spéciaux auxquels l'utilisateur de la prison peut accéder maintenant. Par exemple.:

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

Aide prise

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

http://olivier.sessink.nl/jailkit/index.html#intro (une très bonne aide)

Celui-ci aussi

Ceci a été vérifié et vérifié, fonctionne correctement

22
One Zero

Vous ne pouvez pas les limiter à/home car ils ont besoin d'accéder aux fichiers binaires du système et aux fichiers bash et de configuration dans/etc

OMI la méthode la plus simple pour sécuriser les utilisateurs consiste à utiliser apparmor.

Vous faites un lien dur

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

Vous ajoutez jailbash à/etc/shells

Vous affectez ensuite jailbash au shell des utilisateurs, puis écrivez un profil apparmor pour jailbash permettant un accès minimal.

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

Vous devrez écrire vous-même un profil apparmor, mais j'ai un profil avec lequel vous pourriez potentiellement commencer

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

6
Panther

Il est difficile de deviner quel but vous pourriez vouloir accomplir. S'il s'agit de refuser ssh/sftp tout en fournissant un accès jailed via FTP ... facile:

Ajoutez à/etc/shells un nouveau shell:

Sudo -e /etc/shells

Ajouter une ligne:

/bin/false

Sauvegarder. Pour chaque utilisateur que vous souhaitez refuser à ssh/sftp, changez le shell de l'utilisateur:

Sudo chsh -s /bin/false userx

Maintenant, userx ne peut plus se connecter via ssh/sftp.

Installez vsftpd:

Sudo apt-get install vsftpd

Editez le fichier de configuration:

Sudo -e /etc/vsftpd.conf

Et quelques changements ....

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES

Sauvegarder. Redémarrez vsftpd:

Sudo /etc/init.d/vsftpd restart
1
user8290

Vous pouvez extraire rbash en tant que shell pour vos utilisateurs.

man bash

Rechercher la section RESTRICTED Shell

Ou regardez sur cette page http://linux.die.net/man/1/bash

0
Karlson