Jak wdrożyć niezmienny wzorzec serwera bez utraty możliwości wykonywania sekcji zwłok?

12

Niezmienny wzór serwera to dyscyplina wdrażania sprzyjająca odtwarzalności wdrożeń. Charakteryzuje się tym, że „ serwer, który raz został wdrożony, nigdy nie jest modyfikowany, jedynie zastępowany przez nową zaktualizowaną instancję ”, a wdrożenie tej dyscypliny wymaga automatyzacji wdrażania serwera. Ta automatyzacja ma wiele zalet operacyjnych, jedną z najważniejszych jest umożliwienie szybkiej i niezawodnej wymiany awarii wystąpień w infrastrukturze. Ta automatyzacja oznacza również, że wdrożenie serwera jest opisane przez artefakty wersji oprogramowania i podlega iteracyjnym ulepszeniom.

Popularnym aspektem implementacji tej dyscypliny jest usuwanie metod zdalnego dostępu do serwera po jego uruchomieniu (zwłaszcza usuwanie dostępu SSH). Usunięcie dostępu zdalnego jest łatwym sposobem na upewnienie się, że konfiguracja serwera odpowiada konfiguracji przygotowanej przez automatyzację wdrażania.

Jednak przy badaniu przyczyn awarii oprogramowania poleganie na ustrukturyzowanym monitorowaniu nie zawsze jest wystarczające i może być konieczny zdalny dostęp do maszyny. Częstą praktyczną sytuacją jest to, że monitorowanie serwera nie obejmuje wszystkich źródeł awarii lub że monitorowanie może zostać zakłócone przez samą awarię serwera, co prawdopodobnie miałoby miejsce, gdyby na serwerze zabrakło pamięci lub osiągnął limit procesu.

Jak wdrożyć niezmienny wzorzec serwera bez utraty możliwości wykonywania sekcji zwłok?

Michael Le Barbier Grünewald
źródło

Odpowiedzi:

9

Po pierwsze, usunięcie ssh na niezmiennym serwerze nie gwarantuje, że nie będzie żadnych zmian, a tym bardziej, że nie powinno być potrzeby zmiany czegoś, co zmniejszy powierzchnię ataku poprzez usunięcie kanału dostępu zdalnego.

Jednym ze sposobów na zachowanie rodzaju sekcji zwłok jest centralizacja logów. Istnieje mnóstwo metod, aby to osiągnąć, stos ELK, Splunk, syslog ...

Innym bardziej prymitywnym sposobem na zachowanie sekcji zwłok niezmiennego serwera jest posiadanie skryptu dotyczącego procesu zamykania (niezmienny serwer ulegałby wyłączeniu i nowy wirował, aby go zastąpić) w celu zebrania zrzutu podstawowego programu, a zrzut pamięci i wysyłanie ich do zdalnego systemu w celu analizy wraz z większością dzienników.

Główną zaletą tego rozwiązania jest to, że w momencie wystąpienia problemu odzyskujesz tylko błędne informacje systemowe, co pozwala gromadzić większe informacje niż okresowe ich uzyskiwanie.

Trudno jest sprecyzować, jak to osiągnąć, każda dystrybucja ma jakiś sposób na uzyskanie rzeczy i nie mam ogólnego przykładu.

Tensibai
źródło
7

Fakt, że nie masz dostępu SSH, nie oznacza, że ​​nie ma sposobu na dostęp do maszyny. Najprawdopodobniej będziesz go uruchamiać na jakimś operatorze chmury, w którym możesz również wykonać następujące czynności:

  • zrobić migawkę urządzenia. Możesz po prostu zrobić migawkę pudełka przed zniszczeniem go w celu późniejszej analizy.
  • uzyskać dostęp do maszyny za pośrednictwem konsoli. Prawdopodobnie będziesz musiał mieć do tego hasło root, ale niektórzy dostawcy usług w chmurze mogą wprowadzić losowe hasło root w celu uzyskania dostępu do konsoli w dowolnym momencie.

Są to w zasadzie „fizyczny” dostęp do komputera i będą dostępne nawet po usunięciu innych rodzajów dostępu. Możesz również ograniczyć te interfejsy.

Oprócz tego, jak @Tensibai powiedział, że lepiej jest odpowiednio skonfigurować rejestrowanie i monitorowanie, więc za każdym razem, gdy będziesz musiał zrobić sekcję zwłok, jest wystarczająca ilość danych, aby to zrobić.

Sztuczki
źródło
4
Cóż, aby przeciwdziałać dostępowi do konsoli, AWS EC2 nie zapewnia dostępu do konsoli, jeśli nie skonfigurujesz SSH, nie będziesz miał dostępu do komputera. Pomocne może być wykonanie migawki woluminu maszyny, montowanie go jako nowego dysku w instancji „sądowej” w celu analizy danych.
Tensibai