Outils pour utilisateurs

Outils du site


informatique:linux:proftpd

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:linux:proftpd [2009/03/13 13:46] – benoitinformatique:linux:proftpd [2009/05/05 12:08] (Version actuelle) – benoit
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 116: 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/
informatique/linux/proftpd.1236951979.txt.gz · Dernière modification : (modification externe)