
Предговор
Нашето „приятелство“ започна преди две години. Постъпих на нова работа, където предишният администратор без усилие ми остави този софтуер в наследство. В интернет, освен официалната документация, не можех да намеря нищо. Дори сега, ако потърсите „rudder“, в 99% от случаите ще получите: штурвали на кораби и квадрокоптери. Успях да намеря подхода. Тъй като общността на този софтуер е значително малка, реших да споделя опита си и трудностите. Мисля, че на някой ще му бъде полезно.
И така, Rudder
Rudder е инструмент за одит и управление на конфигурацията с отворен код, който помага за автоматизиране на настройката на системата. Той работи на принципа на инсталиране на агент на всеки крайния потребител. Чрез удобния интерфейс можем да наблюдаваме доколко нашата инфраструктура отговаря на зададените политики.
Използването
По-долу ще изредя за какво използвам Rudder.
Контрол на файлове и конфигурации: .\/ssh\/authorized_keys ; \/etc\/hosts ; iptables ; (а нататък където въображението води)
Контрол на инсталираните пакети: zabbix.agent или друг софтуер
Инсталация на сървъра
Наскоро се обнових от версия 5 до 6.1, всичко мина успешно. По-долу ще бъдат представени командите за Debian/Ubuntu, но има и поддръжка за: и .
Ще скрия инсталацията в спойлер, за да не ви разсейвам.
Спойлер
Зависимости
За rudder-server е необходима Java RE минимум версия 8, може да бъде инсталирана от стандартния репозиторий:
Проверяваме дали не е инсталирана
java -versionако изходът е
-bash: java: command not foundтогава инсталираме
apt install default-jreСървър
Импортираме ключа
wget --quiet -O- "https://repository.rudder.io/apt/rudder_apt_key.pub" | sudo apt-key add -Ето и самият отпечатък
pub 4096R\/474A19E8 2011-12-15 Rudder Project (release key)
Key fingerprint = 7C16 9817 7904 212D D58C B4D1 9322 C330 474A 19E8Тъй като нямаме платен абонамент, добавяме следния репозиторий
echo "deb http:\/\/repository.rudder.io\/apt\/6.1\/ $(lsb_release -cs) main" > \/etc\/apt\/sources.list.d\/rudder.listАктуализираме списъка с репозиторите и инсталираме сървъра
apt update
apt install rudder-server-rootСъздаваме потребител admin
rudder server create-user -u admin -p "Вашата Парола"Впоследствие можем да управляем потребителите чрез конфигурацията
Всичко, сървърът е готов.
Конфигуриране на сървъра
Сега е необходимо да добавим в агента на Rudder IP адресите на агентите или целия подмрежа, ориентирайки се по политиката за сигурност.
Настройки —> Общо

В полето «Add a network» вписваме адреса и маската във формат x.x.x.x/xx. За да разрешим достъпа от всички адреси на вътрешната мрежа (ако разбира се това е тестова мрежа и сте зад NAT), вписваме: 0.0.0.0/0.
Важно е — след добавяне на IP адрес не забравяйте да натиснете Save changes, в противен случай нищо няма да се запази.
Портове
На сървъра отваряме следните портове
443 — tcp
5309 — tcp
514 — udp
С първоначалната настройка на сървера се справихме.
Инсталиране на агента
Спойлер
Добавяме ключ
wget --quiet -O- "https://repository.rudder.io/apt/rudder_apt_key.pub" | sudo apt-key add -Отпечатък на ключа
pub 4096R\/474A19E8 2011-12-15 Rudder Project (release key)
Key fingerprint = 7C16 9817 7904 212D D58C B4D1 9322 C330 474A 19E8Добавяме репозиторий
echo "deb http:\/\/repository.rudder.io\/apt\/6.1\/ $(lsb_release -cs) main" > \/etc\/apt\/sources.list.d\/rudder.listИнсталираме агента
apt update
apt install rudder-agentНастройка на агента
Посочваме на агента IP адреса на сървъра на политиките
rudder agent policy-server #Без скобки. Може също да се използва домейн името. С изпълнението на следната команда ще изпратим заявка за добавяне на нов агент на сървъра и след няколко минути той ще се появи в списъка с нови агенти. Как да добавим ще обясня в следващия раздел.
rudder agent inventoryСъщо така можем да задействаме агента принудително и той ще изпрати заявка незабавно.
rudder agent runНашия агент е настроен, минаваме нататък.
Добавяне на агенти
Влизаме в системата
https://127.0.0.1/rudder/index.html

