
Vorwort
Unsere „Freundschaft“ begann vor zwei Jahren. Ich kam an einen neuen Arbeitsplatz, wo der vorherige Admin mir diese Software unkompliziert hinterlassen hat. Im Internet war außer der offiziellen Dokumentation nichts zu finden. Selbst heute, wenn man nach „rudder“ sucht, erhält man zu 99 % Ergebnisse über Schiffssteuerräder und Drohnen. Ich fand jedoch einen Zugang zu ihr. Da die Community dieser Software äußerst gering ist, beschloss ich, meine Erfahrungen und Fallstricke zu teilen. Ich denke, es wird für einige nützlich sein.
Also, Rudder
Rudder ist ein Open-Source-Tool zur Auditierung und Verwaltung von Konfigurationen, das dabei hilft, die Systemkonfiguration zu automatisieren. Es funktioniert, indem ein Agent auf jedem Endgerät installiert wird. Über eine benutzerfreundliche Oberfläche können wir beobachten, wie gut unsere Infrastruktur allen festgelegten Richtlinien entspricht.
Nutzung
Im Folgenden liste ich auf, wofür ich Rudder nutze.
Überwachung von Dateien und Konfigurationen: ./ssh/authorized_keys; /etc/hosts; iptables; (und weiter, wo die Fantasie hinführt)
Überwachung installierter Pakete: zabbix.agent oder jede andere Software
Serverinstallation
Kürzlich habe ich von Version 5 auf 6.1 aktualisiert, alles verlief erfolgreich. Unten werden die Befehle für Debian/Ubuntu dargestellt, aber es gibt auch Unterstützung für: und .
Ich werde die Installation in Spoilern verstecken, um Sie nicht abzulenken.
Spoiler
Abhängigkeiten
Für den rudder-server wird mindestens Java RE Version 8 benötigt, dies kann aus dem Standard-Repository installiert werden:
Prüfen wir, ob es installiert ist
java -versionwenn die Ausgabe
-bash: java: command not founddann installieren wir
apt install default-jreServer
Importieren Sie den Schlüssel
wget --quiet -O- "https://repository.rudder.io/apt/rudder_apt_key.pub" | sudo apt-key add -Hier ist der Fingerabdruck
pub 4096R/474A19E8 2011-12-15 Rudder Project (Release-Schlüssel)
Schlüssel-Fingerabdruck = 7C16 9817 7904 212D D58C B4D1 9322 C330 474A 19E8Da wir kein kostenpflichtiges Abonnement haben, fügen wir das folgende Repository hinzu
echo "deb http://repository.rudder.io/apt/6.1/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/rudder.listAktualisieren Sie die Liste der Repositories und installieren Sie den Server
apt update
apt install rudder-server-rootErstellen Sie einen Benutzer admin
rudder server create-user -u admin -p "Ihr Passwort"In Zukunft können wir die Benutzer über die Konfiguration verwalten
Alles klar, der Server ist bereit.
Serverkonfiguration
Jetzt müssen wir die IP-Adressen der Agenten oder ein ganzes Subnetz zum Rudder-Agenten hinzufügen, orientieren Sie sich an der Sicherheitsrichtlinie.
Einstellungen —> Allgemein

Im Feld „Add a network“ tragen Sie die Adresse und die Maske im Format x.x.x.x/xx ein. Um den Zugriff von allen Adressen des internen Netzwerks zu erlauben (sofern es sich um ein Testnetz handelt und Sie sich hinter NAT befinden), geben Sie Folgendes ein: 0.0.0.0/0
Wichtig — Vergessen Sie nach dem Hinzufügen der IP-Adresse nicht, auf Save changes zu klicken, da sonst nichts gespeichert wird.
Ports
Öffnen Sie die folgenden Ports auf dem Server
443 — tcp
5309 — tcp
514 — udp
Wir haben die anfängliche Serverkonfiguration abgeschlossen.
Installation des Agents
Spoiler
Schlüssel hinzufügen
wget --quiet -O- "https://repository.rudder.io/apt/rudder_apt_key.pub" | sudo apt-key add -Schlüssel-Fingerabdruck
pub 4096R/474A19E8 2011-12-15 Rudder Project (Release-Schlüssel)
Schlüssel-Fingerabdruck = 7C16 9817 7904 212D D58C B4D1 9322 C330 474A 19E8Repository hinzufügen
echo "deb http://repository.rudder.io/apt/6.1/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/rudder.listAgent installieren
apt update
apt install rudder-agentAgent konfigurieren
Geben Sie die IP-Adresse des Policy-Servers für den Agenten an
rudder agent policy-server #ohne Klammern. Es kann auch der Domänenname verwendet werden. Mit dem folgenden Befehl senden wir eine Anfrage zur Hinzufügung eines neuen Agents an den Server. Nach ein paar Minuten wird er in der Liste der neuen Agents erscheinen; wie man hinzufügt, erkläre ich im nächsten Abschnitt.
rudder agent inventoryAußerdem können wir den Agenten manuell starten, um die Anfrage sofort zu senden.
rudder agent runUnser Agent ist konfiguriert, machen wir weiter.
Hinzufügen von Agents
Einloggen
https://127.0.0.1/rudder/index.html

Im Abschnitt „Accept new nodes“ wird Ihr Agent angezeigt. Setzen Sie ein Häkchen und klicken Sie auf Accept.

