Главная

Wednesday, 29 September 2021

Привязка агента McAfee к серверу ЕРО.

Всем привет.

Как то раз наша техподдержка случайно установила агента McAfee не подходящей версии. Все бы ничего но дело в том, что пока агент McAfee не синхронизирует свои политики с сервером EPO он включает у себя по умолчанию McAfee Firewall. И начинаются траблы с доступом...

Поэтому с пакетом агента McAfee надо соблюдать не только версию, но и еще и зависимость от конкретного сервера EPO. А тут особенность - несмотря на то что я создаю пакет установки агента (рисунок ниже) где выбираю всех обработчиков, пакет привязывается исключительно на один сервер.


Как проверить на какой же? Пакет агента создается как FramePkg.exe, но тем не менее это тот же ZIP архив. Поэтому откройте его архиватором и извлеките из него файл SiteList.xml. Далее находим сверху строку типа:

Name="ePO_Forza" Server="ePO_Forza.forza.com:8888" ServerIP="192.168.1.11:8888" ServerName="ePO_Forza:8888"

Сервер еPO_Forza.forza.com и есть тот самый EPO к которому будет стучаться наш новоиспеченный агент.

Успехов.

Sunday, 26 September 2021

Advanced Group Policy Management.

Всем привет.

Advanced Group Policy Management, расширенное управление политиками групп, это классический инструмент, использующийся для контроля и защиты GPO (Group Policy). На многих предприятиях GPO контролируют чуть ли не каждый аспект и область в сетевом окружении, так что надежности в их отношении мало не бывает!

AGPM входит в специальный пакет MDOP (Microsoft Desktop Optimization Pack) - получить его можно при активной подписке MS, MSDN или Software Assurance.

По сравнению с классическим управлением групповой политикой здесь предлагаются следующие возможности:

  • версионирование: если вы обдумывали, как прикрутить к групповым политикам SVN или Git, то AGPM этот вопрос решает.
  • делегирование и премодерация: можно разрешить создание GPO отдельным сотрудникам, но без права применения. Применять может, к примеру, старший администратор после проверки.
  • аудит: отчеты и мониторинг помогут при разборах полетов на тему «Кто забыл повесить фильтр безопасности на установку 1С?».

Русификация AGPM наводит печаль. Локализованную версию можно и не ставить, я выбрал два языка о чем после сильно пожалел. Так что выбирайте только Английский!

Установка и использование AGPM.

AGPM сервер - для работы AGPM нужно будет установить службу на сервер, где будет лежать архив групповой политики. По-хорошему архив должен лежать на надежном хранилище с регулярным резервным копированием. При установке также запрашиваются учетные данные для работы службы и учетная запись, которой выдаются полные права. Вопрос "а если у этой учетки изменится пароль" для меня остается открытым.

В идеале надо настроить разрешение на работу с GPO только для этой учетной записи. Но это не обязательно, если приучить людей с административными правами не трогать групповые политики в обход AGPM. В качестве учетной записи для работы службы неплохим вариантом станет настройка MSA (Managed Service Accounts). Ознакомиться с принципами работы этого механизма можно в разделе Group Managed Service Accounts. А посмотреть пошаговый пример по настройке связки MSA и AGPM в статье Running AGPM with a Managed Service Account. Powershell рулит!

Сам сервер может быть любым, устанавливать на контроллер домена в принципе можно, это уже дело вкуса.

AGPM клиент - клиента также можно установить на любой машине, где сможет запуститься оснастка «Управление групповой политикой». Разумеется, она должна иметь доступ к AGPM-серверу по порту TCP (по умолчанию 4600). Работа с AGPM производится через вышеупомянутую оснастку, в пункте «Изменение управления».

Saturday, 25 September 2021

Практикум с Netmiko.

Всем привет.

Продолжаем  автоматизировать рутинные процессы сетевого администрирования c Никитой Турковым. Сегодняшняя статья будет посвящена примерам и описанию работы скриптов, в которых также используем Netmiko и Python.

