Передмова
Наша «дружба» розпочалася два роки тому. Я прийшов на нове місце роботи, де попередній адмін невимушено залишив мені у спадок цю софтину. В інтернеті, крім офіційної документації, знайти нічого не виходило. Навіть зараз, якщо загуглити «rudder», то в 99% випадків видаватиме: штурвали кораблів і квадрокоптери. Мені вдалося знайти до нього підхід. Оскільки Ком'юніті цього софту мізерно малий, я вирішив поділитися своїм досвідом і граблями. Думаю, комусь це буде корисно.
Отже, Rudder
Rudder – це утиліта для аудиту та керування конфігурацією з відкритим вихідним кодом, яка допомагає автоматизувати налаштування системи. Працює вона за принципом установки агента кожного кінцевого користувача. Через зручний інтерфейс ми можемо спостерігати, наскільки наша інфраструктура відповідає всім заданим політикам.
Використання
Нижче я перерахую для чого використовую Rudder.
-
Контроль файлів та конфігів: ./ssh/authorized_keys ; /etc/hosts; iptables; (а далі куди фантазія заведе)
-
Контролює встановлені пакети: zabbix.agent або будь-який інший софт
Встановлення сервера
Днями оновився із 5 версії до 6.1, все пройшло успішно. Нижче будуть представлені команди для Deban/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) <[email protected]>
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 "Ваш Пароль"
Надалі можемо керувати користувачами через конфіг
Все, сервер готовий.
Налаштування сервера
Тепер необхідно додати в агент руддера ip адреси агентів або цілу підмережу, орієнтуємося на політику безпеки.
Settings -> General
У полі "Add a network" Вписуємо адресу та маску у форматі xxxx/xx . Для того щоб дозволити доступ з усіх адрес внутрішньої мережі (Якщо звичайно це тестова мережа і ви знаходитесь за NAT) вписуємо : 0.0.0.0/0
Важливо – після додавання ip address не забути натиснути 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) <[email protected]>
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 address сервера політик
rudder agent policy-server <rudder server ip or hostname> #Без скобок. Можно также использовать доменное имя
Запустивши наступну команду, ми надішлемо запит про додавання нового агента на сервер, через пару хвилин він з'явиться в списку нових агентів, як додавати поясню в наступному розділі
rudder agent inventory
Також можемо примусово запустити агент і він надіслати запит моментально
rudder agent run
Наш агент налаштований, ідемо далі.
Додавання агентів
Логіном
https://127.0.0.1/rudder/index.html
У розділі «Accept new nodes» з'явиться ваш агент, ставимо галочку та натискаємо Accept
Повинно пройти трохи часу, поки система перевірить сервер на відповідність
Створення груп серверів
Створимо групу (то ще розвага), без поняття чому розробники зробили настільки геморне формування груп, але як я зрозумів, інакше ніяк. Переходимо до розділу Node management -> Groups і натискаємо на Create, вибираємо статичну групу та назву.
Фільтруємо необхідний нам сервер за особливими прикметами, наприклад по ip address, і зберігаємо
Група налаштована.
Налаштування правил
Переходимо в Configuration policy → Rules і створюємо нове правило
Додаємо групу підготовлену раніше групу (це можна зробити і пізніше)
І формуємо нову директиву
Створимо директиву додавання публічних ключів до .ssh/authorized_keys. Я це використовую у випадку виходячи нового співробітника, або для перестрахування, наприклад, якщо хтось випиле випадково мій ключ.
Переходимо в Configuration policy → Directives зліва ми бачимо «Directive library» Знаходимо «Remote access → SSH authorised keys», праворуч натискаємо Create Directive
Вписуємо дані про користувача і додаємо його ключ. Далі вибираємо політику застосування
-
Global — Політика, встановлена за умовчанням
-
Enforce — Виконати на вибраних серверах
-
Audit - Проведе аудит і скаже на яких клієнтах є ключ
Обов'язково вказуємо наше правило
Потім зберігаємо і все готове.
перевіряємо
Ключ успішно доданий
Плюшки
Агент надає повну інформацію про сервер. Списки встановлених пакетів, інтерфейсів, відкритих портів та багато іншого, що саме можете подивитися на скріншоті нижче
Також можна встановлювати та контролювати софт не тільки на linux але й на windows, останнє я не перевіряв, не було потреби.
Від автора
Мабуть, ви запитаєте, навіщо винаходити велосипед, якщо вже давно придумані ansible і puppet?
Відповідаю: У Ансібла є недоліки, наприклад ми не бачимо в якому стані зараз знаходиться даний конфіг, або всім знайома ситуація коли запускаєш role або playbook і полетіли помилки про краше, і починаєш лізти на сервер і дивитися який пакет куди оновився. А з puppet я просто не працював.
Чи є мінуси у Rudder-a? Дуже багато. Починаючи від того, що відвалюються агенти і доводиться їх переінсталювати або використовувати команду rudder reset. (але до речі у версії 6 я такого ще не бачив), закінчуючи вкрай складним настроюванням і не логічним інтерфейсом.
Чи є плюси? І плюсів теж маса: На відміну від усього відомого ansible ми маємо веб-інтерфейс в якому видно застосований нами комплаєнс. Наприклад, чи стирчать порти у світ, у якому стані firewall, чи встановлені агенти безпеки чи інші приблуди.
Цей софт відмінно підійде для відділу інформаційної безпеки, оскільки стан інфраструктури завжди буде перед очима, і якщо якесь із правил засвітиться червоним, то це привід відвідати сервер. Як я й казав 2 роки вже використовую Rudder, і якщо його трохи покурити, то життя стає кращим. Найскладніше у великій інфраструктурі, те що ви не пам'ятаєте в якому стані знаходиться сервер, чи не пропустив джун установку агентів безпеки або чи правильно налаштував iptables, rudder же допоможе вам бути в курсі всіх подій. Поінформований, значить озброєний! )
PS Вийшло набагато більше, ніж я планував, не описуватиму як встановлювати пакети, якщо раптом будуть прохання то напишу другу частину.
PSS Стаття несе інформаційний характер, вирішив поділитися оскільки на просторах інтернету дуже мало інформації. Може бути це буде комусь цікаво. Доброго часу доби шановні друзі
На правах реклами
Епічні сервери - це
Джерело: habr.com