Как реализовать шаблон неизменяемого сервера, не теряя возможности делать посмертные?

12

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

Популярным аспектом реализации этой дисциплины является удаление методов удаленного доступа к серверу после его запуска (особенно удаление SSH-доступа). Удаление удаленного доступа - это простой способ убедиться, что конфигурация сервера соответствует конфигурации, подготовленной автоматизацией развертывания.

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

Как реализовать шаблон неизменяемого сервера, не теряя возможности делать посмертные?

Михаэль Ле Барбье Грюневальд
источник

Ответы:

9

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

Один из способов сохранить своего рода вскрытие - это централизация журналов. Существует множество методов для достижения этой цели: стек ELK, Splunk, системный журнал ...

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

Основным преимуществом этого решения является то, что вы возвращаете только ошибочную системную информацию в момент возникновения проблемы, что позволяет собирать больше информации, чем получать ее периодически.

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

Tensibai
источник
7

Тот факт, что у вас нет доступа по SSH, не означает, что нет доступа к машине. Скорее всего, вы будете запускать его на каком-то облачном операторе, где вы также можете сделать следующее:

  • сделать снимок машины. Вы можете просто сделать снимок окна перед его уничтожением для последующего анализа.
  • получить доступ к машине через консоль. Вероятно, для этого вам понадобится пароль root, но некоторые облачные провайдеры могут ввести произвольный пароль root для доступа к консоли в любое время.

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

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

SztupY
источник
4
Что ж, для противодействия доступу к консоли AWS EC2 не предоставляет никакого доступа к консоли, если вы не настроили SSH, у вас нет доступа к машине. Снимок тома компьютера может помочь, смонтировать его как новый диск в «криминалистическом» экземпляре для анализа данных.
Тенсибай