web-dev-qa-db-fra.com

Quelle est l'urgence d'un *** redémarrage du système requis *** pour la sécurité?

Pour apprendre un peu d'administration de serveur, j'ai configuré un simple serveur Ubuntu 14.04 sur lequel je gère un site Web personnel. Je l'ai configuré pour installer automatiquement les mises à jour de sécurité, mais je laisse de côté les autres mises à jour. Cela semble fonctionner assez bien. Parfois, lors de la connexion au serveur (avec ssh), je reçois un message disant:

*** System restart required ***

Les fois où cela s'est produit, j'ai simplement redémarré Ubuntu et tout allait bien. C'est ok parce que c'est un site web personnel simple. Ce que je me demande cependant, c’est comment cela fonctionne pour les serveurs Web, ce qui devrait représenter jusqu’à 99,9999% du temps? Ne redémarrent-ils pas et risquent-ils de compromettre la sécurité parce que les mises à jour de sécurité ne sont pas installées (ce que je ne peux pas imaginer)? Ou prennent-ils le temps d'arrêt pour acquis (ce que je ne peux pas imaginer non plus)?

Comment devrais-je gérer cela s'il s'agissait d'un serveur de production très important que je souhaite maintenir en activité? Tous les conseils sont les bienvenus!

[EDIT] Je sais que je peux faire cat /var/run/reboot-required.pkgs pour répertorier les packages qui provoquent le redémarrage. La commande génère actuellement les éléments suivants:

linux-image-3.13.0-36-generic
linux-base
dbus
linux-image-extra-3.13.0-36-generic
linux-base

mais comment puis-je savoir si les mises à jour sont de petites choses ou si j'ai une faille de sécurité grave si je ne fais pas le redémarrage?

[EDIT2] D'accord, j'ai maintenant combiné les commandes que j'ai trouvées utiles:

xargs aptitude changelog < /var/run/reboot-required.pkgs | grep urgency=high

Si cela ne produit rien, il ne semble pas y avoir de problèmes de sécurité urgents.

Une dernière question cependant: est-ce que low, medium et high sont les seules possibilités d’urgence, ou y en a-t-il d’autres, comme par exemple critical ou extremelyimportant?

54
kramer65

La réponse n’est pas simple car elle dépend des mises à jour effectuées. Si le noyau a eu un grave problème de sécurité, il est conseillé de redémarrer le plus rapidement possible. Si le noyau ne contenait que des correctifs mineurs, le redémarrage pourrait être différé.

Si vous garantissez une disponibilité> 99,9%, vous disposerez presque toujours d'un système en cluster où vous pourrez redémarrer les nœuds un par un sans interrompre le service.

Vous devez donc redémarrer le premier système et le rattacher au cluster. Puis le second et ainsi de suite. Ensuite, le service ne deviendra jamais indisponible.

44
Uwe Plonus

addon pour la solution de sujet

J'effectue une vérification similaire pour les "exigences de redémarrage" du système de surveillance zabbix

Je vois 2 problème dans la solution 'Topic':

  1. aptitude fonctionne généralement mal dans les scripts. Je tue quelques heures mais je ne l'ai toujours pas fait fonctionner avec zabbix
  2. si seulement 1 journal des modifications inclut une mise à jour urgente - votre chèque affichera toujours des résultats positifs

Ma logique est:

  1. Vérifiez le dernier changement uniquement dans changelog pour chaque paquet nécessitant un redémarrage du système.
  2. En tant que sortie, affichez uniquement la priorité la plus élevée

En utilisant la documentation Debian , j’ai trouvé 5 valeurs possibles pour 'urgence' et aussi le fait qu’elle puisse être suivie d’un signe égal ("=") ou d’un point-virgule (":" ) personnages. Il peut aussi y avoir des majuscules et des minuscules

Alors je me suis retrouvé avec:

#!/bin/bash
##################################
# Zabbix monitoring script
#
# Checking urgency in changelog 
# for updates which require system restart
#
##################################
# Contact:
#  [email protected]
##################################
# ChangeLog:
#  20151205    initial creation
#  20151208    check uniq packages only 
##################################

case "$1" in

status)
    if [ -f /var/run/reboot-required ]; then
      echo 1
    else
      echo 0
    fi 
    ;;

urgency)
    if [ -f /var/run/reboot-required.pkgs ]; then
      while read pkg; do
        tmp=`/usr/bin/apt-get changelog $pkg | \
             /bin/grep -m1 -ioP '(?<=[Uu]rgency[=:])(low|medium|high|emergency|critical)' | \
             tr '[:upper:]' '[:lower:]'`
        if [ -n $tmp ]; then
          if   [ "$tmp" == "low" ] && \
               [ "$urgency" != "medium" ] && \
               [ "$urgency" != "high" ] && \
               [ "$urgency" != "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=low
          Elif [ "$tmp" == "medium" ] && \
               [ "$urgency" != "high" ] && \
               [ "$urgency" != "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=medium
          Elif [ "$tmp" == "high" ] && \
               [ "$urgency" != "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=high
          Elif [ "$tmp" == "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=emergency
          Elif [ "$tmp" == "critical" ]; then 
            urgency=critical
            break
          fi
        fi 
      done < <(sort -u /run/reboot-required.pkgs)
    else
      urgency=none
    fi

    case "$urgency" in
        none)      urgency=0 ;;
        low)       urgency=1 ;;
        medium)    urgency=2 ;;
        high)      urgency=3 ;;
        emergency) urgency=4 ;;
        critical)  urgency=5 ;;
        *)         urgency=42 ;;
    esac

    echo $urgency
    ;;
esac
exit 0

Par conséquent:

  • reboot_required_check.sh status renvoie 1 si un redémarrage est requis, 0 sinon
  • reboot_required_check.sh urgency renvoie le niveau 'd'urgence' le plus élevé ou '0' si le redémarrage n'est pas requis

J'espère que ça aide quelqu'un à gagner du temps;)

3
user2658174

Ce que je me demande cependant, c’est comment cela fonctionne pour les serveurs Web, ce qui devrait représenter jusqu’à 99,9999% du temps? Ne redémarrent-ils pas et risquent-ils de compromettre la sécurité parce que les mises à jour de sécurité ne sont pas installées (ce que je ne peux pas imaginer)? Ou prennent-ils le temps d'arrêt pour acquis (ce que je ne peux pas imaginer non plus)?

Les gros serveurs Web sont redémarrés lorsque * Redémarrage du système requis * apparaît pour des raisons de sécurité.

Mais cela est transparent pour l'utilisateur et le site n'est jamais en panne, car les gros serveurs exécutent souvent deux ou trois serveurs qui stockent exactement les mêmes fichiers et affichent le même site. Le premier est le serveur principal tandis que les deux autres sont secondaires et ne sont utilisés que lorsque le serveur principal est en panne.

0
rom