J'ai vraiment besoin d'aide, j'ai essayé d'emprisonner un utilisateur en utilisant ubuntu
.
Chose à noter:
james
est l'utilisateursshusers
est le groupe/home/james/upload/
est le répertoire où je souhaite verrouiller l'utilisateursshd_config:
AllowGroups sshusers
Match Group sshusers
ChrootDirectory /home/%u/upload/
ForceCommand internal-sftp
Je suivi une réponse sur askubuntu, voici mes commandes
Sudo chown root /home/james
Sudo chmod go-w /home/james
Sudo mkdir /home/james/upload
Sudo chown james:sshusers /home/james/upload
Sudo chmod ug+rwX /home/james/upload
Problème:
Je reçois cette erreur
Error: Network error: Software caused connection abort
Error: Could not connect to server
J'ai enquêté dans les journaux, et j'ai trouvé ceci:
fatal: mauvaise propriété ou modes pour le composant de répertoire chroot "/ home/james/upload /"
Mais si je lance les commandes suivantes
Sudo chown root /home/james/upload
Sudo chmod go-w /home/james/upload
Cela fonctionne parfaitement, l'utilisateur peut se connecter, le dossier est verrouillé MAIS impossible de déposer des fichiers dans le répertoire
Status: Listing directory /
Status: Directory listing successful
Status: Starting upload of C:\Users\Program\AppData\Local\Temp\fz3temp-1\empty_file_yq744zm
Command: put "C:\Users\Program\AppData\Local\Temp\fz3temp-1\empty_file_yq744zm" "test"
Error: /test: open for write: permission denied
Error: File transfer failed
S'il vous plaît des conseils, j'ai tellement de recherches sur Google que tous les liens sont violets (Visité :P
)
J'utilise le client filezilla pour tester SFTP
.
La directive ChrootDirectory
s'attend à ce que le répertoire chroot soit la propriété de root
et ne puisse être écrit par personne d'autre. Ainsi, vous ne pouvez pas emprisonner un utilisateur dans un répertoire et lui donner le droit d'écrire dans ce répertoire. Vous pouvez:
upload/
Les premières commandes que vous avez essayées sont correctes pour cela:
Sudo chown root /home/james
Sudo chmod go-w /home/james
Sudo mkdir /home/james/upload
Sudo chown james:sshusers /home/james/upload
Sudo chmod ug+rwX /home/james/upload
Cependant, l'option dans sshd_config
serait:
Match Group sshusers
ChrootDirectory %h
ForceCommand internal-sftp
(%h
est remplacé par le répertoire de base de l'utilisateur authentifié, ce qui équivaut à /home/%u
. Dans la plupart des cas.) En outre, pour limiter la visibilité des dossiers dans /home/james
et limiter les droits en écriture. utilisez les options récursives pour chown
et chmod
dans la première commande de /home/james
, et supprimez les autorisations read
. L'ensemble modifié ressemblerait à ceci:
Sudo chown root /home/james -R
Sudo chmod go-rwx /home/james -R # Disallow traversing any directory in home
Sudo chmod go+x /home/james # Allow traversing this directory
Sudo mkdir /home/james/upload
Sudo chown james:sshusers /home/james/upload
Sudo chmod ug+rwx /home/james/upload
Désormais, l'utilisateur ne doit pouvoir accéder qu'à /home/james/upload
ou /upload
.
upload/some_directory
À peu près la même chose que ci-dessus, en remplaçant /home/james/
par /home/james/upload
, et /home/james/upload
par /home/james/upload/some_directory
. Aucun gain particulier.
james
par /upload
Le comportement habituel de ChrootDirectory est le suivant: "Après le chroot, sshd (8) modifie le répertoire de travail en répertoire de base de l'utilisateur." Nous changeons donc le répertoire personnel de james
:
usermod -d /upload user
Ensuite, réglez ChrootDirectory
sur /home/%u
. Utilisez les mêmes restrictions dans la première option.
Le mécanisme intégré de sftp chroot dans OpenSSH nécessite que le répertoire de chroot soit la propriété de root (et qu’il ne soit pas accessible en écriture aux utilisateurs). Cela peut poser problème si le répertoire est un partage SMB/CIFS, par exemple, où vous devez effectuer un montage lié.
Une des solutions les plus souples consisterait à utiliser MySecureShell ( http://mysecureshell.readthedocs.io/en/latest/ )
apt install mysecureshell
Cela fonctionne sans aucune modification de vos paramètres OpenSSH par défaut. Tout ce que vous avez à faire est de faire en sorte que votre utilisateur SFTP se connecte Shell à mysecureshell, qui se chargera du chroot virtuel/ACL. Voir la documentation pour plus de détails,
Par exemple, une fois que vous avez installé MySecureShell, vous pouvez ensuite ajouter un utilisateur SFTP (limité à son répertoire de base) comme indiqué ci-dessous,
Sudo useradd -m -d /home/sftpuser01 --Shell /usr/bin/mysecureshell sftpuser01
D'après ce qui précède, l'utilisateur 'sftpuser01' obtiendra un chrootage virtuel en '/ home/sftpuser01' dans une session SFTP.
Il fournit également de nombreuses options flexibles pour contrôler ACL, groupe, etc. en configurant "/ etc/ssh/sftp-config". Veuillez vous référer à http://mysecureshell.readthedocs.io/en/latest/configuration.html pour plus de détails.