惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

PCI Perspectives
PCI Perspectives
Microsoft Security Blog
Microsoft Security Blog
MongoDB | Blog
MongoDB | Blog
T
The Blog of Author Tim Ferriss
罗磊的独立博客
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
Recorded Future
Recorded Future
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
Recent Announcements
Recent Announcements
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Apple Machine Learning Research
Apple Machine Learning Research
T
Threatpost
The GitHub Blog
The GitHub Blog
M
MIT News - Artificial intelligence
Scott Helme
Scott Helme
P
Palo Alto Networks Blog
T
Tenable Blog
P
Privacy International News Feed
V
Visual Studio Blog
F
Fortinet All Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
I
Intezer
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
AI
AI
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
S
Security Affairs
S
SegmentFault 最新的问题
C
Cisco Blogs
博客园 - 聂微东
MyScale Blog
MyScale Blog
V
Vulnerabilities – Threatpost
量子位
T
The Exploit Database - CXSecurity.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Security Latest
Security Latest
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Troy Hunt's Blog
T
Tailwind CSS Blog
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
The Last Watchdog
The Last Watchdog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Внедряем TACACS.NET на Windows для сетевого стенда
schigor · 2026-04-17 · via Все публикации подряд на Хабре

Время на прочтение8 мин

Охват и читатели6.1K

Туториал

Опять «презумпция виновности» и 11 злобных зрителей с нетерпением ждут возможности накидать замечаний за отсутствие аутентификации tacacs (и не только), а сапожник снова без сапог: нужен стенд – но развернуть его в офисной «стекляшке» негде. Партнер готов прийти на помощь – но доброта имеет четкие рамки: в соседние серверы не включаемся, но можно предоставить ноут с «чистой» Виндой.

В такой ситуации на ум приходят ровно 2 варианта: 20-летней давности Cisco Access Control Server (ACS) 4.2, либо … tacacs.net. Причем когда-то с обоими был не самый удачный первый опыт работы. На самом деле, самый первый опыт может оказаться неудачным с чем угодно – даже с tacacs+ на RedOS (там вместо текста – картинки, и не сразу поймешь – это цифра "один" или маленькая "эль") или vESR, но какая-то последующая попытка обычно становится успешной. В общем, «Не нравятся кошки? Вы просто не умеете их готовить».

После моего почти рефлекторного «интим tacas.net не предлагать», коллега высказал глубокую мысль: если нарисовать взаимосвязь разрозненных экранных форм и полей, параметров в файлах конфигураций и т.п., то успех оказывается намного более вероятным – так сказать, паззл сложится. Что подтвердилось тем же вечером.

Чтобы добавить «практической ценности» и наглядности, будем решать вот такую условную задачку: обеспечить на коммутаторах MES и маршрутизаторах ESR от Eltex авторизацию для оператора и администратора через tacacs. При этом оператор должен иметь возможность просматривать running-config, но не должен ничего изменять. Администратор же, в свою очередь, должен иметь полный доступ (level 15).

А дальше – строго по порядку:

  • Установка tacacs.net

  • Сложим паззл из параметров настройки tacacs.net и условий задачи

  • Настроим tacacs.net

  • Настроим сетевое оборудование

  • Дополнительно: смягчим лицензионные ограничения

Установка tacacs.net

Установка включает 2 шага: скачивание инсталлятора tacacs.net и его собственно установка.

На официальном сайте tacacs.net в свободном доступе есть версия 2.1.2 со следующими ограничениями в отсутствие файла лицензии: 5 устройств и 3 пользователя.

Поскольку эта версия относится к 2016 году, она имеет вполне гуманные по сегодняшним меркам системные требования:

  • Windows Vista or Windows Server 2008 or later

  • 1 GHz CPU

  • 256 MB RAM

  • 500 MB HDD free

Установка заключается в запуске скачанного инсталлятора. В принципе, можно принять все параметры по умолчанию (включая установку всех утилит). При установке будет предложено ввести секретный ключ (по которому устройство и сервер tacacs верифицируют друг друга). По факту, его можно не вводить, а также скорректировать позже в файлах настройки. Я бы рекомендовал ввести что-то заведомо простое – например, 12345678. Позже, бросаясь в глаза, такая последовательность сразу укажет на поле в файле конфигурации. Естественно, что это значение можно потом изменить.

В процессе установки, файлы программ и конфигураций устанавливаются в разные каталоги. Причем файлы конфигураций жестко устанавливаются в скрытый каталог C:\ProgramData, там же приложение хранит журнальные файлы. Структура каталогов и начальный перечень файлов показаны ниже:

C:\ProgramData
├───TACACS.net
│   ├───config
│   │       authentication.xml
│   │       authorization.xml
│   │       clients.xml
│   │       googleotp.xml
│   │       logging.xml
│   │       tacplus.xml
│   │
│   └───Logs
│           Accounting_2026-03-24_1.CSV
│           Debug_2026-03-24_1.log
│           System_2026-03-24_1.CSV

