Je vais vous expliquer la configuration d'un serveur SFTP (SSH File Transfer
Protocol) :
1. Installation des paquets nécessaires :
```bash
# Debian/Ubuntu
sudo apt-get install openssh-server
# Fedora/RHEL
sudo dnf install openssh-server
```
2. Configuration SSH (/etc/ssh/sshd_config) :
```bash
# Configuration de base SFTP
Subsystem sftp internal-sftp
# Configuration pour groupe SFTP dédié
Match Group sftp-users
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PasswordAuthentication yes
```
3. Création du groupe et des utilisateurs :
```bash
# Créer groupe SFTP
sudo groupadd sftp-users
# Créer utilisateur
sudo useradd -g sftp-users -d /sftp/sftpuser -s /bin/false sftpuser
sudo passwd sftpuser
# Créer structure de dossiers
sudo mkdir -p /sftp/sftpuser/upload
```
4. Configuration des permissions :
```bash
# Permissions racine
sudo chown root:root /sftp/sftpuser
sudo chmod 755 /sftp/sftpuser
# Permissions dossier upload
sudo chown sftpuser:sftp-users /sftp/sftpuser/upload
sudo chmod 770 /sftp/sftpuser/upload
```
5. Configuration du pare-feu :
```bash
# UFW (Ubuntu)
sudo ufw allow ssh
# Firewalld (Fedora)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
```
6. Configuration avec authentification par clé :
```bash
# Générer une clé sur le client
ssh-keygen -t rsa -b 4096
# Copier la clé sur le serveur
ssh-copy-id sftpuser@server
# Désactiver l'authentification par mot de passe
PasswordAuthentication no
```
7. Limites et quotas :
```bash
# Installer quota
sudo apt-get install quota
# Configurer /etc/fstab
UUID=xxx /sftp ext4 defaults,usrquota,grpquota 0 0
# Activer quota
sudo quotacheck -ugm /sftp
sudo quotaon -v /sftp
# Définir quota
sudo edquota -u sftpuser
```
8. Monitoring et logs :
```bash
# Vérifier les connexions
sudo tail -f /var/log/[Link]
# Surveiller les transferts
sudo tail -f /var/log/syslog
```
9. Configuration avancée pour plusieurs utilisateurs :
```bash
# Script de création d'utilisateur SFTP
#!/bin/bash
USERNAME=$1
sudo useradd -g sftp-users -d /sftp/$USERNAME -s /bin/false $USERNAME
sudo mkdir -p /sftp/$USERNAME/upload
sudo chown root:root /sftp/$USERNAME
sudo chmod 755 /sftp/$USERNAME
sudo chown $USERNAME:sftp-users /sftp/$USERNAME/upload
sudo chmod 770 /sftp/$USERNAME/upload
```
10. Restrictions supplémentaires (sshd_config) :
```bash
Match Group sftp-users
AllowUsers sftpuser1 sftpuser2
DenyUsers root
MaxSessions 2
ClientAliveInterval 300
ClientAliveCountMax 0
```
Bonnes pratiques :
1. Sécurité :
- Utiliser des clés SSH plutôt que des mots de passe
- Limiter l'accès à des IPs spécifiques
- Changer le port SSH par défaut
- Activer la journalisation détaillée
- Utiliser des permissions restrictives
2. Performance :
- Configurer des limites de bande passante
- Mettre en place des quotas disque
- Surveiller l'utilisation des ressources
3. Maintenance :
- Sauvegarder régulièrement la configuration
- Nettoyer les anciens fichiers
- Vérifier régulièrement les logs
Commandes client SFTP utiles :
```bash
# Connexion
sftp user@server
# Commandes de base
pwd # Afficher répertoire actuel
ls # Lister fichiers
get # Télécharger fichier
put # Envoyer fichier
mkdir # Créer dossier
rm # Supprimer fichier
cd # Changer de répertoire
```
Dépannage :
```bash
# Vérifier configuration SSH
sudo sshd -T
# Tester connexion en mode verbeux
sftp -v user@server
# Vérifier permissions
ls -la /sftp/user/
```
SELinux (pour Fedora/RHEL) :
```bash
# Permettre SFTP
sudo setsebool -P ssh_chroot_rw_homedirs on
# Contexte correct
sudo semanage fcontext -a -t ssh_home_t "/sftp(/.*)?"
sudo restorecon -R /sftp
```