Обработка ошибок.

До сих пор мы рассматривали различные решения и не касались работы с ошибками при работе программы со стороны пользователя или сервера (в нашем случае - сетевое оборудование). 

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

Возможные причины сбоя вашего скрипта:

1. Некорректные аутентификационные данные.

2. Истек таймаут для подключения.

3. Прерывание передачи трафика.

4. Недоступность порта SSH со стороны сервера.

5. Различные другие ошибки.

Согласитесь, было бы удобно, каким-либо образом обрабатывать такие ошибки и сообщать пользователю о конкретной проблеме, а что даже наиболее важно - не прерывать выполнение программы далее. 

Для этого в Python есть конструкция try / except.

try:

  BLOCK

except CODE_ERROR as err:

    print("OS error: {0}".format(err))

То есть, в блоке "Try" мы пытаемся выполнить какой-либо код , он может вызвать ошибку, тогда мы пробуем ее обработать и получить о ней вывод - с помощью блока "Except". При этом скрипт продолжит свою работу далее, если это не последние шаги в программе.

Friday, 24 September 2021

Автоматизация сетевых задач - Netmiko.

Всем привет.

Продолжим тему автоматизации сетевых задач с библиотекой Netmiko. Итак, Netmiko - это Python библиотека для работы с сетевыми устройствами, в качестве инициализации соединений она использует Paramiko, но содержит много встроенных методов и классов "под капотом".

Библиотека не входит в список стандартных модулей для Python 3, поэтому ее требуется установить:

pip install netmiko

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

Arista vEOS

Cisco ASA

Cisco IOS

Cisco IOS-XE

Cisco IOS-XR

Cisco NX-OS

Cisco SG300

HP ProCurve

Juniper Junos

Linux


Синтаксис и логика.

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

python3

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

In [1]: from netmiko import ConnectHandler             

In [2]: cisco = { 

   ...:   "device_type": "cisco_ios", 

   ...:   "host": "cisco.domain.com", 

   ...:   "username": "admin", 

   ...:   "password": "cisco123", 

   ...:   }  

После того, как определили "device_type": "cisco_ios", можем создавать соединение с устройством. Список поддерживаемых видов ОС доступен по ссылке.

Для удобства передадим функцию в переменную "net_connect", ее будет использовать далее при отправке команд и т.д.

In [3]: net_connect = ConnectHandler(**cisco)

С помощью ** мы передаем ключ-значение в функцию ConnectHandler, более подробно о теории по ссылке. Альтернативно возможно отправить параметры функции вручную:

net_connect2 = ConnectHandler(device_type="cisco_ios", host="cisco.domain.com", username="admin", password="cisco123") 

После создания переменной  "net_connect" и загрузки в нее параметров, можно убедиться что SSH-соединение установлено:

In [5]: net_connect.find_prompt()

Out[5]: "cisco3#" 

Получен ответ (Out[5]:) от сетевого устройства, сессия активна, находимся в режиме enable (Cisco OS). 

Thursday, 23 September 2021

Автоматизация сетевых задач - Paramiko.

Всем привет.

Сегодня транслирую вам материал Никиты Туркова про автоматизацию работы сетевого администратора  с использованием пакетов Paramiko и Netmiko.

Автоматизация процесса обслуживания сетевых устройств невозможна без использования хтоя бы одного из языков программирования. Для 2021 года базовое знание Python это уже не преимущество кандидата (системного администратора, или сетевого инженера) , а одно из требований при трудоустройстве на работу.  Одно из весомых преимуществ языка Python - большое количество сторонних библиотек для решения задач из различных областей. Естественно, энтузиасты и разработчики в рамках работы с сетью и сетевым оборудованием написали достаточное количество модулей. Перечислим те из них, которые поддерживают режим взаимодействия CLI:

telnetlib - встроенная библиотека, она используется для обеспечения доступа к сетевому устройству и отправке команд по Telnet протоколу (не является безопасным).

