Installer et configurer un serveur ProFTPd

D’abord, installer Debian, puis installer et paramétrer ProFTPd pour servir dans un contexte scolaire avec authentification des utilisateurs par LDAP.

ProFTPd sur Debian 12 netinstall

Introduction

  1. Télécharger et installer une distribution Debian
  2. Mettre à jour la distribution et installer les paquets proftpd
  3. Configurer ProFTPd
  4. Créer un utilisateur
  5. Tester la configuration

1a. Télécharger

Depuis cette page : https://www.debian.org/distrib/ sélectionner Une image d’installation de taille réduite

soit la version netinstall. Sous Linux, ouvrir un terminal et télécharger avec l’outil wget :

wget https://cdimage.debian.org/debian-cd/current/i386/iso-cd/debian-12.1.0-i386-netinst.iso

Sous Windows, essayer wget dans le PowerShell : c’est un alias de la commande Invoke-WebRequest, ou encore en mode graphique avec le logiciel open source Free Download Manager.

1b. Installer

Nous devons dimensionner l’installation en fonction de l’objectif de stockage, et des ressources : puissance processeur et mémoire système. Par exemple, attribuer au serveur un espace de 30 Go avec 8 Go de RAM sur un serveur physique évolutif pouvant recevoir des espaces de stockage supplémentaires pour les données statiques.

Une installation de test est réalisée en machine virtuelle.

Pour une installation sur un ordinateur dédié, il sera possible de s’y connecter directement, ou en SSH moyennant l’installation du paquet openssh-serveur, par une authentification login/mot de passe, ou par la mise en place de clés SSH.

Pour ce test le mot de passe est rootroot (à ne surtout pas faire en production).

De même l’utilisateur créé se nomme mainadmin et, toujours pour cette installation de test uniquement, son mot de passe est mainadmin.

Pour tout ce qui est mise en production les mots de passe seront générés et stockés dans une base de données par un logiciel de gestion de mots de passe (par exemple avec le logiciel KeepassXC).

L’outil de partitionnement assisté propose de séparer certains répertoires. C’est à considérer dans la mesure où cela peut permettre de mieux gérer les espaces de stockage, en particulier pour les répertoires var, qui peut se retrouver plein si les logs s’accumulent trop (même si des stratégies de rotation de logs existent).

Voici un plan de partitionnement possible :

[—Système 30 Go—][—point de montage /var 20 Go—][—montage var/www 200 Go—][— /home 15 Go]

