НОВОСТИ Установка и эксплуатация «Rudder»

NewsBot
Оффлайн

NewsBot

.
.
Регистрация
21.07.20
Сообщения
40.408
Реакции
1
Репутация
0
52769db5f9fe28cbd54ed8432b459a3b.jpg

Предисловие


Наша "дружба" началась два года назад. Я пришел на новое место работы, где предыдущий админ непринужденно оставил мне в наследство данную софтину. В интернете кроме официальной документации найти ничего не получалось. Даже сейчас, если загуглить "rudder" то в 99% случаев будет выдавать: штурвалы кораблей и квадрокоптеры. Мне удалось найти к нему подход. Поскольку Комьюнити данного софта ничтожно мал, я решил поделиться своим опытом и граблями. Думаю кому-то это будет полезно.

Итак, Rudder


Rudder - это утилита для аудита и управления конфигурацией с открытым исходным кодом, которая помогает автоматизировать настройку системы. Работает она по принципу установки агента на каждого конечного пользователя. Через удобный интерфейс мы можем наблюдать на сколько наша инфраструктура соответствует всем заданным политикам.

Использование


Ниже я перечислю для чего использую Rudder.


  • Контроль файлов и конфигов: ./ssh/authorized_keys ; /etc/hosts ; iptables ; (а дальше куда фантазия заведет)


  • Контроль установленных пакетов: zabbix.agent или любой другой софт
Установка сервера


На днях обновился с 5 версии до 6.1, все прошло успешно. Ниже будут представлены команды для Deban/Ubuntu но также есть поддержка: и .

Спрячу установку в спойлеры, чтобы вас не отвлекать.

Spoiler
Зависимости


Для rudder-server требуется Java RE минимум 8 версии, можно установить из стандартного репозитория:

Проверяем не установлена ли она

java -version

если вывод

-bash: java: command not found

то устанавливаем

apt install default-jre
Сервер


Импортируем ключ

