Quanto è urgente un *** Riavvio del sistema richiesto *** per sicurezza?


54

Per imparare un po 'di amministrazione del server ho creato un semplice server Ubuntu 14.04 su cui gestisco un sito personale. L'ho impostato per installare automaticamente gli aggiornamenti di sicurezza, ma tralasciamo gli altri aggiornamenti. Questo sembra funzionare abbastanza bene. Occasionalmente ricevo un messaggio quando accedo al server (con ssh) dicendo:

*** System restart required ***

Le volte in cui ciò è accaduto, ho riavviato Ubuntu in modo semplice e tutto andava bene. Questo è ok perché è un semplice sito personale. Quello che mi chiedo, però, è come funziona per i webserver che dovrebbero essere in aumento del 99,9999% del tempo? Semplicemente non si riavviano e rischiano la violazione della sicurezza perché gli aggiornamenti di sicurezza non sono installati (cosa che non riesco a immaginare)? O prendono per scontato i tempi morti (cosa che non riesco nemmeno a immaginare)?

Come dovrei gestirlo se questo fosse un server di produzione molto importante che voglio mantenere attivo e funzionante? Tutti i suggerimenti sono ben accetti!

[MODIFICARE] So che posso farlo cat /var/run/reboot-required.pkgs per elencare i pacchetti che causano il riavvio. Il comando attualmente produce quanto segue:

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

ma come faccio a sapere se gli aggiornamenti sono piccole cose se ho una seria vulnerabilità di sicurezza se non faccio il riavvio?

[EDIT2] Ok, ho combinato i comandi che ho trovato utili in uno:

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

Se questo non produce nulla, non sembrano esserci problemi di sicurezza con un'elevata urgenza.

Un'ultima domanda però: lo sono low, medium, e high le uniche possibilità di urgenza, o ce ne sono di più simili per esempio critical o extremelyimportant?


Non capisco la domanda. I siti Web con un traffico più ampio pianificano semplicemente questo periodo di inattività per un periodo di tempo con meno traffico. Quanto è urgente dipende da cosa viene aggiornato esattamente.
Ramhound

14
Mi chiedo quante persone siano venute qui perché hanno visto la domanda nella lista "Hot Network Questions" e si sono chieste che cosa fossero le imprecazioni ... * alza la mano *
David Richerby

6
@Ramhound: Ehm, no, passano in modo trasparente a un server secondario per la durata della manutenzione.
Lightness Races in Orbit

1
Re l'ultima domanda: ho in mente di filtrare Basso e medio e considera urgenti tutti gli altri / livelli sconosciuti: | grep 'urgency=' | egrep -v '=(low|medium)'
KajMagnus

Risposte:


44

Non è una risposta semplice in quanto dipende dagli aggiornamenti fatti. Se il kernel ha un serio problema di sicurezza, è bene riavviare il prima possibile. Se il kernel ha solo correzioni minori, il riavvio potrebbe essere posticipato.

Se garantisci una disponibilità & gt; 99,9% allora si avrà quasi sempre un sistema cluster in cui è possibile riavviare i nodi uno alla volta senza interrompere il servizio.

Quindi riavvia il primo sistema e ricollegalo al cluster. Quindi il secondo e così via. Quindi il servizio non sarà mai disponibile.


2
Grazie per la tua risposta. Ho aggiunto un piccolo pezzo alla mia domanda iniziale; So che posso farlo cat /var/run/reboot-required.pkgs per ottenere i pacchetti che richiedono il riavvio. Ma come faccio a sapere se si tratta solo di correzioni minori o se si tratta di una grave vulnerabilità di sicurezza?
kramer65

2
@kramer65 ogni pacchetto ha un log delle modifiche. Per esempio. il changlog per il kernel può essere trovato Qui .
Uwe Plonus

2
Va bene, quindi è compito del sysadmin (in questo caso io stesso) determinare se tali cambiamenti sono importanti? Ho troppa poca conoscenza per determinare questo per il kernel di Linux, per non parlare di tutti gli altri pacchetti di zillion. Non c'è un posto centrale dove posso trovare una decisione se l'aggiornamento è assolutamente necessario per la sicurezza?
kramer65

8
@ kramer65 Esegui aptitude changelog <package>, ecco un esempio di output: paste.ubuntu.com/8410798 (Questo è su un sistema Debian, non su Ubuntu, ma lo stesso funzionerà anche su Ubuntu.)
nyuszika7h