pexpect - внешняя библиотека работает для передачи данных по протоколам: ssh, telnet, sftp и др. Считается универсальным инструментом для передачи команд как в ОС, так и на сетевое оборудование. Логика работы основана на ожидании получения соответствующей строки от устройства и дальнейшей отправки команды. 

paramiko - внешняя библиотека, обеспечивающая организацию SSH-соединения. Работает в режиме клиента и сервера, соответственно в качестве передачи данных может использоваться только протокол SSH.

netmiko - внешняя библиотека от сообщества сетевых инженеров и администраторов, была разработана специально для взаимодействия с сетевым оборудованием различных производителей (адаптация под сетевую ОС). Netmiko включает в себя paramiko, описанный раннее.

Наиболее популярные из них это Paramiko и Netmiko. Сегодня мы рассмотрим модуль Paramiko.

SSH и Paramiko.

Paramiko - это реализация протокола SSHv2 на Python. Paramiko предоставляет функциональность клиента и сервера. В рамках статьи будет рассматриваться лишь функциональность клиента, серверную часть возможно изучить самостоятельно.

Библиотека Paramiko не входит в список стандартных модулей для Python 3, поэтому ее требуется установить:

pip install paramiko

В Python3 есть отличная возможность тестировать ваши скрипты, отправляя одиночные команды, для этого достаточно лишь вызвать сам интерпретатор:

python3

Логика работы Paramiko: 

1. создание клиента подключения SSH;

2. настройка клиента подключения SSH;

3. выполнение подключения SSH;

4. переход в интерактивный режим отправки команд для подключения SSH.

Tuesday, 21 September 2021

Назначить CentOS IP-адрес вручную.

Всем привет.

Мне в наследство упала одна машинка с CentOS на борту. Все бы ей хорошо только вот IP-адрес она не подхватывала по DHCP. И потому стала на некоторое время бесполезна.

Пытаюсь ей помочь. Захожу на консоль и смотрю в

cat /etc/sysconfig/network-scripts/ifcfg-ens18

Для DHCP нахожу следующие строки:

BOOTPROTO=dhcp

ONBOOT=no

Ничего более не трогаю, скорее всего мне будет достаточно ONBOOT исправить на: 

ONBOOT=yes

Но как оказалось никаких текстовых редакторов на старой CentOS не нашлось. Поэтому для установки хотя бы nano пробую назначить IP-адрес вручную:

ifcfg ens18 192.168.1.90/24

Прописываю машрут по умолчанию на основной машрутизатор:

ip route add default via 192.168.1.1

Также указываю машрутизатор в качеcтве DNS-сервера: 

echo nameserver 192.168.1.1 > /etc/resolv.conf

Перезапускаю сетевой сервис, чтобы CentOS приняла новые настройки сети:

service network restart

Отлично. Теперь можно подтянуть и nano и исправить DHCP:

yum install nano

И в конце ребут. Вот теперь готово.

Успехов.

Friday, 17 September 2021

Регулярные выражения.

Всем привет.

Есть такая штука как Регулярные выражения. Тот кто ими пользуется знает что это как еще один язык выучить. И их знание не абы какой плюс при приеме на работу. Но все равно диалекты регулярных выражений в контексте других языков программирования могут быть разными. Я ими пока не владею, потому что "я ведь не волшебник, я только учусь".

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

1. Using Regular Expressions with Kevin Skoglund, lynda.com | Using Regular Expressions (2011).

2. Jeffrey Way - Regular Expressions - Up And Running,

http://code.tutsplus.com/courses/regular-expressions-up-and-running

И на сегодня для вас небольшая шпаргалка по использоваию регулярок с JavaScript.

<script type="text/javascript">

//Создание

var pattern = new RegExp(pattern [, flags]); //Полная форма

var pattern = /pattern/flags; //Сокращенная форма записи (литеральный формат)

//Динамическое создание регулярного выражения

