Bezpieczeństwo wokół serwerów Ansible

-2

W tej chwili Ansible jest WIELKIE, podobnie jak inne rozwiązania do zarządzania konfiguracją, takie jak Puppet, SaltStack i tak dalej. W mojej firmie zarządzamy ponad 500 serwerami, a niektórzy wdrażają rozwiązanie Ansible, aby zminimalizować koszty zarządzania konfiguracją.

Jestem paranoikiem i zacząłem myśleć o tym, co właściwie można zrobić z serwera Ansible, jeśli ktoś nie ma racji.

Szukałem w Internecie, szukając najlepszych praktyk, zaostrzania bezpieczeństwa na serwerach Ansible i przeważnie znajduję artykuły o tym, w jaki sposób Ansible można wykorzystać do hartowania innych serwerów (oczywiście), a także znajduję ogólne zalecenia dotyczące hartowania serwera Linux, ponieważ Ansible działa w systemie Linux. To sprawiło, że pomyślałem, że ogólny pomysł posiadania scentralizowanego serwera zarządzania konfiguracją wiąże się z pewnym ryzykiem; czy jako haker lub niezadowolony pracownik nie byłbym w stanie uruchomić polecenia rm -rf /na wszystkich serwerach lub podobnych za pomocą serwera Ansible?

Zasadniczo przypuszczam, że posiadanie segmentowanej sieci, w której testy, dev, pre-prod i prod są niedostępne dla siebie, oznaczałoby, że NAJMNIEJ miałbyś zainstalowany serwer Ansible dla każdego z tych środowisk, więc nie masz serwera, na którym zapora ogniowa umożliwia dostęp do wszystkich systemów. Myślę, że to przynajmniej zdrowy rozsądek.

Jednak pomysł serwera, który może skonfigurować CAŁĄ SIEĆ serwerów, jest szalony, jeśli myślisz o kimś, kto nie powinien, uzyskując dostęp do serwera Ansible.

Czy stworzyłoby się jakieś MFA, które uruchamia się przed uruchomieniem poleceń, czy też serwer Ansible nie byłby w stanie stworzyć własnych podręczników, a następnie podręczniki zostałyby zamontowane z serwera tylko do odczytu w innym miejscu, więc możliwości post-exploita przynajmniej wymagają od ciebie kontrolować więcej niż tylko serwer Ansible?

Czy umieszczamy serwer Ansible w zamkniętej sieci zarządzania, do której dostęp mają nawet pracownicy z MFA, specjalne wymagania dostępu, brak VPN, dostęp tylko u klienta itd.?

Czy też akceptujemy ryzyko i przechowujemy dobre kopie zapasowe oraz odpowiednio chronimy sieć i akceptujemy fakt, że w przypadku naruszenia bezpieczeństwa serwera Ansible zniszczenie może być nieuchronne?

Czy też całkowicie się mylę co do destrukcyjnych możliwości Ansible?

Raker
źródło

Odpowiedzi:

2

Bezpieczeństwo w twoich sieciach jest twoim wyborem. Segmentacja i uwierzytelnianie może mieć sens. Masz plan ciągłości działania, aby przywrócić usługi, jeśli wydarzy się coś złego, prawda?

Zasadniczo chodzi tu o zaufanie ludzi. Ktoś musi wypchnąć zmiany. Jeśli ta osoba jest administratorem wykonującym swoją pracę, może wyrządzić wiele szkód przez przypadek lub złośliwość.

Ansible niekoniecznie jest scentralizowany. Częstym wzorcem jest wypróbowanie podręcznika z kontroli źródła i uruchomienie go z dowolnego hosta. Może być scentralizowany, jeśli chcesz: uruchamiaj gry z hosta zarządzania. I Ansible Tower zapewnia centralny interfejs do uruchamiania rzeczy.

Zastanów się, jak wdrożyć na hostach. Ansible jest w stanie łączyć się jako użytkownik osobisty, a przełączanie użytkowników staje się wymagane. Działa to tylko wtedy, gdy twoja metoda pozwala na to na tym hoście. Prawdopodobnie sudo, ale może być czymś innym. Przypuszczalnie możesz kontrolować uwierzytelnianie i blokować nieautoryzowanych użytkowników, jeśli chcesz to zrobić. Podobnie jak bez automatyzacji.

John Mahowald
źródło
Dzięki za perspektywę. Nie widzę, że nie zgadzasz się z niszczycielskimi możliwościami takiego kapelusza z blachy cienkiej . Zastanawiam się, czy podręczniki można odczytać tylko w tym sensie, że ... zobacz, czego szukam, to metoda, która usuwa podręczniki ze złych poleceń - których nie można łatwo zmienić - tak, jakby dane wejściowe w polach tekstowych były usuwane, aby zapobiec iniekcji sql i xss .
Grabie
Narzędzie samo w sobie nie jest szkodliwe, służy jedynie celom. rmmoże zarówno dobrze wyczyścić rzeczy, jak i przypadkowo usunąć cały system. Pomaga pewna dyscyplina w recenzowaniu i testowaniu zabaw, zanim zostaną one wykorzystane w produkcji. Tower zapewnia jeden ze sposobów dawania użytkownikom predefiniowanych zadań, ale zadania te nadal muszą być napisane i przetestowane, aby były bezpieczne.
John Mahowald,
Zgadzam się z tym. Zasadniczo czy byłoby możliwe stworzenie polityki lub zestawu ról, które spowodują, że ci, którzy stworzą podręczniki, nie mogą ich wykonać i odwrotnie? Myślę, że może to zmusić dwie osoby do zaangażowania się za każdym razem, gdy zostanie utworzony i wykonany nowy podręcznik. Tak jak zapobiegasz toksycznym połączeniom ról.
Raker
Zdecyduj, jak chcesz rozdzielić te role, a następnie zaimplementuj je. W najbardziej podstawowym przykładzie programista może napisać grę, aby wdrożyć swoją aplikację, ale nie musi się logować do hostów produkcyjnych. Jeśli chcesz uzyskać dostęp oparty na rolach typu wskaż i kliknij, spójrz na Ansible Tower.
John Mahowald,
Ciekawy. Czy znasz dokumentację dotyczącą zalecanych najlepszych praktyk, biorąc pod uwagę podział ról?
Raker