54

Чтобы немного узнать об администрировании сервера, я установил простой сервер Ubuntu 14.04, на котором я запускаю личный веб-сайт. Я установил автоматическую установку обновлений безопасности, но не включаю другие обновления. Кажется, это работает довольно хорошо. Иногда я получаю сообщение при входе на сервер (с помощью ssh):

*** System restart required ***

Когда это происходило, я просто перезагружал Ubuntu, и все было хорошо. Это нормально, потому что это простой персональный сайт. Что меня интересует, так это то, как это работает для веб-серверов, которые должны работать до 99,9999% времени? Разве они просто не перезагружаются и не рискуют нарушить безопасность, потому что обновления безопасности не установлены (что я не могу себе представить)? Или они принимают время простоя как должное (что я не могу себе представить)?

Как мне справиться с этим, если бы это был очень важный рабочий сервер, который я хочу поддерживать в рабочем состоянии? Все советы приветствуются!

[РЕДАКТИРОВАТЬ] Я знаю, что могу сделать cat /var/run/reboot-required.pkgs чтобы вывести список пакетов, которые вызывают перезагрузку. В настоящее время команда выдает следующее:

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

но как я узнаю, что обновления - это мелочи, есть ли у меня серьезная уязвимость безопасности, если я не делаю перезагрузку?

[EDIT2] Хорошо, теперь я объединил команды, которые я нашел полезными, в одну:

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

Если это ничего не дает, проблем с безопасностью не возникает.

Последний вопрос: являются ли low , medium и high единственными срочными возможностями, или же они больше похожи, например, на critical или extremelyimportant важные ?

3 ответа3

44

Ответ не простой, так как зависит от сделанных обновлений. Если в ядре возникла серьезная проблема с безопасностью, рекомендуется перезагрузить компьютер как можно скорее. Если бы в ядре были только незначительные исправления, то перезагрузка могла быть отложена.

Если вы гарантируете доступность> 99,9%, то у вас почти всегда будет кластерная система, в которой вы сможете перезагрузить узлы один за другим, не прерывая работу службы.

Таким образом, вы перезагружаете первую систему и подключаете ее к кластеру. Потом второй и тд. Тогда услуга никогда не станет недоступной.

3

аддон для решения темы

Я выполняю аналогичную проверку для «требования перезагрузки» для системы мониторинга zabbix

Я вижу 2 вопроса в решении "Тема":

  1. aptitude обычно плохо работает в сценариях. Я убил несколько часов, но все еще не работал с zabbix
  2. если только 1 журнал изменений включает срочное обновление - ваш чек всегда будет показывать положительные результаты

Моя логика такова:

  1. Проверять только последние изменения в журнале изменений для каждого пакета, который требует перезагрузки системы
  2. В качестве вывода показывается только обновление с самым высоким приоритетом

Используя документацию Debian, я нашел 5 возможных значений «срочности», а также тот факт, что за ним могут следовать одинаковые («=») или точки с запятой («:»). Также могут быть прописные и строчные буквы

В итоге я получил следующее:

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

В следствии:

  • reboot_required_check.sh status возвращает 1, если требуется перезагрузка, 0, если нет
  • reboot_required_check.sh urgency возвращает наивысший уровень «срочности» или «0», если перезагрузка не требуется

Надеюсь, это поможет кому-то сэкономить время;)

0

Что меня интересует, так это то, как это работает для веб-серверов, которые должны работать до 99,9999% времени? Разве они просто не перезагружаются и не рискуют нарушить безопасность, потому что обновления безопасности не установлены (что я не могу себе представить)? Или они принимают время простоя как должное (что я не могу себе представить)?

Большие веб-серверы перезапускаются, когда * из соображений безопасности появляется сообщение о необходимости перезагрузки системы * .

Но это очевидно для пользователя, и сайт никогда не закрывается, потому что большие серверы часто используют два или три сервера, которые хранят одинаковые файлы и отображают один и тот же сайт. Первый из них является основным сервером, а два других являются вторичными и используются только когда основной сервер не работает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .