
Wstęp
Nasza „przyjaźń” zaczęła się dwa lata temu. Przyszedłem do nowego miejsca pracy, gdzie poprzedni administrator bezceremonialnie zostawił mi to oprogramowanie. W internecie poza oficjalną dokumentacją nie można było nic znaleźć. Nawet teraz, jeśli wpiszesz „rudder” w Google, w 99% przypadków otrzymasz wyniki dotyczące sterów statków i dronów. Udało mi się znaleźć podejście do niego. Ponieważ społeczność tego oprogramowania jest znikoma, postanowiłem podzielić się swoim doświadczeniem i przeszkodami. Myślę, że to może być pomocne dla kogoś.
A więc, Rudder
Rudder to narzędzie do audytu i zarządzania konfiguracją z otwartym kodem źródłowym, które pomaga zautomatyzować konfigurację systemu. Działa na zasadzie zainstalowania agenta na każdym z użytkowników końcowych. Dzięki wygodnemu interfejsowi możemy obserwować, jak nasza infrastruktura spełnia wszystkie określone polityki.
Użycie
Poniżej wymienię, do czego używam Ruddera.
Kontrola plików i konfiguracji: . /ssh/authorized_keys ; /etc/hosts ; iptables ; (a dalej, dokąd poniesie fantazja)
Kontrola zainstalowanych pakietów: zabbix.agent lub inne oprogramowanie
Instalacja serwera
Niedawno zaktualizowałem z wersji 5 do 6.1, wszystko poszło pomyślnie. Poniżej zostaną przedstawione komendy dla Debiana/Ubuntu, ale wsparcie jest również dla: i .
Schowam instalację w spoilerach, aby was nie rozpraszać.
Spoiler
Zależności
Dla rudder-server wymagana jest wersja Java RE minimum 8, można ją zainstalować z standardowego repozytorium:
Sprawdzamy, czy nie jest zainstalowana
java -versionjeśli wynik
-bash: java: command not foundto instalujemy
apt install default-jreSerwer
Importujemy klucz
wget --quiet -O- "https://repository.rudder.io/apt/rudder_apt_key.pub" | sudo apt-key add -Oto sam odcisk
pub 4096R/474A19E8 2011-12-15 Rudder Project (klucz wydania)
Odcisk klucza = 7C16 9817 7904 212D D58C B4D1 9322 C330 474A 19E8Ponieważ nie mamy płatnej subskrypcji, dodajemy następne repozytorium
echo "deb http://repository.rudder.io/apt/6.1/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/rudder.listAktualizujemy listę repozytoriów i instalujemy serwer
apt update
apt install rudder-server-rootTworzymy użytkownika admin
rudder server create-user -u admin -p "Twoje Hasło"W przyszłości możemy zarządzać użytkownikami za pomocą konfiguracji
To wszystko, serwer gotowy.
Konfiguracja serwera
Teraz należy dodać do agenta Ruddera adresy IP agentów lub całą podsieć, kierując się polityką bezpieczeństwa.
Ustawienia → Ogólne

W polu „Dodaj sieć” wpisujemy adres i maskę w formacie x.x.x.x/xx. Aby umożliwić dostęp ze wszystkich adresów wewnętrznej sieci (o ile to jest sieć testowa i znajdujesz się za NAT), wpisujemy: 0.0.0.0/0
Ważne — po dodaniu adresu IP nie zapomnij kliknąć Zapisz zmiany, w przeciwnym razie nic nie zostanie zapisane.
Porty
Na serwerze otwieramy następujące porty
443 — tcp
5309 — tcp
514 — udp
Z podstawową konfiguracją serwera się uporaliśmy.
Instalacja agenta
Spoiler
Dodajemy klucz
wget --quiet -O- "https://repository.rudder.io/apt/rudder_apt_key.pub" | sudo apt-key add -Odciśnięcie klucza
pub 4096R/474A19E8 2011-12-15 Rudder Project (klucz wydania)
Odcisk klucza = 7C16 9817 7904 212D D58C B4D1 9322 C330 474A 19E8Dodajemy repozytorium
echo "deb http://repository.rudder.io/apt/6.1/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/rudder.listInstalujemy agenta
apt update
apt install rudder-agentKonfiguracja agenta
Wskaźmy agentowi adres IP serwera polityk
rudder agent policy-server #Bez nawiasów. Można także użyć nazwy domenowej Uruchamiając następujące polecenie, wyślemy zapytanie o dodanie nowego agenta do serwera, po kilku minutach pojawi się on na liście nowych agentów, jak dodawać, wyjaśnię w następnej sekcji
rudder agent inventoryMożemy również wymusić uruchomienie agenta, aby natychmiast wysłał zapytanie
rudder agent runNasz agent jest skonfigurowany, idziemy dalej.
Dodawanie agentów
Logujemy się
https://127.0.0.1/rudder/index.html

