Первое, что приходит в голову при мысли о мобильном оборудовании для сотрудника крупной компании – это ноутбук типа HP EliteBook и смартфон BlackBerry. Подавляющее большинство считает, что MacBook очень далек от корпоративных стандартов, и подходит только для дизайнеров, инди-разработчиков и продвинутых домохозяек. iPhone считается стильным гаджетом для написания твиттов и фотографирования «луков» для модного Инстаграма.
![ruVPN](https://habrastorage.org/r/w780q1/getpro/habr/post_images/ab0/650/e64/ab0650e643b3e4058555ec99ee9a1c6d.jpg)
Сейчас я попытаюсь развеять подобные стереотипы и рассказать, на что способны мобильные устройства знаменитой компании из Купертино.
Начну с мобильных устройств на базе Apple iOS. Речь пойдет о версиях 3.0 и выше, на которых в настоящий момент работают следующие устройства:
Все эти устройства поддерживают загрузку профилей конфигурации, с помощью которых можно достаточно гибко настраивать устройство для корпоративного использования.
Нет смысла перепечатывать официальное руководство по работе с профилями. Я лишь остановлюсь на наиболее интересных возможностях.
Прежде всего, конфигурационный профиль – это обычный XML. Его можно подписать цифровым сертификатом и/или зашифровать. При получении подписанного профиля устройство проверяет цифровой сертификат подписи и отображает статус.
![Signed profile](https://habrastorage.org/r/w780q1/getpro/habr/post_images/71d/d7a/224/71dd7a224cbccb64a7578796e4b93477.jpg)
При получении зашифрованного профиля ключ для расшифровки должен находиться на устройстве.
Профили могут содержать следующие данные:
Рассмотрим некоторые параметры более подробно. Итак, что же можно ограничить на устройстве с помощью профиля?
Как видно, возможностей привести мобильное устройство в соответствие с требованиями службы безопасности предприятия достаточно много. Не хватает лишь временных диапазонов действия тех или иных ограничений, например, запрет YouTube только в рабочие часы. :-)
Параметры доступа к Wi-Fi, VPN, почте, LDAP и т.п. достаточно однотипны. Хочется отметить, что все они могут включать авторизацию по сертификатам. Очевидно, что для авторизации по сертификату устройство должно содержать пару ключей: публичный ключ и приватный ключ. Приватный ключ передать в профиле нельзя. Необходима инфраструктура для поддержки протокола ротации сертификатов SCEP. При этом генерация приватного ключа происходит на мобильном устройстве, далее публичный ключ передается в центр сертификации в составе запроса на сертификат, после подписи и формирования сертификата, готовый сертификат передается на устройство и устанавливается в локальном хранилище. SCEP запрос имеет уникальный
Публичные сертификаты корневых и издающих центров могут включаться в профиль. Установка корневого сертификата предприятия позволяет посещать внутренние https ресурсы без выдачи предупреждающих сообщений о недостоверном сертификате. Это распространяется на почтовые службы, VPN шлюз, Wi-Fi точки – на все, что использует корпоративные сертификаты в процессе авторизации.
При удалении профиля так же удаляются все прописанные в нем службы и настройки. Например, если профиль содержал доступ к почтовому серверу предприятия, то после удаления профиля, будет удален почтовый ящик на устройстве, сотрудник не сможет принимать новую почту или читать уже полученную. Остальные почтовые ящики, например личная почта на Gmail, будут доступны, как и прежде.
Профиль можно защитить PIN-кодом от удаления, параметр
Есть возможность задать период или дату, после которой профиль будет автоматически удален, параметры
Профиль можно загрузить на устройство несколькими способами:
Первый и второй способы подходят для небольших компаний, где проще все установить вручную, третий способ наиболее технологичный и рекомендуется для использования в крупных компаниях.
Попробую описать загрузку профиля третьим способом, Over-the-Air.
Первая фаза – доставка URL с адресом загрузки профиля на мобильное устройство. Это может быть ссылка в почтовом сообщении, в сообщении СМС, на специальной веб-странице. Желательно размещать ссылку на https ресурсе и защищать содержимое от изменения, например технологией secure_link сервера nginx.
Первый профиль содержит запрос о параметрах пользовательского устройства.
Файлы с расширением
Получив профиль, устройство запрашивает пользователя разрешение на установку. Если в настройках безопасности включена разблокировка экрана по PIN-коду, то будет запрошен PIN-код. Затем на сервер профилей будет передана информация об устройстве.
![SCEP фаза 1](https://habrastorage.org/r/w1560/getpro/habr/post_images/f48/432/8c2/f484328c29e97302d4dd22af55a762f4.png)
Следующая фаза — генерация промежуточного сертификата для последующего шифрования основного профиля. Приватный ключ передавать на устройство нельзя, поэтому используется протокол SCEP, по которому пара ключей формируется на устройстве и затем посылается запрос на сертификат непосредственно в центр сертификации. Сервер профилей не участвует в этом процессе.
![SCEP фаза 2](https://habrastorage.org/r/w1560/getpro/habr/post_images/7be/21e/bd8/7be21ebd8cb92c11bee7025eeae5d34c.png)
Центр сертификации подписывает запрос, генерирует сертификат с нужными параметрами и отсылает обратно на устройство. Полученный сертификат устанавливается в локальное хранилище.
Мобильное устройство информирует сервер профилей об окончании второй фазы в виде сообщения, подписанного новым сертификатом.
Пришло время для третьей фазы. На мобильном устройстве есть сертификат и закрытый ключ, на сервере профилей есть сертификат. Значит можно зашифровать основной профиль и послать его на мобильное устройство.
Содержимое основного профиля зависит от требований службы безопасности и уровня развития сетевой инфраструктуры предприятия и филиалов. Это наиболее ответственная часть проекта по внедрению профилей и включает в себя участие нескольких отделов и служб предприятия. Данные для профиля могут браться из Active Directory, корпоративной базы данных или других систем.
![SCEP фаза 3](https://habrastorage.org/r/w1560/getpro/habr/post_images/12a/865/ff2/12a865ff2e2ed224f845c581d7a80a88.png)
Технология загрузки профилей конфигурации с некоторыми допущениями относится и к мобильным устройствам на базе OS X 10.8+, то есть для свежих MacBook, MacBook Air/Pro.
По описанной схеме работает загрузка профилей сервиса ruVPN.net, на Хабре недавно успешно прошло нагрузочное тестирование, когда любой мог установить профиль с настройками VPN на свое устройство. Основной профиль содержал SCEP запрос на сертификат для доступа к VPN IPSec серверу. Профиль автоматически удалился с устройств участников тестирования 27.05.2013 00:00:00 UTC. Большое спасибо всем участникам тестирования!
![ruVPN](https://habrastorage.org/getpro/habr/post_images/ab0/650/e64/ab0650e643b3e4058555ec99ee9a1c6d.jpg)
Сейчас я попытаюсь развеять подобные стереотипы и рассказать, на что способны мобильные устройства знаменитой компании из Купертино.
Начну с мобильных устройств на базе Apple iOS. Речь пойдет о версиях 3.0 и выше, на которых в настоящий момент работают следующие устройства:
- iPhone 3G, 3Gs, 4, 4s, 5
- iPad 2, 3, 4
- iPod touch, поколения от 2 до 5
- iPad mini
Все эти устройства поддерживают загрузку профилей конфигурации, с помощью которых можно достаточно гибко настраивать устройство для корпоративного использования.
Нет смысла перепечатывать официальное руководство по работе с профилями. Я лишь остановлюсь на наиболее интересных возможностях.
Прежде всего, конфигурационный профиль – это обычный XML. Его можно подписать цифровым сертификатом и/или зашифровать. При получении подписанного профиля устройство проверяет цифровой сертификат подписи и отображает статус.
![Signed profile](https://habrastorage.org/getpro/habr/post_images/71d/d7a/224/71dd7a224cbccb64a7578796e4b93477.jpg)
При получении зашифрованного профиля ключ для расшифровки должен находиться на устройстве.
Профили могут содержать следующие данные:
- Ограничение функций мобильного устройства
- Настройки подключения к сетям Wi-Fi
- Параметры доступа к VPN
- Настройки почтовых серверов (Exchange, POP3, IMAP, SMTP)
- Параметры доступа к LDAP каталогу (для глобальных адресных книг)
- Параметры доступа к календарю CalDAV
- Цифровые сертификаты
- Запросы на автоматическую ротацию сертификатов по протоколу SCEP (в том числе для вышеперечисленных служб)
Рассмотрим некоторые параметры более подробно. Итак, что же можно ограничить на устройстве с помощью профиля?
- Запретить доступ к устройству без пароля, параметр
forcePIN
- Запретить использование одного и того же пароля все время, параметр
maxPINAgeInDays
- Установить длину пароля, параметр
minLength
- Запретить использовать один и тот же пароль при смене пароля, параметр
pinHistory
- Запретить пароль, состоящий из одних цифр (хотя это уже издевательство над пользователем), параметр
requireAlphanumeric
- Запретить устанавливать приложения из AppStore, параметр
allowAppInstallation
- Запретить Siri, параметр
allowAssistant
- Запретить использование камеры в устройстве, параметр
allowCamera
- Запретить контент для взрослых, параметр
allowExplicitContent
- Закрыть доступ в Game Center, параметр
allowGameCenter
- Запретить создание снимков экрана, параметр
allowScreenShot
- Закрыть доступ на YouTube (!), параметр
allowYouTube
- Закрыть доступ к iTunes, параметр
allowiTunes
- Запретить использование браузера Safari, параметр
allowSafari
- Запретить использование неизвестных сертификатов, параметр
allowUntrusted-TLSPrompt
- Запретить установку профилей без вмешательства пользователя, параметр
allowUIConfiguration-ProfileInstallation
Как видно, возможностей привести мобильное устройство в соответствие с требованиями службы безопасности предприятия достаточно много. Не хватает лишь временных диапазонов действия тех или иных ограничений, например, запрет YouTube только в рабочие часы. :-)
Параметры доступа к Wi-Fi, VPN, почте, LDAP и т.п. достаточно однотипны. Хочется отметить, что все они могут включать авторизацию по сертификатам. Очевидно, что для авторизации по сертификату устройство должно содержать пару ключей: публичный ключ и приватный ключ. Приватный ключ передать в профиле нельзя. Необходима инфраструктура для поддержки протокола ротации сертификатов SCEP. При этом генерация приватного ключа происходит на мобильном устройстве, далее публичный ключ передается в центр сертификации в составе запроса на сертификат, после подписи и формирования сертификата, готовый сертификат передается на устройство и устанавливается в локальном хранилище. SCEP запрос имеет уникальный
PayloadUUID
, который можно указывать в PayloadCertificate-UUID
других настроек. Таким способом полученные сертификаты связываются с настройками Wi-Fi, VPN, почты, LDAP и так далее.Публичные сертификаты корневых и издающих центров могут включаться в профиль. Установка корневого сертификата предприятия позволяет посещать внутренние https ресурсы без выдачи предупреждающих сообщений о недостоверном сертификате. Это распространяется на почтовые службы, VPN шлюз, Wi-Fi точки – на все, что использует корпоративные сертификаты в процессе авторизации.
При удалении профиля так же удаляются все прописанные в нем службы и настройки. Например, если профиль содержал доступ к почтовому серверу предприятия, то после удаления профиля, будет удален почтовый ящик на устройстве, сотрудник не сможет принимать новую почту или читать уже полученную. Остальные почтовые ящики, например личная почта на Gmail, будут доступны, как и прежде.
Профиль можно защитить PIN-кодом от удаления, параметр
HasRemovalPasscode
; можно вообще запретить удаление, параметр PayloadRemoval-Disallowed
. В последнем случае профиль можно будет удалить, только полностью сбросив все настройки устройства, при этом все содержимое устройства удаляется. Подобные настройки хорошо подходят для компаний со строгими требованиями в области информационной безопасности.Есть возможность задать период или дату, после которой профиль будет автоматически удален, параметры
DurationUntilRemoval
и RemovalDate
. Это хорошо подходит для временных сотрудников или консультантов компании.Профиль можно загрузить на устройство несколькими способами:
- Wired. Устройство подключается по USB к компьютеру с запущенной программой iPhone Configuration Utility, выбирается необходимый профиль конфигурации и загружается на устройство.
- Direct. Открывается ссылка с файлом профиля (.mobileconfig) в браузере Safari и подтверждается установка профиля.
- Over-the-Air. Открывается страница загрузки профиля в браузере Safari, затем устанавливается первичный профиль с генерацией промежуточного сертификата для шифрования основного профиля. Содержимое профиля зашифровано.
Первый и второй способы подходят для небольших компаний, где проще все установить вручную, третий способ наиболее технологичный и рекомендуется для использования в крупных компаниях.
Попробую описать загрузку профиля третьим способом, Over-the-Air.
Первая фаза – доставка URL с адресом загрузки профиля на мобильное устройство. Это может быть ссылка в почтовом сообщении, в сообщении СМС, на специальной веб-странице. Желательно размещать ссылку на https ресурсе и защищать содержимое от изменения, например технологией secure_link сервера nginx.
Первый профиль содержит запрос о параметрах пользовательского устройства.
Содержимое XML
Выглядит он примерно так:
Параметр Challenge служит идентификатором транзакции для сервера профилей.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<dict>
<key>URL</key>
<string>https://ruvpn.net/profile/qefdJW98Vx9YFyyzs4C2F/1369640562</string>
<key>DeviceAttributes</key>
<array>
<string>UDID</string>
<string>IMEI</string>
<string>ICCID</string>
<string>VERSION</string>
<string>PRODUCT</string>
<string>DEVICE_NAME</string>
<string>MAC_ADDRESS_EN0</string>
</array>
<key>Challenge</key>
<string>Pa$$word</string>
</dict>
<key>PayloadOrganization</key>
<string>Infoss AS</string>
<key>PayloadDisplayName</key>
<string>VPN configuration</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadUUID</key>
<string>fdb37dd45-b5bb-4d8c-daf3-e908683420c9</string>
<key>PayloadIdentifier</key>
<string>no.infoss.mobileconfig.ipsec</string>
<key>PayloadDescription</key>
<string>Please accept this profile</string>
<key>PayloadType</key>
<string>Profile Service</string>
<key>RemovalDate</key>
<date>2013-05-27T00:00:00Z</date>
</dict>
</plist>
Параметр Challenge служит идентификатором транзакции для сервера профилей.
Файлы с расширением
.mobileconfig
распознаются только в Safari, поэтому ссылку необходимо открывать именно в нем.Получив профиль, устройство запрашивает пользователя разрешение на установку. Если в настройках безопасности включена разблокировка экрана по PIN-коду, то будет запрошен PIN-код. Затем на сервер профилей будет передана информация об устройстве.
![SCEP фаза 1](https://habrastorage.org/getpro/habr/post_images/f48/432/8c2/f484328c29e97302d4dd22af55a762f4.png)
Пример ответа от устройства в виде XML
Вот примерный ответ от iPad:
Ответ подписан встроенным сертификатом устройства Apple. Сервер профилей должен обязательно проверять подпись на действительность.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PRODUCT</key>
<string>iPad2,5</string>
<key>UDID</key>
<string>1cfc707bbde274a4643f93341fca784ba0ec898c</string>
<key>VERSION</key>
<string>10B329</string>
</dict>
</plist>
Ответ подписан встроенным сертификатом устройства Apple. Сервер профилей должен обязательно проверять подпись на действительность.
Следующая фаза — генерация промежуточного сертификата для последующего шифрования основного профиля. Приватный ключ передавать на устройство нельзя, поэтому используется протокол SCEP, по которому пара ключей формируется на устройстве и затем посылается запрос на сертификат непосредственно в центр сертификации. Сервер профилей не участвует в этом процессе.
![SCEP фаза 2](https://habrastorage.org/getpro/habr/post_images/7be/21e/bd8/7be21ebd8cb92c11bee7025eeae5d34c.png)
Пример XML для фазы 2
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadUUID</key>
<string>Ignored</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadIdentifier</key>
<string>Ignored</string>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadContent</key>
<dict>
<key>URL</key>
<string>https://scep.infoss.no/enroll/zYu47Jr45XDtnv0b1Eg/1369640566</string>
<key>Name</key>
<string>ruVPN CA</string>
<key>Subject</key>
<array>
<array>
<array>
<string>CN</string>
<string>Encryption</string>
</array>
</array>
<array>
<array>
<string>O</string>
<string>Infoss AS</string>
</array>
</array>
</array>
<key>Challenge</key>
<string>Pa$$word</string>
<key>Keysize</key>
<integer>2048</integer>
<key>Key Type</key>
<string>RSA</string>
</dict>
<key>PayloadDescription</key>
<string>Provides device encryption identity</string>
<key>PayloadUUID</key>
<string>CAE1D4F6-1BBA-859F-89E2-48DFA7112F14</string>
<key>PayloadType</key>
<string>com.apple.security.scep</string>
<key>PayloadDisplayName</key>
<string>Encryption Identity</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadOrganization</key>
<string>Infoss AS</string>
<key>PayloadIdentifier</key>
<string>no.infoss.mobileconfig.ipsec</string>
</dict>
</array>
</dict>
</plist>
Центр сертификации подписывает запрос, генерирует сертификат с нужными параметрами и отсылает обратно на устройство. Полученный сертификат устанавливается в локальное хранилище.
Мобильное устройство информирует сервер профилей об окончании второй фазы в виде сообщения, подписанного новым сертификатом.
Пришло время для третьей фазы. На мобильном устройстве есть сертификат и закрытый ключ, на сервере профилей есть сертификат. Значит можно зашифровать основной профиль и послать его на мобильное устройство.
Содержимое основного профиля зависит от требований службы безопасности и уровня развития сетевой инфраструктуры предприятия и филиалов. Это наиболее ответственная часть проекта по внедрению профилей и включает в себя участие нескольких отделов и служб предприятия. Данные для профиля могут браться из Active Directory, корпоративной базы данных или других систем.
![SCEP фаза 3](https://habrastorage.org/getpro/habr/post_images/12a/865/ff2/12a865ff2e2ed224f845c581d7a80a88.png)
Технология загрузки профилей конфигурации с некоторыми допущениями относится и к мобильным устройствам на базе OS X 10.8+, то есть для свежих MacBook, MacBook Air/Pro.
Немного про MDM
Стоит упомянуть такую технологию, как MDM. В случае сконфигурированного сервера Mobile Device Management (MDM) в основной профиль можно прописать параметры этого сервера, и после установки профиля, мобильное устройство будет принимать управляющие команды с сервера. С помощью MDM возможны следующие операции над устройством:
• Запрос информации от устройства:
o Общие настройки
o Настройки сети
o Настройки безопасности
o Активные ограничения
o Профили конфигурации
o Профили загрузки приложений
o Приложения
• Управление устройством
o Изменение настроек устройства
o Установка/удаление конфигурационных профилей
o Установка/удаление профилей загрузки приложений
o Установка/удаление приложений
o Изменения пароля
o Полное удаление всей информации на устройстве
Команды от MDM сервера поступают методом Push Notification.
Внедрение MDM целесообразно на крупных предприятиях и позволяет достаточно широко удаленно управлять мобильными устройствами сотрудников.
• Запрос информации от устройства:
o Общие настройки
o Настройки сети
o Настройки безопасности
o Активные ограничения
o Профили конфигурации
o Профили загрузки приложений
o Приложения
• Управление устройством
o Изменение настроек устройства
o Установка/удаление конфигурационных профилей
o Установка/удаление профилей загрузки приложений
o Установка/удаление приложений
o Изменения пароля
o Полное удаление всей информации на устройстве
Команды от MDM сервера поступают методом Push Notification.
Внедрение MDM целесообразно на крупных предприятиях и позволяет достаточно широко удаленно управлять мобильными устройствами сотрудников.
По описанной схеме работает загрузка профилей сервиса ruVPN.net, на Хабре недавно успешно прошло нагрузочное тестирование, когда любой мог установить профиль с настройками VPN на свое устройство. Основной профиль содержал SCEP запрос на сертификат для доступа к VPN IPSec серверу. Профиль автоматически удалился с устройств участников тестирования 27.05.2013 00:00:00 UTC. Большое спасибо всем участникам тестирования!