По завершению установки, появляется новый сервис Windows, обычно в состоянии «Выполняется». Это хорошая новость. Другая новость: до настройки ничего полезного он не делает. Впрочем, до этого тоже дойдем.

Детализируем условия и складываем паззл

Как правило, любую задачу можно решать несколькими способами. И в математике это используется для проверки правильности полученного результата.

В нашем случае проверить можно непосредственно в командной строке, поэтому в рамках статьи ограничимся следующим:

  • Определим идентификаторы пользователей – пусть это будут user9 и admin соответственно для оператора и администратора

  • Определяем базовый уровень привилегий, доступный пользователю (level 9 и15 соответственно для user9 и admin)

  • Тюнинг доступности команд на разных уровнях: на маршрутизаторах и коммутаторах нужно активировать «show running-config» для уровня 9, а для коммутаторов дополнительно перенести «configure» на уровень 10 или выше (сделав недоступной для user9)

Через Tacacs будет выполняться идентификация пользователей и задаваться уровни привилегий

Сборка же паззла заключается в визуализации нахождения и взаимосвязи параметров, разбросанных по разным файлам сервиса Tacacs.net (в отличии от того же tacacs+ для Linux, где все в одном файле), как показано на рисунке ниже.

Видно, что (представьте Боромира) «Нельзя просто взять и настроить в tacacs.net уровень привилегий для пользователя». Впрочем, рассмотрим все по порядку.

Для снижения объема информации в рисунке, неиспользуемые строки не показаны – но приведена полная XML-иерархия (для ориентирования в XML-файлах, поскольку строк там немало).

А для наглядности, изменяемые параметры выделены цветом: черным с подчеркиванием – локальные параметры (не используются для ссылок в других файлах), а синий и красный – два параметра, которые согласованно используются в двух файлах.

И так, в файле tacplus.xml в простейшем случае задается адрес, на котором tacacs.net будет принимать запросы. На рисунке приведено исходное значение, которое необходимо скорректировать.

В файле clients.xml описываются параметры tacacs-клиентов (сетевых устройств), включая:

  • Диапазон(ы) допустимых адресов

  • Секретный ключ для взаимодействия с tacacs сервером («те самые» 12345678, упомянутые выше)

Эти параметры объединяются в клиентскую группу, которой присваивается идентификатор (в нашем случае - INTERNAL).

В файле authentication.xml описываются параметры идентификации и аутентификации. При этом пользователи с одинаковыми методом аутентификации, привилегиями и настройками (priv-lvl, default-acl, autocmd и т.п.) объединяются в пользовательские группы (на рисунке - OPERATOR). Иначе пользователей нужно разносить по разным группам. Для каждой группы задается тип аутентификации (для простоты выбираем file), для пользователя – его логин и пароль.

В файле authorization.xml происходит магия: по совпадению комбинации клиентской и пользовательской групп применяются настройки, указанные в AutoExec. В нашем случае – задается необходимый уровень привилегий.

Настраиваем tacacs.net

Настройка выполняется путем редактирования файлов конфигурации в редакторе Notepad. Перед началом редактирования следует очистить флажок атрибута «только чтение». Для редактирования:

  • редактор необходимо запускать от имени администратора (иначе не получится сохранить изменения – ибо на диске С)

  • файл конфигурации открывать уже в запущенном редакторе

Начать можно с файла tacplus.xml, где нужно поправить ровно 1 поле. Задается адрес, который:

  • Доступен для сетевых устройств (клиентов tacacs)

  • Локальный (настроен на сетевом интерфейсе) для виртуалки или компьютера

Пусть в нашем случае это будет адрес 172.16.1.111.

В файле clients.xml можно ничего не менять и использовать группу INTERNAL или даже DEFAULT.

В файле authentication.xml настраиваются 2 группы с методом идентификации file:

  • OPERATOR – пользователь user9 с каким-либо паролем

  • ADMINISTRATOR – пользователь admin с каким-либо надежным паролем, причем с помощью утилиты tacdes его можно зашифровать и не хранить в файле в открытом виде. И тогда строчка с паролем может выглядеть следующим образом:

<LoginPassword ClearText="" DES="GwJQb6xe9+C8Ysosigs5OQ=="> </LoginPassword>

При правке файла authentication.xml за основу удобно взять группу «Network Engineering», которая в начале файла и уже использует метод аутентификации file. Однако, исходно в этой группе все пользователи «закомментарены» – обращаем внимание на комбинации <!-- и -->.

В файле authorization.xml нужно настроить 2 группы Authorization: для пользовательских групп OPERATOR и ADMINISTRATOR (можно ссылаться на одну и ту же клиентскую группу INTERNAL или DEFAULT), указав правильный уровень привилегий (15 для ADMINISTRATOR, 9 для OPERATOR).

После сохранения конфигураций, в окне командной строки следует запустить утилиту tacverify.

Ожидаемый результат:

All files have the correct syntax. Validating configuration...

No errors were found in the configuration.

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

После исправления ошибок (если будут) нужно рестартовать сервис TACACS.NET. И в качестве финальной проверки, можно сымитировать подключение устройства с помощью команды tactest (убрал под кат):

Имитация подключения устройства

