English version (french below) - YunoHost 2.7 release - includes security updates
Hi everybody !
On our way to enable Debian Strech compatibility for YunoHost (which is not compatible yet, do not migrate yet), we are now releasing a new 2.7 stable version! We chose to dedicate this new release to Eben Moglen for his fight for free software, and because he was one of the first to propose the idea of an affordable personal server as an alternative against GAFAMs and Internet centralization.
This release includes :
- A significant upgrade of password storage security;
- Internal tools aiming to help future migrations (a tool to enable YunoHost to evolve in a more consistent and transparent way for you) ;
- Improvements in the DNS configuration suggestions and support for
.nohost.me
/.noho.st
(especially for DKIM) - Support for custom backup methods (while waiting for a proper Borg integration)
- A more understandable handling of âError 500â in the web-admin ;
- Many corrections and improvements, particularly on code quality ;
- More complete translations (Russian is beginning).
As this update includes security improvements, we HIGHLY recommend to apply it shortly.
A huge thank you to all those who have contributed to this version (Aleks, anmol26s, Bram, R., e-lie, Evgeniy Ozhiganov, CĂŽme Chilli, Jean-Baptiste Holcroft, JimboJoe, ljf, Maniack C, MCMic, opi, Remy Cabaret, all those who have tested and also those we may have forgotten to mention).
How to upgrade
Reminder YunoHost 2.x is not compatible with the new Debian version (Stretch, or 9.0), please read this thread before upgrading Debian Stretch | YunoHost is NOT YET compatible | YunoHost N'EST PAS ENCORE compatible
From web admin, go to âUpdate systemâ, then hit the âUpdateâ button in the âSystemâ bloc.
Or use the command line:
$ yunohost tools update
$ yunohost tools upgrade --ignore-apps
Note : if you update from web admin, to prevent this one being turned off while updating, new package installation related to the web admin is deffered. Youâll have to wait the next hour following the update (ex : 16h42 -> 17h) for the password migration to be effective.
In any case:
- Disconnect and reconnect from the admin interface (or use
yunohost tools shell -c 'print "OK"'
); - Ask each one of your users to disconnect and reconnect on the user portal (including yourself).
This procedure is necessary as password storage security will automatically be upgraded (technical points: the hashing algorithm from a lower security level to SHA512).
Detailed changelog
Improvements on password storage security
User and administrator password are now stored using SHA-512.
Details
For historical reasons and lack of solution on how to proceed, password hashing in YunoHost was based on low-quality algorithms. These were the default provided by LDAP, the system used to store user accounts and the Single Sign-On.
Users created from command line relied on MD5, the admin password relied on SSHA, and users who changed their password from the admin interface used SHA1.
Many researches and attempt to improve this were made, but were unsuccessful. About a week ago, while cleaning code, a new attempt was made and it was discovered that it is possible to use Linuxâs authentication system (also called crypt, but better known as âthe stuff in /etc/shadowâ) which can use SHA-512.
It was clear that things couldnât stay that way. Therefore, an implementation was made to use this new algorithm to store password (affecting YunoHost-core, Moulinette and SSOwat) and to migrate existing password hashes when reconnecting (since, as password as stored hash, the system canât access them at any other time).
Migration framework for files and data
This version includes a migration framework, which will allow us to make YunoHost evolve in a cleaner and more serene way.
DĂ©tails
It often happens that we need to change how information is stored or handled by YunoHost (for instance, this was the case for application lists), because programs changed their configuration format (this will be the case for Debian Stretch), or to fix known bugs (for instance, SSL certificate permissions for metronome).
Until now, we were often forced to ask you to manually perform actions in command line interface (which isnât easy for everybody) or to introduce code that handle backward compatibility.
The new tool introduced in version 2.7 will allow us to define transparent and automatic migrations, allowing us to make YunoHost evolve in a cleaner and more serene way. We expect this feature to be particularly useful when moving to Debian Stretch.
Migrations will be ran automatically after upgrading YunoHost. You can also manually manage migrations using the command line interface, but we donât recommend to play with it, it is mainly for debugging purpose.
Detailed commands related to migrations
# Display the list of available migrations
yunohost tools migrations list
# Show the current state of migrations
yunohost tools migrations state
# Launch remaining migrations (since the last one performed)
yunohost tools migrations migrate
# Migrate to a specific state. This can we useful to go backward in migrations
# (though, all of them are not cancelable/reversible)
yunohost tools migrations migrate --target $number
# Skip one or several migration if they don't work or are not mandatory
yunohost tools migrations migrate --skip
Custom backup methods
While on the road to a direct Borg integration in YunoHost, we finalized the integration of custom backup methods support. This allows you to define your own methods (instead of creating .tar.gz archives). An example is available on this topic which shows how to âmanuallyâ setup a remote backup with Borg.
Define and use a custom backup method
- Create a script in the backup_method hooks folder, for instance
/etc/yunohost/hooks.d/backup_method/05-mybackupmethod
- The script 05-mybackupmethod should manage actions
need_mount
,backup
andmount
. For now, to understand how it works, the easiest is to look at the script for Borg : https://paste.yunohost.org/raw/tiheromoce - Use
yunohost backup create
orrestore
with option--method mybackupmethod
Improvement in DNS management for .nohost.me / .noho.st
Until now, DKIM signatures (which are involved in reducing your outgoing mails spaminess) were badly handled for .nohost.me / .noho.st domains, especially on the DNS side. Mails sent from these domains were therefore likely to be flagged as spam⊠This is now solved in this version.
For existing domains, the update will automatically be made after your next IP change. If you want to force this fix to be applied, you can run this command on your instance : rm /etc/yunohost/dyndns/old_ip
.
Error handling in the admin interface
Previously, unexpected internal server errors (error 500) in the admin interface where breaking the rendering and made it unusable. This is now fixed and it now shows more meaningful information to pinpoint the issue (to be provided to developers).
Before
Now
Misc improvements
For users
- Fix some âfalse-negativesâ when attempting to install Letâs Encrypt certificates, where YunoHost wrongly thought that the domain looked badly configured ;
- The mail server now checks if a user is legitimate to address in âFromâ header when sending a mail ;
- In command line,
--help
now shows the description of the command ; - Display a warning for
yunohost domain dns-conf
, which recalls that this is just a recommended configuration, not an effective one ; - Add
yunohost tools reboot
andyunohost tools shutdown
, to be integrated in the web administration later ; - Add a timeout to
yunohost dyndns update
such that it does not block the lock ; - Shows a more understandable error message when an app manifest is incorrect ;
- Properly handle errors when a backup archive does not include an info.json ;
- Fix a bug in archive creation (files mounted in /home/yunohost.backup/tmp/ were not in read-only, which could lead to unhappy data destruction) ;
- When installing an app, the availability of the destination URL (e.g.
some.domain.tld/blog
) is checked before effectively launching the install.
For application packagers
New helpers are available:
-
ynh_package_autopurge
(#321) -
ynh_add_fpm_config
andynh_remove_fpm_config
(#284) -
ynh_restore_upgradebackup
andynh_backup_before_upgrade
(#289) -
ynh_add_nginx_config
andynh_remove_nginx_config
(#285) -
ynh_add_systemd_config
andynh_remove_systemd_config
(#287)
The change_url
script is now runned as root.
For developers
- Many pieces of code where cleaned up in YunoHost-core and Moulinette ;
- Itâs now possible to define subcategories in command line (e.g.
yunohost category subcategory action
). (Before, only categories were possible). - Add
yunohost tools shell
which allows to launch a development shell ; - New helpers for common IO operations in Moulinette https://github.com/YunoHost/moulinette/pull/141
- Change the lock behavior in Moulinette https://github.com/YunoHost/moulinette/pull/151
- Start documenting the Moulinette : https://moulinette.readthedocs.io
- includes a start of explanation about the actionsmap https://moulinette.readthedocs.io/en/latest/actionsmap.html
- and informations (and a sketch) about LDAP in YunoHost https://moulinette.readthedocs.io/en/latest/ldap.html
Version française - Sortie de YunoHost 2.7 - inclus des améliorations de sécurité
Bonjour tout le monde,
Dans notre lancĂ©e pour permettre Ă YunoHost de fonctionner sous Debian Strech (ce qui nâest pas encore le cas, nây passez pas encore), nous sortons une nouvelle version stable 2.7 ! Nous avons choisi de dĂ©dier cette version Ă Eben Moglen pour son combat pour le logiciel libre, et parce quâil Ă©tait lâune des premiĂšres personnes Ă proposer lâidĂ©e dâun serveur personnel abordable comme une alternative aux GAFAMs et Ă la centralisation dâInternet.
Cette version comporte :
- une amélioration significative de la sécurité du stockage des mots de passe ;
- des outils internes qui nous aiderons aux migrations (un outil pour pouvoir faire évoluer YunoHost de maniÚre plus cohérente et transparente pour vous) ;
- des améliorations sur la gestion de la recommandation de configuration DNS et sur la prise en charge des
.nohost.me
/.noho.st
(notamment pour le DKIM) - la prise en charge des mĂ©thodes de backup personnalisĂ©es (en attendant lâintĂ©gration Ă proprement parler de Borg)
- une gestion plus comprĂ©hensible des âerreurs 500â dans lâinterface dâadministration lorsquâelles surviennent ;
- de nombreuses corrections et améliorations, notamment sur la qualité du code ;
- des traductions plus complÚtes (début de traduction en Russe).
Cette mise Ă jour comportant des amĂ©liorations sur la sĂ©curitĂ©, nous vous recommandons FORTEMENT de lâappliquer rapidement.
Un tout grand merci Ă toutes les personnes ayant contribuĂ© Ă cette version (Aleks, anmol26s, Bram, R., e-lie, Evgeniy Ozhiganov, CĂŽme Chilli, Jean-Baptiste Holcroft, JimboJoe, ljf, Maniack C, MCMic, opi, Remy Cabaret ainsi que les personnes qui ont testĂ© et toutes celles quâon aurait oubliĂ© de citer).
Mettre Ă jour
Rappel YunoHost 2.x nâest pas compatible avec la nouvelle version de Debian (Stretch, ou 9.0), pensez Ă lire ce fil avant de faire la mise Ă jour Debian Stretch | YunoHost is NOT YET compatible | YunoHost NâEST PAS ENCORE compatible
Depuis lâinterface dâadministration, allez dans âMettre Ă jour le systĂšmeâ, puis appuyez sur le bouton âMettre Ă jourâ dans la partie âSystĂšmeâ.
Ou alors utilisez la ligne de commande :
$ yunohost tools update
$ yunohost tools upgrade --ignore-apps
Note : si vous mettez Ă jour depuis lâinterface dâadministration, pour que Ă©viter que celle-ci soit coupĂ©e pendant la mise Ă jour, lâinstallation des nouveaux paquets liĂ©s Ă celle-ci est diffĂ©rĂ©e. Il faudra donc attendre lâheure suivant la mise Ă jour (par exemple : 16h42 -> 17h) pour que le mĂ©canisme de migration des mots de passe soit effectif.
Dans tous les cas :
- DĂ©connectez-vous puis reconnectez-vous Ă lâinterface dâadministration (ou lancez
yunohost tools shell -c 'print "OK"'
); - Demandez à chacun de vos utilisateurs de se déconnecter puis se reconnecter sur le portail utilisateur (vous y compris).
Cette procĂ©dure est nĂ©cessaire car la sĂ©curitĂ© du stockage des mots de passe sera automatiquement amĂ©liorĂ©e (Ă©lĂ©ments techniques : lâalgorithme de hachage passera dâune version moins sĂ©curisĂ©e Ă SHA512.
Détails des nouveautés et modifications
Amélioration de sécurité sur le stockage des mots de passe
Les mots de passe utilisateurs et administrateurs sont maintenant stockés en SHA-512.
Details
Pour des raisons historiques et par manque de solution sur comment procéder, les mots de passe de YunoHost étaient hachés, lors de leur stockage, par des algorithmes de piÚtre qualité en terme de sécurité. En effet, ce sont les algorithmes fournis par défaut par LDAP, le systÚme utilisé par YunoHost pour stocker les informations des comptes utilisateurs et aussi utilisé dans le Single Sign-On.
Les utilisateurs crĂ©Ă©s via lâinterface en ligne de commande avaient du md5, le mot de passe administrateur en ssha et les utilisateurs ayant modifiĂ© leur mot de passe dans lâinterface (ssowat) utilisaient sha1.
Plusieurs recherches et tentatives ont Ă©tĂ© effectuĂ©es pour tenter dâamĂ©liorer cela, mais se sont rĂ©vĂ©lĂ©es sans succĂšs. Il y a peu (une semaine), lors dâun nettoyage de code, une nouvelle tentative Ă Ă©tĂ© effectuĂ©e et il a Ă©tĂ© dĂ©couvert quâil Ă©tait possible dâutiliser le systĂšme dâauthentification de linux (aussi appelĂ© crypt, mais plus gĂ©nĂ©ralement connu comme âle truc dans /etc/shadowâ) qui, lui, prend en charge lâalgorithme de hachage SHA-512
.
Il Ă©tait Ă©vident que les choses ne pouvaient rester ainsi. Le code a donc Ă©tĂ© modifiĂ© pour utiliser ce nouvel algorithme pour stocker les mots de passe (impactant YunoHost-core, Moulinette et SSOwat) et pour migrer automatiquement les hachages existants lors dâune reconnexion (comme les mots de passes sont hachĂ©s, le code ne peut y avoir accĂšs en dehors de ces moments).
Outil de migration des données/fichiers
Cette version intĂšgre un outil de migration qui nous permettra de faire Ă©voluer YunoHost de maniĂšre plus propre et sereine.
DĂ©tails
Il nous arrive rĂ©guliĂšrement dâavoir besoin de changer la façon dont certaines informations sont stockĂ©es ou gĂ©rĂ©es dans YunoHost (câĂ©tait le cas rĂ©cemment par exemple pour les listes dâapplications), parce quâun programme a changĂ© son format de fichier (ça sera le cas lors de la migration vers Debian Stretch), ou pour corriger des bugs connus (par exemple les permissions des certificats SSL pour metronome).
JusquâĂ prĂ©sent, nous Ă©tions de temps en temps obligĂ©s de vous demander dâeffectuer ces actions par vous-mĂȘme et en ligne de commande (ce qui nâest pas pratique pour tout le monde) ou dâintroduire du code qui assure une rĂ©trocompatibilitĂ©.
Le nouvel outil introduit dans cette version 2.7 nous permettra désormais de fournir des migrations automatiques et transparentes pour vous, nous permettant de faire évoluer YunoHost de maniÚre propre et sereine. Nous nous attendons à ce que cette fonctionnalité soit particuliÚrement utile pour le passage à Stretch.
Les migrations seront effectuées automatiquement aprÚs chaque mise à jour du paquet YunoHost. Vous pouvez également gérer les migrations manuellement, en ligne de commande, mais nous déconseillons fortement de jouer avec, cela est surtout présent pour du débugging.
Détail des commandes liées aux migrations
# Affiche la liste des migrations disponibles
yunohost tools migrations list
# Montre l'Ă©tat actuel des migrations
yunohost tools migrations state
# Lance les migrations restantes (reprend depuis la derniÚre effectuée)
yunohost tools migrations migrate
# Spécifie vers quelle migration on souhaite positionner l'installation, cela
# peut ĂȘtre utile pour revenir en arriĂšre si l'on souhaite annuler une migration
# (elles ne sont pas toutes annulables/réversibles)
yunohost tools migrations migrate --target $nombre
# Permet de sauter une/des migrations si jamais elles ne marchent pas et/ou ne sont pas nécessaires
yunohost tools migrations migrate --skip
Méthodes de sauvegarde personnalisées
En attendant lâintĂ©gration directe de Borg dans YunoHost, nous avons terminĂ© la mise en place de la prise en charge des mĂ©thodes de sauvegarde personnalisĂ©es. Vous pouvez ainsi dĂ©finir vos propres mĂ©thodes (plutĂŽt que la simple crĂ©ation dâune archive .tar.gz). Un exemple est disponile sur ce sujet qui montre comment mettre en place âĂ la mainâ une sauvegarde distante Ă lâaide de Borg.
Définir et utiliser une méthode de sauvegarde personnalisée
- Créer un script dans le dossiers des hooks backup_method, par exemple
/etc/yunohost/hooks.d/backup_method/05-mybackupmethod
- Dans le script 05-mybackupmethod, gérer les actions
need_mount
,backup
etmount
. Le plus simple pour le moment est de sâinspirer du script pour Borg : https://paste.yunohost.org/raw/tiheromoce - Utiliser
yunohost backup create
ourestore
avec lâoption--method mybackupmethod
Amélioration de la gestion des DNS pour les .nohost.me / .noho.st
JusquâĂ prĂ©sent, les signatures DKIM (qui jouent notamment dans le score de spam des emails envoyĂ©s par votre serveur) Ă©taient mal gĂ©rĂ©es pour les domaines en .nohost.me et .noho.st, notamment du cĂŽtĂ© des DNS. Les messages envoyĂ©s via ces domaines Ă©taient donc trĂšs susceptibles dâatterrir dans les spams⊠Câest dĂ©sormais rĂ©solu dans cette nouvelle version.
Pour les domaines existants, la mise Ă jour se fera au prochain changement dâIP de votre machine. Si vous souhaitez forcer lâapplication de cette correction, vous pouvez exĂ©cuter la commande suivante sur votre instance : rm /etc/yunohost/dyndns/old_ip
.
Gestion des erreurs dans lâinterface admin
Par le passĂ©, une erreur imprĂ©vue (erreur 500) sur lâinterface dâadmin cassait le rendu et la rendait inutilisable. Câest dĂ©sormais corrigĂ© et des informations pour comprendre le problĂšme (ou Ă fournir aux dĂ©veloppeurs) sont dĂ©sormais affichĂ©es.
Avant
Maintenant
Amélorations diverses
Pour les utilisateurs
- Suppression de certains âfaux-nĂ©gatifsâ pour lâinstallation des certificats Letâs Encrypt oĂč YunoHost pensait Ă tort que le domaine semblait mal configurĂ© ;
- Le serveur mail vĂ©rifie maintenant que lâutilisateur qui soumet le mail est lĂ©gitime Ă utiliser lâadresse dâexpĂ©diteur ;
- En ligne de commande
--help
affiche dĂ©sormais la description de la commande ; - Affichage dâun avertissement pour la commande
yunohost domain dns-conf
qui rappelle que ceci nâest quâune recommandation et pas la configuration effective ; - Ajout des commandes
yunohost tools reboot
etyunohost tools shutdown
en vue de les intĂ©grer dans lâinterface dâadministration ; - Rajout dâun dĂ©lai dâexpiration dans la commande
yunohost dyndns update
pour Ă©viter quâelle ne bloque ; - Sâil y a une erreur dans le manifest dâune application, un message dâerreur plus clair sera affichĂ© ;
- Une gestion dâerreur propre pour les archives de sauvegardes ne contenant pas de fichier info.json ;
- La correction dâun bug lors de la crĂ©ation dâune archive de sauvegarde (les fichiers montĂ©s dans /home/yunohost.backup/tmp/ nâĂ©taient pas en lecture seule, ce qui pouvait entraĂźner une destruction malencontreuse de donnĂ©es) ;
- Lors de lâinstallation dâune application, la disponibilitĂ© de lâURL dâinstallation (e.g.
un.domaine.tld/blog
) est dĂ©sormais vĂ©rifiĂ©e avant de lancer effectivement lâinstallation.
Pour les packageurs d'applications
De nouveaux helpers sont disponibles :
-
ynh_package_autopurge
(#321) -
ynh_add_fpm_config
etynh_remove_fpm_config
(#284) -
ynh_restore_upgradebackup
etynh_backup_before_upgrade
(#289) -
ynh_add_nginx_config
etynh_remove_nginx_config
(#285) -
ynh_add_systemd_config
etynh_remove_systemd_config
(#287)
Le script change_url
nâĂ©tait pas lancĂ© par lâutilisateur root, câest dĂ©sormais le cas.
Pour les développeurs
- De nombreuses zones du code ont été nettoyées dans yunohost-core et la moulinette ;
- Il est dĂ©sormais possible dâimplĂ©menter des âsous-catĂ©goriesâ en ligne de commande : exemple
yunohost category subcategory action
. (auparavant, seules les catégories étaient possibles) ; - Ajout de la commande
yunohost tools shell
qui permet dâavoir un shell de dĂ©veloppement - De nouveaux helpers sont disponibles dans la moulinette pour les opĂ©rations communes dâentrĂ©es/sorties https://github.com/YunoHost/moulinette/pull/141
- Modification du comportement du verrou de la moulinette https://github.com/YunoHost/moulinette/pull/151
- DĂ©but de documentation pour Moulinette : https://moulinette.readthedocs.io
- comprenant un dĂ©but dâexplication sur le fonctionnement de lâactionsmap https://moulinette.readthedocs.io/en/latest/actionsmap.html
- et des informations (et un schéma) du LDAP de YunoHost https://moulinette.readthedocs.io/en/latest/ldap.html