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.
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.
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
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 -v /home/jail basicshell
jk_init -v /home/jail netutils
jk_init -v /home/jail ssh
jk_init -v /home/jail jk_lsh
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
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
En utilisant jk_cp , les bibliothèques bash sont copiées dans la prison:
jk_cp -v -f /home/jail /bin/bash
/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
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
(Si /home/jail/opt
est manquant, créez-le avec mkdir -p /home/jail/opt/
et relancez jk_update -j /home/jail
)
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/
http://olivier.sessink.nl/jailkit/howtos_chroot_Shell.html
http://olivier.sessink.nl/jailkit/index.html#intro (une très bonne aide)
Ceci a été vérifié et vérifié, fonctionne correctement
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
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
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