Configuration d'un accès SFTP restreint au répertoire chroot
Ce guide décrit comment configurer un environnement chroot avec un accès SFTP uniquement pour les utilisateurs, en utilisant des clés SSH.
Prérequis
- Un serveur exécutant GNU/Linux
- Un accès root au serveur
- OpenSSH installé et en cours d'exécution
Étapes
1. Créer un utilisateur chroot
adduser <nom_d'utilisateur>
2. Créer un groupe SFTP
groupadd sftpusers
3. Ajouter l'utilisateur au groupe SFTP
usermod -aG sftpusers <nom_d'utilisateur>
4. Configurer le répertoire chroot
Créer un répertoire pour les utilisateurs SFTP, en s'assurant que les droits de propriété et les autorisations sont configurés correctement.
mkdir -p /sftp/<nom_d'utilisateur>
chown root:root /sftp
chmod 755 /sftp
mkdir /sftp/<nom_d'utilisateur>
chown <nom_d'utilisateur>:<nom_d'utilisateur> /sftp/<nom_d'utilisateur>
chmod 700 /sftp/<nom_d'utilisateur>
5. Configurer SSH pour l'accès SFTP
Modifier le fichier /etc/ssh/sshd_config pour utiliser SFTP interne et définir les restrictions.
-
Mettre à jour la ligne
Subsystem:Subsystem sftp internal-sftp -
Ajouter un bloc
Matchà la fin :Match Group sftpusers ChrootDirectory /sftp/%u ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no
6. Configurer les clés SSH de l'utilisateur
Créer et configurer les répertoires SSH pour l'utilisateur :
mkdir /home/<nom_d'utilisateur>/.ssh
touch /home/<nom_d'utilisateur>/.ssh/authorized_keys
chmod 700 /home/<nom_d'utilisateur>/.ssh
chmod 600 /home/<nom_d'utilisateur>/.ssh/authorized_keys
chown <nom_d'utilisateur>:<nom_d'utilisateur> /home/<nom_d'utilisateur>/.ssh
chown <nom_d'utilisateur>:<nom_d'utilisateur> /home/<nom_d'utilisateur>/.ssh/authorized_keys
Copier la clé publique SSH dans /home/<nom_d'utilisateur>/.ssh/authorized_keys.
7. Redémarrer le service SSH
systemctl restart sshd
Vérification
- Essayez une connexion SFTP pour vérifier que l'accès est restreint.
- Assurez-vous que les utilisateurs ne peuvent pas accéder au shell.
Script qui automatise la configuration :
#!/bin/bash
# Ce script configure automatiquement un environnement chroot pour un utilisateur SFTP dans le répertoire /sftp.
# Il crée un utilisateur avec un accès SFTP restreint, met en place la structure de répertoires nécessaire,
# configure les autorisations et ajoute un fichier authorized_keys pour l'authentification par clé.
# Utilisation :
# Enregistrez ce script sous le nom "sftp_chroot.sh" et rendez-le exécutable en exécutant la commande : `chmod +x sftp_chroot.sh`.
# Ensuite, exécutez-le avec les privilèges root en utilisant : `sudo ./sftp_chroot.sh`.
# Le script vous demandera le nom d'utilisateur SFTP, configurera l'environnement chroot nécessaire, définira les autorisations,
# et appliquera les paramètres SSH pour restreindre l'utilisateur à l'accès SFTP uniquement. Enfin, il redémarrera le service SSH pour
# appliquer les modifications.
# Vérifier si le script est exécuté avec les privilèges root
if [[ $EUID -ne 0 ]]; then
echo "Ce script doit être exécuté en tant que root."
exit 1
fi
# Demander le nom d'utilisateur SFTP
read -p "Entrez le nom d'utilisateur SFTP : " USERNAME
# Créer l'utilisateur avec le shell /bin/false pour limiter l'accès
useradd -m -d /sftp/$USERNAME -s /bin/false $USERNAME
# Créer l'environnement chroot dans /sftp
mkdir -p /sftp/$USERNAME
mkdir -p /sftp/$USERNAME/upload
mkdir -p /sftp/$USERNAME/.ssh
# Définir les autorisations pour le répertoire chroot
chown root:root /sftp/$USERNAME
chmod 755 /sftp/$USERNAME
chown $USERNAME:$USERNAME /sftp/$USERNAME/upload
# Créer le fichier authorized_keys
touch /sftp/$USERNAME/.ssh/authorized_keys
chmod 700 /sftp/$USERNAME/.ssh
chmod 600 /sftp/$USERNAME/.ssh/authorized_keys
chown -R $USERNAME:$USERNAME /sftp/$USERNAME/.ssh
echo "L'utilisateur $USERNAME a été configuré avec succès dans un environnement chroot."
# Ajouter la configuration SFTP à sshd_config si nécessaire
if ! grep -q "Match User $USERNAME" /etc/ssh/sshd_config; then
echo -e "\n# Configuration SFTP pour $USERNAME" >> /etc/ssh/sshd_config
echo "Match User $USERNAME" >> /etc/ssh/sshd_config
echo " ChrootDirectory /sftp/$USERNAME" >> /etc/ssh/sshd_config
echo " ForceCommand internal-sftp" >> /etc/ssh/sshd_config
echo " AllowTcpForwarding no" >> /etc/ssh/sshd_config
echo " PermitTunnel no" >> /etc/ssh/sshd_config
fi
# Redémarrer le service SSH
systemctl restart ssh
echo "Le jail chroot pour $USERNAME a été configuré avec succès. Vous pouvez maintenant ajouter les clés SSH dans /sftp/$USERNAME/.ssh/authorized_keys"
Aucun commentaire à afficher
Aucun commentaire à afficher