Cours-Proftpd-EFREI-Linux
13 pages
Slovak

Cours-Proftpd-EFREI-Linux

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
13 pages
Slovak
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Présentation du Protocole FTP etInitiation à ProftpdArnault TEISSIER ( teissier@efrei.fr )pour EFREI-Linuxv1.0, 25/11/2003v1.0, 25/11/2003 - Arnault TEISSIER ( teissier@efrei.fr ) - EFREI LinuxTable des matières 1 Introduction au FTP:...............................................................................................................3 1.1 L'implémentation de proftpd :..........................................................................................3 1.1.1 Avantages de proftpd :.............................................................................................3 1.1.2 Inconvénients de proftpd :........................................................................................3 1.2 Liste des modules disponibles pour proftpd :..................................................................3 1.3 Analyseur de Log :...........................................................................................................4 2 Configuration de proftpd :.......................................................................................................5 2.1 Configuration globale :.....................................................................................................5 2.1.1 Chrooter vos connexions :.......................................................................................6 2.1.2 Éviter les DOS attaques :.........................................................................................6 2.2 ...

Informations

Publié par
Nombre de lectures 39
Langue Slovak

Extrait

Présentation  du Protocole FTP  et Initiation à  Proftpd
Arnault TEISSIER ( teissier@efrei.fr )
pour EFREI-Linux
v1.0, 25/11/2003
v1.0, 25/11/2003 - Arnault TEISSIER ( teissier@efrei.fr ) - EFREI Linux
Table des matières
 1 Introduction au FTP:...............................................................................................................3  1.1 L'implémentation de proftpd :..........................................................................................3  1.1.1 Avantages de proftpd :.............................................................................................3  1.1.2 Inconvénients de proftpd :........................................................................................3 1.2 Liste des modules disponibles pour proftpd :..................................................................3  1.3 Analyseur de Log :...........................................................................................................4  2 Configuration de proftpd :.......................................................................................................5  2.1 Configuration globale :.....................................................................................................5  2.1.1 Chrooter vos connexions :.......................................................................................6  2.1.2 Éviter les DOS attaques :.........................................................................................6  2.2 Le système de log............................................................................................................6  2.3 Le système de limitations :..............................................................................................6 2.4 Configuration pour les compte anonyme :......................................................................7  2.5 Serveur FTP Virtuel :.......................................................................................................8  3 Problèmes et difficulté classique :........................................................................................10  3.1 Mode Actif / mode passif : la démystification :..............................................................10  3.1.1 Mode Actif :............................................................................................................10  3.1.2 Mode passif :..........................................................................................................10 3.2 Configuration pour que proftpd soit derrière du NAT :..................................................11 3.3 Utilisation d'un backend d'authentification : LDAP........................................................11
