Сказ про домен AD, ДНС, сетевого инженера и архитектора

в 10:11, , рубрики: active directory, DNS, fsmo, системное администрирование, таски

В некотором царстве, в некотором государстве… Историю расскажу, как сказочку, из тех соображений, что в сказочника камней не кидают, аллергия на камни:) Ибо, ну что с него взять? Он же сказочник!

Так вот. Жила была компания, давненько это было, домен AD, w2k3 сервера, филиалы по области штук 15–20, в каждом — по контроллеру домена для надежности, и объединялись они с головным офисом каналами ВПН. В некоторых ранних версиях даже через GSM‑модемы.

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

Архитектор в том домене был человеком незлобивым. Рассудил, что проще всего, при отключении филиала — долгосрочное падение линка — это как умерли, ну и потом просто удалить из домена и контроллеры, и сайты. И делу конец.

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

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

Поразмыслил архитектор, и придумал, что для начала сделает закладочку, пока не ушли.

Надо, думает, понять, насколько далеко ушли. Пингуется ли головной офис из «ухилянтов»?
Взял булаву: alive.exe, он умеет выставлять результат доступности в ERRORLEVEL, что архитектор смог бы растолковать городу и миру, как «ушли». Если раз 20 пинговать по 2 раза в день. А может, просто канал обвалился, а не ушли. Зачем тогда нерв напрасно наматывать? Так тоже не пойдет.

Сказано — сделано. Оформил скриптом и повесил как таску в системный таск‑менеджер. Скрипт схоронил глубоко в файловую систему на контроллерах «ухилянтов». Таску замаскировал именем заморским, чтоб визуально вопросов не возникало.

Чур палками не кидаться, исходного скрипта для w2k3 до наших дней не сохранилось. Это реконструкция. На коленках. 123.cmd:

rem @echo off
set "HOST_TO_CHECK=192.168.1.1"
set "REG_KEY_PATH=HKEY_CURRENT_USERSoftwareMyApp"
set "REG_VALUE_NAME=Counter"

alive.exe %HOST_TO_CHECK%

if %errorlevel% equ 0 (
    reg add "%REG_KEY_PATH%" /v "%REG_VALUE_NAME%" /t REG_DWORD /d 0 /f 
    exit /b 0
)
for /f "skip=2 tokens=3" %%a in ('reg query "%REG_KEY_PATH%" /v "%REG_VALUE_NAME%" 2^>nul') do (
    set "CURRENT_VALUE=%%a"
)

if not defined CURRENT_VALUE (
    set "CURRENT_VALUE=0"
    reg add "%REG_KEY_PATH%" /v "%REG_VALUE_NAME%" /t REG_DWORD /d 0 /f >nul
)

set /a NEW_VALUE=CURRENT_VALUE + 1

reg add "%REG_KEY_PATH%" /v "%REG_VALUE_NAME%" /t REG_DWORD /d %NEW_VALUE% /f >nul

exit /b 1

Таска висит и тикает, каждый тик недоступности головного офиса прибавляет единицу в ключик в реестре, в тайном месте, естественно, чтоб никто ничего не понял. Если вдруг не вышло отпиливание, значит, появился пинг в головной офис. Сбрасываем счетчик.

Да и не важно, куда и как. Маркер можно сделать в виде файла cmd, который содержит типа set prm=значение, запускать его по ходу, переменную увеличивать на единицу, тут же set /a prm=prm+1 > в файл маркер. Это не сложно.

Главная таска запускается раз в 10–15 дней, например, смотрит маркер доступности головного офиса. Если маркер больше 15, то… надо валить… как бы это не звучало. Архитектор не злой, но если «старшие сказали „надо“, комсомол ответил: „есть!“»

А дальше, если маркер превысил условное значение, скажем, 15, делаем ни много ни мало: net stop dns

И не говорите мне, что это больно. Я в курсе. Это очень больно. Когда это происходит часа в 4 утра, а потом к семи приходят сотрудники, и… и тишина. И мертвые с косами:) все по классике.

Смотрит архитектор на это творчество, нет, думает, так не пойдет — владелец файлов скриптов и тасок очевиден. Удалил таски, и скрипты переложил. Чтобы уж совсем не наследить, рассудил архитектор: таску временную создам от себя, а выполняться она будет от лица system. И уже эта таска переложит и скрипты и создаст новые таски от лица system. И файлы скриптов будут system принадлежать. А потом исходную таску удалю. Пусть даже кто найдёт — с system спрос короткий.

В итоге ушли филиалы, как их и не было.

А в тех землях был сетевой инженер, тот еще весельчак. Звонит он как‑то раз архитектору и рассказывает, дескать, его нашли, просили помочь, он как увидел погашенную службу ДНС в первый раз, очень удивился, запустил, и опять мир воцарился. На второй раз он уже не удивлялся, просто запустил. Ну а на третий раз уже позвонил архитектору. А тот смешинки отпускает в бороду, но помалкивает.

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

А что с филиалами стало потом уже, неведомо, поговаривали, что домен они таки переподняли, и кажется, не один раз… но то люди говорят, а может и врут... Инженер в тамошних землях живет и здравствует. Архитектор все также строит и проектирует. А сказался ли архитектор про шалости... уже и не помню…

Но тут и сказочке конец. А кто дочитал, тот молодец:)

Некоторые пытливые читатели спросят: — «Почто бумагу измарал, писатель?»
Отвечу: — Основных выводов будет два.

«Уж сколько раз твердили миру…» ©, но повторю еще раз. Как только умирает служба ДНС, тут же домен AD превращается в тыкву. Впрочем, умирать ей совсем не обязательно. Достаточно накосячить в настройках.

То, что архитектор скриптом гасил ДНС — это больно. Это адски больно. Но то было нечасто. Чтоб прочувствовать, в горизонте квартала:)

И второй вывод почти философский. Организация сети в домен AD имеет массу плюсов, но появляется уязвимость от самого администратора. Просто потому, что он может все, и тем и опасен. И в этом смысле, каждый администратор домена должен чётко понимать, ОН и есть первая и главная опасность для существования домена.

За сим откланиваюсь, и Мир Вашему Дому.

Автор: AlexeiShigaev

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js