Moyen simple et facile d'emprisonner les utilisateurs

33

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.

Un zéro
la source
2ème mise à jour si les utilisateurs ne sont pas verrouillés dans les répertoires personnels
One Zero
Ensuite, je crois que vous 1-comme mentionné par @Marco, vous voulez essayer ChrootDirectory for SSH 2-, vous voudrez peut-être aller au-delà des méthodes habituelles, car vous devez adapter ce système pour gérer "beaucoup" de stockage, ... 3- Est-ce que SSH est votre meilleur choix? les gens ont-ils besoin de SSH à votre service? 4- Bonne chance
Ali
1
J'ai aussi un autre forfait .... pour les utilisateurs normaux, nous ne proposerions que le protocole SFTP avec MY SECURE SHELL, c'est très simple. 2 poignées
Un zéro le
Comment puis-je supprimer cette prison, par exemple (maison / prison)? <br> Et quand j'ajoute une section de prison, par exemple jk_init -v -f / maison / prison netutils, comment vais-je supprimer cela?

Réponses:

23

Jailkit est un ensemble d'utilitaires pouvant limiter les comptes d'utilisateurs à une arborescence de répertoires spécifique et à des commandes spécifiques. La mise en place d'une prison est beaucoup plus facile avec 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 de la prison. 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

Maintenant il est temps d'emprisonner cet utilisateur

utilisez la commande suivante:

jk_jailuser -m -j /home/jail jailtest

Votre /etc/passwddevrait contenir quelque chose comme ça 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

modifier /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 des jk_updatemises à jour sur le système réel peut être mis à 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.

(S'il /home/jail/optmanque, créez le avec mkdir -p /home/jail/opt/ Et lancez à jk_update -j /home/jailnouveau)

Donne 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

Un zéro
la source
+1 très bien. Je vous recommande vivement de lire également les liens que vous avez mentionnés ci-dessus dans la section "Aide prise"
cwd
2
Cela ne fonctionne pas sur Ubuntu 13.10. Lorsque vous essayez de vous connecter enfin, vous recevez immédiatement le message de bienvenue suivi de la fermeture de la connexion.
Matt H
Matt H: Assurez-vous de suivre les deux dernières étapes. copier les binaires bash et éditer le fichier / home / jail / etc / passwd.
ONOZ
2
Cela ne fonctionne plus ou quelque chose a changé depuis la mise en place de ce tutoriel. Je reçois exactement les mêmes problèmes que MattH.
James Heald
J'ai également eu le problème de la connexion fermée immédiatement après le message de bienvenue. J'ai changé le shell de connexion dans le fichier chroot passwd de jk_lsh à bash comme indiqué ici: linuxquestions.org/questions/linux-software-2/… Ce n'est pas une solution mais une solution de contournement!
Attila Fulop le
6

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

IMO, 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

Panthère
la source
You can not confine them to /home as they need access to the system binaries and bash and configuration files in /etcRien ne vous empêche de lier / copier des fichiers dont vous estimez avoir besoin.
user606723
1
Oui, vous "pouvez" faire comme le suggère l'utilisateur606723, mais ce n'est pas si facile, et l'OMI de toutes les solutions potentielles est la moins pratique ou la plus facile. Vous pourriez aussi bien construire un chroot ou utiliser lxc. Vous copiez un binaire, puis les bibliothèques. Souvent, vous devrez manuellement identifier les bibliothèques avec ldd. Cette méthode nécessite une tonne de travail à mettre en place. Et puis vous devez garder la prison à jour, vous devrez mettre à jour (copier) manuellement les fichiers binaires / libs. Les liens fonctionnent mieux en termes de mises à jour, mais vous devez tout de même les configurer tous. D'une manière ou d'une autre, je ne pense pas que ce soit ce que le PO avait à l'esprit. Comment alors les garder confinés?
Panthère
1
Je pense que le but de la question était de mettre en évidence des outils pour automatiser ce processus ... comme jailkitun outil mentionné dans le PO.
user606723
@ Bodhi.zazen. que pensez-vous de cela .. debootstrap (oneiric) puis faites un conteneur en utilisant LXC. utiliser jail kit> user to container>. ce que j’ai fait jusqu’à présent, c’est que j’ai au minimum un debicootstrap oneiric, puis jailkit utilisé> fonctionne très bien
One Zero
vous pouvez utiliser LXC pour cette tâche, sachez que l’isolation est parfois incomplète avec LXC. Tant que les utilisateurs n'ont pas d'accès root dans le conteneur, vous devriez être d'accord et vous souhaitez peut-être vous abonner à la liste de diffusion LXC.
Panther
1

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

Sauver. 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

Sauver. Redémarrez vsftpd:

sudo /etc/init.d/vsftpd restart

la source
bien, je veux leur donner ssh + sftp (connecter via filezilla)
One Zero
0

Vous pouvez vérifier en rbashtant que shell pour vos utilisateurs.

man bash

Rechercher une RESTRICTED SHELLsection

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

Karlson
la source
3
Soyez juste très prudent avec rbash, il est très facile de s’échapper et d’être considéré comme dépassé. Voir blog.bodhizazen.net/linux/how-to-restrict-access-with-rbash
Panther
@ Bodhi.zazen Vous voulez dire rbash?
Karlson
oui, désolé j'ai corrigé ça. Il y a plusieurs années, il y avait un blog dans lequel une des personnes qui se trouvaient dans l'une des prisons Rbash que j'avais créée avait été forcée de sortir de prison. Cela leur a pris moins de 5 minutes. Personne ne s'était échappé de prison.
Panthère
pouvez-vous me dire comment puis-je le configurer .... jailbash
One Zero
oui, man bash aide, utiliser les capacités de shell restreint de bash est plus simple
c4f4t0r