v1.0, 25/11/2003 - Arnault TEISSIER ( teissier@efrei.fr ) - EFREI Linux
1 Introduction au FTP:
Le protocole FTP ( File Transfer Protocol ) est, comme son nom l'indique, un protocole de transfert de fichier. Le protocole FTP est né en 1971, date à laquelle un mécanisme de transfert de fichiers (décrit dans le RFC  141) entre les machines du MIT ( Massaschussetts Institute of Technology ) avait été mis au point. De nombreux RFC ont ensuite apporté des améliorations au protocole de base, mais les plus grandes innovations datent de juillet 1973. Le protocole FTP est actuellement défini par le RFC 959 ( File Transfer Protocol (FTP) -Specifications ). Le FTP fonctionne sur le port de communication 21. Cependant il utilise aussi le port 20 pour le transfert de données. Il y a cependant plusieurs subtilitées sur le mode de fonctionnement du FTP que nous verrons dans ce document.
1.1 L'implémentation de proftpd : Proftpd est une implémentation opensource sous licence GPL du protocole FTP. Le serveur le plus utilisé a longtemps été Wu-FTPD, qui, de mon point de vue, est à proscrire pour des raisons de sécurité. De plus la prise en main de proftpd est plus aisée, surtout pour les personnes connaissants déjà Apache, leurs fichiers de configuration étant très similaires. 1.1.1 Avantages de proftpd : Une configuration puissante similaire à celle d'Apache.  Des serveurs virtuels. Comptes facilement chrootés. Pas besoin de binaire dans les prisons ou comptes chrootés. 1.1.2 Inconvénients de proftpd : Pas de commande SITE pour des raisons de sécurité. Certaine fonctionnalité sont gelée pour une meilleur sécurité. Comme vous l'aurez peut être compris, la sécurité est un point d'honneur de l'équipe de développement de proftpd, et malgré quelques problèmes qui reste assez rare, si une bon suivi du serveur est effectué, accompagné de mise à jour lorsqu'un exploit est annoncé contre ce serveur, il est d'une grande fiabilité et figure parmi les serveur FTP les plus sûrs. Pour tout le document qui suit, les exemples et directives cités s'appliquent au fichier de configuration unique de proftpd, nommé proftpd.conf et généralement situé dans le répertoire /etc/proftpd.conf
v1.0, 25/11/2003 - Arnault TEISSIER ( teissier@efrei.fr ) - EFREI Linux
1.2 Liste des modules disponibles pour proftpd : Proftpd propose un système de module afin de pouvoir étendre ses fonctionnalités, et de permettre au personnes désirant adapter proftpd à leur besoin. Les plus utilisées sont :  SSL/TLS support (mod_tls)  LDAP support (mod_ldap)  SQL support (mod_sql)  TCP wrappers support (mod_wrap) Il existe beaucoup d'autres modules diponibles, répondant à des besoins plus spécifiques. Vous pourrez vous les procurer accompagnés de leur documentation à l'adresse suivante : http://www.castaglia.org/proftpd/
1.3 Analyseur de Log : Il peut être intéressant de connaître l'activité de votre serveur FTP. Divers logiciels sont disponibles proposant des analyses utiles des accès générés par Proftpd. Il vous permette d'avoir une vue global sur le trafic et le nombre de visiteurs de votre serveur.  The Webalizer ( http://www.webalizer.org )  ftpweblog ( http://www.nihongo.org/snowhare/utilities/ftpweblog/ )
v1.0, 25/11/2003 - Arnault TEISSIER ( teissier@efrei.fr ) - EFREI Linux
2 Configuration de proftpd :
2.1 Configuration globale : On peux placer dans global des options qui se répercuterons sur l'ensemble des serveurs FTP sauf mention contraire ultérieure (dans un Virtualhost par exemple). Exemple de configuration : ServerName "nom de votre serveur" # Permet de choisir si le serveur est lancer par inetd ou de manière # autonome. ServerType standalone # Permet de cacher le nom et la version de votre serveur FTP. ServerIdent on <nom affficher lors d'une connexion> DeferWelcome off MultilineRFC2228 on DefaultServer on ShowSymlinks on AllowOverwrite on # Attention peu engendré des problème de sécurité. Cette directive active # le ftp bounce, souvent appelé FXP. Allowforeignaddress on # N'impose pas que l'utilisateur possède un shell associé dans le backend # gérant les authentifications. RequireValidShell off #Autorise de résumer ces download et upload. AllowRetrieveRestart on AllowStoreRestart on #Option de la commande LS. ListOptions "-l" #Permet d'eviter des problème de sécurité. DenyFilter \*.*/ #Definition des timeout TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 240 # Evite de faire de rLookup inutile. UseReverseDNS off
v1.0, 25/11/2003 - Arnault TEISSIER ( teissier@efrei.fr ) - EFREI Linux
# Définit le port de proftpd à 21, ce qui est le standard. Port 21 # C'est une bonne configuration par défaut pour les droits de fichiers. # L'utilisateur et le groupe ont tout les droits, et le reste du monde # peu seulement lire. Umask 002 # Définit l'utilisateur et le groupe par défaut de proftpd. User nobody Group nogroup 2.1.1 Chrooter vos connexions : Que signifie donc ce terme mystérieux? Chroot consiste tout simplement à enfermer l'utilisateur dans un répertoire précis, et de l'empêcher de se promener sur l'intégralité de votre disque dur en toute impunité. La directive suivante enfermera tous les utilisateurs dans leur répertoire personnel (défini ici par « ~ ») à l'exception des personnes appartenants au groupe staff. Elle peut être défini dans les paramètres globaux ou dans un Virtualhost. DefaultRoot ~ !staff 2.1.2 Éviter les DOS attaques : Afin d'éviter une attaque de type DOS, ou plus généralement une surcharge de votre serveur, vous devez limiter le nombre de connection total autorisé. Dans l'exemple ci-dessous, nous le limitons à 30, suffisant dans la majeur partie des cas. Ce paramètre ne peut être défini qu'une seul fois, dans la configuration global. MaxInstances 30 2.2 Le système de log Le système de log fonctionne comme sous Apache. Vous définissez des formats de log, que vous associez ensuite à des fichiers, et à des actions. Par exemple : LogFormat default "%h %l %u %t \"%r\" %s %b" LogFormat auth "%v [%P] %h %t \"%r\" %s" LogFormat write "%h %l %u %t \"%r\" %s %b" Ici, on définit trois formats de log differents ( default, auth, write) , que nous allons à présent pouvoir associer selon nos choix. Le format de log default est utilisé si aucun format n'est spécifié. ExtendedLog /var/log/proftpd/access.log WRITE,READ write ExtendedLog /var/log/proftpd/auth.log AUTH auth Nous associons à présent au fichier /var/log/proftpd/access.log le format de log « write » et lui delandons de garder trace de toutes activités de lecture et d'écriture. Pour le deuxième v1.0, 25/11/2003 - Arnault TEISSIER ( teissier@efrei.fr ) - EFREI Linux  
fichier, nous désirons logger toutes les authentifications faites sur notre serveur et choisissons pour cela le format « auth ».
2.3 Le système de limitations : Il est possible de préciser des règles particulières pour un répertoire, ou une commande FTP. Par exemple, la commande suivante permet d'écraser des fichiers dans le répertoire « /test », ce qui n'est pas forcément le cas du reste des dossiers:
# Nous voulons pouvoir écraser les fichiers du repertoire /test <Directory /test/*>  AllowOverwrite on </Directory>
Il est aussi possible de limiter une ou des commandes FTP. Pour cela, il faut utiliser la directive Limit prévue à cet effet : <Directory ~>  <Limit WRITE STOR RNFR DELE>  Order Allow,Deny  Deny ALL  </Limit> </Directory> <Directory ~/public html> _  <Limit WRITE STOR RNFR DELE>  AllowAll  </Limit> </Directory>
Dans cet exemple, nous interdisons (Deny ALL) les commandes WRITE STOR RNFR DELE dans le dossier ~, puis nous autorisons ces mêmes commandes dans le répertoire public_html.
2.4 Configuration pour les compte anonyme : Pour activer un accès anonyme à votre serveur FTP, il vous suffit d'ajouter ce qui suit à votre fichier de configuration. Décommentez la dernière partie pour donner accès en écriture aux utilisateurs anonymes.
<Anonymous ~ftp>  User ftp  Group nogroup  # Définit un alias rendant le login anonymous et ftp identique.  UserAlias anonymous ftp  RequireValidShell off
v1.0, 25/11/2003 - Arnault TEISSIER ( teissier@efrei.fr ) - EFREI Linux
 # Limit le nombre d'utilisateurs anonymes à 10.  MaxClients 10  # On veut que 'welcome.msg' s'affiche au login, et que '.message'  # s'affiche pour chaque nouveaux dossiers visités.  DisplayLogin welcome.msg  DisplayFirstChdir .message  # Interdit l'écriture dans tout l'environnement chrooté d'anonymous.  <Directory *>  <Limit WRITE>  DenyAll  </Limit>  </Directory>  # Décommentez ce qui suis si vous êtes vraiment sympa!  # <Directory incoming>  # # C'est une bonne configuration par défaut pour les droits de fichiers.  # # L'utilisateur et le groupe ont tout les droits, et le reste du monde  # # peu seulement lire.  # Umask 022 022  # <Limit READ WRITE>  # DenyAll  # </Limit>  # <Limit STOR>  # AllowAll  # </Limit>  # </Directory> </Anonymous> 2.5 Serveur FTP Virtuel : Contrairement aux serveurs web, le seul moyen de distinguer différents serveurs est de leur attribuer différentes adresses IP. En effet le nom de la machine utilisée pour contacter le serveur ne figure pas dans la requête FTP. Il est aussi possible de différencier les VirtualHost en changeant le port de communication utilisé. Par exemple on definit le serveur par défaut sur le port 21, et les Virtualhost sur les ports 2121, 2122, 2123, .... En dehors du port standard 21, il n'y a pas de règles pour choisir le port des VirtualHost, mais il faut tout de même éviter d'utiliser le port standard d'un autre logiciel. Pour mettre toutes les chances de votre coté, utilisez des ports supérieurs à 1024. Dans l'exemple ci-dessous, le serveur FTP virtuel VirtualHost  utilise l'adresse IP 10.0.1.227, différente de l'IP du serveur principal, et le même port de communication que défini dans les paramètres globaux. Le contenu de la section Virtualhost est par défaut le même que les paramètres globaux. Vous pouvez redéfinir tout les paramètres spécifiques à votre Virtualhost, qui diffèrent de la configuration globale. <VirtualHost 10.0.1.227>  ServerName "nom de votre serveur"
v1.0, 25/11/2003 - Arnault TEISSIER ( teissier@efrei.fr ) - EFREI Linux
 ServerAdmin ftpmaster@efrei.linux.fr  MaxLoginAttempts 2  RequireValidShell no  MaxClients 20  DefaultRoot ~  AllowOverwrite yes  <Directory ~>  <Limit WRITE STOR RNFR DELE>  Order Allow,Deny  Deny ALL  </Limit>  </Directory> _  <Directory ~/public html>  <Limit WRITE STOR RNFR DELE>  AllowAll  </Limit>  </Directory> </VirtualHost> Si vous souhaitez faire du virtual hosting par rapport au port de communication, il suffirait d'ajouter la directive « port » et de spécifier un port différent de celui défini dans la configuration globale. Vous devriez aussi remplacer 10.0.1.227 par l'IP du serveur par défaut.
v1.0, 25/11/2003 - Arnault TEISSIER ( teissier@efrei.fr ) - EFREI Linux
3 Problèmes et difficulté classique :
3.1 Mode Actif / mode passif : la démystification : 3.1.1 Mode Actif :
Le mode actif pose problème lorsque le client est derrière un firewall, car le serveur essayera de se connecter sur le port 1027, ce qui lui est interdit. Pour répondre a ce problème, le mode passif a été normalisé. 3.1.2 Mode passif :
Dans le cas du mode passif, que vous signalez au serveur grâce à la commande PASV, le serveur n'essayera pas de se connecter au client, il restera passif.... C'est le client qui effectue tout les tentatives de connexion. Un problème persiste cependant, si les 2 machines, cliente et serveur, sont derrière un firewall. Dans ce cas, il sera nécessaire de préciser au
v1.0, 25/11/2003 - Arnault TEISSIER ( teissier@efrei.fr ) - EFREI Linux
serveur les ports de communication qu'utilisera proftpd pour accepter les connexions du client, et demander à l'administrateur du firewall d'adapter ses règles avec votre configuration.
3.2 Configuration pour que proftpd soit derrière du NAT : Cette section décrit comment configurer proftpd pour qu'il fonctionne en mode passif alors qu'il est caché derrière une machine qui partage une connection internet avec de l' « address translation ». C'est la technologie souvent appelée masquerading sous linux et qu'utilise Windows lorsque vous utilisez le système de partage de connexion. Dans ce cas, le problème vient du fait que vous devez rediriger les ports 20 et 21 de la machine connectée à Internet vers votre serveur FTP, puisque ce dernier n'est pas directement accessible par une machine placée à l'exterieur de votre réseau. Or lorsque proftpd execute la commande ftp PORT, il utilisera l'adresse IP de l'interface réseau par lequel vous l'avez connectée, et par conséquent se présentera avec une adresse de votre réseau privé. Le client sera alors dans l'impossibilité d'établir une connection avec votre serveur FTP. Proftpd propose une solution qui consiste à utiliser la directive « MasqueradeAddress » pour préciser l'adresse IP public de votre machine connectée à Internet : MasqueradeAddress 217.128.219.7
Cependant, si l'on suit le schéma présentant le mode passif, on s'aperçoit que le client tente de se connecter au port au port 2024 (port choisi aléatoirement par Proftpd, communiqué au client) ce qui ne sera pas possible, puisque la machine connectée à internet n'est pas votre serveur FTP. Pour régler ce problème, il est possible de spécifier les ports de communication qu'ouvrira Proftpd dans le cas d'une connexion en mode passif : PassivePorts 12000 12015
Ici, Proftpd choisira un port compris entre 12000 et 12015 pour les connexions passives. Il ne vous reste alors plus qu'à rediriger les ports 12000 à 12015 de votre machine connectée à internet vers votre serveur FTP.
3.3 Utilisation d'un backend d'authentification : LDAP Pour conclure cette explication de Proftpd, parlons de l'authentification, un problème important dans la configuration des services, mais souvent complexe. Par défaut, Proftpd vous authentifie avec votre mot de passe personnel stocké soit dans /etc/passwd, soit dans / etc/shadow. Proftpd opère cette authentification à travers PAM. Il est cependant possible de configurer Proftpd pour récuperer les logins et mots de passe grâce à un backend qui permet d'accèder soit à une base SQL, soit à une base LDAP. Je préfère largement LDAP qui permet facilement d'utiliser les mêmes logins et mot de passe dans de nombreuses autres applications, très dificile avec du SQL.
v1.0, 25/11/2003 - Arnault TEISSIER ( teissier@efrei.fr ) - EFREI Linux
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents