Поддержка Консалтинг Обучение Jamf Pro Блог

Альтернативы MDM

Антон Конобеев 18.03.2022

Санкции не обошли стороной и MDM-решения. Вендоры приостанавливают работу по той или иной причине. Кому-то из клиентов удается обойти ограничения, но думать о резервировании надо, ведь есть опасения закрытия доступа к блоку адресов 17.0.0.0/8, который используется для работы MDM.

Подключить устройства ко второму MDM не получится, это не поддерживается платформами macOS, iOS, iPadOS.

Российские решения также не защищены от блокировки APNS.

А привлекательный Open-source MicroMDM потребует для запуска наличие учетной записи Apple Enterprise Developer, за которую потребуется заплатить $400. Конечно же, с помощью банковской карты.

Что делать? Читайте далее.

О чем не стоит забывать

Итак, если у вас уже есть MDM-система, то для начала стоит позаботиться о том, чтобы не потерять доступ к технике в случае ее отключения. Нет локальной учётки админа? Заведите. Не открыт SSH? Открывайте, пригодится. Заранее подумайте о том, как сохранить ключи восстановления FileVault и данные для сброса Activation Lock.

В чем мы ограничены

Плохая новость заключается в том, что без MDM мы не можем устанавливать конфигурационные профили на клиентские машины. Вернее, можем, но только через графический интерфейс, что равносильно “не можем”, если парк ваших машин больше пары десятков. С другой стороны, если вы доверяете своим пользователям, то можно рассылать профили по почте с просьбой поставить :) Также мы не можем отправлять на устройства MDM-команды: удаленная блокировка, включение ARD, полное стирание.

Что мы можем

Но мы всё ещё можем устанавливать пакеты и запускать на машинах произвольный код, и это уже кое-что

Что я хочу предложить? Вспомнить про три вновь актуальных продукта: MDS для подготовки компьютеров; Munki для деплоя пакетов, обновления программ и скриптов на удаленные компьютеры; Ansible для деплоя команд на устройства в локальной сети; Zabbix для мониторинга клиентов.

MDS

Это софт, переосмысливший деплой маков из образов (который недоступен уже довольно давно). Не представляю, насколько большим старообрядцем нужно быть, чтобы при наличии ABM и Pre-stage Enrollments хотеть готовить свои маки так, как будто на дворе нулевые, но сейчас нам остается только сказать им огромное спасибо.

Вкратце: как этим пользоваться. Cоздаем в графическом интерфейсе Workflow, в котором отмечаем, к какой сети WiFi подключиться, как именовать компьютер, переустанавливать ли macOS (а если да, то на какую версию и отметить, нужно ли очищать диск), какие пакеты установить, какие скрипты запустить, какие аккаунты создать. Затем мы берём флешку, записываем на неё всё перечисленное, берем машину, которую нужно подготовить, вставляем в нее флешку и грузимся в рекавери, режим восстановления.

В рекавери мы идем в терминал и запускаем единственный скрипт, который лежит в корне этой флешки. Этот скрипт сразу спросит у нас все переменные, а затем начнет установку всего, что мы навыбирали. Можно уходить — когда вы вернетесь, компьютер будет ждать вас уже на логинскрине; никаких Setup Assistant и прочего. Пара десятков таких флешек сейчас может сэкономить огромное количество времени!

А если вы совсем лентяй, то можете взять еще и Arduino Pro Micro, и с помощью того же графического интерфейса записать на нее прошивку, который будет за вас заходить в рекавери и запускать терминал. То есть в некоторых случаях вы просто:

Вставляете флешку и Ардуино в компьютер
1. включаете его
2. ?????
3. PROFIT

В общем, это продукт, который нам сейчас сложно переоценить. То, что я перечислил — далеко не всё; например, у него есть интеграция с Munki и MicroMDM.

Munki

Это open-source проект от Walt Disney Studio для менеджмента ПО на клиентских компьютерах. Он существует с конца нулевых, а первый релиз на Github был в 2014 году. Состоит из агента на клиентской машине и сервера; сервером может выступать практически что угодно, что может запустить веб-сервер (напр. Apache или NginX) и отдавать файлы.

