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:14] benoit |
informatique:linux:proftpd [2018/09/06 19:10] (Version actuelle) |
||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
- | + | ===== Installation ===== | |
- | + | ==== Pré-requis ==== | |
- | ===== Compilation installation et configuration ===== | + | |
- | + | ||
- | + | ||
- | ==== Installation ==== | + | |
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 29: | 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 38: | 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 | ||
- | ==== Configuration ==== | + | ===== Configuration ===== |
+ | |||
+ | |||
+ | |||
+ | ==== Configuration basic ==== | ||
Exemple d'options pour sécuriser et optimiser le serveur FTP | Exemple d'options pour sécuriser et optimiser le serveur FTP | ||
# 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> | ||
- | ===== Utiliser PROFTPD avec SSL ===== | + | ==== Configuration avec SSL ==== |
- | + | === Générer le certificat === | |
- | + | Se positionner dans le répertoire de configuration de proftpd : | |
- | ==== Générer le certificat ==== | + | |
- | Se positionner dans le répertoire de configuration apache : | + | |
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 ==== | + | |
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 112: | 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 131: | Ligne 131: | ||
* CoreFTP : http://www.coreftp.com | * CoreFTP : http://www.coreftp.com | ||
- | ===== Utiliser PROFTPD 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/ |