5
Grazie per tutto l'aiuto qui. Ho finalmente combinato tutte le cose che ho imparato qui in un unico comando: xargs aptitude changelog < /var/run/reboot-required.pkgs | grep urgency=high (lo ha aggiunto anche alla domanda iniziale) che fornisce alcuni risultati su quali pacchetti hanno patch molto urgenti. Successivamente, è possibile ispezionare i singoli pacchetti. Grazie mille per tutte le risposte e le idee!
kramer65

3

addon per la soluzione argomento

Eseguo controlli analoghi per 'requisito di riavvio' per il sistema di monitoraggio zabbix

Vedo 2 numeri nella soluzione 'Argomento':

  1. l'attitudine di solito funziona male negli script. Io uccido un paio d'ore ma ancora non ha funzionato con zabbix
  2. se solo 1 registro delle modifiche include urgente aggiornamento: l'assegno mostrerà sempre risultati positivi

La mia logica è:

  1. Dai un'occhiata ultima modifica solo in changelog per ogni pacchetto che richiede il riavvio del sistema
  2. Come uno spettacolo mostra solo massima priorità aggiornare

utilizzando Documentazione di Debian Ho trovato 5 valori possibili per "urgenza" e anche il fatto che può essere seguito da caratteri uguali ("=") o punti e virgola (":"). Inoltre ci possono essere caratteri maiuscoli e minuscoli

Così ho finito col seguire:

#!/bin/bash
##################################
# Zabbix monitoring script
#
# Checking urgency in changelog 
# for updates which require system restart
#
##################################
# Contact:
#  anton.lugovoi@yandex.ru
##################################
# 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

Di conseguenza:

  • reboot_required_check.sh status restituisce 1 se è richiesto il riavvio, 0 se non lo è
  • reboot_required_check.sh urgency restituisce il più alto livello di 'urgenza' o '0' se il riavvio non è richiesto

Spero che aiuti qualcuno a risparmiare un po 'di tempo;)


0

Quello che mi chiedo però è come funziona per i web server che   dovrebbe essere su 99.9999etc% delle volte? Semplicemente non si riavviano e   rischio che la sicurezza venga violata perché gli aggiornamenti di sicurezza non lo sono   installato (che non riesco a immaginare)? O prendono il tempo morto per   concesso (che non riesco a immaginare neanche)?

I grandi server Web vengono riavviati quando * Richiesto il riavvio del sistema * appare per motivi di sicurezza.

Ma questo è trasparente per l'utente e il sito non è mai inattivo perché i grandi server spesso eseguono due o tre server che memorizzano esattamente gli stessi file e visualizzano lo stesso sito. Il primo è il server principale mentre gli altri due sono secondari e vengono utilizzati solo quando il server principale è inattivo.


1
Mentre questo è teoricamente corretto, Big web servers eseguire versioni personalizzate di Linux. Non vedranno a System restart required dialogo, aggiornano ciò di cui hanno bisogno per rimanere al sicuro. Nella maggior parte dei casi, molti se non tutti gli aggiornamenti possono essere eseguiti mentre il sistema è in esecuzione (credo che sia persino possibile aggiornare un kernel Linux su un sistema in esecuzione senza un riavvio).
joeeey

Interessante. Ho un server su Amazon e lo riavvio spesso a causa di questo messaggio ... Sto eseguendo Ubuntu sul mio server. Come personalizzarlo quindi non devo riavviarlo ogni tanto?
rom

Non ho alcuna esperienza con i server Amazon. Big web servers vengono eseguiti su server dedicati e VPS. Per questo motivo, l'amministratore di sistema ha più controllo sul software. Amazon ti offre l'accesso alla shell di root al tuo server?
joeeey

Sì, è possibile avere accesso root.
rom

Quindi aggiorna i pacchetti manualmente, quindi riavvia i servizi interessati e usa qualcosa di simile Ksplice per gli aggiornamenti del kernel sarebbe un modo. Vale la pena notare che Ksplice freezes execution of a computer so it is the only program running quando si applica una patch, quindi potrebbe esserci ancora un po 'di tempo di inattività (a causa del processo "congelato" del server web). È qui che arriva la risposta di @Uwe Plonus.
joeeey
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.