С агентом всё просто: он обращается на сервер, и если сервер сообщает, что для этого конкретного агента есть софт, то он загружает его: либо чтобы оставить кэшированным для установки через приложение, либо чтобы установить автоматически. Всё зависит от того, что указано в настройках .pkginfo пакета и в манифестах (основных конфигурационных файлах) на сервере Munki. Их можно создавать и редактировать вручную, но у Munki для этого есть удобные CLI-инструменты. Например, /usr/local/munki/munkiimport для импорта пакетов и /usr/local/munki/manifestutil для создания манифестов.

Со своей работой Munki справляется отлично. Он довольно всеяден по части пакетов для импорта: умеет работать и с .pkg и с .dmg, причем dmg не нужно “пересобирать” выстраивая внутри структуру путей установки — обычные образы, рассчитанные на перетаскивание аппы в папку “Applications” вполне подойдут.

Но вы наверняка знаете, что в пакетах могут быть pre-install и post-install скрипты, и это дает нам возможность запускать произвольный код на клиентских машинах. Очень удобный способ для этого описан на сайте Армина Бригеля; если вкратце, то нужно просто создать пакет без полезной нагрузки. Это ОЧЕНЬ существенный бонус, и пусть это не так удобно и красиво, как это было, например, в Jamf. Pro, но сейчас точно не время для эстетствования.

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

Чтобы попробовать Munki в работе, можно поднять демо-установку, которую можно сделать прямо на рабочем маке — после деинсталляции, описанной в конце, он не оставит никаких следов.

Ansible

Мощное средство от Red Hat по автоматизации всего, что угодно. По ssh. Нет, ОЧЕНЬ мощное, и я даже не буду пытаться здесь описать всё, что оно умеет. Интересно то, что оно обходится без агентов на клиентских машинах, а исполняемая часть устанавливается на мак руками или с помощью Homebrew. Можно запустить в отдельной VM.

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

Основная настройка происходит при помощи двух вещей: файлов инвентаризации и т.н. плейбуков. И то, и другое в формате .yaml. Сначала мы наполняем inventory хостами, которыми хотим управлять, разбив их на группы для удобства, а затем составляем плейбуки с наборами команд, которые мы хотим выполнить на тех или иных машинах или группах машин. Команды могут быть “как есть”, то есть в том формате, в котором вы бы их вводили, подключившись к SSH, а могут быть отправлены с помощью “задач” или “plays”. “Задачи” могут скрывать за собой довольно много автоматизаций для работы с сервисами, файлами, процессами, привилегиями и пакетами на клиентской машине и могут легко заменить многострочные скрипты небольшим описанием операции в плейбуке.

В итоге, как я уже упомянул, у Ansible есть автоматизации для работы с файлами, пакетами, сервисами и процессами. Добавим к этому возможность сбора инвентарки — и уже этого достаточно, чтобы справляться с задачей администрирования большого локального парка.

Веб-интерфейс для Ansible тоже существует, это AWX Project, который является кодовой основой для коммерческого Ansible Tower.

Zabbix

Сервис мониторинга: опенсорсный, хороший, с большой историей. Еще в 1998 году это был внутренний проект банка, который в 2001 году выпустили под лицензией GPL. Работает в связке агент-сервер, при этом агент может работать в активном режиме, и это именно то, что нам нужно.

Его можно использовать как дополнение для Munki, поскольку Munki не собирает инвентарку и не хранит ее на сервере. Активный агент Заббикса достучится до вашего сервера с любого удаленного клиента. Да, можно использовать MunkiReport, но Zabbix мне показался более гибким и удобным. Плюс это настоящий реалтайм, и можно быстро взглянув на виджеты хорошо понять, кто в сети, а кто еще спит :)

К тому же он позволяет выполнить произвольный код и его результат использовать в качестве User Parameter, что дает возможность стянуть на мониторинг всё, что захочется. Сам агент, который собирает данные и отравляет их на сервер, практически невесом — занимает в оперативной памяти всего несколько килобайт, так что его работу вряд ли кто-то заменит.

Плюс это продукт достаточно старый, хорошо изученный и по нему всегда можно найти много хороших решений — и это относится ко всем трём приведенным здесь программам.


Сложно гарантировать, что какие-то из этих программ подойдут именно вам, но когда у нас в компании встал вопрос о том, что делать с нашими клиентами в текущей ситуации — это тот софт, который первым пришел на ум. Если у вас есть другие варианты — добро пожаловать в комментарии! Мы с радостью протестируем что-нибудь новое для нас.