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 15:16] benoit |
informatique:linux:proftpd [2018/09/06 19:10] (Version actuelle) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== PROFTPD ====== | ====== PROFTPD ====== | ||
- | ===== Installation ===== | ||
+ | |||
+ | ===== 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 22: | 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 31: | 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 | ||
Ligne 37: | Ligne 42: | ||
===== Configuration ===== | ===== Configuration ===== | ||
+ | |||
+ | |||
==== Configuration basic ==== | ==== Configuration basic ==== | ||
Ligne 43: | Ligne 50: | ||
# Permet de cloisonner les utilisateurs dans leur répertoire : | # Permet de cloisonner les utilisateurs dans leur répertoire : | ||
DefaultRoot ~ | DefaultRoot ~ | ||
+ | | ||
# L'utilisateur FTP n'est pas obligé d'avoir un SHELL valide (telque bash, ksh etc...) pour se connecter | # L'utilisateur FTP n'est pas obligé d'avoir un SHELL valide (telque bash, ksh etc...) pour se connecter | ||
RequireValidShell no | RequireValidShell no | ||
+ | | ||
# Evite les requetes DNS du serveur et permet donc une authentification plus rapide | # Evite les requetes DNS du serveur et permet donc une authentification plus rapide | ||
IdentLookups off | IdentLookups off | ||
UseReverseDNS 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 ==== | ==== Configuration avec SSL ==== | ||
=== Générer le certificat === | === Générer le certificat === | ||
- | Se positionner dans le répertoire de configuration apache : | + | Se positionner dans le répertoire de configuration de proftpd : |
cd /usr/local/proftpd/etc | cd /usr/local/proftpd/etc | ||
- | Lancer la commande pour générer la clé privée RSA : | + | Pour générer le certificat voir : [[openssl#creer_un_certificat_ssl|Créer un certificat SSL avec OpenSSL]] |
- | 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 | + | |
=== Configuration === | === Configuration === | ||
Ligne 116: | Ligne 130: | ||
* Filezilla : http://filezilla-project.org | * Filezilla : http://filezilla-project.org | ||
* CoreFTP : http://www.coreftp.com | * CoreFTP : http://www.coreftp.com | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
==== Configuration avec Mysql ==== | ==== 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 | ||
+ | |||
+ | ===== Documentation ===== | ||
+ | * http://www.proftpd.org/docs/ |