🖥️

Serveur ProFTPD — FTP + ClamAV + Utilisateurs Virtuels

ProFTPD ClamAV Debian Utilisateurs virtuels SIO SISR

📋 Table des matières
Contexte ① Installation & vérifications de base ② Utilisateurs système & tests clients ③ Accès en anonyme ④ Configuration générale ⑤ Antivirus ClamAV ⑥ Intégration ClamAV ↔ ProFTPD ⑦ Utilisateurs virtuels ✅ Conclusion

📋 Contexte


Un serveur FTP permet de stocker des fichiers et de les mettre à disposition des clients. Deux catégories :

🖥️
Environnement : Debian · ProFTPD standalone · ClamAV · FileZilla (client)
ProFTPD utilise une syntaxe similaire à Apache pour ses fichiers de configuration.

Plan du TP

ÉtapeAction
Installation & vérifications de base
Utilisateurs système & tests clients
Accès en anonyme
Configuration générale
Antivirus ClamAV
Intégration ClamAV ↔ ProFTPD
Utilisateurs virtuels
01
Installation & vérifications de base
ProFTPD standalone · Logs · Ports · Manuel

1.1 — Installer ProFTPD

🔎
Installer le serveur FTP ProFTPD. Lors du prompt, choisir le mode standalone.
bash
apt update
apt install proftpd
📖 Explication
  • apt update — met à jour la liste des paquets
  • apt install proftpd — installe le serveur FTP ProFTPD et ses utilitaires
  • Mode standalone = ProFTPD gère lui-même ses connexions (sans passer par inetd)

1.2 — Vérifier l'utilisateur/groupe du service

bash
nano /etc/proftpd/proftpd.conf
DirectiveValeur par défaut
Userproftpd
Groupnogroup

1.3 — Localisation des commandes

bash
which ftpcount
which ftpwho
En général : /usr/bin/ftpcount et /usr/bin/ftpwho

1.4 — Répertoire de configuration

bash
ls /etc/proftpd/
Fichier principal : /etc/proftpd/proftpd.conf

1.5 — Pages de manuel

bash
man -w proftpd
# Si rien ne s'affiche :
apt install proftpd-doc
Pages installées dans : /usr/share/man/man8/

1.6 — Répertoires des logs

bash
ls /var/log/proftpd/
cat /var/log/xferlog
tail /var/log/proftpd/proftpd.log
📖 Fichiers de logs
FichierContenu
/var/log/xferlogJournal des transferts FTP (uploads/downloads)
/var/log/proftpd/proftpd.logJournal du service ProFTPD (connexions, erreurs)

1.7 — Vérification du port d'écoute

bash
apt install nmap lsof -y
nmap localhost
lsof -i -P
ProFTPD écoute sur le port TCP 21 par défaut.
📖 Explication
  • nmap localhost — scanne les ports ouverts localement
  • lsof -i -P — liste les sockets réseau actifs avec leurs ports
02
Utilisateurs système & tests clients
Création d'utilisateurs Unix · Connexion FileZilla

⚠️
Tous les utilisateurs se connectant sur ProFTPD doivent exister réellement sur le système (avec un UID).

2.1 — Créer un utilisateur (ex : titi)

bash
adduser titi
📖 Si adduser ne fonctionne pas (PATH)
bash
nano /etc/environment

Ajouter ou vérifier :

config
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/sbin

2.2 — Vérifier et démarrer le service

bash
systemctl status proftpd
# Si inactif :
systemctl start proftpd

2.3 — Récupérer l'IP pour FileZilla

bash
ip a
Champ FileZillaValeur
HôteIP du serveur Linux
ProtocoleFTP
Port21
Utilisateurtiti
Mot de passeCelui défini avec adduser
Tu arrives dans /home/titi. Tu peux y déposer et télécharger des fichiers.
03
Accès en anonyme
Connexion sans authentification · Lecture seule · /srv/ftp

🔎
La section Anonymous permet aux clients de se connecter sans authentification, au nom de l'utilisateur ftp dont le répertoire est /srv/ftp.

3.1 — Activer le bloc Anonymous

bash
nano /etc/proftpd/proftpd.conf

