Mises à jour automatiques de Debian grâce à cron-apt

Pansement

Vous savez tous qu’aujourd’hui une bonne pratique pour sécuriser son serveur, c’est de le garder à jour. Sauf que il n’y a pas de mises à jour automatiques de Debian par défaut, il faut passer régulièrement sur le serveur pour faire votre apt-get update; apt-get upgrade à la main. C’est très bien pour de la production car les serveurs ne changent pas de config que lorsqu’un admin est dessus. Mais beaucoup moins pour la sécurité, car moins vous mettez à jour votre serveur, plus celui-ci à plus de chances de rester dans sa dernière version « stable » : comme il tourne bien, on va plus dessus, mode « if it works, don’t fix it » et du coup plus de patch des failles de sécu ! Mais ce temps là est terminé grâce à cron-apt : un simple utilitaire pour faire des mises à jour automatiques de Debian et autres linux. On va voir comment ça fonctionne ci dessous.

Installation

Toujours très complexe, hein, vous commencez à avoir l’habitude :

apt-get install cron-apt

 Fonctionnement et politique des mises à jour automatiques de Debian

Politique de sécurité
Politique de sécurité

Cron-apt exécute les actions demandées dans /etc/cron-apt/action.d, et ce, dans l’ordre lexicographique (soit le fichier « 1-quelque-qchose » en 1er, le « 2- » en second, etc..). Il est important de noter que, par défaut, cron-apt ne met pas à jour vos paquet : il se contente de les télécharger en local. C’est parfait pour un système pas connecté tout le temps au net comme votre portable ou des machines critique pour la production, ou plus simplement pour éviter de tuer la bande passante de votre boite en journée.

Par contre ça ne met pas à jour le serveur , il faut toujours passer à la main pour faire la mise à jour et vous êtes des gros flemmards hein? En plus, ce n’est clairement pas recommandé de mettre en mode « auto-full-update » vos serveurs pour des raisons évidentes de stabilité (sans parler de certains serveurs qui sont suffisamment ésotérique pour personne de veuille y toucher). Pour ma part, je pense que ça dépend simplement de l’usage de votre serveur, du niveau « d’entropie » de votre SI et de la sécurité nécessaire. A vous de construire une ou des règles plus ou moins strictes en fonction de vos besoins.

Mise à jour de sécurité uniquement

Par contre, dans la plupart des cas, on peut mettre à jour automatiquement uniquement pour les patchs de sécurités de ses serveurs. Et on peut configurer cron-apt pour faire ça à notre place. Pour cela, créer le fichier : /etc/cron-apt/action.d/5-security avec simplement la ligne suivante  :

upgrade -y -o APT::Get::Show-Upgraded=true 
# Ajouter l'option "-d" pour télécharger uniquement - utilse pour les tests.

Sauf que là on installe toutes les mises à jour sans distinction, c’est pas ce que je voulais faire. Il faut spécifier de prendre uniquement les dépôts « Security » de Debian. Pour faire ça, on va isoler ces dépôts dans /etc/apt/sources.list, en commençant par commenter les lignes « security » :

#déplacé dans /etc/apt/sources.list.d/security.list
#deb http://security.debian.org/ jessie/updates main
#deb-src http://security.debian.org/ jessie/updates main

Puis recopier ces mêmes lignes dans un nouveau fichier /etc/apt/sources.list.d/security.list :

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

Il suffit ensuite de configurer l’action n°5 de cron-apt pour qu’elle ne prenne que le fichier security.list comme source de dépôts. Pour cela, créer le fichier /etc/cron-apt/config.d/5-security , et collez-y le contenu suivant :

OPTIONS="-o quiet=1 -o APT::Get::List-Cleanup=false -o Dir::Etc::SourceList=/etc/apt/sources.list.d/security.list -o Dir::Etc::SourceParts=\"/dev/null\""

Et c’est bon, je vous laisse regarder le man en détails pour savoir ce que chaque option fait.

Mises à jour automatiques de Debian
Mises à jour automatiques

Éxécution manuelle de cron-apt

Pour forcer une exécution immédiate si vous voulez tester, tapez :

cron-apt

Tous les logs vont dans /var/log/cron-apt/log

Si vous souhaitez passer en mode full-update partout, je vous propose la commande suivante :

echo "upgrade -y -o APT::Get::Show-Upgraded=true" > /etc/cron-apt/action.d/4-YesUpgrade

Planification des mises à jour automatiques de Debian

vous pouvez contrôler l’horaire d’éxécution de l’autoupdate via une classique crontab dans /etc/cron.d/cron-apt :

# Every night at 4 o'clock.
 0 4 * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt

Et c’est plié, votre serveur se mettra à jour toutes les nuits à 4h du mat. Dans un environnement d’entreprise je vous conseille de monter un dépôt synchronisé en local et de faire 2-3 politiques types pour vos différents serveurs, par exemple :

  1. security-patch-pilot ;
  2. security-patch-all ;
  3. full-patch-pilot ;
  4. full-patch-all ; et
  5. no-patch ;

Et de gérer une crontab associé à chaque politique pour avoir un ensemble un peu cohérent.

Voilà, c’est tout pour aujourd’hui. J’espère que ça vous aidera au quotidien à la MCS de vos parcs linux.

@++

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.