Maintenir à jour les logiciels d'un serveur est la première étape d'une bonne politique de sécurité. Il est bien sur facile de régulièrement vérifier les mises a jour disponibles et de les installer à la main, mais cette tâche demande une assiduité quotidienne, ce qui n'est pas toujours facile. Alors pourquoi ne pas automatiser la vérification, et même l'installation, et être prévenu en cas de besoin ?
C'est possible grâce à Cron-APT.

logo-debian.png


Présentation

Cron-APT utilise les informations présentent dans les fichiers du répertoire /etc/cron-apt/action.d/ comme paramètres pour "apt-get".
Il est lancé via une tâche Cron et permet ainsi de surveiller l'apparition de mises à jour, puis si besoin, soit d'envoyer un courriel à une adresse de votre choix pour avertir de la présence de mises à jour, soit de mettre automatiquement le système à jour.


Installation

Sous Debian et Ubuntu, rien de plus facile :

apt-get install cron-apt

Utilisation

Les fichiers de configurations de Cron-ATP se trouvent dans le répertoire /etc/cron-apt. Vous y trouverez le fichier de configuration principal, nommé config, ainsi que 9 répertoires, dans l'ordre :

  • action.d : Contient les actions, qui sont les paramètres pour apt-get.
  • config.d : Contient les configurations par action.
  • errormsg.d : Contient les messages à ajouter aux messages d'erreurs standard.
  • logmsg.d : Contient les messages à ajouter aux log et debug standard.
  • mailmsg.d : Contient les messages à ajouter aux courriel standard.
  • mailonmsgs : Contient les messages à ajouter avant le contenu du courriel envoyé. Le fichier contenant le message doit porter le même nom que la directive $MAILON.
  • syslogmsg.d : Contient les messages à ajouter aux messages standard envoyés vers syslog.
  • syslogonmsgs : Contient les messages à ajouter à la ligne de log envoyée à syslog. Le fichier contenant le message doit porter le même nom que la directive $SYSLOGON.

Les fichiers doivent avoir les mêmes noms que ceux présents dans "action.d".
Par exemple si vous avez un fichier nommé "5-install" dans le répertoire "action.d", et que vous voulez un message d'erreur personnalisé, le fichier à créer dans le répertoire "errormsg.d" doit également être nommé "5-install".

Pour simplement illustrer le fonctionnement, si vous ajoutez un fichier contenant "Bonjour !", nommé "0-update", dans le répertoire /etc/cron-apt/mailmsg.d. Tous les courriels envoyés par Cron-APT commenceront par "Bonjour !".

Le fichier "config"

Le fichier "config" est à paramétrer. Les deux principaux éléments à vérifier sont les variables "APTCOMMAND", qui détermine la commande à utiliser (apt-get par défaut, ou aptitude), et MAILTO, qui détermine à qui envoyer les rapports (root par défaut, ou une adresse email quelconque).

APTCOMMAND=/usr/bin/apt-get
MAILTO="root"

Voilà, par défaut Cron-APT va vérifier la disponibilité de mises à jour, les télécharger sans les installer et enfin envoyer un courriel à l'utilisateur "root" pour avertir si besoin. Il s'agit déjà d'une aide précieuse.

cron-apt.png

separateur.png

Automatiser l'installation des mises à jour

Pour installer automatiquement les mises à jour disponibles, il faut créer un fichier nommé "5-install" dans le répertoire "/etc/cron-apt/action.d/". Ajoutez la ligne suivante dans ce fichier :

dist-upgrade -y -o APT::Get::Show-Upgraded=true

Et voilà, les mises à jour seront installées automatiquement.

Notez que ce comportement n'est pas recommandé sur un serveur !
Il est préférable de faire les mises à jour à la main pour éviter toutes indisponibilités d'un service suite à un problème avec la nouvelles version installée.

separateur.png

Limiter la vérification aux mises à jour de sécurité

Il est parfaitement possible de faire en sorte que seul les mises à jour de sécurité soient installées. Pour cela, créez un fichier nommé /etc/apt/security.sources.list, et ajoutez ceci dans ce fichier :

# squeeze security
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free

Ensuite, décommentez la ligne suivante du fichier /etc/cron-apt/config :

OPTIONS="-o quiet=1 -o Dir::Etc::SourceList=/etc/apt/security.sources.list"

Dorénavant Cron-APT utilisera uniquement le fichier /etc/cron-apt/security.sources.list pour vérifier la présence de mises à jour, et ignorera donc les mises à jour autres que celles de sécurité.

separateur.png

Spécifier l'intervalle de mise à jour

Comme on peut s'en douter, Cron-APT utilise une tâche cron. Par défaut la vérification est réalisée chaque jour à 4 heures. Libre à vous de modifier ce comportement dans le fichier "/etc/cron.d/cron-apt".

#
# Regular cron jobs for the cron-apt package
#
# Every night at 4 o'clock.
0 4     * * *   root    test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt
# Every hour.
# 0 *   * * *   root    test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt /etc/cron-apt/config2
# Every five minutes.
# */5 * * * *   root    test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt /etc/cron-apt/config2

Un système à jour est la première pierre d'un système sécurisé !