
Bevezető
A barátságunk két évvel ezelőtt kezdődött. Egy új munkahelyre érkeztem, ahol az előző admin kényelmesen rám hagyta ezt a szoftvert. Az interneten, az hivatalos dokumentáción kívül, semmit sem találtam. Még most is, ha rákeresel a „rudder” szóra, akkor 99%-ban hajókorlátok és drónok jelennek meg. Sikerült megtalálnom a megfelelő megoldást. Mivel az ilyen szoftverek közössége elenyésző, úgy döntöttem, megosztom a tapasztalataimat és a buktatóimat. Gondolom, valakinek ez hasznos lesz.
Tehát, Rudder
A Rudder egy nyílt forráskódú auditáló és konfigurációkezelő eszköz, amely segít automatizálni a rendszerbeállításokat. Az elv az, hogy ügynököt telepítünk minden egyes végfelhasználóra. A felhasználóbarát felületen figyelemmel kísérhetjük, mennyire felel meg az infrastruktúránk a meghatározott irányelveknek.
Használat
Alább felsorolom, mire használom a Ruddert.
Fájlok és konfigurációk ellenőrzése: ./ssh/authorized_keys; /etc/hosts; iptables; (és tovább, ahová a fantázia vezet)
Telepített csomagok ellenőrzése: zabbix.agent vagy bármely más szoftver
Szerver telepítése
Néhány napja frissítettem 5-ös verzióról 6.1-re, minden zökkenőmentesen zajlott. Alább a Debian/Ubuntu parancsokat fogom bemutatni, de támogatást is kapott: és .
A telepítést elrejtem spoilerben, hogy ne zavarjalak.
Spoiler
Függőségek
A rudder-serverhez minimum 8-as verziójú Java RE szükséges, amit a standard tárolóból lehet telepíteni:
Ellenőrizzük, hogy nincs-e telepítve
java -versionha a kimenet
-bash: java: command not foundakkor telepítjük
apt install default-jreSzerver
A kulcs importálása
wget --quiet -O- "https://repository.rudder.io/apt/rudder_apt_key.pub" | sudo apt-key add -Itt van a lenyomat
pub 4096R/474A19E8 2011-12-15 Rudder Project (release key)
Key fingerprint = 7C16 9817 7904 212D D58C B4D1 9322 C330 474A 19E8Mivel nincs előfizetésünk, ezt a repót adjuk hozzá
echo "deb http://repository.rudder.io/apt/6.1/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/rudder.listFrissítjük a repók listáját és telepítjük a szervert
apt update
apt install rudder-server-rootLétrehozzuk az admin felhasználót
rudder server create-user -u admin -p "A Te Jelszavad"Később a konfiguráción keresztül kezelhetjük a felhasználókat.
Kész, a szerver készen áll.
A szerver beállítása
Most hozzá kell adnunk az ügynökök IP-címeit vagy egy teljes alhálózatot az ügynökbe, figyelembe véve a biztonsági irányelveket.
Beállítások -> Általános

A „Hálózat hozzáadása” mezőben megadjuk a címet és a maszkot az x.x.x.x/xx formátumban. Ahhoz, hogy engedélyezzük a hozzáférést minden címről a belső hálózaton (ha ez ténylegesen teszthálózat, és NAT mögött vagyunk), adjuk meg: 0.0.0.0/0
Fontos – az IP-cím hozzáadása után ne felejtsük el rákattintani a Save changes gombra, különben semmi sem fog megmaradni.
Portok
A szerveren az alábbi portokat nyitjuk meg
443 — tcp
5309 — tcp
514 — udp
Megértettük a szerver kezdeti beállításait.
Ügynök telepítése
Spoiler
Kulcs hozzáadása
wget --quiet -O- "https://repository.rudder.io/apt/rudder_apt_key.pub" | sudo apt-key add -Kulcsujjlenyomat
pub 4096R/474A19E8 2011-12-15 Rudder Project (release key)
Key fingerprint = 7C16 9817 7904 212D D58C B4D1 9322 C330 474A 19E8Tárhely hozzáadása
echo "deb http://repository.rudder.io/apt/6.1/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/rudder.listÜgynök telepítése
apt update
apt install rudder-agentÜgynök konfigurálása
Megadjuk az ügynöknek a politikai szerver IP-címét
rudder agent policy-server #Zárójelek nélkül. Használhatunk tartománynevet is. A következő parancs kiadásával kérjük az új ügynök hozzáadását a szerverhez; néhány percen belül meg fog jelenni az új ügynökök listájában, hogyan lehet hozzáadni, azt a következő részben magyarázom el.
rudder agent inventoryAz ügynököt kényszerítve is elindíthatjuk, és azonnali kérdést küldhet
rudder agent runAz ügynökünk be van állítva, folytassuk.
Ügynökök hozzáadása
Bejelentkezünk
https://127.0.0.1/rudder/index.html

Az „Accept new nodes” szakaszban megjelenik az ügynökünk, bejelöljük, és rákattintunk az Accept gombra.

