Quão urgente é um *** A reinicialização do sistema é necessária *** para segurança?

54

Para aprender um pouco da administração do servidor, eu configurei um servidor Ubuntu 14.04 simples no qual eu gero um site pessoal. Eu o configurei para instalar automaticamente as atualizações de segurança, mas deixei de fora as outras atualizações. Isso parece funcionar muito bem. Ocasionalmente eu recebo uma mensagem quando estou logando no servidor (com ssh) dizendo:

*** System restart required ***

As vezes que isso aconteceu eu reiniciei o Ubuntu e tudo estava bem. Isso é bom porque é um site pessoal simples. O que eu me pergunto, porém, é como isso funciona para servidores web, que deve ser até 99,9999% do tempo? Eles simplesmente não reiniciam e arriscam a segurança sendo violada porque as atualizações de segurança não estão instaladas (o que não consigo imaginar)? Ou eles tomam o tempo de inatividade como certo (o que eu não consigo imaginar também)?

Como devo lidar com isso se esse fosse um servidor de produção muito importante que eu gostaria de manter em funcionamento? Todas as dicas são bem vindas!

[EDITAR] Eu sei que posso fazer cat /var/run/reboot-required.pkgs para listar os pacotes que causam a reinicialização. O comando gera atualmente o seguinte:

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

mas como saber se as atualizações são pequenas coisas sobre se tenho uma vulnerabilidade de segurança grave se não fizer a reinicialização?

[EDIT2] Ok, agora combinei os comandos que encontrei para serem úteis em um:

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

Se isso não resultar em algo, não parece haver problemas de segurança com alta urgência.

Por fim, uma última pergunta: low , medium e high são as únicas possibilidades de urgência ou há mais, por exemplo, critical ou extremelyimportant ?

    
por kramer65 23.09.2014 / 11:26

3 respostas

44

Não há uma resposta simples, pois depende das atualizações feitas. Se o kernel tiver um sério problema de segurança, é bom reiniciar o mais rápido possível. Se o kernel tivesse apenas pequenas correções, o reinício poderia ser adiado.

Se você garantir uma disponibilidade > 99,9%, então você quase sempre terá um sistema em cluster onde você pode reinicializar os nós, um por um, sem interromper o serviço.

Então, você reinicializa o primeiro sistema e o anexa ao cluster. Então o segundo e assim por diante. Então o serviço nunca ficará indisponível.

    
por 23.09.2014 / 11:35
3

addon para a solução do tópico

Realizo verificação semelhante para 'requisito de reinicialização' para o sistema de monitoramento do zabbix

Eu vejo 2 edições na solução "Tópico":

  1. o aptitude geralmente funciona mal em scripts. Eu mato algumas horas, mas ainda não fez funcionar com zabbix
  2. se apenas 1 changelog incluir atualização urgente - sua verificação sempre mostrará resultados positivos

Minha lógica é:

  1. Verifique a última alteração somente no changelog de cada pacote que requer reinicialização do sistema
  2. Como saída, mostre apenas atualização de prioridade mais alta

Usando documentação do Debian eu encontrei 5 valores possíveis para 'urgência' e também o fato de que ele pode ser seguido por caracteres iguais ("=") ou ponto e vírgula (":"). Também pode haver caracteres maiúsculos e minúsculos

Então acabei seguindo:

#!/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

Como resultado:

  • reboot_required_check.sh status retorna 1 se a reinicialização for necessária, 0 se não for
  • reboot_required_check.sh urgency retorna o nível mais alto de 'urgência' ou '0' se a reinicialização não for necessária

Espero que ajude alguém a economizar um tempo;)

    
por 05.12.2015 / 18:23
0

What I wonder about though, is how this works for webservers which should be up 99.9999etc% of the time? Do they simply not restart and risk the security being breached because security updates are not installed (which I cannot imagine)? Or do they take the downtime for granted (which I cannot imagine either)?

Os grandes servidores da web são reiniciados quando * É necessário reiniciar o sistema * por motivos de segurança.

Mas isso é transparente para o usuário e o site nunca fica inativo porque os servidores grandes geralmente executam dois ou três servidores que armazenam exatamente os mesmos arquivos e exibem o mesmo site. O primeiro é o servidor principal, enquanto os outros dois são secundários e são usados apenas quando o servidor principal está inativo.

    
por 02.05.2015 / 23:17

Tags