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 14:46]
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 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: 2018/09/06 19:00 (modification externe)