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é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/​
informatique/linux/proftpd.1236953816.txt.gz · Dernière modification: 2018/09/06 19:00 (modification externe)