Egy kis időnek el kell telnie, míg a rendszer ellenőrzi a szervert a megfelelőség szempontjából.
Szervercsoportok létrehozása
Csoportot hozunk létre (még csak nem is értem, miért csinálták a fejlesztők ennyire bonyolulttá a csoportok létrehozását, de ahogy megértettem, másként nem lehet). Lépjünk a Node management -> Groups szakaszra, és kattintsunk a Create gombra, válasszuk a statikus csoportot és a nevet.

Szűrjük a számunkra szükséges szervert különböző jellemzők, például az IP-cím alapján, és mentsük el.

A csoport beállítva.
Szabályok beállítása
Váltsunk a Configuration policy → Rules szakaszra, és hozzunk létre egy új szabályt.

Hozzáadjuk az előzőleg elkészített csoportot (ezt később is megtehetjük).

És létrehozzuk az új irányelvet.

Létrehozunk egy irányelvet a nyilvános kulcsok hozzáadására a .ssh/authorized_keys fájlhoz. Ezt akkor használom, amikor új munkavállaló lép be, vagy biztosíték gyanánt, például, ha valaki véletlenül eltávolítja a kulcsomat.
Lépjünk a Configuration policy → Directives szakaszba, baloldalon látjuk a „Directive library”-t. Keresjük meg a „Remote access → SSH authorised keys”-t, majd jobbra kattintsunk a Create Directive gombra.
Írjuk be a felhasználó adatait, és adjuk hozzá a kulcsát. Ezután válasszuk ki az alkalmazási irányelvet.
Global — Az alapértelmezett irányelv.
Enforce — Kiválasztott szervereken végrehajtandó.
Audit — Lefolytja az auditot, és elmondja, hogy mely ügyfeleknél vannak kulcsok.

Mindenképpen meg kell adnunk a szabályunkat.

Ezután elmentjük, és minden készen áll.
Ellenőrzés

A kulcs sikeresen hozzáadva.
Extraságok
Az ügynök teljes információt ad a szerverről. Telepített csomagok, interfészek, nyitott portok és sok más, amit pontosan meg lehet nézni az alábbi képernyőképen.

Szoftver telepítése és ellenőrzése nem csak Linuxon, hanem Windows-on is lehetséges, utóbbit nem ellenőriztem, nem volt szükség rá.
A szerzőtől
Bizonyára megkérdezed, miért kellene újra feltalálni a kereket, ha már régóta léteznek az Ansible és a Puppet?
Válaszolok: Az Ansible-nek vannak hátrányai, például nem látjuk, hogy jelenleg milyen állapotban van ez a konfiguráció, vagy az a mindenki által ismert helyzet, amikor elindítod a role-t vagy playbook-ot, és hibákat kapsz a összeomlásról, majd kezdesz bemenni a szerverre, és nézni, hogy milyen csomag frissült. A Puppettel viszont egyszerűen nem dolgoztam.
Vannak minuszai a Rudder-nek? Nagyon sok... Kezdődően azzal, hogy az ügynökök megszakadhatnak, és újra kell telepíteni őket, vagy használni a rudder reset parancsot. (De egyébként a 6-os verzióban ilyet még nem láttam), valamint a rendkívül bonyolult beállítás és a logikátlan felhasználói felület miatt.
Vannak előnyei? És az előnyök is tömegesek: A mindenki által jól ismert Ansible-lel ellentétben van egy webes felület, amelyben láthatók a mi általunk alkalmazott megfelelőségek. Például: nyitva vannak-e portok a nagyvilág felé, milyen állapotban van a tűzfal, telepítve vannak-e a biztonsági ügynökök vagy más kütyük.
Ez a szoftver tökéletesen alkalmas a szerverszervezet biztonsági osztályának, mivel az infrastruktúra állapota mindig a szemed előtt lesz, és ha bármelyik szabály pirosra vált, az okot ad a szerver meglátogatására. Ahogy mondtam, már 2 éve használom a Ruddert, és ha egy kicsit belemerülsz, az élet jobb lesz. A legnehezebb egy nagy infrastruktúrában, hogy nem emlékszel, milyen állapotban van a szerver, nem maradt-e el a biztonsági ügynökök telepítése vagy helyesen van-e beállítva az iptables. A Rudder pedig segít, hogy képben legyél az eseményekkel. Az tájékozott, aki fegyverkezik!
P.S. Sokkal többet készült, mint amire számítottam, nem fogom leírni, hogyan kell telepíteni a csomagokat; ha azonban lesznek kérések, akkor írom a második részt.
P.S.S A cikk tájékoztató jellegű, szeretném megosztani, mivel az interneten nagyon kevés információ található erről. Talán érdekes lesz valakinek. Kellemes időtöltést kívánok, kedves barátaim :)
Hirdetés
Epikus szerverek — ez vagy Windows erőteljes AMD EPYC processzorokkal és rendkívül gyors Intel NVMe meghajtókkal. Siess a rendeléseddel!

Forrás: habr.com