C:\Users\User>tactest -s 172.16.1.111 -k 12345678 -u user9 -author -p user9

Trying to open connection to 172.16.1.111:49

Sending:

 MajorVersion=12

MinorVersion=0

Type=Authorization

SeqNum=1

IsEncrypted=True

IsSingleConnect=True

SessionID=2038531187

DataLength=41

 Authorization Method=Debug

Priv lvl=1

Auth Type=Ascii

Service=None

User=user9

Port=

Rem Addr=127.0.0.1

Args: service=shell     cmd=    priv-lvl=9

Received Header:

 MajorVersion=12

MinorVersion=0

Type=Authorization

SeqNum=2

IsEncrypted=True

IsSingleConnect=False

SessionID=2038531187

DataLength=17

Received Body:

 Authorization Status=PassAdd

User=

Port=

Args: priv-lvl=9

Command Pass status = True, Message=,

------------------

SUMMARY STATISTICS

------------------

Total Commands  .....................  1

Successes  ..........................  1

Failures  ...........................  0

No Results  .........................  0

Time Taken for commands  ............  0,039 secs

Avg Possible Transactions/Second  ...  25

Network Time per command  ...........  0,013 secs

Total Network time  .................  0,013 secs

Sent Transactions/Second  ...........  15,9

C:\Users\User>

Обращаем внимание, что:

  • Аутентификация прошла успешно,

  • Пользователю сопоставлен корректный уровень привилегий

Примечание: иногда после дальнейших изменений и попытки рестарта, сервис TACACS.NET рестартовать отказывается и выдает следующую картинку:

Обычно это значит, что:

  • Либо IP-адрес в файле tacplus.xml не является локальным для TACACS.NET

  • Либо какая-то ошибка в настройках (например, забыли убрать комментарии вокруг секции с пользователями в файле authentication.xml)

Настраиваем сетевое оборудование Eltex

Настройка сетевого оборудования сводится к следующим командам:

  • Настройкам tacacs

  • Тюнингу доступа к отдельным командам на 9 уровне

Настройки маршрутизаторов ESR:

privilege root level 9 "show running-config"
#
aaa authentication mode break
aaa authentication login default tacacs local
#
tacacs-server host 172.16.1.111
  key ascii-text 12345678
  source-interface [укажите свой, если нужно]

Настройки коммутаторов MES:

privilege exec 9 show running-config
privilege exec 10 configure
!
tacacs-server host 172.16.1.111 key 12345678
tacacs-server host source-interface [укажите свой, если нужно]
!
aaa authentication mode break
aaa authentication login authorization default tacacs local

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

  • Пользователь заходит под доступной учеткой и получает требуемый уровень привилегий (15 для admin, 9 для user9)

  • Для user9 недоступна команда configure, но доступна show running-config

Смягчаем лицензионные ограничения

На самом деле, здесь не будут даваться ссылки на кейгены или кряки. Но, столкнувшись с этими ограничениями (после авторизации появляется Access Denied), придумал свой способ.

И так, ограничения в 5 устройств и 3 пользователя. На первый взгляд, пользователей всего 2 (admin и user9), значит причина в количестве устройств. И после перезапуска сервиса авторизация восстанавливается (типа, приложение не злопамятное).

Таким образом, напрашивается регулярная перезагрузка – и при разумных сценариях работы с 2-4 устройствами одновременно неудобств возникать не должно. А это вполне можно сделать через «Планировщик задач».

Выполняем следующие действия:

  • Создаем файл tacacs.bat следующего содержания:

net stop TACACS.net
net start TACACS.net
  • В «Планировщике задач» создаем новую задачу, которую назовем tacacs и последовательно заполним формы на вкладках.

Здесь ключевыми моментами являются:

  • Выполнение с высшим приоритетом

  • Достаточно частое повторение (в нашем случае – каждые 5 минут)

  • В качестве действия – запуск ранее созданного файла tacacs.bat

В качестве проверки рекомендуется выполнить следующие 3 действия:

  • Остановить сервис TACACS.net

  • Убедиться, что в журнале с требуемой периодичностью появляются сведения о старте и успешном завершении задания (может понадобиться обновить содержимое)

  • Убедиться, что сервис TACACS.net перешел в состояние «выполняется» (хотя иногда состояние «выполняется» не отображается, слева появляются варианты действия «остановить» и «перезапустить» - что также указывает на требуемое состояние сервиса).

Заключение

В этой статье я показал как настроить экзотичный «tacas на Windows», а также показал способ смягчения лицензионных ограничений, заложенных разработчиком в версии 2.1.2.

Справедливости ради, когда одновременных операторов много и подключаются они ко всем железкам, ограничения таки срабатывают (чудес не бывает). Так что, продемонстрировав  «отлуп» как свидетельство работоспособности, TACACS.net был отключен (и здесь главное – не забыть отключить задачу из «Планировщика», которая будет его каждые 5 минут запускать).

Так что без лицензии для продуктива TACACS.net 2.1.2 вряд ли подойдет – но при работе на стенде может оказаться даже очень годным инструментом.