var emails = ['gmail', 'yahoo', 'hotmail', 'live', 'rambler'];

var re = new RegExp(emails.join('|', 'i')); //gmail|yahoo|hotmail|live|rambler/i

/**

где pattern — шаблон регулярного выражения,

     flags — способ поиска, может принимать:

          g — глобальный поиск (обрабатываются все совпадения с шаблоном поиска);

          i — не различать строчные и заглавные буквы;

          m — многострочный поиск.

*/

</script>

Monday, 13 September 2021

Обновите свой статус туриста.

Всем привет.
 
Чтобы не терять свои навыки можно обновить свой статус туриста в мире бюрократии в эпоху диджитализации и ограничений карантина. 
 
И тут как бы онлайн-сервисы типа "Дія" предназначенные как раз для уменьшения физических контактов очень удобны когда они понятны и работают как часы, но ведь и человеческий фактор никто не отменял. 
 
Например на период повальной вакцинации неплохо бы заиметь сертификат о ее прохождении. А еще лучше цифровой! Отлично. Сказано - сделано. Даже пройдя все муки по визуальной идентификации на смартфоне вас как человека, вы получите QR-код ведущий на ваш цифровой сертификат, не спешите радоваться. Особенно не спешите выходить из самого приложения "Дія" ибо про повторном входе придется крутить головой повторно. 
 
Все? Увы, нет. Абсурд первый - оказывается не все страны доверяют вашей вакцине "Ы", поэтому ваш цифровой сертификат, не более чем "бумажка" для вас самого, или вашего терапевта. Поэтому если вы собрались в Европу, то скорее всего от вас потребуют прохождения ПЦР-теста за 72 часа. Куда же вам, хоть и вакцинированному, деваться - вот вы его прошли и получили негативный результат на красивой бумаге с красивыми печатями. Ура, однако, смотри выше, мы же очень любим цифру, как и тот румынский пограничник, который не разделяет вашей радости потому как хочет видеть результат вашего теста исключительно в сервисе "Дія", а не на бумаге. Даешь повальную диджитализацию, которая утверждена на высшем уровне! 
 
И тут, к всеобщему удивлению, выплывает абсурд второй - сервис "Дія" не принимает результаты ПЦР-тестов. Та-даааам. Совсем не принимает, никаких. Как говорят в лаборатории тестирования - министерство здравоохранения еще не выработало механизм передачи такой информации в сервис "Дія". 
 
Как вы себя чувствуете? Пока хорошо? Тогда резюмирую - несмотря на полную вакцинацию и отрицательный ПЦР-тест вы НЕ можете доказать на границе что вы здоровы! 
 
То на кого покажем пальцем? 
 
К пограничнику можно апеллировать сколько угодно, но это чревато, он ведь всегда прав.)
 
Министерству здравоохранения можем передать большой привет, там видимо решили что все давно вакцинированы вакцинами из списка А, а не теми, что одобрила ВООЗ. 
 
Странам которые делят людей по типу вакцины хочется пожелать поступать более логично - не требовать результат ПЦР-теста от туриста, а просто тестировать его на въезде. Это исключит и желание недобросовестного туриста его подделать и желание сурового пограничника видеть результат в новом сервисе "Дія". Им же важно с чем мы едем, а не с чем мы выехали из дому. 
 
Ну и нашим лабораториям, в качестве привета, тоже можно посетовать на стоимость тестирования, которая до сих пор выше себестоимости работ раза в два. Если не больше. Выглядит комично когда при стоимости теста в 30 долларов они испытывают затруднения в поиске бумаги для печати вашего результата.
 
Удачи и терпения всем нам. 

Saturday, 11 September 2021

Power BI и Zabbix.

Всем привет.

Истинная сила Power BI поистине безгранична. Иногда мне кажется что он может узнать и визуализировать все в этом мире. Сегодня я покажу вам как можно легко подключить Power BI Desktop к Zabbix используя API последнего.

