TBN

Вступление:

Каждый системный администратор знает, что существует верхняя планка для числа администрируемых им машин, и нередко при достижении близких к этому значению количества машин наступает полная анархия, и без специальных инструментов работать будет невозможно. Как известно «лень двигатель прогресса» и для ленивых админов существует огромное количество различных готовых решений, по большей части рассчитанных на использование в коммерческих системах. Открытых же систем не так много и по большей части они сугубо специфичны либо идут как аналог какой то уже закрытой системе.
Возьмем в пример Italc ( http://italc.sourceforge.net/ ) - отличный инструмент для управления как windows так и linux системами но имеет ряд незначительных недостатков на которые можно закрыть глаза, кроме того что когда администратор подключается к машине пользователя, он отнимает у него клавиатуру и курсор. Пользователь видит действия совершаемые администратором, и данное решение не подходит для групповой работы с машинами. AD ? Но оно только для windows, а аналоги данной системы либо закрытые либо ущербны в обслуживании, да и есть ряд ограничений для использования таких систем управления. Так что же делать если нужно выполнять групповые задачи на гетерогенных системах windows linux bsd solaris qnx итп ? Решения для управления таким зоопарком нет и не будет. В итоге родилось вот такое решение — TrueBotNet о котором в дальнейшем и пойдет речь.

Основные требованиями к системе управления:

  • KISS (англ. Keep It Simple, Stupid — «делай проще, тупица»)
  • Платформонезависимость (Windows Linux BSD etc)

Схема работы и описание с примерами:

tbn.png

tbn-agent — это программа работающая на клиентской машине, ее алгоритм достаточно прост:
# обратиться к серверу по http(s) протоколу, с указанием своего имени, логином и паролем, с целью получения очередного задания.
# Получив ответ, разобрать его и выяснить, назначено ему что либо или нет.
# Если было назначено задание, то взять из хранилища назначенный скрипт и исполнить его.
# После исполнения отчитаться на сервер об итогах исполнения
# Выждать интервал и обратиться к серверу снова.

Техническая реализация tbn-agent для windows платформы — это NT service работающий под пользователем SYSTEM. Для Linux (Unix) систем это BASH скрипт запускаемый по крону.

Техническая реализация серверной части:

База данных — на данном этапе это пока MySQL, хотя поддержка других баз данных вполне реализуема в короткое время. База используется для хранения имен агентов, скриптов, задач и логов. Впрочем тут объяснять ничего ненужно.
WEB server — любой сервер который сможет отдать по запросу сгенерированый текст и файл.
Скрипты управления агентами: с ними и работает агент при обращению к серверу, их на данном этапе всего два, хотя можно было обойтись и одним.
# Скрипт получения задания
# Скрипт для установки статуса об исполненном задании

Хранилище скриптов: каталог на сервере в котором находятся скрипты назначенные заданием для агентов.

WEB консоль администрирования: Собственно место обитания администратора, здесь делаются назначения задач и управление списками агентов итп итд, сердце системы.

Теперь рассмотрим несколько примеров:

1 — выключение штатного брендмауэра windows для любого количества машин.

Создаем скрипт CMD вот с таким вот содержанием:
:::::::::::::::::::::::::::::::
net stop “SharedAccess”
if ERRORLEVEL NEQ 0 (
echo “failure”
exit 1
)
sc config “SharedAccess” start= disabled
if ERRORLEVEL NEQ 0 (
echo “failure”
exit 1
)
exit 0
:::::::::::::::::::::::::::::::

сохраняем его под именем ics-disable-v0.3.cmd
копируем его в хранилище скриптов.
В консоли администрирования tbn создаем новый скрипт с именем ics-disable-v0.3.cmd
и указываем путь до него: http://mysqrver/tbn/scripts/ics-disable-v0.3.cmd

далее создаем задачу с любым именем: «Disable win firewall»
указываем скрипт для задачи ics-disable-v0.3.cmd
выбираем группу машин, либо определенные машины.

И ждем небольшой период времени ( это зависит от настроек агентов, пятиминутный интервал обращения агента к серверу самое то будет)

каждый агент которому было назначено данное задание получит от сервера от такой вот текст
::::::::::::::::::::::::::::::::::::::
296
ics-disable-v0.3.cmd
http://mysqrver/tbn/scripts/ics-disable-v0.3.cmd
::::::::::::::::::::::::::::::::::::::
первая строка это номер задачи
вторая это имя скрипта
третья это путь до самого скрипта.

(а те агенты которым ничего не было назначено получают одну строчку «null» либо сообщение об ошибке, если был неправельный логин пароль либо имя агента.)

агент получивший задание забирает по пути скрипт и складывает его себе в специальное хранилище, если конечно этот скрипт уже там не присутствует. Поэтому рекомендуется использовать в имени скрипта несколько символов для обозначения версии.
Получив скрипт, агент запускает его на исполнение. И по факту исполнения отчитывается серверу, как он его отработал.

В нашем случае на всех машинах которым был назначен данный скрипт, будет отключен штатный фаер венды.

2 — запуск обновления на всех серверах под управлением openSUSE

Тут все выглядит точно так же, за исключением нескольких пунктов:
Скрипт будет на BASH

#!/bin/bash
echo “$(date +%d.%m.%g\ %H:%M:%S) - start zypper update”
zypper -n up
ret=$?
echo “$(date +%d.%m.%g\ %H:%M:%S) - stop zypper update”
if [[ $ret != ‘0’ ]]
then
echo “error update”;
exit 1;
else
echo “success update”;
exit 0;
fi

и будут другое имя скрипта итп. Но результатом работы будет групповое обновление.

Что реализовано на данный момент:

# агент для windows linux систем. (windows — nt service написанный на С** QT4, linux — bash script стартующий по крону) агенты работают пока только по http протоколу.
# База данных только для MYSQL
# скрипты управления ботами на PHP
# Простенькая админка на С** QT4 работающая пока только с базой данных

Что будет реализовано в ближайшее время:

# поддержка https протокола
# скрипты управления на perl python
# база данных для PostgreSQL Oracle
# Нормальная WEB админка.
# Документация по установке, настройке и сопровождению системы.
# Система отчетов:
Отчет о работе агентов
Отчет об исполенных задачах, верно, неверно, зависшие задачи при исполнении итп.

Что будет реализовано в последующие этапы:

# Интеграция с LDAP для самбы у агентов и на серверной стороне.

PS как я использую TBN у себя в организации:
# обновление линукс серверов
# установка удаление софта на клиентских машинах без АД
# сбор данных с машин, по ПО и железу, для последующей обработки
# смена настроек ряда приложений по требованию, например назначение прокси серверов для ряда машин итп.
В прочем тут все уже зависит от фантазии при написании скриптов которые будут исполнятся на машинах.

Хотелось бы услышать мнение в необходимости продолжения работы над данной системой.
Пожелания предложения и прочие радости комментариев.

Mike,
Отличное решение! Надо продолжать работу обязательно!

Шикарное решение! :slight_smile: Друг мой, это воистину классная вещь, за одним исключением - проблема безопасности. Все компы в радиусе действия “дают” информацию, как студентки весной! :slight_smile:
Позаботься о безопасности, а я могу если хочешь помочь с пунктом 5. Попрошу знакомого разобраться с пунктом 4…

По безопасности подробнее. Я думаю достаточно будет https решения с проверкой чексумм.

В принципе да, если ставить на “индейце” с нестандартным портом, проверкой по сертификату И паролю, тогда должно хватить… Но тогда нужно будет проработать хорошо движок админки, чтоб обычным брутусом не взломали.

Может выложишь свои наработки где-нибудь?

вообще планирую выложить все под GPL но поскольку сейчас все в довольно сыром состоянии, выкладывать не буду.

доведу до ума часть пунктов и выложу в свободный доступ.

Те кто хотят принять участие в разработке, могу поделиться кодом но при условии, что на свободу tbn выпускать можно будет только в нормальном состоянии, а не в глубокой альфе.

вебадминка вообще опционально, можно и без нее работать.
лишь бы был доступ до базы данных.

Ну ты в php я так понимаю шаришь? Давай я попробую тебе дизайн админки пока сделать? :slight_smile:

будет весьма кстати.
мое мыло в профиле есть.

да, мне тоже понравилось, если такой идеи не было, то это было бы очень удобная автоматизация для любого производства

Идея на самом деле не нова.
Нет простого решения. Все что есть на данный момент либо платное, закрытое, либо весьма обвешано плюшками которые нафиг ненужны

Отичная новость. Постараюсь всячески содействовать. :wink:

создан проект на гуглокоде

http://code.google.com/p/tbn/

желающих принять участие - велкам =)

блин … забыл залогиниться … =)

Полностью переписаны агенты для windows linux систем, с поддержкой SSL HTTPS
так - же модернизированы серверные скрипты.

ЗЫ вебадминка все так же в планах, у кого есть желание, стучитесь на mikedm ssabako list.ru

Могу заняться чуток попозже оформлением вебадминки. Т.е. шаблончик в фотошопе накатать, потребуется только человечек который отверстает и прикрутит к вебадминке (на сколько я понял ее еще написать надо).

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

ЗЫ как только будет готова вебадминка, можно будет уже выкладывать в публичное пользование.

По дизайну я тоже конечно не гуру … но вебадминка сама по себе ничего сложно по отрисовке не представляет, этож не сайт визитка :slight_smile: Вобщем ща дизайн для своего инет мага доделаю, потом буду свободен! :slight_smile:

“Потом” это когда ? Мне бы сориентироваться. Стоит самому начинать лабать или нет.