Обновление производства коробок Ubuntu: что нужно и чего нельзя делать?

25

Время от времени я захожу в рабочий ящик web / db / tools и вижу типичное сообщение:

30 пакетов могут быть обновлены. 16 обновлений являются обновлениями безопасности.

У меня вопрос, как вы все обрабатываете обновления на ваших производственных коробках Ubuntu? Вы автоматизируете эти обновления? Вы устанавливаете время простоя для них? Проблема в том, что вы никогда не знаете, когда обновление что-то сломает, например, возможно, существующий файл конфигурации и т. Д.

Другая часть этой проблемы заключается в том, что идти в ногу с исправлениями - это «хорошо», но исправления выпускаются почти ежедневно. Сколько запланированных отключений нужно сделать, если каждый день будет доступно новое исправление безопасности?

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

образный
источник

Ответы:

13

В патчах Ubuntu против Windows нет ничего особенного, RHEL, CentOS, SuSE, debian и т. Д.

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

Вот некоторые из основных рекомендаций, которые я склонен использовать при разработке установки патча:

  • Всегда используйте локальную систему для внутренней централизации в вашей сети, где установлены исправления

Это может включать использование WSUS или зеркал <your_os_here>к внутренней машине управления исправлениями. Предпочтительный, который может централизованно запрашивать и сообщать вам о состоянии исправлений, установленных на ваших отдельных машинах.

  • Предварительная установка - когда это возможно - на машинах.

Когда это возможно, по мере выхода исправлений центральный сервер копирует их на отдельные машины. Это действительно просто экономит время, так что вам не нужно ждать, пока они загрузятся и установятся, вы просто должны начать установку во время вашего окна патча.

  • Получите окно отключения, чтобы установить исправления, возможно, вам придется перезагрузиться, и что-то, вероятно, сломается. Убедитесь, что заинтересованные лица для этих систем знают, что внедряются исправления. Будьте готовы к тому, что «это» не работает звонками.

В соответствии с моей основной теорией, что исправления ломают вещи, убедитесь, что у вас есть окно отключения, чтобы применять исправления достаточно долго для устранения критических проблем и, возможно, откатить исправление обратно. Вам не нужно, чтобы люди сидели там и тестировали патчи. Лично я сильно полагаюсь на свои системы мониторинга, чтобы сообщить мне, что все работает на самом минимальном уровне, с которым мы можем сойти с рук. Но также будьте готовы к тому, что по мере того, как люди добираются до работы, им нужно вызывать небольшие проблемы У вас всегда должен быть кто-то, кто будет готов ответить на телефонный звонок - предпочтительно не тот, кто до 3 часов чинил ящики.

  • максимально автоматизировать

Как и все остальное в IT, сценарий, сценарий, а затем сценарий еще немного. Скрипт загрузки пакета, запуска установки, зеркала. По сути, вы хотите превратить патч-окна в задание по присмотру за детьми, которому просто нужен человек в случае поломки.

  • Иметь несколько окон каждый месяц

Это дает вам возможность не исправлять некоторые серверы, если по какой-либо причине они не могут быть исправлены в «назначенную ночь». Если вы не можете сделать их в ночь 1, потребуйте, чтобы они были свободными в ночь 2. Также позволяет сохранить количество исправленных серверов в одно и то же время.

Самое главное не отставать от патчей! Если вы этого не сделаете, вы обнаружите, что должны сделать очень большие 10-часовые патч-окна, просто чтобы вернуться к точке, где вы попали в ловушку. Вводит еще больше моментов, когда что-то может пойти не так, и делает поиск патча более сложным.


Другая часть этой проблемы заключается в том, что идти в ногу с исправлениями - это «хорошо», но исправления выпускаются почти ежедневно. Сколько запланированных отключений нужно сделать, если каждый день будет доступно новое исправление безопасности?

Патчирование сервера один раз в месяц или раз в два месяца - ИМХО - очень достижимая и приемлемая цель. Более того, и вы будете постоянно вносить исправления в серверы, гораздо реже, и вы начинаете сталкиваться с ситуациями, когда вам нужно применять сотни исправлений для каждого сервера.

Сколько окон вам нужно в месяц? Это зависит от вашей среды. Сколько у вас серверов? Какое время требуется вашим серверам?

Меньшие среды, которые имеют размер 9x5, вероятно, могут обходиться без одного окна исправления в месяц. Большим магазинам 24х7 может понадобиться два. Для очень больших 24x7x365 еженедельное окно может потребоваться, чтобы каждую неделю обновлялся различный набор серверов.

Найдите частоту, которая работает для вас и вашего окружения.

Нужно иметь в виду, что достижение 100% -го уровня является невозможной целью - не позволяйте вашему отделу безопасности говорить вам иначе. Делай все возможное, не отставать слишком далеко.

