Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
|
linux:proftpd [2009/07/22 00:56] matthieu |
linux:proftpd [2011/01/08 15:24] (Version actuelle) matthieu |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag>fr fr:linux fr:serveur fr:transfert_de_fichier}} | ||
| ====== Proftpd ====== | ====== Proftpd ====== | ||
| Proftpd est un serveur FTP offrant de nombreuses fonctions. | Proftpd est un serveur FTP offrant de nombreuses fonctions. | ||
| Ci dessous est expliquée l'intallation d'un FTP utilisant une authentification LDAP ou Mysql. | Ci dessous est expliquée l'intallation d'un FTP utilisant une authentification LDAP ou Mysql. | ||
| - | |||
| - | Utilisé pour le [[bender]]. | ||
| ===== Principaux avantages ===== | ===== Principaux avantages ===== | ||
| Ligne 44: | Ligne 43: | ||
| ===== Configuration générale ===== | ===== Configuration générale ===== | ||
| - | Après une installation standard, voici quelques paramètres à modifier dans /etc/proftpd/proftpd.conf | + | Après une installation standard, voici quelques paramètres à modifier dans ///etc/proftpd/proftpd.conf// |
| * modifier le nom du serveur : | * modifier le nom du serveur : | ||
| Ligne 132: | Ligne 131: | ||
| </code> | </code> | ||
| - | * editier /etc/proftpd/proftpd.conf et décommenter la ligne : | + | * editier ///etc/proftpd/proftpd.conf// et décommenter la ligne : |
| Include /etc/proftpd/tls.conf | Include /etc/proftpd/tls.conf | ||
| - | * dans /etc/proftpd/tls.conf, décommenter les lignes : | + | * dans ///etc/proftpd/tls.conf//, décommenter les lignes : |
| <code> | <code> | ||
| TLSEngine on | TLSEngine on | ||
| Ligne 146: | Ligne 145: | ||
| </code> | </code> | ||
| - | * toujours dans /etc/proftpd/tls.conf, indiquer les fichiers de clef et de certificat : | + | * toujours dans ///etc/proftpd/tls.conf//, indiquer les fichiers de clef et de certificat : |
| <code> | <code> | ||
| TLSRSACertificateFile /etc/proftpd/ftp.bouthors.fr.crt | TLSRSACertificateFile /etc/proftpd/ftp.bouthors.fr.crt | ||
| Ligne 155: | Ligne 154: | ||
| Pour un exemple de configuration de client ftp en ftps, voir [[desktop:filezilla]]. | Pour un exemple de configuration de client ftp en ftps, voir [[desktop:filezilla]]. | ||
| + | |||
| + | :!: Un mise à jour récente provoque un blocage de la négociation TLS.\\ | ||
| + | Message d'erreur : mod_tls/2.2.2: client-initiated session renegotiation detected, aborting connection\\ | ||
| + | Solution : ajouter l'option "TLSOptions AllowClientRenegotiations"\\ | ||
| + | Plus d'info : http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=558597 | ||
| ===== Authentification LDAP ===== | ===== Authentification LDAP ===== | ||
| Ligne 166: | Ligne 170: | ||
| Pour pouvoir utiliser l'authentification LDAP, installer le paquet proftpd-mod-ldap. | Pour pouvoir utiliser l'authentification LDAP, installer le paquet proftpd-mod-ldap. | ||
| - | ==== Activation de le LDAP ==== | + | ==== Activation de l'authentification LDAP ==== |
| - | Dans /etc/proftpd/modules.conf, décommenter : | + | Dans ///etc/proftpd/modules.conf//, décommenter : |
| LoadModule mod_ldap.c | LoadModule mod_ldap.c | ||
| - | Dans /etc/proftpd/proftpd.conf, décommenter : | + | Dans ///etc/proftpd/proftpd.conf//, décommenter : |
| Include /etc/proftpd/ldap.conf | Include /etc/proftpd/ldap.conf | ||
| ==== Configuration ==== | ==== Configuration ==== | ||
| - | Dans /etc/proftpd/proftpd.conf, effectuer la configuration suivante : | + | Dans ///etc/proftpd/proftpd.conf//, effectuer la configuration suivante : |
| * AuthOrder active et définit l'ordre les authentifications. | * AuthOrder active et définit l'ordre les authentifications. | ||
| Ligne 188: | Ligne 192: | ||
| - | Dans /etc/proftpd/ldap.conf, effectuer la configuration suivante : | + | Dans ///etc/proftpd/ldap.conf//, effectuer la configuration suivante : |
| * Nom/IP du serveur ldap avec LDAPServer : | * Nom/IP du serveur ldap avec LDAPServer : | ||
| Ligne 221: | Ligne 225: | ||
| ==== Configuration des restrictions ==== | ==== Configuration des restrictions ==== | ||
| - | En utilisant les directives Directory et Limit, il est possible de limiter les accès au serveur FTP dans /etc/proftpd/proftpd.conf. | + | En utilisant les directives Directory et Limit, il est possible de limiter les accès au serveur FTP dans ///etc/proftpd/proftpd.conf//. |
| Voici un exemple simple qui limite l'accès au serveur FTP aux seuls membres du groupe "ftp" : | Voici un exemple simple qui limite l'accès au serveur FTP aux seuls membres du groupe "ftp" : | ||
| Ligne 295: | Ligne 299: | ||
| ===== Authentification SQL ===== | ===== Authentification SQL ===== | ||
| + | :!: Paragraphe archivé non mis à jour. | ||
| + | |||
| Cette partie décrit comment configurer l'authentification SQL. Etant donné que j'utilise actuellement LDAP, il se peut que la configuration différe dans les nouvelles versions. | Cette partie décrit comment configurer l'authentification SQL. Etant donné que j'utilise actuellement LDAP, il se peut que la configuration différe dans les nouvelles versions. | ||
| ==== Installation ==== | ==== Installation ==== | ||
| Afin d'activer le support de mysql, il faut ajouter le paquet : | Afin d'activer le support de mysql, il faut ajouter le paquet : | ||
| - | * proftpd-mysql | + | * proftpd-mod-mysql |
| Concernant la création des utilisateurs, voir [[authent_sql|Utiliser une base sql pour l'authentification]]. | Concernant la création des utilisateurs, voir [[authent_sql|Utiliser une base sql pour l'authentification]]. | ||
| - | ==== Configuration ==== | + | ==== Activation de l'authentification SQL ==== |
| + | Dans ///etc/proftpd/modules.conf//, décommenter : | ||
| + | LoadModule mod_sql.c | ||
| - | === RequireValidShell === | + | Dans ///etc/proftpd/proftpd.conf//, décommenter : |
| - | Si vous utilisez des shells invalides pour vos utilisateurs ftp (pour éviter qu'ils se loguent), désactivez la validation du shell : | + | Include /etc/proftpd/sql.conf |
| - | RequireValidShell off | + | |
| - | === AuthPAM === | + | ==== Configuration ==== |
| - | Pour désactiver le PAM (qui permet d'utiliser l'authentification classique du Linux), utilisez l'option suivante : | + | Dans ///etc/proftpd/proftpd.conf//, effectuer la configuration suivante : |
| - | AuthPAM off | + | * AuthOrder active et définit l'ordre les authentifications. |
| - | === AuthOrder === | ||
| - | AuthOrder active et définit l'ordre les authentifications. | ||
| AuthOrder mod_sql.c mod_auth_unix.c | AuthOrder mod_sql.c mod_auth_unix.c | ||
| mod_auth_unix.c est utilisé pour récupérer le nom des groupes ainsi que pour authentifier les utilisateurs du système. | mod_auth_unix.c est utilisé pour récupérer le nom des groupes ainsi que pour authentifier les utilisateurs du système. | ||
| - | === SQLConnectInfo === | + | * Pour désactiver le PAM (qui permet d'utiliser l'authentification classique du Linux), ajouter l'option suivante : |
| - | SQLConnectInfo définit la connexion SQL : le serveur, la base de données, l'utilisateur et son mot de passe. | + | |
| + | AuthPAM off | ||
| + | |||
| + | * Si vous utilisez des shells invalides, désactiver la validation du shell pour le FTP en décommentant : | ||
| + | |||
| + | RequireValidShell off | ||
| + | |||
| + | Dans ///etc/proftpd/sql.conf//, effectuer la configuration suivante : | ||
| + | * SQLConnectInfo définit la connexion SQL : le serveur, la base de données, l'utilisateur et son mot de passe. | ||
| SQLConnectInfo users@localhost proftpd ***password*** | SQLConnectInfo users@localhost proftpd ***password*** | ||
| - | === SQLUserInfo === | + | * SQLUserInfo définit la table qui contient les utilisateurs : |
| - | SQLUserInfo définit la table qui contient les utilisateurs : | + | - le nom de la table |
| - | - le nom de la table | + | - la colonne des utilisateurs |
| - | - la colonne des utilisateurs | + | - la colonne des mots de passe |
| - | - la colonne des mots de passe | + | - la colonne des UID |
| - | - la colonne des UID | + | - la colonne des GID |
| - | - la colonne des GID | + | - la colonne des répertoires utilisateurs |
| - | - la colonne des répertoires utilisateurs | + | - la colonne des shells+ |
| - | - la colonne des shells+ | + | |
| SQLUserInfo auth username password uid gid homedir shell | SQLUserInfo auth username password uid gid homedir shell | ||
| - | === SQLAuthTypes === | + | * SQLAuthTypes définit le type de cryptage utilisé pour les mots de passe : |
| - | SQLAuthTypes définit le type de cryptage utilisé pour les mots de passe : | + | |
| SQLAuthTypes Crypt | SQLAuthTypes Crypt | ||
| - | === SQLAuthenticate === | + | * SQLAuthenticate définit comment le mod SQL doit authentifier : |
| - | SQLAuthenticate définit comment le mod SQL doit authentifier : | + | |
| SQLAuthenticate users* usersetfast | SQLAuthenticate users* usersetfast | ||
| + | |||
| Dans cet exemple, on demande une authentification uniquement des utilisateurs (sans table de groupe) en indiquant une optimisation des requetes SQL au détriment de la mémoire. | Dans cet exemple, on demande une authentification uniquement des utilisateurs (sans table de groupe) en indiquant une optimisation des requetes SQL au détriment de la mémoire. | ||
| - | === SQLNamedQuery === | + | * SQLNamedQuery permet de définir des requêtes SQL utilisée par les options ci-après : |
| - | SQLNamedQuery permet de définir des requêtes SQL utilisée par les options ci-après : | + | |
| SQLNamedQuery updatecount UPDATE "count=count+1 WHERE username='%u'" auth | SQLNamedQuery updatecount UPDATE "count=count+1 WHERE username='%u'" auth | ||
| SQLNamedQuery count SELECT "count from auth where username='%u'" | SQLNamedQuery count SELECT "count from auth where username='%u'" | ||
| - | * Updatecount réalise l'incrémentation du champ "count" de l'utilisateur. | + | Updatecount réalise l'incrémentation du champ "count" de l'utilisateur.\\ |
| - | * Count renvoie le champ count de l'utilisateur. | + | Count renvoie le champ count de l'utilisateur. |
| - | === SQLLog === | + | * SQLLog permet d'exécuter une requête SQL en fonction des actions de l'utilisateur :\\ |
| - | SQLLog permet d'exécuter une requête SQL en fonction des actions de l'utilisateur : | + | |
| Par exemple, l'option suivante exécute la requête //updatecount// lorsque l'utilisateur se connecte : | Par exemple, l'option suivante exécute la requête //updatecount// lorsque l'utilisateur se connecte : | ||
| + | |||
| SQLLog PASS updatecount | SQLLog PASS updatecount | ||
| - | === SQLShowInfo === | + | * SQLShowInfo permet d'afficher des informations à l'utilisateur en utilisant un requête SQL.\\ |
| - | SQLShowInfo permet d'afficher des informations à l'utilisateur en utilisant un requête SQL. | + | |
| Par exemple, la ligne suivante indique le nombre de connexions de l'utilisateur : | Par exemple, la ligne suivante indique le nombre de connexions de l'utilisateur : | ||
| + | |||
| SQLShowInfo PASS "230" "Vous vous êtes logué(e) %{count} fois, %u" | SQLShowInfo PASS "230" "Vous vous êtes logué(e) %{count} fois, %u" | ||
| - | === SQLMinID === | + | * SQLMinID définit les valeurs par défaut pour UID et GID : |
| - | SQLMinID définit les valeurs par défaut pour UID et GID : | + | |
| SQLMinID 499 | SQLMinID 499 | ||
| - | === SQLDefaultUID === | + | * SQLDefaultUID définit la valeur par défaut de UID : |
| - | SQLDefaultUID définit la valeur par défaut de UID : | + | |
| SQLDefaultUID 500 | SQLDefaultUID 500 | ||
| - | === SQLDefaultGID === | + | * SQLDefaultGID définit la valeur par défaut de GID : |
| - | SQLDefaultGID définit la valeur par défaut de GID : | + | |
| SQLDefaultGID 500 | SQLDefaultGID 500 | ||
| - | === SQLDefaultHomedir === | + | * SQLDefaultHomedir définit le répertoire home par défaut : |
| - | SQLDefaultHomedir définit le répertoire home par défaut : | + | |
| SQLDefaultHomedir /ftp | SQLDefaultHomedir /ftp | ||
| + | ==== Exemple de configuration complète ==== | ||
| + | :!: Archive ! à adapter ! | ||
| - | |||
| - | ==== Exemple de configuration complète ==== | ||
| Fichier ///etc/proftpd.conf// | Fichier ///etc/proftpd.conf// | ||
| <file> | <file> | ||
| Ligne 556: | Ligne 570: | ||
| Date : %T | Date : %T | ||
| - | |||
| - | Descriptif du serveur : | ||
| - | - Liaison 9online 1024 (download : 1024kbits/s, upload : 256kbits/s) | ||
| - | - Processeur Athlon 700 | ||
| - | - Ram 512Mo | ||
| - | - Disques (540Go) | ||
| Bonne journée ;-) | Bonne journée ;-) | ||
| Ligne 614: | Ligne 622: | ||
| ==== Rotation des logs ==== | ==== Rotation des logs ==== | ||
| - | La rotation des logs est gérée par ///etc/cron.monthly/proftpd//, qui contient par défaut : | + | La rotation des logs est gérée par ///etc/logrotate.de/proftpd-basic//, qui contient par défaut : |
| <file> | <file> | ||
| - | #!/bin/sh | + | /var/log/proftpd/proftpd.log |
| - | # | + | /var/log/proftpd/controls.log |
| - | # cron script to rotate the proftpd server logfile, based on the | + | /var/log/proftpd/xferlog |
| - | # wu-ftpd script by Peter Tobias <tobias@et-inf.fho-emden.de>. | + | /var/log/proftpd/xferreport |
| - | + | { | |
| - | [ -x /usr/sbin/ftpstats ] || exit 0 | + | weekly |
| - | + | missingok | |
| - | cd /var/log/proftpd | + | rotate 7 |
| - | savelog -q -u root -g adm -m 640 -c 12 /var/log/proftpd/xferreport | + | compress |
| - | ftpstats -a -r -l 2 -d 2>/dev/null >/var/log/proftpd/xferreport | + | delaycompress |
| - | savelog -q -u root -g adm -m 640 -c 7 /var/log/proftpd/xferlog | + | notifempty |
| - | savelog -q -u root -g adm -m 640 -c 7 /var/log/proftpd/proftpd.log | + | create 640 root adm |
| - | savelog -q -u root -g adm -m 640 -c 7 /var/log/proftpd/controls.log | + | sharedscripts |
| + | postrotate | ||
| + | # reload could be not sufficient for all logs, a restart is safer | ||
| + | invoke-rc.d proftpd restart 2>/dev/null >/dev/null || true | ||
| + | endscript | ||
| + | } | ||
| </file> | </file> | ||
| - | Pour conserver les logs 1 an, il suffit de modifier la ligne | + | Pour conserver les logs 1 an, il suffit de modifier la ligne rotate : |
| - | savelog -q -u root -g adm -m 640 -c 12 /var/log/proftpd/xferlog | + | rotate 12 |
| ===== Debug ===== | ===== Debug ===== | ||
| Ligne 639: | Ligne 652: | ||
| ===== Backup ===== | ===== Backup ===== | ||
| - | * /etc/proftpd.conf | + | * /etc/proftpd/ |
| - | * /etc/cron.monthly/proftpd | + | * /etc/logrotate.d/proftpd |
| - | * /home/scripts/ftp/maintenance_ftp | + | * /home/scripts/maintenance_ftp |
| * /ftp/welcome.msg | * /ftp/welcome.msg | ||
| + | * /var/log/proftpd | ||
| * le répertoire du ftp | * le répertoire du ftp | ||
| - | |||
| - | |||
| ===== Links ===== | ===== Links ===== | ||
| - | * [[start]] | ||
| - | * [[bender]] | ||
| * [[mysql]] | * [[mysql]] | ||
| * [[openldap]] | * [[openldap]] | ||