Предисловие

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

Итак, Rudder

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

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

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

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

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

Установка сервера

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

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

Spoiler

Зависимости

Для 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) <security@rudder-project.org>
      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 "Ваш Пароль"

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

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

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

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

Settings --> General

В поле "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- "https://repository.rudder.io/apt/rudder_apt_key.pub" | sudo apt-key add -

Отпечаток ключа

pub  4096R/474A19E8 2011-12-15 Rudder Project (release key) <security@rudder-project.org>
      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 же поможет вам быть в курсе всех событий. Осведомлён, значит вооружен! )

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

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


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

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

Комментарии (14)