Zypher
источник
Вы говорите, автоматизировать запуск установки, хотя это противоречит исходной предпосылке сообщения, чтобы получить окно отключения. Можете ли вы дополнительно уточнить часть вашего ответа «автоматизировать запуск установки»?
образно
Вы автоматизируете начало установки, когда начинается отключение - прекращается необходимость входить в каждый ящик, чтобы начать установку ... Я постараюсь придумать лучшую формулировку
Zypher
6

Дела, которые необходимо сделать:

  1. Сделайте резервную копию
  2. Убедитесь, что это восстанавливаемая резервная копия (хотя, это два основных момента)
  3. Попытайтесь направить трафик от производственной коробки во время обновления.
  4. Попробуйте использовать метод внешнего доступа на случай, если все пойдет не так, KVM, последовательная консоль, локальный доступ или удаленные руки.
  5. Протестируйте на одном сервере, затем убедитесь, что все работает, прежде чем развертывать обновления на нескольких серверах
  6. Используйте Puppet, если вы можете убедиться, что номера версий одинаковы на нескольких серверах. (Вы также можете использовать его для принудительного обновления)
  7. На тестовом сервере отличайте версии файлов конфигурации от новых (с установленным обновлением) и убедитесь, что ничего не может серьезно помешать. Кажется, я помню, что dpkg спрашивал перед установкой новых версий, которые отличаются от установленных на данный момент.

Что следует избегать:

  1. Выполняйте обновления в середине дня, или в 09:00 в понедельник утром, или в 5 вечера в пятницу днем! (спасибо @ 3influence!)
  2. Обновление MySQL на действительно больших серверах баз данных (перезапуск может занять много времени)
  3. Делать все ваши серверы одновременно (особенно ядра)
  4. Делать все, что может изменить / etc / networks (потому что вы можете потерять соединение)
  5. Автоматические обновления, которые могут сделать вышеупомянутое без вас, чтобы проверить все в порядке.
Том О'Коннор
источник
4
Вы забыли ... никогда не делайте их в пятницу в конце дня, если вы не цените свои выходные :)
3dinfluence
4

Еще одно замечание: если вы привыкли к Windows, вы удивитесь, что большинство обновлений Linux не требуют простоя или перезагрузки. Некоторые делают, например, обновления ядра. Но обновления, которые требуют перезагрузки или простоя, обычно помечаются как таковые и могут обрабатываться по отдельному расписанию.

mpez0
источник
имейте в виду, что обновление работающей службы потребует остановки этой службы в какой-то момент, чтобы вы получили новую. Тем не менее, вы не получаете раздражающее приглашение каждые 10 минут :)
gbjbaanb
Утилита debian / ubuntu checkrestartочень полезна для определения того, какие процессы были обновлены, но все еще необходимо остановить и перезапустить, чтобы получить новый код.
Томасруттер
4

Наши машины с Ubuntu работают под управлением версий LTS.

Мы просто автоматически устанавливаем все обновления - конечно, это не «лучшая практика», но мы относительно небольшой магазин и не имеем среды тестирования / разработки / производства для каждого отдельного сервиса. Обновления LTS, как правило, достаточно хорошо протестированы и в любом случае минимально инвазивны.

Обновление до новой версии, очевидно, немного сложнее.

Джеймс
источник
2

Мы работаем с обновлениями следующим образом для систем Ubuntu LTS:

  1. Maitain набор приемочных тестов, которые проверяют все критические пути в нашем программном обеспечении
  2. Установите обновления безопасности без присмотра в 4 часа утра каждое утро и немедленно запустите приемочные тесты. Если что-то не получается, у инженера есть страничка, и у него есть достаточно времени, чтобы все исправить или откатиться до 9 утра. До сих пор это происходило только дважды за пять лет - LTS хорошо протестирована и стабильна.
  3. Мы автоматически перераспределяем всю нашу инфраструктуру каждую неделю (на digitalocean) с помощью сине-зеленых развертываний, в которых все пакеты имеют свои последние версии. Если новое развертывание не проходит приемочные тесты, развертывание приостанавливается до тех пор, пока инженер не сможет отладить проблему.

Следующим логическим шагом для нас является устранение информации о сеансах в памяти, чтобы мы могли просто повторно развертывать инфраструктуру каждый день или даже несколько раз в день, не влияя на клиентов, и исключить этап (2).

Этот подход требует минимального обслуживания и полностью исключает необходимость обслуживания окон.

jazmit
источник
Я работал в компании, которая сделала похожий процесс; у нашей материнской компании была «полная и профессионально разработанная система». Когда было объявлено об «сердечной» уязвимости, к следующему утру у нас было несколько сотен серверов. «Безопасные» процессы материнской компании закончились тем, что они отключили свои несколько сотен серверов и покинули ИТ-группу, чтобы вручную исправить каждую машину в течение недели. Сложность - враг безопасности и надежности :-)
Том Харрисон-младший
0

Одна вещь, которую я бы порекомендовал, это обработка откатов пакетов. Смотрите « Транзакции и откат с Debian», чтобы узнать, как это сделать, так как иногда вам нужно быстрое исправление для обновления, которое что-то ломает.

gbjbaanb
источник