
Wstęp
Nasza „przyjaźń” zaczęła się dwa lata temu. Przyszedłem do nowej pracy, gdzie poprzedni administrator bezceremonialnie zostawił mi tę aplikację w spadku. W internecie poza oficjalną dokumentacją nie udało mi się znaleźć nic więcej. Nawet teraz, jeśli wyszukasz „rudder”, w 99% przypadków pojawią się wyniki dotyczące sterów statków i dronów. Udało mi się znaleźć do niego podejście. Ponieważ społeczność tego oprogramowania jest niezmiernie mała, postanowiłem podzielić się swoim doświadczeniem i napotkanymi trudnościami. Myślę, że dla kogoś to będzie przydatne.
Więc, Rudder
Rudder to narzędzie do audytu i zarządzania konfiguracją z otwartym źródłem, które pomaga w automatyzacji konfiguracji systemu. Działa na zasadzie zainstalowania agenta na każdym użytkowniku końcowym. Przez wygodny interfejs możemy monitorować, w jakim stopniu nasza infrastruktura spełnia wszystkie określone polityki.
Użycie
Poniżej wymienię, do czego używam Rudder.
Kontrola plików i konfiguracji: .\/ssh\/authorized_keys ; \/etc\/hosts ; iptables ; (a dalej dokąd zaprowadzi fantazja)
Kontrola zainstalowanych pakietów: zabbix.agent lub dowolne inne oprogramowanie
Instalacja serwera
Ostatnio zaktualizowałem z wersji 5 do 6.1, wszystko przebiegło pomyślnie. Poniżej będą przedstawione komendy dla Deban/Ubuntu, ale jest też wsparcie: i .
Schowam instalację w spoilery, aby nie odwracać waszej uwagi.
Spoiler
Zależności
Dla rudder-server wymagana jest co najmniej Java RE w wersji 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 przez konfigurację
To wszystko, serwer gotowy.
Konfiguracja serwera
Teraz musimy dodać do agenta ruddera adresy IP agentów lub całą podsieć, zgodnie z 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ętrznych (jeśli to oczywiście sieć testowa i znajdujesz się za NAT) wpisujemy: 0.0.0.0/0
Wa żne — po dodaniu adresu IP nie zapomnij nacisnąć Zapisz zmiany, w przeciwnym razie nic nie zostanie zapisane.
Porty
Na serwerze otwieramy następujące porty
443 — tcp
5309 — tcp
514 — udp
Z zasadami wstępnymi serwera już się zapoznaliśmy.
Instalacja Agenta
Spoiler
Dodajemy klucz
wget --quiet -O- "https://repository.rudder.io/apt/rudder_apt_key.pub" | sudo apt-key add -Odcisk 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 również użyć nazwy domenowej Uruchamiając następujące polecenie, wyślemy zapytanie o dodanie nowego agenta na serwer, za kilka minut pojawi się na liście nowych agentów, jak dodać 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, przechodzimy 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 może minąć, zanim system sprawdzi serwer pod względem zgodności
Tworzenie grup serwerów
Stworzymy grupę (to prawdziwa rozrywka), 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 nadajemy nazwę.

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

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

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

I formujemy nową dyrektywę

Stworzymy dyrektywę dodania publicznych kluczy do .ssh/authorized_keys. Używam tego przypadku, gdy przychodzi nowy pracownik, lub dla ostrożności, na przykład jeśli ktoś przypadkowo usunie mój klucz.
Przechodzimy do polityki konfiguracji → Dyrektywy, po lewej widzimy „Bibliotekę dyrektyw”. Znajdujemy „Zdalny dostęp → Klucze SSH zatwierdzone”, po 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 określi, na których klientach powinien być klucz.

Zdecydowanie określamy naszą zasadę.

Następnie zapisujemy i wszystko gotowe.
Sprawdzamy

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

Można również instalować i kontrolować oprogramowanie nie tylko na Linuxie, ale i na Windowsie; ostatnio tego nie sprawdzałem, nie było takiej potrzeby.
Od autora
Możecie się zastanawiać, po co wynajdywać na nowo koło, skoro już istnieją ansible i puppet?
Odpowiadam: Ansible ma swoje wady, na przykład nie widzimy, w jakim stanie jest obecnie ten konfiguracja, czy przypomina wam sytuację, kiedy uruchamiacie rolę lub playbook i pojawiają się błędy, które krzyczą o awarii, a wy musicie wchodzić na serwer, aby sprawdzić, który pakiet został zaktualizowany. Z puppetem po prostu nie pracowałem.
Czy są jakieś wady Ruddera? Jest ich wiele... Zaczynając od tego, że agenci się rozłączają i trzeba je ponownie instalować lub korzystać z komendy rudder reset. (ale w wersji 6 jeszcze tego nie widziałem), kończąc na bardzo skomplikowanej konfiguracji i nielogicznym interfejsie.
Czy są jakieś plusy? Plusów jest również sporo: w przeciwieństwie do znanego ansible mamy interfejs webowy, w którym widać zastosowany przez nas compliance. Na przykład - czy porty są otwarte, w jakim stanie jest firewall, czy zainstalowane są agenci zabezpieczeń lub inne dodatki.
To oprogramowanie idealnie nadaje się dla działu bezpieczeństwa informacji, ponieważ stan infrastruktury zawsze będzie przed oczami, a jeśli jakieś z zasad zostanie oznaczone na czerwono, to jest to powód, aby odwiedzić serwer. Jak wspominałem, od 2 lat używam Rudder, i jeśli trochę go rozgryziecie, życie staje się lepsze. Najtrudniejszą rzeczą w dużej infrastrukturze jest to, że nie pamiętacie, w jakim stanie jest serwer; nie przegapiliście instalacji agentów zabezpieczeń ani nie poprawnie skonfigurowaliście iptables; Rudder pomoże wam być na bieżąco ze wszystkimi wydarzeniami. Świadomy, więc uzbrojony! )
P.S. Wyszło dużo więcej niż planowałem; nie będę opisywał, jak instalować pakiety; jeśli będą prośby, napiszę drugą część.
P.S.S Artykuł ma charakter informacyjny, postanowiłem się podzielić, ponieważ w Internecie jest bardzo mało informacji na ten temat. Może to kogoś zainteresuje. Życzę miłego dnia, drodzy przyjaciele :)
Reklama
Epickie serwery — to lub Windows z potężnymi procesorami z rodziny AMD EPYC i bardzo szybkimi dyskami NVMe Intel. Spiesz się zamówić!

Źródło: habr.com