De plus, cela pourra être installé sur un volume LVM permettant au besoin de redimensionner les partitions à la volée, le tout sur une table de partitions GPT pour pouvoir installer des périphériques de stockages dotés de volumes supérieurs à 2,2 To, et de créer autant de partitions que souhaitées (limitées à 128 partitions ça laisse de la marge – https://fr.wikipedia.org/wiki/GUID_Partition_Table).

2. Mettre à jour et installer les paquets proftpd

Après l’installation du système, mise à jour des sources puis des paquets et installation de ProFTPd avec les dépendances que nous souhaitons.

Ce qui est proposé :

Paquets suggérés : openbsd-inetd | inet-superserver proftpd-mod-ldap proftpd-mod-mysql proftpd-mod-odbc proftpd-mod-pgsql proftpd-mod-sqlite proftpd-mod-geoip proftpd-mod-snmp proftpd-mod-crypto proftpd-mod-wrap

Ne connaissant pas tous les paquets je procède rapidement à une recherche avec « apt-show <paquet> » pour décider de ce que j’ajoute.

Par exemple, « apt show libmemcached11 » fournit un ensemble d’informations (plus ou moins compréhensibles 😂 ) dont l’URL vers memcached.org où il est écrit que c’est « un système de mise en cache d’objets à mémoire distribuée ».

Dans la liste des paquets suggérés on peut choisir certains composants pour le besoin spécifique de la structure : le mod-ldap si on veut l’intégrer à l’AD, choisir entre MySQL ou PosGreSQL etc.

Les choix pour cette installation :

proftpd, proftpd-mod-ldap, proftpd-mod-mysql, proftpd-mod-geoip, proftpd-mod-snmp

3. Configurer ProFTPd et sftp

Le fichier de configuration fourni comporte de nombreuses possibilités. Voici les choix réalisés pour notre cas de figure, en se basant sur ceux fournis par le site du projet ainsi que d’autres bon tutoriels.

3a. proftpd.conf

Rendons-nous sous « /etc/proftpd » puis passons en mode administrateur root. Nous y trouvons le fichier proftpd.conf, que nous modifierons avec un éditeur de textes.

En détail : pour éviter que nos configurations soient écrasées lors de mises à jour ultérieures nous copions les fichiers que nous devons éditer dans le sous-répertoire /etc/proftpd/conf.d.

/!\ Toute directive non fournie par le fichier de configuration, mais présentée dans des documentations récentes peut généralement être ajoutée dans le fichier de configuration personnalisé.

– Copier le fichier dans le sous-répertoire conf.d, changer de répertoire, et ouvrir le fichier en mode édition. Passer en mode administrateur root pour ces différentes opérations.

Le signe ‘#’ devant les lignes de commandes signifie qu’on est dans un environnement root, et ne doit pas être confondu avec le même signe ‘#’ dans les fichiers de configuration, qui lui, signale un commentaire non pris en compte par le système
# cp /etc/proftpd/proftpd.conf /etc/proftpd/conf.d/
# cd /etc/proftpd/conf.d/
# vim proftpd.conf        //  éditeur au choix, vim, nano, mc…
Il est aussi possible de renommer le fichier de configuration lorsqu’il est installé dans le sous-répertoire conf.d. du moment qu’il porte l’extension « .conf », comme « proftpd-ecoles.conf » ou autre.

– Changer le nom du serveur

Figure 1: On change la variable pour ServerName en MAIN

– Choisir le type de serveur (ici ligne 20)

ServerType standalone

C’est un choix adapté à un usage par de nombreux utilisateurs, (contrairement à inetd ou xinetd).

Il est possible de changer par la suite, en installant le paquet inetd et en configurant les fichiers proftpd.conf et inetd.conf (situés sous /etc/proftpd pour le premier et sous /etc pour le second).

– Confiner les utilisateurs dans le répertoire qui leur est assigné (ligne 39)

DefaultRoot ~

Autre choix possible : indiquer un nom de groupe que nous créons spécialement, plutôt que l’emplacement du répertoire personnel par défaut, auquel cas tous les membres de ce groupe pourront accéder au même répertoire. (Non pertinent si on veut créer plusieurs groupes).

Cela dépend de l’architecture que nous voulons construire. Par exemple créer des groupes pour l’usage des enseignants dans une école, (oui, il y a des méthodes de partages de fichiers plus adaptées, mais c’est juste un exemple) 1 par école, tant dans l’AD que dans le serveur ProFTPd, assigner les utilisateurs à ces groupes en fonction de leur affectation à l’une ou l’autre des écoles.

– Configuration du port

* Ligne 46, nous désactivons le port par défaut, qui sera configuré dans le fichier sftp.conf.

# Port 21

* Ligne 148 nous décommentons la ligne Include /etc/proftpd/sftp.conf

3b. sftp.conf

* Nous copions un fichier sftp.conf dans conf.d pour l’adapter à nos besoins.

Traduction des lignes 4 à 6 du fichier:

# Une fois activé, vous pouvez même désactiver le support du serveur sftps
# de OpenSSH sur le port 22
# Pour faire cela, commentez la ligne
# Subsystem sftp /usr/lib/openssh/sftp-server
# dans /etc/ssh/sshd_config et redémarrez le service.

Nous éditons le fichier /etc/ssh/sshd_config comme indiqué ci-dessus, car c’est pertinent dans notre contexte, et parce que tout service fonctionnant sans nécessité est une source de faille potentielle.

Dans le sftp.conf à nouveau, sous <IfModule mod_sftp.c> (ligne 9) on décommente les 3 lignes suivantes:

SFTPEngine     on
Port           2222
SFTPLog        /var/log/proftpd/sftp.log

La suite du fichier concerne des clés SSH, une méthode d’authentification qui nécessite la création de clés de chiffrement, à réserver aux administrateurs.

Pour les utilisateurs nous préférons la méthode login/mot de passe en passant par LDAP (avec Active Directory ou avec le logiciel libre UCS/Univention, par exemple) pour uniformiser les accès pour chaque utilisateur.

Pour cette raison, après la ligne #SFTPAuthMethods publickey nous ajoutons:

SFTPAuthMethods password

C’est tout pour ce fichier.

Référence : https://blog.victor-hery.com/2019/03/installer-sftp-proftpd.html

3c. Retournons dans l’édition du fichier proftpd.conf

À la ligne 46, nous avions commenté le Port 21 puisque configuré dans sftp.conf, avec le port 2222. (N’importe quel port peut lui être attribué tant que ce n’est pas un port réservé, cf. IANA.ORG).

– Permissions fichiers et répertoires

À la ligne 78 nous trouvons le Umask:

Umask 022 022 (Fichiers/Répertoires)
Les permissions par défaut étant 666 sur les fichiers et 777 sur les répertoires, nous ôtons 22 à chacun pour obtenir 644 755.

Le Umask 022 donnt les droits de lecture et d’écriture sur les fichiers pour le propriétaire et lecture uniquement pour le groupe et les autres.

Le même Umask sur les répertoires ajoute les droits d’accès pour tous. (Le droit d’exécution étant en fait un droit d’accès quand il s’applique à des répertoires).

– Authentification par LDAP

À la ligne 82 et 83 (en bas sur la capture d’écran) nous pouvons configurer le serveur SFTP pour s’authentifier par LDAP sur l’Active Directory:

Nous pouvons le laisser de côté pour l’instant et le configurer plus tard une fois que l’AD et les différents services seront déjà mis en place, l’important étant de pouvoir déjà le tester avec un premier utilisateur.

Si nous choisissons d’utiliser l’authentification LDAP pour se connecter au serveur SFTP, nous devrons également décommenter la ligne 137:

#Include /etc/proftpd/ldap.conf

et configurer le fichier ldap.conf.

Nous serons aussi intéressés par les fonctionnalités suivantes:

  • dnsbl (blacklisting par le DNS)
  • geoip (pour utiliser un anti-spam basé sur la géolocalisation)

Mais pas tout de suite : comme pour l’accès par LDAP, cela pourra se faire dans un second temps. Le fichier /etc/proftpd/modules.conf devra alors aussi être configuré, pour permettre le chargement des modules correspondants.

Dans la mesure où nous gérons l’ensemble des utilisateurs à travers une structure Active Directory, nous serons amenés à créer un groupe dédié pour l’accès au serveur SFTP.

Nous pourrons choisir de créer un accès individuel pour chaque enseignant, ou un accès commun pour chacune des 7 écoles, par exemple, puisque nous gérerons des regroupements scolaires.

Cela implique une logique dans la mise en commun de documents éducatifs, qui seront pertinents pour des classes de niveaux proches, en même temps qu’une simplification de la gestion des comptes : lorsqu’un compte sera créé, il sera ajouté au bon groupe, et lorsqu’il sera supprimé, il suffira de l’enlever du ou des groupes auxquels il est affecté.

4. Créer un utilisateur

Je souhaite maintenant créer un utilisateur pour tester la configuration. Bien sûr j’ai déjà un utilisateur de type Unix (utilisateur du système) que je pourrais utiliser pour tester.

Le but est de pouvoir créer des utilisateurs indépendants du système (non Unix) pour les gérer séparément, pour cette raison l’utilisateur déjà créé ne sera pas utilisé pour le test d’accès.

Nous allons créer deux nouveaux fichiers sous /etc/proftpd :

  • ftpd.passwd
  • ftpd.group

nous devrons passer des lignes de commandes pour créer l’utilisateur, son répertoire, son UUID, et le restreindre à l’accès au serveur FTP.

Pour ce dernier point, afin que les utilisateurs ne puisse pas se connecter au système d’exploitation proprement dit, nous allons ajouter /bin/false dans la liste du fichier /etc/shell.

# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/bin/false

(false est un binaire qui ne fait rien : voir « man false »)

Premier utilisateur virtuel imaginaire, Bernard Dubois, abrégé en bdubois. Le groupe sera nommé groupe_zola pour l’école Emile Zola (toute ressemblance avec une école existant ou ayant existé serait une pure coïncidence).

Une particularité sous Debian, comme dans certaines autres distributions, certaines commandes ne sont pas dans le $PATH : le chemin des executables. La commande echo $PATH en simple utilisateur, ou après être passé en mode root avec la commande su liste les répertoires du chemin des exécutables, le répertoire /sbin n’en fait pas partie.

La conséquence c’est qu’on n’aura aucun résultat si on envoie la commande ftpasswd dans la console, sans être dans un environnement root complet.

Pour passer « full root », nous invoquons ‘su -’.

Install Proftpd 7

Et nous créons le dossier home qui lui correspond (mkdir /home/bdubois) puis le premier utilisateur avec l’UID 1002 et ainsi de suite.

$ su -
# ftpasswd --passwd --name=bdubois --uid=1002 --file=/etc/proftpd/ftpd.passwd--home=/home/bdubois --shell=/bin/false

(Le \ en fin de ligne indique à l’interpréteur d’ignorer le saut de ligne qui suit, il considérera donc la ligne suivante comme la continuation de celle-ci. Cette astuce permet de découper une longue ligne en plusieurs lignes plus courtes, pour en améliorer la lisibilité).

Le shell demande un mot de passe. Ici, c’est 123azeqsd pour bdubois

Ensuite, nous créons le groupe groupe_zola et lui assignons l’utilisateur bdubois.

ftpasswd --group --name=groupe_zola --gid=1100 –file=/etc/proftpd/ftpd.group --member=bdubois

RESTE À FAIRE

Comment créer un accès :

configurer le répertoire de stockage pour le groupe auquel l’utilisateur appartient, lui fournir un fichier de test

passer en mode bridge, configurer une adresse IP statique

Comment configurer des quotas (ex : 200 Go, garder 5% de réserve sur le stockage)

Démarrer les services : Tester depuis Virtualbox/VMware

http://www.proftpd.org/docs/configs/basic.conf

https://fr.wikibooks.org/wiki/Administration_r%C3%A9seau_sous_Linux/ProFTPD

 

Les extensions réglages de cookies

Il y a une pléthore d’outils pour signaler et faire régler les préférences de cookies par les internautes. L’un des plus connus et utilisés actuellement sur les sites propulsés par WordPress est probablement Complianz. D’autres pourraient être intéressants à considérer, y compris en payant.

Complianz

Il n’est pas trop difficile à paramétrer et offre une conformité au RGPD. Cependant, il faut un compte premium pour profiter de tout le spectre des fonctionnalités. À côté de cela, la fonction gratuite peut suffire, et aucune information personnelle n’est demandée pour l’utiliser.
L’entreprise qui le développe est aux Pays-Bas, donc soumise au règlement Européen. https://wordpress.org/plugins/complianz-gdpr/
Il peut être accompagné de https://wordpress.org/plugins/complianz-terms-conditions/

Real Cookie Banner: GDPR (DSGVO) & ePrivacy

Il semble très attractif. Il y a beaucoup à lire pour faire le tour des informations (ce qui est le cas pour un grand nombre d’entre eux). Le plugin n’est pas encore traduit en français, à charge pour ceux qui le souhaitent de faire cela.

À tester prochainement. https://wordpress.org/plugins/real-cookie-banner/

Cookiebot CMP by Usercentrics

Un autre plugin de cookies très prometteur, mais il nécessite de s’inscrire, et de fournir sa carte bancaire (option payante ou gratuite, tout pareil).  Que ce soit en gratuit ou en payant, je trouve que c’est une mauvaise idée. Il y a d’autres méthodes pour payer des services, sans fournir l’accès direct à ses comptes bancaires à tout le monde et n’importe qui.
https://fr.wordpress.org/plugins/cookiebot/

Axeptio

Une petite société française de Montpellier, avec une présentation très fraîche du service. J’avais envie de l’essayer ce soir : en tant que particulier.
Or, il faut être inscrit sur le site, et même en tant que particulier il est nécessaire de fournir son adresse postale pour compléter l’inscription. En fait ça ne devrait pas être obligatoire, la règlementation sur la facturation ne requérant les informations postales que pour les entreprises. https://www.axept.io/fr
Je le testerai prochainement, en tant qu’entreprise.

Une suite à cet article sera disponible prochainement à la faveur de nouveaux tests, les plugins de cookies étant nombreux sur le marché : https://wordpress.org/plugins/search/cookie/.

Éditeur classique vs Éditeur Gutenberg

Dans le présent site, j’utilise le thème Miniva. Je rédige ce billet afin de faire un test croisé entre un blog et un autre.

En particulier, sur Linuxvillage.org, j’emploie Chronus, de ThemeZee. Et là je ne parviens plus à utiliser l’éditeur classique, restauré, comme ici, à l’aide de l’extension “Classic Editor”.

Le champ de rédaction ne répond pas. Si du texte y est inscrit il est invisible, je sais qu’il y est en affichant l’onglet HTML, mais dans l’onglet Visuel rien ne se passe.

Par ailleurs sur Linuxvillage.org, j’ai une extension pour gérer les langues, WPGlobus. Sur un autre site où j’ai WPGlobus, et encore un autre thème WordPress (thème Debut avec un thème enfant), l’interface de rédaction avec Classic Editor aussi devient quasi inaccessible, l’onglet Visuel n’affichant plus le contenu qu’un bref instant à l’ouverture de l’édition et lors d’un rafraîchissement de la page et le contenu disparaît aussitôt.

Mon navigateur web est Firefox, en dernière version stable. Je n’en ai pas essayé d’autre.

Ici, sans WPGlobus cela semble fonctionner parfaitement.

Je vais maintenant faire le même test sur https://citrotux.org, qui utilise Chronus, mais n’a pas WPGlobus.
Voyons si le Classic Editor ici fonctionne ?

………
……

Suite de l’histoire : sur le site citrotux.org avec le thème Chronus et pas de WPGlobus installé l’éditeur classique fonctionne.
Ici avec le thème Miniva j’ai voulu installer WPGlobus sur ce multisites, et l’activer uniquement sur le présent sous-site melodie.citrotux.org : bingo, l’onglet Visuel n’affiche plus le texte, et ne permet pas d’un insérer le curseur permettant de démarrer l’édition d’un texte.

À noter que ce phénomène est aléatoire, et peut se produire, ou pas, à chaque étape du processus d’édition. Par exemple avoir avoir mis à jour cet article pour l’enregistrer, une fois revenue sur l’onglet “Visuel”, je suis à nouveau en mesure d’y ajouter ces quelques lignes.

Et après avoir ajouté ces dernières lignes depuis l’onglet Visuel, j’ai cliqué sur le bouton “Mettre à jour” dans la barre des outils à droite du champ de rédaction, et hop ! Le champ “Visuel” n’affiche à nouveau plus rien et ne permet plus l’édition. Je suis revenue dans l’onglet “Texte” pour ajouter cette dernière observation…