Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
informatique:linux:proftpd [2009/03/13 14:42] benoit |
informatique:linux:proftpd [2018/09/06 19:10] (Version actuelle) |
||
|---|---|---|---|
| Ligne 3: | Ligne 3: | ||
| - | + | ===== Installation ===== | |
| - | ===== Compilation et installation ===== | + | ==== Pré-requis ==== |
| Installer les paquetages pré-requis à la compilation de proftpd : | Installer les paquetages pré-requis à la compilation de proftpd : | ||
| * gcc-4.1.2-44.el5.i386.rpm | * gcc-4.1.2-44.el5.i386.rpm | ||
| Ligne 25: | Ligne 24: | ||
| * perl-DBI-1.52-2.el5.i386.rpm | * perl-DBI-1.52-2.el5.i386.rpm | ||
| * mysql-devel-5.0.45-7.el5.i386.rpm | * mysql-devel-5.0.45-7.el5.i386.rpm | ||
| + | |||
| + | ==== Installation ==== | ||
| Récupérer l'archive de proftpd sur http://www.proftpd.org | Récupérer l'archive de proftpd sur http://www.proftpd.org | ||
| Ligne 34: | Ligne 35: | ||
| Installation et compilation de proftpd : | Installation et compilation de proftpd : | ||
| cd /ap01/ftpserver/src/proftpd-1.3.2rc4 | cd /ap01/ftpserver/src/proftpd-1.3.2rc4 | ||
| - | ./configure --prefix=/usr/local/proftpd --sysconfdir=/usr/local/proftpd/etc --localstatedir=/ap01/ftpserver/appl/proftpd/var --with-modules=mod_tls:mod_sql:mod_sql_mysql --with-includes=/usr/include/mysql --with-libraries=/usr/lib/mysql | + | CFLAGS=-DHAVE_OPENSSL LIBS=-lcrypto |
| + | ./configure --prefix=/ap01/ftpserver/appl/proftpd --sysconfdir=/ap01/ftpserver/appl/proftpd/etc --localstatedir=/ap01/ftpserver/appl/proftpd/var --with-modules=mod_tls:mod_sql:mod_sql_mysql --with-includes=/usr/include/mysql:/usr/include/openssl --with-libraries=/usr/lib/mysql:/usr/lib/openssl | ||
| make clean | make clean | ||
| make | make | ||
| make install | make install | ||
| - | ===== Utiliser PROFTPD avec SSL ===== | + | ===== Configuration ===== |
| - | ==== Générer le certificat ==== | + | ==== Configuration basic ==== |
| - | Se positionner dans le répertoire de configuration apache : | + | Exemple d'options pour sécuriser et optimiser le serveur FTP |
| - | cd /usr/local/proftpd/etc | + | |
| - | + | ||
| - | Lancer la commande pour générer la clé privée RSA : | + | |
| - | openssl genrsa -out server.key 1024 | + | |
| - | + | ||
| - | A partir de notre clé privée nous allons créer notre fichier de demande de signature (Certificate Signing Request) : | + | |
| - | openssl req -new -key server.key -out request.csr | + | |
| - | + | ||
| - | Auto-signer la clé et créer le certificat : | + | |
| - | openssl x509 -req -days 365 -in request.csr -signkey server.key -out server.crt | + | |
| + | # Permet de cloisonner les utilisateurs dans leur répertoire : | ||
| + | DefaultRoot ~ | ||
| + | | ||
| + | # L'utilisateur FTP n'est pas obligé d'avoir un SHELL valide (telque bash, ksh etc...) pour se connecter | ||
| + | RequireValidShell no | ||
| + | | ||
| + | # Evite les requetes DNS du serveur et permet donc une authentification plus rapide | ||
| + | IdentLookups off | ||
| + | UseReverseDNS off | ||
| + | | ||
| + | # Permet de définir la plage de ports pour les connexion passive | ||
| + | # Plage de port à laisser passer par le FireWall | ||
| + | PassivePorts 49152 49500 | ||
| + | | ||
| + | # Ceci permet de limiter l'accès FTP à /var/ftp | ||
| + | <Directory /> | ||
| + | DenyAll | ||
| + | </Directory> | ||
| + | <Directory /var/ftp> | ||
| + | AllowAll | ||
| + | </Directory> | ||
| + | ==== Configuration avec SSL ==== | ||
| + | === Générer le certificat === | ||
| + | Se positionner dans le répertoire de configuration de proftpd : | ||
| + | cd /usr/local/proftpd/etc | ||
| + | Pour générer le certificat voir : [[openssl#creer_un_certificat_ssl|Créer un certificat SSL avec OpenSSL]] | ||
| - | ==== Configuration ==== | + | === Configuration === |
| Ajouter les lignes suivantes dans le fichier de configuration ''/usr/local/proftpd/etc/proftpd.conf'' : | Ajouter les lignes suivantes dans le fichier de configuration ''/usr/local/proftpd/etc/proftpd.conf'' : | ||
| Ligne 97: | Ligne 115: | ||
| Cette configuration oblige une connexion sécurisée au client. | Cette configuration oblige une connexion sécurisée au client. | ||
| - | + | === Tester === | |
| - | ==== Tester ==== | + | |
| Lancer la commande suivante pour tester : | Lancer la commande suivante pour tester : | ||
| openssl s_client -connect 127.0.0.1:21 -starttls ftp | openssl s_client -connect 127.0.0.1:21 -starttls ftp | ||
| Ligne 108: | Ligne 125: | ||
| Mot de passe: | Mot de passe: | ||
| + | Liste des client FTPS et FTPES | ||
| + | |||
| + | * lftp : (disponible dans la plupart des distributions Linux) | ||
| + | * Filezilla : http://filezilla-project.org | ||
| + | * CoreFTP : http://www.coreftp.com | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== Configuration avec Mysql ==== | ||
| + | |||
| + | Pour activer proftpd avec Mysql et authentifier les utilisateurs avec un compte de la base de données | ||
| + | |||
| + | AuthOrder mod_sql.c mod_auth_unix.c | ||
| + | SQLEngine on | ||
| + | SQLBackend mysql | ||
| + | SQLAuthenticate user | ||
| | | ||
| + | # Indique le type de mot de passe s'il est clair ou chiffré choix : Plaintext Crypt OpenSSL | ||
| + | SQLAuthTypes OpenSSL | ||
| + | | ||
| + | # Auth base Mysql | ||
| + | SQLConnectInfo proftpd@mysqlserver:4020 proftpd password | ||
| + | | ||
| + | # SQLUserInfo [ user-table user-name passwd uid gid home-dir shell] | ||
| + | SQLUserInfo users username password uid gid homedir shell | ||
| + | | ||
| + | # Activation ou non du compte | ||
| + | #SQLUserWhereClause "LoginAllowed = 'true'" | ||
| + | | ||
| + | # Evite affichage nom compte systeme | ||
| + | SQLMinUserUID 700 | ||
| + | SQLMinUserGID 700 | ||
| + | | ||
| + | # Mise a jour droits pendant la session | ||
| + | SQLNegativeCache on | ||
| + | |||
| + | Si le mode **OpenSSL** est choisi pour la directive **SQLAuthTypes** le chiffrement du mot de passe se fera par exemple ainsi : | ||
| + | /bin/echo "{sha256}"$(/bin/echo -n "secret" | openssl dgst -binary -sha256 | openssl enc -base64) | ||
| + | |||
| + | Le résultat de la commande doit être inséré dans le champs mot de passe de la base. | ||
| + | |||
| + | Exemple de configuration pour logguer l'activité dans la base : | ||
| + | |||
| + | SQLNamedQuery R SELECT "max(NbReboot) from reboot" | ||
| + | SQLLog PASS,ERR_PASS updatecount | ||
| + | SQLNamedQuery updatecount UPDATE "count=count+1 WHERE username='%u'" users | ||
| + | SQLLog RETR,ERR_RETR emissions | ||
| + | SQLNamedQuery emissions INSERT "'','%u',now(),now(), '%h','%f', %b,'%r','%s',%P,%R" emissions | ||
| + | SQLLog STOR,ERR_STOR receptions | ||
| + | SQLNamedQuery receptions INSERT "'','%u',now(),now(), '%h','%f', %b,'%r','%s',%P,%R" receptions | ||
| + | SQLLog PASS,ERR_PASS debutconnexions | ||
| + | SQLNamedQuery debutconnexions INSERT "'','%u',now(),now(),NULL,NULL, '%h','%r','%s',%P,%R" connexions | ||
| + | SQLLog EXIT,ERR_EXIT finconnexions | ||
| + | SQLNamedQuery finconnexions UPDATE "DateFinConn=now(),HFinConn=now(), CommandConn='%r', CodeConn='%s' WHERE IdFtpd='%P' AND NbReboot='%R'" connexions | ||
| + | SQLLog MKD,ERR_MKD creationsr | ||
| + | SQLNamedQuery creationsr INSERT "'','%u',now(),now(), '%h','%f','%r','%s',%P,%R" creationsr | ||
| + | SQLLog RMD,ERR_RMD suppressionsr | ||
| + | SQLNamedQuery suppressionsr INSERT "'','%u',now(),now(), '%h','%f','%r','%s',%P,%R" suppressionsr | ||
| + | SQLLog DELE,ERR_DELE suppressionsf | ||
| + | SQLNamedQuery suppressionsf INSERT "'','%u',now(),now(), '%h','%f','%r','%s',%P,%R" suppressionsf | ||
| + | SQLLog RNTO,ERR_RNTO renames | ||
| + | SQLNamedQuery renames INSERT "'','%u',now(),now(), '%h','%f','%r','%s',%P,%R" renames | ||
| - | ===== Utiliser PROFTPD avec Mysql ===== | + | ===== Documentation ===== |
| + | * http://www.proftpd.org/docs/ | ||