Оригинал идеи был найден здесь https://www.spikefishsolutions.com/post/connecting-power-bi-desktop-to-zabbix

Итак для начала в Power Query Editor надо создать три параметра:

  1. Пользователь для подключения как User parameter: Admin 
  2. Его пароль как Password parameter: Adminpsw
  3. И строка подключения (зависит от версии Zabbix) как ZabbixURL parameter: http://192.168.1.100/api_jsonrpc.php

Для множественного использования API рекомендуется предварительно получить токен Zabbix.

Для этого пишем запрос Power Query Editor как GetZabbixToken query:

let

    user=User,

    password=Password,

    url=ZabbixURL,

    Body = "{

        ""jsonrpc"": ""2.0"",

        ""method"": ""user.login"",

        ""params"": {

            ""user"":""" & user & """, 

            ""password"":""" & password & """

        },

        ""auth"": null,

        ""id"": 1

    }",

    Source = Json.Document (

        Web.Contents(

            url,

            [

                Headers=[

                    #"Content-Type"="application/json"

                ],

                Content = Text.ToBinary(Body)

            ]

        )

    )

in

    Source

Получаем токен в виде: c7f96a475ddede1cc52f14e30f15b109

Теперь сам GetZabbixToken query можете отключить, он далее будет не нужен. Создаем еще один параметр, который принимает новое значение как результат запроса GetZabbixToken, а именно ZabbixToken parameter: c7f96a475ddede1cc52f14e30f15b109

Thursday, 2 September 2021

Автоматизация очистки дисков с использованием Disk Cleanup.

Всем привет.

И снова к теме очистки ПК пользовзателя от системного мусора. Как вы уже знаете для этой операции мы используем штатную утилиту Windows cleanmgr.exe. Следует заметить что в планах Microsoft заменить ее на что-то новое, например на "Контроль памяти" так что не стройте на cleanmgr.exe долгосрочные планы.

Но сегодня мы с cleanmgr.exe. Для очистки важно от какого аккаунта вы запускате сам процесс. В связи с этим очистка может быть разделена на 2 фазы, запуском в контексте системной учетной записи (SYSTEM), и запуском в контексте учетной записи пользователя, выполнившего вход в систему.

Поэтому предварительно следует запустить в командной строке от имени администратора:

cleanmgr.exe /sagerun:15

И аналогично выполнить команду для установки путей очистки в контексте пользователей:

cleanmgr.exe /sagerun:10

Цифры 15 и 10 имеют совершенно свободный выбор как номера профилей для запоминания их настроек в реестре системы.

Настройки параметров запуска cleanmgr в контексте SYSTEM и Пользователей для компьютеров x86, а также для пк х64 и контекста SYSTEM, появятся в реестре в ветке 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches

Настройки параметров запуска cleanmgr в контексте Пользователей для пк x64 появятся в реестре в другой ветке

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\explorer\VolumeCaches

В данных разделах будут параметры с именами StateFlags0015 и StateFlags0010 соответственно.

Для автоматиазции процесса очистки следует реализовать механизм доставки профилей реестра StateFlags0015 и StateFlags0010 на рабочие места пользователей и запуск cleanmgr.exe /sagerun:хх там соответственно. Для этого можно использовать SCCM. В этом ключе следует учесть что в системах х64, агент SCCM запускает утилиту cleanmgr.exe не из каталога %systemroot%\system32, а из каталога %systemroot%\syswow64. Поэтому обязательно используем опцию в поле "Запретить 64-битное перенаправление файловой системы".

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

Select * FROM Win32_PerfFormattedData_LocalSessionManager_TerminalServices WHERE ActiveSessions=0

Select * FROM Win32_PerfFormattedData_LocalSessionManager_TerminalServices WHERE TotalSessions=2

Более подробно читайте в статье Павла Лекторского "Автоматизация очистки дисков с использованием SCCM" которая опубликована в журнале "Системный администратор", ноябрь 2020 года.

Успехов.