Es wird eine Weile dauern, bis das System den Server auf Übereinstimmung überprüft.
Erstellung von Servergruppen.
Wir erstellen eine Gruppe (eine interessante Aufgabe), ich habe keine Ahnung, warum die Entwickler eine so komplizierte Gruppenerstellung eingeführt haben, aber wie ich verstanden habe, geht es nicht anders. Gehen Sie zu dem Abschnitt Node management -> Groups und klicken Sie auf Create, wählen Sie eine statische Gruppe und einen Namen.

Wir filtern den benötigten Server nach speziellen Merkmalen, zum Beispiel nach IP-Adresse, und speichern ihn.

Die Gruppe ist konfiguriert.
Regelkonfiguration.
Gehen Sie zu Configuration policy → Rules und erstellen Sie eine neue Regel.

Fügen Sie die zuvor erstellte Gruppe hinzu (das kann auch später gemacht werden).

Und wir erstellen eine neue Direktive.

Wir erstellen eine Direktive zum Hinzufügen von öffentlichen Schlüsseln zu .ssh/authorized_keys. Ich benutze dies im Falle eines neuen Mitarbeiters oder zur Sicherheit, falls jemand versehentlich meinen Schlüssel löscht.
Gehen Sie zu Configuration policy → Directives, auf der linken Seite sehen wir die "Directive library". Suchen Sie nach "Remote access → SSH authorised keys" und klicken Sie rechts auf Create Directive.
Geben Sie die Benutzerdetails ein und fügen Sie seinen Schlüssel hinzu. Dann wählen Sie die Anwendungspolitik aus.
Global — Die standardmäßig festgelegte Politik.
Enforce — Ausführen auf den ausgewählten Servern.
Audit — Führen Sie eine Überprüfung durch und erfahren Sie, bei welchen Kunden es Schlüssel gibt.

Bitte geben Sie unsere Regel an.

Dann speichern wir und alles ist bereit.
Wir überprüfen.

Schlüssel erfolgreich hinzugefügt.
Extras
Der Agent liefert vollständige Informationen über den Server. Listen installierter Pakete, Schnittstellen, geöffnete Ports und vieles mehr, was Sie auf dem Screenshot unten sehen können.

Es ist auch möglich, Software nicht nur auf Linux, sondern auch auf Windows zu installieren und zu steuern, letzteres habe ich nicht getestet, da ich dafür keine Notwendigkeit hatte.
Vom Autor
Sie fragen sich wahrscheinlich, warum das Rad neu erfunden werden soll, wenn es bereits Ansible und Puppet gibt?
Ich antworte: Ansible hat Nachteile, zum Beispiel sehen wir nicht, in welchem Zustand sich die Konfiguration gerade befindet, oder die bekannte Situation, wenn man eine Rolle oder ein Playbook startet und Fehler über einen Absturz auftreten, und man dann auf den Server gehen muss, um zu sehen, welches Paket wo aktualisiert wurde. Mit Puppet habe ich einfach nicht gearbeitet.
Gibt es Nachteile bei Rudder? Ja, einige ... Angefangen damit, dass Agenten ausfallen und neu installiert oder mit dem Befehl rudder reset verwendet werden müssen. (Übrigens habe ich das in Version 6 noch nicht gesehen), bis hin zu der extrem komplizierten Konfiguration und der unlogischen Benutzeroberfläche.
Und gibt es Vorteile? Auch die gibt es in Hülle und Fülle: Im Gegensatz zu dem allgemein bekannten Ansible haben wir eine Weboberfläche, in der wir die von uns angewandten Compliance-Vorgaben sehen können. Zum Beispiel – sind Ports nach außen offen, wie steht es um die Firewall, sind Sicherheitsagenten oder andere Tools installiert?
Diese Software ist hervorragend für die Abteilung für Informationssicherheit geeignet, da der Zustand der Infrastruktur stets im Blickfeld bleibt, und wenn eine der Einstellungen rot leuchtet, ist das ein Grund, den Server zu überprüfen. Wie gesagt, ich benutze Rudder nun schon seit zwei Jahren, und wenn man sich etwas damit beschäftigt, wird das Leben einfacher. Das größte Problem in einer großen Infrastruktur ist, dass man sich nicht mehr erinnert, in welchem Zustand der Server ist, ob ein Junior die Installation der Sicherheitsagenten verpasst hat oder ob die iptables richtig konfiguriert sind. Rudder hilft Ihnen, über alle Vorgänge informiert zu bleiben. Informiert zu sein, bedeutet gewappnet zu sein! )
P.S. Es kam viel mehr heraus, als ich geplant hatte. Ich werde nicht beschreiben, wie man Pakete installiert. Sollten Anfragen auftauchen, schreibe ich einen zweiten Teil.
P.S.S. Der Artikel dient nur zu Informationszwecken. Ich wollte meine Erkenntnisse teilen, da es im Internet sehr wenig Informationen dazu gibt. Vielleicht interessiert es ja jemanden. Ich wünsche Ihnen einen angenehmen Tag, liebe Freunde :)
Im Auftrag der Werbung
Epische Server — ist oder Windows mit leistungsstarken AMD EPYC Prozessoren und sehr schnellen Intel NVMe SSDs. Schnell bestellen!

Quelle: habr.com
