Je vais vous expliquer comment configurer un serveur FTP avec vsftpd (Very Secure
FTP Daemon) :
1. Installation du serveur :
```bash
# Debian/Ubuntu
sudo apt-get install vsftpd
# Fedora/RHEL
sudo dnf install vsftpd
```
2. Configuration principale (/etc/[Link]) :
```bash
# Paramètres de base
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
# Sécurité
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/[Link]
rsa_private_key_file=/etc/ssl/private/[Link]
# Limites
max_clients=50
max_per_ip=2
local_max_rate=1048576
```
3. Création d'un certificat SSL :
```bash
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout
/etc/ssl/private/[Link] -out /etc/ssl/certs/[Link]
```
4. Gestion des utilisateurs :
```bash
# Créer un utilisateur FTP
sudo adduser ftpuser
sudo usermod -d /var/ftp/ftpuser ftpuser
# Créer le répertoire
sudo mkdir -p /var/ftp/ftpuser
sudo chown ftpuser:ftpuser /var/ftp/ftpuser
```
5. Configuration du pare-feu :
```bash
# UFW (Ubuntu)
sudo ufw allow 20,21,990,40000:50000/tcp
# Firewalld (Fedora)
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=40000-50000/tcp
sudo firewall-cmd --reload
```
6. Configuration pour le mode passif :
```bash
# Ajouter dans [Link]
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
pasv_address=votre_ip_publique
```
7. Démarrage et activation :
```bash
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
sudo systemctl status vsftpd
```
8. Configuration avancée :
```bash
# Configuration par utilisateur
user_sub_token=$USER
local_root=/var/ftp/$USER
userlist_file=/etc/[Link]
userlist_deny=NO
# Limites de bande passante
anon_max_rate=30000
local_max_rate=50000
# Logs
xferlog_file=/var/log/[Link]
xferlog_std_format=YES
dual_log_enable=YES
log_ftp_protocol=YES
```
9. Sécurisation supplémentaire :
```bash
# Restrictions IP dans /etc/[Link]
vsftpd: 192.168.1. : allow
vsftpd: ALL : deny
# Configuration SELinux
sudo setsebool -P ftp_home_dir on
sudo setsebool -P ftpd_full_access on
```
10. Commandes utiles pour le test :
```bash
# Test de connexion
ftp -p localhost
lftp localhost
# Vérification des logs
tail -f /var/log/[Link]
```
Bonnes pratiques :
1. Sécurité :
- Désactivez l'accès anonyme
- Utilisez FTPS (FTP over SSL/TLS)
- Limitez les connexions par IP
- Utilisez des mots de passe forts
- Restreignez les utilisateurs à leur dossier personnel
2. Performance :
- Ajustez les limites de bande passante
- Configurez correctement le mode passif
- Surveillez l'utilisation des ressources
3. Maintenance :
- Sauvegardez régulièrement la configuration
- Surveillez les logs
- Mettez à jour régulièrement le serveur
Dépannage courant :
```bash
# Problèmes de permissions
ls -la /var/ftp/
getcap /usr/sbin/vsftpd
# Problèmes de connexion
netstat -tulpn | grep vsftpd
ss -tulpn | grep :21
# Test de configuration
vsftpd -olisten=NO /etc/[Link]
```
Conseils de sécurité importants :
1. Évitez FTP en faveur de SFTP quand possible
2. Utilisez toujours SSL/TLS
3. Mettez en place des quotas utilisateurs
4. Surveillez les tentatives de connexion suspectes
5. Effectuez des sauvegardes régulières