Migration effectuée le 2017-07-28 (et jours suivants) par quidame, nicoo et lunar.

Le passage de Jessie à Stretch est aussi marqué, dans notre cas, par des changements de version majeure de certains programmes dont la mise à jour a demandé une attention particulière et fait l'objet d'une fiche séparée :

APT

Comme encore cette fois certains paquets ne sont pas disponibles dans les dépôts de Debian stable, on reconfigure APT pour pouvoir installer (et mettre à jour) ces programmes sur bulbe. Pour cela il a fallu simplement changer jessie pour stretch dans les fichiers sources.list et preferences, et ajuster le contenu des répertoires sources.list.d et preferences.d. Puis :

sudo etckeeper commit "Reconfiguration d'APT avant dist-upgrade"
sudo apt-get update
sudo apt-get dist-upgrade

À ce moment-là, la mise à jour de fail2ban provoquant une erreur et empêchant la mise à niveau d'autres paquets, suppression (temporaire) de fail2ban.

Durant la mise à jour proprement dite, tous les fichiers de configuration pour lesquels dpkg a demandé si on préférait installer la nouvelle version telle que fournie par le paquet, ou bien conserver la nôtre, tous ces fichiers on été listés (indépendamment de la réponse fournie à dpkg) pour pouvoir ensuite revenir dessus posément. Si possible, on repart du fichier fourni par le paquet, auquel on intègre nos particularités locales.

Post dist-upgrade

Plusieurs problèmes ayant souvent été traités simultanément, le récit suivant ne prétend pas respecter la chronologie des évènements.

SSH

On repart de la version du paquet pour sshd_config, auquel on ajoute nos préférences d'algorїthmes et le bloc Match à la fin pour les accès sftp-only.

On se rend compte que la paire de clefs ed25519 du serveur n'a jamais été créée :

sudo ssh-keygen -A
sudo rm /etc/ssh/ssh_host_dsa_key*
sudo systemctl restart ssh.service

Nginx

Conformément à la documentaion (NEWS.Debian.gz), il a fallu ajouter une directive globale dans /etc/nginx/nginx.conf pour que le site web fonctionne à nouveau :

include /etc/nginx/modules-enabled/*.conf;

Postfix

En attendant que bley soit de nouveau opérationnel, on a modifié main.cf pour ne pas utiliser bley, et on a pu ainsi constater que la mise à jour de postfix s'était bien passée.

Mailman

/usr/lib/mailman/Mailman/Handlers/SpamAssassin.py est incorrect, (Cf bug Debian). Du coup, on a appliqué le patch proposé par le rapporteur du bug, en protégeant notre nouvelle version de SpamAssassin.py avec dpkg-divert :

sudo -s
script="/usr/lib/mailman/Mailman/Handlers/SpamAssassin.py"
dpkg-divert --local --divert ${script}.divert --rename ${script}
cp ${script}.divert ${script}
vim ${script}
[…]
exit

La commande diff -u /chemin/fichier.divert /chemin/fichier nous donne ceci :

--- /usr/lib/mailman/Mailman/Handlers/SpamAssassin.py.divert    2017-07-28 21:22:12.658924783 +0200
+++ /usr/lib/mailman/Mailman/Handlers/SpamAssassin.py   2017-07-28 21:46:48.775485998 +0200
@@ -28,7 +28,6 @@
 from Mailman import Errors
 from Mailman.Logging.Syslog import syslog
 from Mailman.Handlers import Hold
-from Mailman.Handlers.Moderate import matches_p

 SPAMD_HOST    = getattr(mm_cfg, 'SPAMASSASSIN_HOST', '')
 DISCARD_SCORE = getattr(mm_cfg, 'SPAMASSASSIN_DISCARD_SCORE', 10)
@@ -78,7 +77,7 @@
     if MEMBER_BONUS != 0:
         for sender in msg.get_senders():
             if mlist.isMember(sender) or \
-                   matches_p(sender, mlist.accept_these_nonmembers, mlist.internal_name()):
+                   mlist.GetPattern(sender, mlist.accept_these_nonmembers, at_list='accept_these_nonmembers'):
                 score -= MEMBER_BONUS
                 break

BackupNinja

/usr/share/backupninja/sys est incorrect, et un bug a été rapporté à Debian à ce propos : sys handler wrongly reports warning due to wrong devices list. Notre nouvelle version du script aboutit au patch suivant :

--- /usr/share/backupninja/sys.divert   2013-10-12 12:30:06.000000000 +0200
+++ /usr/share/backupninja/sys  2017-07-31 14:15:59.483380445 +0200
@@ -568,7 +568,7 @@

 if [ "$partitions" == "yes" ]; then
    if [ "$dosfdisk" == "yes" ]; then
-      devices=`LC_ALL=C $SFDISK -l 2>/dev/null | grep "^Disk /dev" | /usr/bin/awk '{print $2}' | cut -d: -f1`
+      devices="$(lsblk -o kname,type | sed -rn '/disk$/s,^([^ ]+).*,/dev/\1,p')"
    if [ "$devices" == "" ]; then
       warning "No harddisks found"
    fi

Bley

En repartant du nouveau fichier /etc/bley/bley.conf fourni par le paquet, on commente la section [bleygraph] à la fin, et on introduit les modifications suivantes dans la section [bley] :

dbtype = pgsql
dbport = 5432
#dbuser = bley
#dbpass = bley
dnsbls = zen.spamhaus.org, bl.spamcop.net, ix.dnsbl.manitu.net
dnsbl_threshold = 2

Fail2ban

Il y a eu des changements importants dans fail2ban depuis qu'on l'a installé et configuré, et notre configuration n'est peut-être plus compatible. Plutôt que de chercher les erreurs, on supprime tous les fichiers .local trouvés dans le répertoire /etc/fail2ban, on réinstalle le paquet, et on crée le jail.local qui nous permet d'activer basiquement 4 jails pour les services ssh et http.