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:12]
benoit
informatique:linux:proftpd [2018/09/06 19:10] (Version actuelle)
Ligne 3: Ligne 3:
  
  
- +===== Installation ​===== 
- +==== Pré-requis ====
-===== Compilation et 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 26: 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 35: 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 41: Ligne 42:
  
 ===== 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 109: 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 128: 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.1236953561.txt.gz · Dernière modification: 2018/09/06 19:00 (modification externe)