Прадмова
Наша «сяброўства» пачалася два гады таму. Я прыйшоў на новае месца працы, дзе папярэдні адмін нязмушана пакінуў мне ў спадчыну дадзеную сафтыну. У інтэрнэце акрамя афіцыйнай дакументацыі знайсці нічога не атрымлівалася. Нават цяпер, калі загугліць "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