Installation et configuration de proFTPd
On a vu que le web n'est qu'une des possibilités de l'utilisation d'internet. Le File Transfert Protocol, c'en est une autre qui était à la base axée sur l'échange de fichier entre deux machines. Comme on peut mettre à disposition des informations mises en page et formatées, on peut vouloir mettre à disposition des données dont la finalité n'est pas d'être visibles mais accessibles. Mais l'un n'empêche pas l'autre, et le FTP est surtout pratique quand on a pas accès à la machine sur laquelle on veut déposer les fichiers d'un site.
Mais ce protocole là n'est pas vraiment sécurisé ; les données sont envoyées en clair, ce qui inclue les identifiants et mot de passes. C'est pourquoi il est recommandé, comme pour le HTTP, de passer par une couche de connexion encryptée SSL, pour faire ce qu'on appelle du FTPS ou FTPES.
Les permissions
Une petite digression pour parler un peu des permissions (http://doc.ubuntu-fr.org/permissions). C'est un terme que vous avez peut-être rencontré en vous servant d'un client ftp, ou dans un tuto. Donc dans le monde Unix, il existe la notion de permissions. Il s'agit de définir qui a accès à un fichier, et ce qu'il peut faire avec. Il existe trois types de permissions: lire, écrire, et lister/exécuter.
Il existe de plus trois niveaux d'identité sous Gnu/Linux, qui sont l'utilisateur (ou propriétaire), le groupe et tous les autres. Un utilisateur peut faire partie d'un ou plusieurs groupes. On peut donc protéger assez simplement l'accès à un fichier ( ce qui ne veut pas dire le protéger ou l'encrypter ) en définissant ses permissions.
Un exemple : On a deux utilisateurs sur un système, Machin et Truc. Machin à ses dossiers privés, auxquels il ne veut pas qu'on accède. Il est le propriétaire de ces fichiers, et il va définir les permissions des autres de façon à ce qu'ils n'aient aucune permission sur ces données. C'est privé, pas touche. Personne d'autre que Machin n'a le droit d'ouvrir, de modifier ou d'exécuter.
Machin et Truc bossent ensemble sur un projet et ils ont besoin d'un répertoire où ils peuvent mettre des données en communs, et auxquels chacun des deux a accès. Machin crée un dossier et le fait appartenir au groupe Amis, qu'il crée pour l'occasion. Il ajoute Truc au groupe Amis. Puis il définit les permissions de ce dossier pour que le groupe Amis y ait accès en lecture, écriture et exécution. Tous les droits quoi. Mais seulement les utilisateurs qui font partie du groupe Amis ont ces droits. Bidule est chargée du suivi de projet, et ne fait pas partie du groupe Amis. Machin donne la permission à tous ceux qui ne font pas partie du groupe Amis d'afficher le contenu du dossier, et Bidule peut ainsi faire son travail, et voir les fichiers, sans pouvoir les modifier.
Il existe plusieurs autres façons de noter les permissions d'un fichier, dont l'octal, qui est souvent utilisée. Dans cette notation sur trois chiffres, chaque permission attribuée équivaut une valeur numérique. Si toutes les permissions sont attribuées, on obtient 7, si aucune ne l'est, on obtient 0. Les trois chiffres représentent respectivement les permissions du propriétaire, du groupe, et des autres.
Voici les équivalences numérique des permissions :
- lecture : 4
- Ă©criture : 2
- exécution : 1
- permission nulle : 0
Si on reprend le dernier exemple, on peut donc retrouver la représentation octale des permissions :
^ Description ^ Lecture ^ Écriture ^ Exécution ^ Résultat |
Machin Ă tous les droits : | 4 + | 2 + | 1 | = 7 |
Le groupe Amis a tous les droits : | 4 + | 2 + | 1 | = 7 |
Les autres ont le droit de lecture : | 4 + | 0 + | 0 | = 4 |
La notation octale des permissions sur le dossier sera donc de 774.
En général sur un ftp, on recommande de régler les permissions des dossiers à 755, et les permissions de fichiers à 644.
proFTPD
Installation
Pour installer proFTPD, il suffit de chercher dans les modules inutilisés de Webmin. Après avoir cliqué sur le nom du module, on devrait vous proposer son installation dans la partie droite de la page.
En ligne de commande, un simple :
sudo apt-get install proftpd-basic
Une fois installé, vous pouvez accéder au module de configuration et d'administration depuis le module "Serveurs" de Webmin. Lors de l'installation, il vous sera demandé si vous préférez lancer le serveur FTP comme un processus indépendant ou comme un sous processus inetd . Un processus indépendant est recommandé si vous prévoyez une utilisation lourde du ftp ( plusieurs utilisateurs, mises à jour fréquentes...).Choisir inetd revient à minimiser les ressources utilisées mais nécessite son installation et sa configuration, et est préconisée pour une utilisation occasionnelle du ftp...
Configuration
Vous remarquerez que ça ressemble un peu à Apache à ce niveau : Un serveur virtuel par défaut, et la possibilité de créer des hôtes virtuels...
N'hésitez pas à faire un tour pour voir un peu tous les réglages disponibles.
Une fois que c'est fait, on va faire quelques petits réglages pour sécuriser un peu le serveur et puis le personnaliser.
À chaque étape, n'oubliez pas de sauvegarder. En fin de configuration, appliquez les changements en utilisant le bouton adéquat.
Dans "Authentification" :
- RĂ©glez "Autoriser les connexions root" Ă "Non".
- Réglez "Interdire l'accès aux utilisateurs dans /etc/ftpusers" à "Oui"
Dans "Utilisateurs FTP interdits" :
- Ajoutez tous les noms d'utilisateurs sauf le vôtre ( et ceux des utilisateurs autorisés )
Dans "Contrôle d'accès" :
- Modifiez éventuellement les messages de connexion réussie / échouée
Dans "Fichiers et dossiers" :
- Vous pouvez régler "Encager les utilisateurs dans le répertoire" à "Répertoire utilisateur". De cette façon, les utilisateurs qui se connectent ne pourront avoir accès aux répertoires systèmes.
Une fois que c'est fait, rendez-vous dans les options du serveur par défaut en cliquant sur le globe.
Dans "Divers" :
- Spécifiez une adresse mail pour que les utilisateur puissent contacter l'administrateur ( vous ? )
- Vous pouvez spécifier un nom de serveur différent du nom réel du serveur.
Dans "FTP anonyme" puis "Configurer le FTP anonyme" :
- Limitez à un répertoire que vous aurez créé afin d'encager les connexions anonymes.
FTPES
FTPES pour File Transfer Protocol over Explicit SSL est la version cryptée et sécurise de FTP. Il est recommandé de le mettre en place.
Pour activer la connexion sécurisée au serveur FTP, il faut dans un premier temps configurer et activer l'encryptage, puis configurer les clients utilisés pour se connecter au serveur.
Génération d'un certificat
Pour l'encryptage, SSL utilise une clé privée et un certificat qu'il va falloir générer.
À moins d'avoir déjà configuré votre accès SSH, vous ne pourrez pas la générer directement sur le serveur. On va donc la générer sur la station où on se trouve, puis l'envoyer au serveur.
Dans un terminal sur votre station donc :
sudo openssl req -new -x509 -days 365 -nodes -out proftpd.cert.pem -keyout proftpd.key.pem
Vous allez devoir donner plusieurs informations sur le serveur ( adresse électroniqe, ville, pays...). Toutes ces informations seront inclues dans le certificat d'authenticité généré. Elles ne seront pas envoyées sur internet.
Une fois que vous aurez répondu à toutes les questions, le programme va générer une clé et un certificat. Il utilise l'entropie de l'ordinateur pour effectuer son calcul, ce qui veut dire que vous devez utiliser l'ordinateur au maximum pendant ce temps. N'hésitez pas à lancer plusieurs applications, écouter de la musique, regarder une vidéo...
Une fois la clé et le certificat générés, ils doivent se trouver dans votre dossier d'utilisateur : proftpd.cert.pem et proftpd.key.pem
Pour les envoyer au serveur, on va utiliser le gestionnaire de fichiers de webmin. Rendez-vous dans le dossier /etc/proftpd et créez un nouveau dossier "ssl".
Une fois le dossier créé, ouvrez le puis envoyez au serveur les deux fichiers créés à l'étape précédente.
Il reste à régler les permissions de ces fichiers en entrant successivement ces commandes dans le module "Commandes shell" qui se trouve dans "Autres" :
sudo chmod 0640 /etc/proftpd/ssl/proftpd.cert.pem sudo chmod 0600 /etc/proftpd/ssl/proftpd.key.pem
Ces deux commandes servent Ă changer les permissions sur les fichiers qu'on vient d'uploader, et si vous avez bien suivi, vous ĂŞtes capable de dire qui peut faire quoi avec ces fichiers !
RĂ©glage de proFTPD
Attention, cette étape nécessite une manipulation des fichiers de configuration du serveur ftp. Il convient d'être prudent et de bien faire attention à la syntaxe. Il ne reste plus qu'à activer la connexion encryptée dans la configuration de proFTPD. Pour cela, dans le module "Serveur proFTPD" de webmin, allez dans "Modifier les fichiers de configuration".
Dans le fichier texte qui s'affiche, cherchez les lignes suivantes et supprimez le "##" qui se trouve devant "Include /etc/proftpd/tls.conf"
1.
2. This is used for FTPS connections
3.
4. Include /etc/proftpd/tls.conf
Vous pouvez en profiter pour ajouter la ligne suivante :
MasqueradeAddress xx.xx.xx.xx
OĂą xx.xx.xx.xx est votre adresse Ip publique. Cette mesure permettra d'Ă©viter les messages d'erreurs sur une ip non routable lors de tentatives de connexion via votre client FTP.
Sauvegardez, puis revenez dans la même section. Cette fois, au dessus du fichier texte, dans le menu déroulant, sélectionnez "/etc/proftpd/tls.conf" puis cliquer sur le bouton "Modifier les directives dans le fichier:".
Un autre fichier de configuration s'ouvre alors. Modifiez le de façon à ce qu'il ressemble à ceci :
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
PassivePorts 60000 65535
TLSRSACertificateFile
/etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile
/etc/proftpd/ssl/proftpd.key.pem
TLSOptions NoCertRequest
AllowClientRenegotiations
TLSVerifyClient off
TLSRequired on
La plupart des lignes existe déjà dans le fichier et sont soit précédées d'un "##" qu'il faut alors supprimer, soit leur valeur n'est pas la même, et il faut alors également procéder au changement.
Si vous voulez laisser le choix aux utilisateurs entre utiliser une connexion classique ou encryptée, réglez la dernière ligne ( TLSRequired ) à "off" au lieu de "on".
La seule ligne que vous devriez avoir Ă ajouter est celle ci : S
PassivePorts 60000 65535
Une fois que tout ça est fait, sauvegardez et appliquez les changements en cliquant sur le gros bouton de la page principale du module.
RĂ©glage du client ftp Filezilla
Pour utiliser la connexion encryptée, il faut indiquer explicitement au client ftp de l'utiliser. Filezilla étant le client le plus répandu et installé par défaut sous Ubuntu, c'est avec son exemple que je vais continuer, mais la configuration des autres client ftp devrait être semblable.
Dans le gestionnaire de site de Filezilla :
Créez un nouveau site, et indiquez vos informations de connexion en précisant bien que le type de serveur est un FTPES :
Dans les autres onglets, réglez les options suivantes :
- Onglet Avancé : Type de serveur : Unix
- Onglet Paramètres de transfert : Mode : Passif
- Onglet Jeu de caractères : Forcer l' UTF-8
Lors de votre première connexion, il vous sera demandé d'accepter le certificat d'authenticité, que vous pouvez accepter par défaut en cochant la case en bas de la fenêtre.
Wouhou ! Et maintenant ?
Maintenant c'est la fête, vous pouvez vous connecter à distance pour déposer des fichiers sur votre ftp, et donc mettre à jour votre site, partager des fichiers sur internet et installer des applications web...Ce que nous verrons d'ici quelques chapitres.