Un serveur FTP permet de stocker des fichiers et de les mettre à disposition des clients. Deux catégories :
| Étape | Action |
|---|---|
| ① | 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 |
apt update apt install proftpd
apt update — met à jour la liste des paquetsapt install proftpd — installe le serveur FTP ProFTPD et ses utilitairesnano /etc/proftpd/proftpd.conf| Directive | Valeur par défaut |
|---|---|
User | proftpd |
Group | nogroup |
which ftpcount which ftpwho
/usr/bin/ftpcount et /usr/bin/ftpwhols /etc/proftpd//etc/proftpd/proftpd.confman -w proftpd # Si rien ne s'affiche : apt install proftpd-doc
/usr/share/man/man8/ls /var/log/proftpd/ cat /var/log/xferlog tail /var/log/proftpd/proftpd.log
| Fichier | Contenu |
|---|---|
/var/log/xferlog | Journal des transferts FTP (uploads/downloads) |
/var/log/proftpd/proftpd.log | Journal du service ProFTPD (connexions, erreurs) |
apt install nmap lsof -y nmap localhost lsof -i -P
nmap localhost — scanne les ports ouverts localementlsof -i -P — liste les sockets réseau actifs avec leurs portstiti)adduser titinano /etc/environmentAjouter ou vérifier :
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/sbin
systemctl status proftpd
# Si inactif :
systemctl start proftpdip a
| Champ FileZilla | Valeur |
|---|---|
| Hôte | IP du serveur Linux |
| Protocole | FTP |
| Port | 21 |
| Utilisateur | titi |
| Mot de passe | Celui défini avec adduser |
/home/titi. Tu peux y déposer et télécharger des fichiers.ftp dont le répertoire est /srv/ftp.nano /etc/proftpd/proftpd.confAjouter ou décommenter (enlever les #) :
<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>
| Directive | Description |
|---|---|
UserAlias anonymous ftp | Permet de se connecter avec le login anonymous |
DirFakeUser on ftp | Affiche ftp comme propriétaire de tous les fichiers |
RequireValidShell off | Autorise la connexion même sans shell valide |
MaxClients 10 | Limite à 10 connexions anonymes simultanées |
DenyAll sur WRITE | Lecture seule — aucun upload possible |
systemctl restart proftpd systemctl status proftpd
| Champ | Valeur |
|---|---|
| Hôte | IP du serveur |
| Utilisateur | anonymous |
| Mot de passe | (vide ou n'importe quoi) |
| Port | 21 |
nano /etc/proftpd/proftpd.confAjouter (plage 61000–62000) :
PassivePorts 61000 62000
systemctl restart proftpd
ftpwho # Utilisateurs actuellement connectés ftptop # Transferts en cours en temps réel
cat /var/log/xferlogExemple de ligne :
Tue Aug 29 16:12:44 2025 1 127.0.0.1 543 /home/titi/fichier.txt a _ o r titi ftp 0 * c
man xferlog tail /var/log/proftpd/xferlog
ftpstats
apt install clamav clamav-freshclam
freshclamclamav — installe le moteur antivirusclamav-freshclam — installe le service de mise à jour des signaturesfreshclam — met à jour immédiatement la base de signatures viralesnano /etc/clamav/freshclam.confModifier ou ajouter :
Checks 5clamscan -r /home --infected
| Option | Description |
|---|---|
-r | Scan récursif (sous-dossiers inclus) |
--infected | Affiche uniquement les fichiers infectés |
--log=/path/fichier.log | Enregistre les résultats dans un fichier |
--remove | Supprime les fichiers infectés (prudence !) |
--remove est spécifié.crontab -e
Ajouter :
0 22 * * * clamscan -r /home/toto --log=/var/log/clamav-scan.log┌───── minute (0) │ ┌──── heure (22) │ │ ┌── jour du mois (* = tous) │ │ │ ┌ mois (* = tous) │ │ │ │ ┌ jour de la semaine (* = tous) 0 22 * * * commande
nano eicar.comColler ce contenu exact :
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
clamscan .
eicar.com: Eicar-Signature FOUNDclamscan --remove .
apt install proftpd-mod-clamavnano /etc/proftpd/proftpd.confAjouter :
<IfModule mod_clamav.c> ClamAV on ClamServer 127.0.0.1 ClamPort 3310 </IfModule>
ClamAV on — active le scan des uploadsClamServer 127.0.0.1 — adresse du daemon ClamAV (clamd)ClamPort 3310 — port d'écoute de clamdSi clamd n'est pas actif :
apt install clamav-daemon
systemctl start clamav-daemonsystemctl restart proftpd
tititail /var/log/proftpd/proftpd.logcd /etc/proftpd touch ftpd.passwd touch ftpd.group
asterix, UID 1100)ftpasswd --passwd --name=asterix --uid=1100 --file=/etc/proftpd/ftpd.passwd --home=/var/www/html/sisr --shell=/bin/false| Paramètre | Description |
|---|---|
--name=asterix | Nom de l'utilisateur virtuel |
--uid=1100 | UID dédié (ne doit pas exister dans /etc/passwd) |
--home=/var/www/html/sisr | Répertoire home virtuel (chroot) |
--shell=/bin/false | Pas de shell — accès FTP uniquement (sécurisé) |
www-data (GID 33)ftpasswd --group --name=www-data --gid=33 --file=/etc/proftpd/ftpd.group --member=asterixftpd.group et ajouter ,utilisateur après les membres existants.cat /etc/proftpd/ftpd.passwd cat /etc/proftpd/ftpd.group
/bin/false comme shell validenano /etc/shellsAjouter la ligne :
/bin/false
nano /etc/proftpd/proftpd.confAjouter ou décommenter :
# 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
Umask 000 000
| Valeur | Comportement |
|---|---|
Umask 022 022 (défaut) | Seul l'uploader peut modifier ses fichiers |
Umask 000 000 | Les fichiers uploadés sont accessibles en lecture/écriture pour tous |
Umask 022 022.chown 1100:www-data /var/www/html/sisr
systemctl restart proftpd
| Champ | Valeur |
|---|---|
| Hôte | IP du serveur (ip a) |
| Utilisateur | asterix |
| Mot de passe | Celui défini via ftpasswd |
| Port | 21 |
/var/www/html/sisr et peut déposer/modifier des fichiers selon l'Umask configuré, sans pouvoir naviguer dans le reste du serveur./var/www/htmlftpwho, ftptop, ftpstatsSIO SISR · ProFTPD + ClamAV + Utilisateurs virtuels · Debian