В раздела «Accept new nodes» ще се появи вашият агент, поставяме отметка и натискаме Accept.

Нужно е да мине малко време, докато системата провери сървъра за съответствие.
Създаване на групи сървъри
Ще създадем група (това е смешно занимание), нямам представа защо разработчиците направиха толкова сложно структуриране на групите, но както разбрах, не може по друг начин. Преминаваме в раздел Node management -> Groups и натискаме на Create, избираме статична група и името.

Филтрираме необходимия сървър по специфични признаци, например по IP адрес и запазваме.

Групата е настроена.
Настройка на правилата
Преминаваме в Configuration policy → Rules и създаваме ново правило.

Добавяме предварително подготвената група (може да го направите и по-късно).

И формулираме нова директива.

Ще създадем директива за добавяне на публични ключове в .ssh/authorized_keys. Използвам това в случай на нов сътрудник или за предпазна мярка, например ако някой случайно премахне моя ключ.
Преминаваме в Configuration policy → Directives, отляво виждаме «Directive library». Намираме «Remote access → SSH authorised keys», отдясно натискаме Create Directive.
Вписваме данни за потребителя и добавяме неговия ключ. След това избираме политиката на прилагане.
Global — Политика, зададена по подразбиране.
Enforce — Изпълнява на избраните сървъри.
Аудит — Ще проведе одит и ще каже на кои клиенти има ключ.

Задължително посочваме нашето правило.

След това запазваме и всичко е готово.
Проверяваме.

Ключът бе успешно добавен.
Допълнителни предимства
Агентът предоставя пълна информация за сървъра. Списъци на инсталираните пакети, интерфейси, отворени портове и много друго, което можете да видите на екрана по-долу.

Също така можете да инсталирате и контролирате софтуер не само на Linux, но и на Windows, последното не съм проверявал, нямаше необходимост.
От автора.
Навярно ще се запитате защо да изобретяваме велосипеда, след като отдавна съществуват Ansible и Puppet?
Отговарям: Ansible има недостатъци, например не виждаме в какво състояние точно се намира този конфиг, или познатата ситуация, когато стартирате роля или playbook и получавате грешки за краш и трябва да отидете на сървъра и да проверите какъв пакет къде е бил обновен. А с Puppet просто не съм работил.
Има ли минуси на Rudder? Много ... Започвайки от това, че агентите отпадат и трябва да ги преинсталирате или да използвате командата rudder reset. (но между другото в версия 6 не съм виждал такова нещо), завършвайки с изключително сложната настройка и нелогичния интерфейс.
Има ли положителни страни? И положителните страни също са много: В отличие от добре познатия Ansible, имаме уеб интерфейс, в който се вижда прилагания от нас комплаенс. Например — отворени ли са портовете към света, какво е състоянието на firewall, инсталирани ли са агенти за сигурност или други подобни.
Този софтуер е отличен за отдела по информационна сигурност, тъй като състоянието на инфраструктурата винаги ще бъде пред очите ви, и ако някое от правилата светне в червено, това е повод да посетите сървъра. Както казах, вече 2 години използвам Rudder, и ако малко го поизучите, животът става по-добър. Най-трудното в голямата инфраструктура е, че не помните в какво състояние се намира сървърът, не сте пропуснали ли инсталацията на агенти за сигурност или правилно ли сте настроили iptables; Rudder ще ви помогне да бъдете в течение на всички събития. Осведомен, значи въоръжен!
P.S. Излезе много повече, отколкото планирах, няма да описвам как се инсталират пакети, ако все пак имате искания, ще напиша втора част.
P.S.S Статията е с информационен характер, реших да споделя, тъй като в интернет има много малко информация. Може би това ще е интересно за някого. Приятно време на всички, уважаеми приятели)
Реклама
Епични сървъри — това е или Windows с мощни процесори от семейството на AMD EPYC и много бързи NVMe дискове Intel. Поръчайте сега!

Източник: habr.com