wget --quiet -O- " " | 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 $(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 "Ваш Пароль"

В дальнейшем можем управлять юзерами через конфиг

Всё, cервер готов.

Настройка сервера


Теперь необходимо добавить в агент руддера ip адреса агентов или же целую подсеть, ориентируемся на политику безопасности.

Settings --> General

7e86a10b41deca1f118a4eb3b892e78d.png


В поле "Add a network" Вписываем адрес и маску в формате x.x.x.x/xx . Для того чтоб разрешить доступ со всех адресов внутренней сети (Если конечно это тестовая сеть и вы находитесь за NAT) вписываем : 0.0.0.0/0

Важно - после добавления ip address не забыть нажать Save changes, в противном случае ничего не сохранится.

Порты


На сервере открываем следующие порты


  • 443 - tcp


  • 5309 - tcp


  • 514 - udp

С первоначальной настройкой сервера разобрались.


Установка Агента

Spoiler

Добавляем ключ

wget --quiet -O- " " | 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 $(lsb_release -cs) main" > /etc/apt/sources.list.d/rudder.list

Устанавливаем агент

apt update
apt install rudder-agent
Настройка агента


Укажем агенту ip address сервера политик

rudder agent policy-server #Без скобок. Можно также использовать доменное имя

Запустив следующую команду мы отправим запрос о добавлении нового агента на сервер, через пару минут он появится в списке новых агентов, как добавлять объясню в следующем разделе

rudder agent inventory

Также можем принудительно запустить агент и он отправить запрос моментально

rudder agent run

Наш агент настроен, идем дальше.

Добавление агентов


Логинимся



9a82992b8cc08bce49a278e26726beac.png


В разделе "Accept new nodes" появится ваш агент, ставим галочку и нажимаем Accept

50696b00c805771f972e492df50a3225.png


Должно пройти немного времени пока система проверит сервер на соответствие


Создание групп серверов


Создадим группу (то еще развлечение), без понятия почему разработчики сделали столь геморное формирование групп, но как я понял, по другому никак. Переходим в раздел Node management -> Groups и нажимаем на Create, выбираем статическую группу и название.

7ef10aa16cebebc8345e59bdd240d86b.png


Фильтруем необходимый нам сервер по особым приметам, к примеру по ip address, и сохраняем

a0f45e975913e3e31a5d7eeb46e3a25e.png


Группа настроена.

Настройка правил


Переходим в Configuration policy > Rules , и создаем новое правило

0868a66bd91702cfd9543f95f37175ed.png


Добавляем группу подготовленную ранее группу (это можно сделать и позже)

93f1adbefe746e39400929de7e26de94.png


И формируем новую директиву

ca35b3068887d9fdcc6a8e1e915a621a.png


Создадим директиву добавления публичных ключей в .ssh/authorized_keys. Я это использую в случае выходя нового сотрудника, или для перестраховки, например если кто-то выпилит случайно мой ключ.

Переходим в Configuration policy > Directives слева мы видим "Directive library" Находим "Remote access > SSH authorised keys", справа нажимаем Create Directive

Вписываем данные о юзере и добавляем его ключ. Далее выбираем политику применения


  • Global - Политика установленная по умолчанию


  • Enforce - Выполнить на выбранных серверах


  • Audit - Проведет аудит и скажет на каких клиентах есть ключ
b4840b1612bd76dcda191190288b7ef4.png


Обязательно указываем наше правило

d8ea3b867718c6fa71d412b2e300b283.png


Затем сохраняем и все готово.

Проверяем

6525a7d08c5677a73f60000f697b0820.png


Ключ успешно добавлен

Плюшки


Агент отдает полную информацию о сервере. Списки установленных пакетов, интерфейсов, открытых портов и многое другое, что именно можете посмотреть на скриншоте ниже

b0a80a320d7111dd98eefe4b6b4a9583.png


Также можно устанавливать и контролировать софт не только на linux но и на windows, последнее я не проверял, не было необходимости..

От автора


Должно быть, вы спросите, зачем изобретать велосипед, если давно уже придуманы ansible и puppet?

Отвечаю: У Ансибла есть недостатки, например мы не видим в каком состоянии сейчас находится данный конфиг, или всем знакомая ситуация когда запускаешь role или playbook и полетели ошибки о краше, и начинаешь лезть на сервер и смотреть какой там пакет куда обновился. А с puppet я просто не работал..

Есть ли минусы у Rudder-a? Очень много .. Начиная от того, что отваливаются агенты и приходится их переинсталивать или использовать команду rudder reset. (но кстати в версии 6 я такого еще не видел), заканчивая крайне сложной настройкой и не логичным интерфейсом.

Есть ли плюсы? И плюсов тоже масса: В отличие от всем извесного ansible мы имеем веб интерфейс в котором видно примененный нами комплаенс. К примеру - торчат ли порты в мир, в каком состоянии firewall, установлены ли агенты безопасности или другие приблуды.

Данный софт отлично подойдет для отдела информационной безопасности, так как состояние инфраструктуры всегда будет перед глазами, и если какое-то из правил засветится красным, то это повод посетить сервер. Как я и говорил 2 года уже использую Rudder, и если его немного покурить, то жизнь становится лучше. Самое сложное в большой инфраструктуре, то что вы не помните в каком состоянии находится сервер, не пропустил ли джун установку агентов безопасности или правильно ли на настроил iptables , rudder же поможет вам быть в курсе всех событий. Осведомлён, значит вооружен! )

P.S. Вышло гораздо больше чем я планировал, не буду описывать как устанавливать пакеты, если вдруг будут просьбы то напишу вторую часть.

P.S.S Статья несет информационный характер, решил поделиться так как на просторах интернета очень мало инфы. Может-быть это будет кому-то интересно. Хорошего времени суток уважаемые друзья )


На правах рекламы

Эпичные серверы - это или Windows с мощными процессорами семейства AMD EPYC и очень быстрыми NVMe дисками Intel. Спешите заказать!

9702175579fd1e49224a1c4aad71a6b0.png
 
Сверху Снизу