Ajouter ou décommenter (enlever les #) :

proftpd config
<Anonymous ~ftp>
  User ftp
  Group nogroup
  UserAlias anonymous ftp
  DirFakeUser on ftp
  DirFakeGroup on ftp
  RequireValidShell off
  MaxClients 10
  DisplayLogin welcome.msg
  DisplayFirstChdir .message
  <Directory *>
    <Limit WRITE>
      DenyAll
    </Limit>
  </Directory>
</Anonymous>
📖 Explication des directives
DirectiveDescription
UserAlias anonymous ftpPermet de se connecter avec le login anonymous
DirFakeUser on ftpAffiche ftp comme propriétaire de tous les fichiers
RequireValidShell offAutorise la connexion même sans shell valide
MaxClients 10Limite à 10 connexions anonymes simultanées
DenyAll sur WRITELecture seule — aucun upload possible

3.2 — Redémarrer & vérifier

bash
systemctl restart proftpd
systemctl status proftpd

3.3 — Tester dans FileZilla

ChampValeur
HôteIP du serveur
Utilisateuranonymous
Mot de passe(vide ou n'importe quoi)
Port21
Connexion en lecture seule. Aucun upload autorisé (sécurité).
04
Configuration générale
Mode passif · Logs · Outils de supervision

4.1 — Mode passif (recommandé derrière firewall/NAT)

bash
nano /etc/proftpd/proftpd.conf

Ajouter (plage 61000–62000) :

config
PassivePorts 61000 62000
⚠️
Ouvre cette plage de ports dans ton pare-feu si nécessaire.

4.2 — Redémarrer le service

bash
systemctl restart proftpd

4.3 — Outils d'observation live

bash
ftpwho    # Utilisateurs actuellement connectés
ftptop    # Transferts en cours en temps réel

4.4 — Examiner les logs de transferts

bash
cat /var/log/xferlog

Exemple de ligne :

log
Tue Aug 29 16:12:44 2025 1 127.0.0.1 543 /home/titi/fichier.txt a _ o r titi ftp 0 * c

4.5 — Documentation du format xferlog

bash
man xferlog
tail /var/log/proftpd/xferlog

4.6 — Stats synthétiques

bash
ftpstats
📖 Ce que ftpstats affiche
  • Nombre total de transferts
  • Utilisateurs les plus actifs
  • Volume total envoyé/reçu
  • Répartition uploads/downloads
05
Antivirus ClamAV
Installation · Mises à jour · Scan · Cron · Test EICAR

🛡️
ClamAV est un antivirus libre et gratuit, particulièrement adapté à la protection des serveurs et à la vérification régulière des fichiers.

5.1 — Installer ClamAV

bash
apt install clamav clamav-freshclam
freshclam
📖 Explication
  • clamav — installe le moteur antivirus
  • clamav-freshclam — installe le service de mise à jour des signatures
  • freshclam — met à jour immédiatement la base de signatures virales

5.2 — Configurer la fréquence des mises à jour (5×/jour)

bash
nano /etc/clamav/freshclam.conf

Modifier ou ajouter :

config
Checks 5

5.3 — Scanner /home (infectés uniquement)

bash
clamscan -r /home --infected
📖 Options clamscan utiles
OptionDescription
-rScan récursif (sous-dossiers inclus)
--infectedAffiche uniquement les fichiers infectés
--log=/path/fichier.logEnregistre les résultats dans un fichier
--removeSupprime les fichiers infectés (prudence !)
⚠️
ClamAV ne supprime pas automatiquement les fichiers infectés sauf si --remove est spécifié.

5.4 — Scan quotidien automatique à 22h (cron)

bash
crontab -e

Ajouter :

cron
0 22 * * * clamscan -r /home/toto --log=/var/log/clamav-scan.log
📖 Lecture de la syntaxe cron
Syntaxe
┌───── minute (0)
│ ┌──── heure (22)
│ │ ┌── jour du mois (* = tous)
│ │ │ ┌ mois (* = tous)
│ │ │ │ ┌ jour de la semaine (* = tous)
0 22 * * * commande

5.5 — Test avec le fichier EICAR (faux virus)

bash
nano eicar.com

Coller ce contenu exact :

EICAR test
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
bash
clamscan .
ClamAV doit détecter : eicar.com: Eicar-Signature FOUND

5.6 — Supprimer les fichiers infectés

bash
clamscan --remove .
⚠️
À utiliser avec prudence — supprime définitivement les fichiers détectés.
06
Intégration ClamAV ↔ ProFTPD
Scan automatique des uploads FTP

🔎
Permettre à ProFTPD de scanner automatiquement chaque fichier uploadé via ClamAV.

6.1 — Installer le module

bash
apt install proftpd-mod-clamav

6.2 — Activer le module dans ProFTPD

bash
nano /etc/proftpd/proftpd.conf

Ajouter :

proftpd config
<IfModule mod_clamav.c>
   ClamAV on
   ClamServer 127.0.0.1
   ClamPort 3310
</IfModule>
📖 Explication + si clamd n'est pas actif
  • ClamAV on — active le scan des uploads
  • ClamServer 127.0.0.1 — adresse du daemon ClamAV (clamd)
  • ClamPort 3310 — port d'écoute de clamd

Si clamd n'est pas actif :

bash
apt install clamav-daemon
systemctl start clamav-daemon

6.3 — Redémarrer & tester

bash
systemctl restart proftpd

6.4 — Procédure de test

07
Utilisateurs virtuels ProFTPD
Indépendants du système · Chroot · Utiles pour le dev web

💡
Créer des utilisateurs uniquement assignés au FTP, indépendants du système. Permet de les confiner dans un répertoire spécifique — très utile pour le développement web.

7.1 — Préparer les fichiers d'auth virtuels

bash
cd /etc/proftpd
touch ftpd.passwd
touch ftpd.group

7.2 — Créer un utilisateur virtuel (asterix, UID 1100)

bash
ftpasswd --passwd --name=asterix --uid=1100 --file=/etc/proftpd/ftpd.passwd --home=/var/www/html/sisr --shell=/bin/false
📖 Explication des paramètres
ParamètreDescription
--name=asterixNom de l'utilisateur virtuel
--uid=1100UID dédié (ne doit pas exister dans /etc/passwd)
--home=/var/www/html/sisrRépertoire home virtuel (chroot)
--shell=/bin/falsePas de shell — accès FTP uniquement (sécurisé)

7.3 — Ajouter au groupe virtuel www-data (GID 33)

bash
ftpasswd --group --name=www-data --gid=33 --file=/etc/proftpd/ftpd.group --member=asterix
ℹ️
Pour ajouter d'autres membres : éditer ftpd.group et ajouter ,utilisateur après les membres existants.

7.4 — Vérifier les fichiers virtuels

bash
cat /etc/proftpd/ftpd.passwd
cat /etc/proftpd/ftpd.group

7.5 — Autoriser /bin/false comme shell valide

bash
nano /etc/shells

Ajouter la ligne :

config
/bin/false

7.6 — Configurer ProFTPD pour les utilisateurs virtuels

bash
nano /etc/proftpd/proftpd.conf

Ajouter ou décommenter :

proftpd config
# Emplacement du fichier des utilisateurs virtuels
AuthUserFile /etc/proftpd/ftpd.passwd

# Emplacement du fichier des groupes virtuels
AuthGroupFile /etc/proftpd/ftpd.group

# Confiner les membres www-data dans /var/www/html
DefaultRoot /var/www/html www-data

7.7 — Modifier l'Umask (optionnel)

proftpd config
Umask 000 000
📖 Explication Umask
ValeurComportement
Umask 022 022 (défaut)Seul l'uploader peut modifier ses fichiers
Umask 000 000Les fichiers uploadés sont accessibles en lecture/écriture pour tous
⚠️
À n'utiliser qu'en environnement de développement. En production, préférer Umask 022 022.

7.8 — Droits sur le répertoire

bash
chown 1100:www-data /var/www/html/sisr

7.9 — Redémarrer ProFTPD

bash
systemctl restart proftpd

7.10 — Test FileZilla (utilisateur virtuel)

ChampValeur
HôteIP du serveur (ip a)
Utilisateurasterix
Mot de passeCelui défini via ftpasswd
Port21
Asterix est confiné dans /var/www/html/sisr et peut déposer/modifier des fichiers selon l'Umask configuré, sans pouvoir naviguer dans le reste du serveur.

Conclusion


💡
Ce serveur FTP constitue une solution fiable adaptée à un usage pédagogique ou professionnel.

SIO SISR · ProFTPD + ClamAV + Utilisateurs virtuels · Debian