W sekcji „Akceptuj nowe węzły” pojawi się twój agent, zaznaczamy pole i klikamy Akceptuj

Trochę czasu zajmie systemowi sprawdzenie serwera pod kątem zgodności
Tworzenie grup serwerów
Stworzymy grupę (to prawdziwa zabawa), nie mam pojęcia, dlaczego programiści zrobili tak skomplikowane tworzenie grup, ale jak zrozumiałem, inaczej się nie da. Przechodzimy do sekcji Zarządzanie węzłami -> Grupy i klikamy Utwórz, wybieramy grupę statyczną i nazwę.

Filtrujemy potrzebny nam serwer według specjalnych cech, na przykład według adresu IP i zapisujemy

Grupa jest skonfigurowana.
Konfiguracja reguł
Przechodzimy do Polityka konfiguracji → Reguły i tworzymy nową regułę

Dodajemy przygotowaną wcześniej grupę (można to zrobić i później)

I tworzymy nową dyrektywę

Stworzymy dyrektywę dodawania kluczy publicznych do .ssh/authorized_keys. Używam tego w przypadku przychodzenia nowego pracownika lub na wszelki wypadek, na przykład jeśli ktoś przypadkiem usunie mój klucz.
Przechodzimy do Polityka konfiguracji → Dyrektywy, z lewej widzimy „Biblioteka dyrektyw”. Znajdujemy „Zdalny dostęp → Autoryzowane klucze SSH”, z prawej klikamy Utwórz dyrektywę
Wpisujemy dane użytkownika i dodajemy jego klucz. Następnie wybieramy politykę zastosowania
Global — Polityka ustawiona domyślnie
Enforce — Wykonaj na wybranych serwerach
Audyt — Przeprowadzi audyt i powie, które klienci są kluczowi

Zdecydowanie wskazujemy nasze zasady

Następnie zapisujemy i wszystko gotowe.
Sprawdzamy

Klucz został pomyślnie dodany
Dodatki
Agent dostarcza pełne informacje o serwerze. Lista zainstalowanych pakietów, interfejsów, otwartych portów i wiele więcej, co możecie zobaczyć na zrzucie ekranu poniżej

Można również instalować i kontrolować oprogramowanie nie tylko na Linuxie, ale i na Windowsie, ostatniego nie sprawdzałem, nie było takiej potrzeby.
Od autora
Z pewnością zapytasz, po co wynajdywać koło na nowo, skoro już istnieją Ansible i Puppet?
Odpowiadam: Ansible ma swoje wady, np. nie widzimy w jakim stanie aktualnie jest ten konfig, czy też powszechny problem, kiedy uruchamiasz rolę lub playbook i pojawiają się błędy dotyczące awarii, a ty musisz wchodzić na serwer i sprawdzać, który pakiet gdzie został zaktualizowany. A z Puppetem po prostu nie pracowałem.
Czy są jakieś wady Rudder? Jest ich wiele... Zaczynając od problemów z agentami, którzy się odpinają i trzeba ich reinstalować lub używać polecenia rudder reset. (ale swoją drogą, w wersji 6 jeszcze tego nie widziałem), kończąc na ekstremalnie skomplikowanej konfiguracji i nielogicznym interfejsie.
Czy są jakieś plusy? A plusów też jest mnóstwo: W przeciwieństwie do znanego Ansible mamy interfejs webowy, w którym widzimy stosowany przez nas compliance. Na przykład — czy porty są otwarte dla świata, w jakim stanie jest firewall, czy zainstalowane są agenci bezpieczeństwa lub inne sprzęty.
To oprogramowanie doskonale nadaje się do działu bezpieczeństwa informacji, ponieważ stan infrastruktury zawsze będzie widoczny na ekranie, a jeśli jakieś zasady świecą na czerwono, to jest to powód, aby odwiedzić serwer. Jak mówiłem, używam Rudder już od dwóch lat, a jeśli go trochę przeanalizować, to życie staje się lepsze. Najtrudniejsze w dużej infrastrukturze to to, że nie pamiętasz, w jakim stanie jest serwer, czy nie przegapiłeś instalacji agentów bezpieczeństwa, czy dobrze skonfigurowałeś iptables, a Rudder pomoże ci być na bieżąco z wydarzeniami. Osobisty, więc uzbrojony! )
P.S. Wyszło znacznie więcej niż planowałem, nie zamierzam opisywać, jak instalować pakiety, jeśli będą jakieś prośby, napiszę drugą część.
P.S.S Artykuł ma charakter informacyjny, postanowiłem podzielić się tym, ponieważ w internecie jest bardzo mało informacji. Może to kogoś zainteresuje. Życzę miłego dnia, szanowni przyjaciele )
Reklama
Epickie serwery — to lub Windows z potężnymi procesorami z rodziny AMD EPYC i bardzo szybkimi dyskami NVMe Intel. Nie zwlekaj, zamów teraz!

Źródło: habr.com
