Как настроить смартфоны и ПК. Информационный портал
  • Главная
  • Вконтакте
  • Двухфакторная аутентификация в Windows и шифрование данных без центра сертификации и домена. За двойной броней

Двухфакторная аутентификация в Windows и шифрование данных без центра сертификации и домена. За двойной броней

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

Решение есть – это внедрение в организации дополнительной систему защиты доступа на основе ввода одноразовых паролей (OTP – One Time Password) , которые генерируются на мобильном устройстве вашего сотрудника. Переход к аутентификации на основе одноразовых паролей обычно происходит в ситуации, когда приходит понимание, что стандартные долговременные пароли недостаточны с точки зрения безопасности и при этом возможности использования смарт-карт ограничены, например, в ситуации массового применения мобильных клиентов.

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

Состав работ по развертыванию и настройке OTP-системы

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

Стоимость внедрение в организацию системы аутентификации доступа на терминальный сервер или сервер 1С на основе одноразовых паролей (OTP) начинается от 6 400 руб .

В случаях, если OTP-система будет развернута в комплексе с арендой инфраструктуры в нашем защищенном «облаке», скидка на внедрение системы защиты с помощью одноразовых паролей (OTP) может достигать 50 % .

Одноразовые пароли - дополнительный уровень безопасности данных

Традиционный, статичный пароль, обычно меняется лишь при необходимости: либо когда он истекает, либо когда пользователь забыл его и хочет его сбросить. Поскольку пароли кэшируются на жестких дисках компьютера и хранятся на сервере, они уязвимы для взлома. Эта проблема стоит особо остро для переносных компьютеров, поскольку их легко украсть. Многие компании дают сотрудникам переносные компьютеры и открывают свои сети для удаленного доступа. Они также нанимают временных сотрудников и поставщиков. В такой среде простое статичное решение пароля становится недостатком.
В отличие от статичного пароля, одноразовый пароль меняется при каждом входе пользователя в систему и действителен только в течении короткого промежутка времени (30 сек). Сами пароли создаются и шифруются по сложному алгоритму зависящих от многих переменных: времени, количеству успешных\неудачных входов, случайно сгенерированных чисел и т.д. Данный на первый взгляд сложный подход требуют от пользователя простых действий – Установить на свой телефон специальное приложение, которое синхронизируется один раз с сервером и в дальнейшем генерирует одноразовый пароль. При каждом новом успешном входе происходит автоматическая пере синхронизация клиента и сервера независимо друг от друга по специальному алгоритму. Значение счетчика растет каждый раз, как от устройства требуется значение OTP и когда пользователь желает войти в систему, он вводит OTP, отображенные на своем мобильном устройстве в настоящий момент.

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

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

Про пользователей и методы защиты

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

Некоторые компании для контроля доступа к данным в облаке устанавливают туннели между облаком и офисом, запрещают удаленный доступ https://habrahabr.ru/company/pc-administrator/blog/320016/ . На наш взгляд - это не совсем оптимальное решение, во-первых, теряется часть преимуществ облачного решения, а во-вторых есть проблемы с производительностью, отмеченные в статье.

Решение с использованием терминального сервера и Remote Desktop Gateway (RDG) более гибкое, можно настроить высокий уровень безопасности, как описал мой коллега https://habrahabr.ru/post/134860/ (статья 2011 года, но сам принцип до сих пор актуален). Данный способ позволяет предотвратить передачу данных из облака, но накладывает ограничения на работу пользователя и не полностью решает проблему аутентификации, скорее это DLP решение.

Возможно лучшим способом гарантировать, что под учетной записью пользователя не работает злоумышленник, является двухфакторная аутентификация . В статьях моего коллеги https://habrahabr.ru/post/271259/ https://habrahabr.ru/post/271113/ описывается настройка MFA от Microsoft и Google для клиентского VPN. Способ хороший, но, во-первых, он требует наличия CISCO ASA, что не всегда легко реализуемо, особенно в бюджетных облаках, а во-вторых, работа через VPN неудобна. Работа с терминальной сессией через RDG значительно комфортнее, да и SSL протокол шифрования выглядит более универсальным и надежным, чем VPN от CISCO.

Решений с двухфакторной аутентификацией на самом терминальном сервере много, вот пример настройки бесплатного решения - http://servilon.ru/dvuhfaktornaya-autentifikaciya-otp/ . Это решение, к сожалению, не работает через RDG.

RDG сервер запрашивает подтверждение авторизации у сервера MFA. MFA в зависимости от выбранного способа аутентификации звонит, отправляет смс или посылает запрос в мобильное приложение. Пользователь подтверждает или отклоняет запрос на предоставление доступа. MFA возвращает результат второго фактора аутентификации на RDG сервер.

Установка и настройка Azure Multi-Factor Authentication Server

Создание поставщика аутентификации в портале Microsoft Azure

Заходим в Microsoft Azure (учетная запись должна иметь подписку или установлена триальная версия) и находим Multi-Factor Authentication (MFA).

На данный момент управление MFA не добавлено в новую версия портала Azure, поэтому откроется старая версия портала.

Для создания нового поставщика многофакторной проверки подлинности необходимо слева внизу нажать «СОЗДАТЬ → Службы приложений → Active directory → Поставщик многофакторной проверки подлинности → Быстрое создание». Указать имя и модель использования.

От модели использования зависит как будет начисляться оплата, либо по количеству пользователей, либо по количеству аутентификаций.


После создания MFA отобразится в списке. Далее переходим к управлению, нажав соответствующую кнопку.


Переходим в загрузки и скачиваем MFA сервер

Развертывание MFA сервера

Устанавливать MFA сервер необходимо на виртуальную машину отличную от RDG сервера. Поддерживаются ОС старше Windows Server 2008 или Windows 7. Для работы необходим Microsoft .NET Framework 4.0.

Должны быть доступны адреса по 443 порту:

Устанавливаем MFA сервер, при установке отказываемся от мастера настроек.

При первом запуске необходимо ввести данные от учетной записи, которые надо сгенерировать на странице загрузки сервера.


Далее добавляем пользователей. Для этого переходим в раздел Users и нажимаем на Import from Active Directory, выбираем пользователей для импорта.



При необходимости можно настроить автоматическое добавление новых пользователей из АД:

«Directory Integration → Synchronization → Add», а т.ж. добавить каталог, который будет автоматически синхронизироваться по указанному интервалу времени.


Проведем тест работоспособности MFA сервера. Переходим в раздел Users. Для своей учетной записи указываем номер телефона (если еще не задан) и выбираем способ аутентификации «Звонок телефона». Нажимаем кнопку Test и вводим логин, пароль. На телефон должен прийти вызов. Отвечаем на него и нажимаем #.

Настройка MFA сервера на работу с Radius запросами

Переходим в раздел Radius Authentication и ставим галочку «Enable RADIUS Authentication».

Добавляем нового клиента, указывая IP адрес NPS сервера и общий секретный ключ. Если аутентификация должна проводиться для всех пользователей, ставим соответствующую галочку (в данном случае все пользователи должны быть добавлены на MFA сервер).

Так же необходимо убедиться, что указанные для соединения порты соответствуют портам, указанным на NPS сервере и их не блокирует брандмауэр.


Переходим на вкладку Target и добавляем Radius сервер.


Примечание: Если в сети нет центрального NPS сервера, IP адреса Radius клиента и сервера будут одинаковыми.

Настройка RDG и NPS сервера на работу совместно с MFA

Шлюз удаленных рабочих столов необходимо настроить на отправку Radius запросов на сервер MFA. Для этого открываем свойства шлюза и переходим на вкладку «RDG CAP Store», выбираем «NPS работает на центральном сервере» и указываем адрес MFA сервера и общий секретный ключ.


Далее производим настройку NPS сервера. Разворачиваем раздел «Клиенты и серверы Radius → Удаленные группы серверов Radius». Открываем свойства группы «TS gateway server group» (группа создаётся при настройке RDG) и добавляем наш MFA сервер.

При добавлении, на вкладке «Load Balancing» увеличиваем лимиты времени ожидания сервера. Выставляем «Число секунд без ответа, после которого запрос считается отброшенным» и «Число секунд между запросами, после которого сервер считается недоступным» в диапазоне 30-60 секунд.

На вкладке «Authentication/Accounting» проверяем правильность указанных портов и задаем общий секретный ключ.



Теперь перейдем в раздел «Клиенты и серверы Radius → Клиенты Radius» и добавим MFA сервер, указав «Friendly name», адрес и общий секрет.


Переходим в раздел «Политики → Политики запросов на подключение». В данном разделе должна быть политика, созданная при настройке RDG. Эта политика направляет запросы Radius на MFA сервер.

Дублируем политику и заходим в ее свойства. Добавляем условие сопоставляющее «Client Friendly Name» c «Friendly name», заданным в предыдущем шаге.


На вкладке «Settings» меняем поставщика услуг аутентификации на локальный сервер.


Данная политика будет гарантировать то, что при получении Radius запроса от MFA сервера, запрос будет обработан локально, что избавит от зацикливания запросов.

Проверяем что данная политика размещена над исходной.


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

Установка SDK, веб-службы мобильного приложения и пользовательского портала

Подключение к данным компонентам производиться по HTTPS протоколу. Поэтому, на сервера где они будут развернуты, необходимо установить SSL сертификат.

Пользовательский портал и веб-служба мобильного приложения используют пакет SDK для связи с сервером MFA.

Установка SDK

SDK устанавливается на сервер MFA и требует наличия IIS, ASP.NET, Basic Authentication, которые необходимо предварительно установить, используя Server Manager.

Для установки SDK переходим в раздел Web Service SDK в Multi-Factor Authentication Server и нажимаем кнопку установить, следуем мастеру установки.

Установка веб-службы мобильного приложения

Данная служба необходима для взаимодействия мобильного приложения с сервером MFA. Для корректной работы службы, компьютер, на который она будет установлена, должен иметь выход в интернет и открыт 443 порт для подключения из интернета.

Файл установки службы находиться в папке C:\Program Files\Azure Multi-Factor Authentication на компьютере с установленным MFA. Запускаем установщик и следуем мастеру установки. Для удобства пользователей можно заменить имя виртуального каталога «MultiFactorAuthMobileAppWebService» на более короткое.

После установки заходим в папку C:\inetpub\wwwroot\MultiFactorAuthMobileAppWebService и изменяем файл web.config . В данном файле необходимо задать ключи , отвечающие за учетную запись, входящую в группу безопасности PhoneFactor Admins. Эта учетная запись будет использоваться для подключения к SDK.


В этом же файле необходимо указать URL адрес по которому доступен SDK.

Примечание: Соединение с SDK производиться по SSL протоколу, поэтому необходимо ссылаться на SDK по имени сервера (указанному в SSL сертификате), а не по IP адресу. Если обращение осуществляется по локальному имени, нужно добавить в hosts файл соответствующую запись, чтобы использовать SSL сертификат.


Добавляем URL, по которому доступна веб-служба мобильного приложения, в приложение Multi-Factor Authentication Server в раздел Mobile App. Это необходимо для правильной генерации QR кода в пользовательском портале для подключения мобильных приложений.

Также в этом разделе можно установить галочку «Enable OATH tokens», что позволить использовать мобильное приложения как Software token, для генерации одноразовых паролей на основании времени.

Установка пользовательского портала

Для установки требуется IIS, ASP.NET и роль совместимости мета базы IIS 6 (для IIS 7 или более поздней версии).

Если портал устанавливается на сервере MFA, достаточно в Multi-Factor Authentication Server перейти в раздел User Portal, нажать кнопку установить и следовать мастеру установки. Если компьютер присоединен к домену, то при установке будет создан пользователь, входящий в группу безопасности PhoneFactor Admins. Этот пользователь необходим для защищённого соединения с SDK.


При установке на отдельный сервер, необходимо скопировать файл установки с сервера MFA (файл установки располагается в папке C:\Program Files\Multi-Factor Authentication Server ). Произвести установку и отредактировать файл web.config в расположение C:\inetpub\wwwroot\MultiFactorAuth . В данном файле необходимо изменить ключ USE_WEB_SERVICE_SDK со значения false на true. Указать данные учетной записи, входящей в группу PhoneFactor Admins в ключах WEB_SERVICE_SDK_AUTHENTICATION_USERNAME и WEB_SERVICE_SDK_AUTHENTICATION_PASSWORD . И указать URL адрес SDK службы, не забывая при необходимости поправить hosts файл, чтобы работал SSL протокол.

Добавляем URL, по которому доступен пользовательский портал в приложение Multi-Factor Authentication Server в раздел User Portal.

Демонстрация работы Azure MFA для аутентификации RDG подключений

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

Первым делом, пользователю понадобиться зайти на пользовательский портал и указать свой номер телефона (если не указан в AD) и привязать к аккаунту мобильное приложение. Заходим на портал под своей учетной записью и вводим ответы на секретные вопросы (они нам понадобятся в случае восстановления доступа к аккаунту).


Далее выбираем метод аутентификации, в нашем случае мобильное приложение и нажимаем кнопку «Создать код активации». Будет сгенерирован QR код, который надо отсканировать в мобильном приложении.


Так как при импортировании пользователей на MFA сервер была выставлена аутентификация с помощью PIN кода, нам будет предложено создать его. Вводим желаемый PIN код и нажимаем «Проверить мою подлинность». В мобильном приложении необходимо подтвердить появившийся запрос. После данных действий мы имеем привязанное к аккаунту приложение и полноценный доступ к порталу для изменения личных настроек.

Получил невероятно хорошие комментарии и уточнения от пожелавшего остаться неизвестным товарища:
1) В самом начале настройки сервера, вводите команду:
multiotp.exe -debug -config default-request-prefix-pin=0 display-log=1 после неё не требуется вводить пин-код при настройке пользователя и включается отображение лога каждой операции в консоль.

2) С помощью этой команды можно регулировать bantime, для пользователей, которые ошиблись с паролем (по умолчанию 30 сек):
multiotp.exe -debug -config failure-delayed-time=60
3) То, что будет написано в приложении google Authenticator над 6 цифрами, называется issuer, можно поменять с дефолтного MultiOTP на что-то другое:
multiotp.exe -debug -config issuer=other
4) После проделанных операций, команда по созданию пользователя становится чуть проще:
multiotp.exe -debug -create user TOTP 12312312312312312321 6 (время обновления цифр, равное 30 секундам, я не задаю, кажется оно по умолчанию равно 30).

5) Каждому пользователю можно изменить description (текст под цифрами в приложении Google Auth):
multiotp.exe -set username description=2
6) QR-коды можно создавать сразу в приложении:
multiotp.exe -qrcode username c:\multiotp\qrcode\user.png:\multiotp\qrcode\user.png
7) Можно использовать не только TOTP, но и HOTP (на вход функции хэширования подаётся не текущее время, а значение инкрементального счетчика):
multiotp.exe -debug -create username HOTP 12312312312312312321 6

Сегодня расскажем, как можно быстро и просто настроить двухфакторную аутентификацию и зашифровать важные данные, причем даже с возможностью использования биометрии. Решение будет актуально для небольших компании или просто для персонального компьютера или ноутбука. Важно, что для этого нам не потребуется инфраструктура открытых ключей (PKI), сервер с ролью центра сертификации (Certificate Services) и даже не потребуется домен (Active Directory). Все системные требования будут сводиться к операционной системе Windows и наличию у пользователя электронного ключа, а в случае биометрической аутентификацией еще и считывателю отпечатка пальцев, который, например, может быть уже встроен в ваш ноутбук.

Для аутентификации будем использовать ПО нашей разработки – JaCarta SecurLogon и электронный ключ JaCarta PKI в качестве аутентификатора. Инструментом шифрования будет штатный Windows EFS, доступ к зашифрованным файлам будет осуществляться также через ключ JaCarta PKI (тот же, который используется для аутентификации).

Напомним, JaCarta SecurLogon - сертифицированное ФСТЭК России программно-аппаратное решение компании Аладдин Р.Д., позволяющее осуществить простой и быстрый переход от однофакторной аутентификации на основе пары логин-пароль к двухфакторной аутентификации в ОС по USB-токенам или смарт-картам. Суть работы решения довольно проста - JSL генерирует сложный пароль (~63 символа) и записывает его в защищенную память электронного ключа. При этом пароль может быть неизвестен самому пользователю, пользователь знает только ПИН-код. Вводя ПИН-код при аутентификации, происходит разблокировка устройства, и пароль передается системе для аутентификации. Опционально можно заменить ввод ПИН-кода сканированием отпечатка пальца пользователя, а также можно применить комбинацию ПИН + отпечаток пальца.

EFS также как и JSL умеет работать в режиме standalone, не требуя кроме самой ОС ничего. Во всех операционных системах Microsoft семейства NT, начиная с Windows 2000 и новее (кроме home версий), существует встроенная технология шифрования данных EFS (Encrypting File System). EFS-шифрование основано на возможностях файловой системы NTFS и архитектуре CryptoAPI и предназначено для быстрого шифрования файлов на жестком диске компьютера. Для шифрования в EFS используется закрытый и открытый ключи пользователя, которые генерируются при первом использовании пользователем функции шифрования. Данные ключи остаются неизменными все время, пока существует его учетная запись. При шифровании файла EFS случайным образом генерирует уникальный номер, так называемый File Encryption Key (FEK) длиной 128 бит, с помощью которого и шифруются файлы. Ключи FEK зашифрованы мастер-ключом, который зашифрован ключом пользователей системы, имеющего доступ к файлу. Закрытый ключ пользователя защищается хэшем пароля этого самого пользователя. Данные, зашифрованные с помощью EFS, могут быть расшифрованы только с помощью той же самой учетной записи Windows с тем же паролем, из-под которой было выполнено шифрование. А если хранить сертификат шифрования и закрытый ключ на USB-токене или смарт-карте, то для доступа к зашифрованным файлам потребуется еще и этот USB-токен или смарт-карта, что решает проблему компрометации пароля, так как будет необходимо наличие и дополнительного устройства в виде электронного ключа.

Аутентификация

Как уже отметили, для настройки не нужен AD или центр сертификации, нужен любой современный Windows, дистрибутив JSL и лицензия. Настройка проста до безобразия.

Нужно установить файл лицензии.

Добавить профиль пользователя.

И начать пользоваться двухфакторной аутентификацией.

Биометрическая аутентификация

Есть возможность использовать биометрическую аутентификацию по отпечатку пальца. Решение работает по технологии Match On Card. Хэш отпечатка записывается на карту при первичной инициализации и в дальнейшем сверяется с оригиналом. Из карты никуда не уходит, в каких-то базах не хранится. Для разблокировки такого ключа используется отпечаток или комбинация ПИН + отпечаток, ПИН или отпечаток.

Для начала использования нужно просто инициализировать карту с необходимыми параметрами, записать отпечаток пользователя.

В дальнейшем такое же окно будет всплывать перед входом в ОС.

В настоящем примере карта инициализирована с возможностью аутентификации по отпечатку или ПИН-коду, о чем и сообщает окно аутентификации.

После предъявления отпечатка или ПИН-кода, пользователь попадет в ОС.

Шифрование данных

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

Для выпуска сертификата шифрования и закрытого ключа откройте учетную запись пользователя, выберите - Управление сертификатами шифрования файлов. В открывшемся мастере, создайте самозаверенный сертификат на смарт-карте. Так как мы продолжаем использовать смарт-карту с BIO-апплетом, для записи сертификата шифрования нужно предъявить отпечаток или ПИН.

На следующем шаге укажите директории, которые будут связаны с новым сертификатом, при необходимости можно указать все логические диски.

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

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

На этом вся настройка окончена.

Можно использовать оба сценария (аутентификация и шифрование), можно остановиться на чем-то одном.

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

Мы уже не раз рассказывали об одноразовых ключах. Смысл очень простой. Если злоумышленник каким-то образом сможет получить твой логин-пароль, то без проблем сможет зайти в твою почту или выполнить подключение к удаленному серверу. Но если на его пути будет дополнительный фактор, например одноразовый ключ (его также называют OTP-ключом), то уже ничего не выйдет. Даже если такой ключ попадет к злоумышленнику, то воспользоваться им будет уже нельзя, так как валидным он является только один раз. В качестве такого второго фактора может быть дополнительный звонок, код, полученный по SMS, ключ, сгенерированный на телефоне по определенным алгоритмам на основе текущего времени (время - способ синхронизировать алгоритм на клиенте и сервере). Тот же самый Google уже давно рекомендует своим пользователям включить двухфакторную авторизацию (пара кликов в настройке аккаунта). Теперь пришла очередь добавить такой слой защиты и для своих сервисов!

Что предлагает Duo Security?

Банальный пример. У моего компьютера «наружу» открыт RDP-порт для удаленного подключения к рабочему столу. Если логин-пароль утечет, злоумышленник сразу получит полный доступ к машине. Поэтому об усилении защиты OTP-паролем вопрос даже не стоял - это нужно было просто сделать. Глупо было изобретать велосипед и пытаться реализовать все своими силами, поэтому я просто посмотрел решения, которые есть на рынке. Большинство из них оказались коммерческими (подробнее во врезке), однако для незначительного числа пользователей их можно юзать бесплатно. Для дома как раз то, что нужно. Одним из самых удачных сервисов, позволяющих организовать двухфакторную авторизацию буквально для чего угодно (включая VPN, SSH и RDP), оказался Duo Security (www.duosecurity.com). Привлекательности ему добавляло то, что разработчиком и фаундером проекта является Джон Оберхайд, известный специалист по информационной безопасности. Он, к примеру, расковырял протокол общения Google со смартфонами Android, с помощью которого можно установить или удалить произвольные приложения. Такая база дает о себе знать: чтобы показать важность двухфакторной авторизации, парни запустили сервис VPN Hunter (www.vpnhunter.com), который в два счета может найти неспрятанные VPN-серверы компании (и заодно определить тип оборудования, на которых они работают), сервисы для удаленного доступа (OpenVPN, RDP, SSH) и другие элементы инфраструктуры, позволяющие злоумышленнику попасть во внутреннюю сеть, просто зная логин и пароль. Забавно, что в официальном Твиттере сервиса владельцы начали ежедневно публиковать отчеты о сканировании известных компаний, после чего аккаунт был забанен:). Сервис Duo Security, само собой, нацелен прежде всего на внедрение двухфакторной аутентификации в компаниях с большим числом пользователей. К счастью для нас, есть возможность создать бесплатный Personal-аккаунт, позволяющий организовать двухфакторную аутентификацию для десяти пользователей бесплатно.

Что может быть вторым фактором?

Далее мы рассмотрим, как буквально за десять минут усилить безопасность подключения к удаленному рабочему столу, а также SSH на сервере. Но сперва хочу рассказать о том дополнительном этапе, который вводит Duo Security в качестве второго фактора авторизации. Вариантов несколько: телефонный звонок, СМС с пасскодами, Duo Mobile пасскоды, Duo Push, электронный ключ. О каждом чуть подробнее.

Долго ли можно использовать бесплатно?

Как уже было сказано, Duo Security предлагает специальный тарифный план «Personal». Он абсолютно бесплатен, но количество пользователей должно быть не более десяти. Поддерживает добавление неограниченного числа интеграций, все доступные методы аутентификации. Предоставляет тысячу бесплатных кредитов на услуги телефонии. Кредиты - это как бы внутренняя валюта, которая списывается с твоего аккаунта каждый раз, когда происходит аутентификация с помощью звонка или СМС. В настройках аккаунта можно выставить, чтобы при достижении заданного числа кредитов тебе на мыло пришло уведомление и ты успел пополнить баланс. Тысяча кредитов стоит всего 30 баксов. Цена на звонки и СМС для разных стран отличается. Для России звонок будет обходиться от 5 до 20 кредитов, СМС - 5 кредитов. Однако за звонок, происходящий при аутентификации на сайте Duo Security, ничего не списывается. Про кредиты можно совсем забыть, если использовать для аутентификации приложение Duo Mobile - за него ничего не взимается.

Простая регистрация

Для защиты своего сервера с помощью Duo Security необходимо скачать и установить специальный клиент, который будет взаимодействовать с аутентификационным сервером Duo Security и обеспечивать второй слой защиты. Соответственно, этот клиент в каждой ситуации будет разным: в зависимости от того, где именно необходимо реализовать двухфакторную авторизацию. Об этом мы поговорим ниже. Первое же, что необходимо сделать, - зарегистрироваться в системе и получить аккаунт. Поэтому открываем главную страницу сайта, нажимаем «Free Trial», на открывшейся странице нажимаем кнопку «Sing up» под типом аккаунта Personal. После чего нас просят ввести имя, фамилию, адрес электронной почты и название компании. На почту должно прийти письмо, содержащее ссылку для подтверждения регистрации. При этом система обязательно выполнит автоматический дозвон по указанному телефону: для активации аккаунта надо ответить на звонок и нажать на телефоне кнопку #. После этого аккаунт будет активным и можно приступать к боевым испытаниям.

Защищаем RDP

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

  1. Любое внедрение двухфакторной авторизации начинается с простого действия: создания в профиле Duo Security так называемой интеграции. Переходим в раздел «Integrations  New Integration», указываем имя интеграции (например, «Home RDP»), выбираем ее тип «Microsoft RDP» и нажимаем «Add Integration».
  2. В появившемся окне выводятся параметры интеграции: Integration key, Secret key, API hostname. Они нам понадобятся позже, когда мы будем настраивать клиентскую часть. Важно понимать: знать их никто не должен.
  3. Далее необходимо поставить на защищаемую машину специальный клиент, который установит все необходимое в Windows-систему. Его можно скачать с официального сайта или взять с нашего диска. Вся его настройка сводится к тому, что в процессе установки необходимо будет ввести упомянутые выше Integration key, Secret key, API hostname.
  4. Вот, собственно, и все. Теперь при следующем заходе на сервер по RDP на экране будет три поля: имя пользователя, пароль и одноразовый ключ Duo. Соответственно, с одним только логином-паролем выполнить вход в систему уже нельзя.

При первой попытке захода в систему новому пользователю необходимо будет единожды пройти процедуру проверки Duo Security. Сервис будет выдавать ему специальную ссылку, перейдя по которой необходимо ввести свой номер телефона и ждать проверяющего звонка. Чтобы получить дополнительные ключи (или получить их в первый раз), можно ввести ключевое слово «sms». В случае если ты хочешь пройти аутентификацию при помощи телефонного звонка - введи «phone», если при помощи Duo Push - «push». Историю всех попыток подключения (как удачных, так и неудачных) к серверу можно посмотреть в своем аккаунте на сайте Duo Security, предварительно выбрав нужную интеграцию и зайдя в ее «Authentication Log».

Подключаем Duo Security где угодно!

С помощью двухфакторной авторизации можно защищать не только RDP или SSH, но и VPN, RADIUS-серверы, любые веб-сервисы. Например, существуют готовые клиенты, добавляющие дополнительный слой аутентификации в популярные движки Drupal и WordPress. Если готового клиента нет, расстраиваться не стоит: ты всегда можешь самостоятельно добавить двухфакторную аутентификацию для своего приложения или сайта при помощи API, предоставляемого системой. Логика работы с API проста - ты делаешь запрос на URL определенного метода и парсишь возвращаемый ответ, который может прийти в формате JSON (или же BSON, XML). Полная документация по Duo REST API доступна на официальном сайте. Я лишь скажу, что существуют методы ping, check, preauth, auth, status, из названия которых несложно догадаться, для чего они предназначены.

Защищаем SSH

Рассмотрим еще один тип интеграции - «UNIX Integration», чтобы реализовать безопасную аутентификацию. Добавляем еще одну интеграцию в своем профиле Duo Security и приступаем к установке клиента в системе.

Исходники последнего ты можешь скачать по адресу bit.ly/IcGgk0 или взять с нашего диска. Я использовал последнюю версию - 1.8. Кстати, клиент работает на большинстве nix-платформ, так что его можно будет спокойно установить на FreeBSD, NetBSD, OpenBSD, Mac OS X, Solaris/Illumos, HP-UX и AIX. Процесс сборки стандартен - configure && make && sudo make install. Единственно, я бы рекомендовал использовать configure с опцией —prefix=/usr, иначе при запуске клиент может не найти необходимых библиотек. После успешной установки идем редактировать конфигурационный файл /etc/duo/login_duo.conf. Это нужно делать из-под рута. Все изменения, которые необходимо внести для успешной работы, - это задать значения Integration key, Secret key, API hostname, которые можно узнать на странице интеграции.

; Duo integration keyikey = INTEGRATION_KEY; Duo secret keyskey = SECRET_KEY; Duo API hostnamehost = API_HOSTNAME

Чтобы заставить всех пользователей, заходящих на твой сервер по SSH, использовать двухфакторную аутентификацию, достаточно добавить следующую строку в файл /etc/ssh/sshd_config:

> ForceCommand /usr/local/sbin/login_duo

Существует также возможность организовать двухфакторную авторизацию только для отдельных пользователей, объединив их в группу и указав эту группу в файле login_duo.conf:

> group = wheel

Для вступления изменений в силу остается только перезапустить ssh-демон. С этого момента после успешного ввода логина-пароля пользователю будет предложено пройти дополнительную аутентификацию. Следует отдельно отметить одну тонкость настройки ssh - настоятельно рекомендуется отключить в конфигурационном файле опции PermitTunnel и AllowTcpForwarding, так как демон применяет их до того, как запустить второй этап аутентификации. Таким образом, если злоумышленник правильно вводит пароль, то он может получить доступ к внутренней сети до завершения второго этапа аутентификации благодаря порт-форвардингу. Чтобы избежать такого эффекта, добавь следующие опции в sshd_config:

PermitTunnel noAllowTcpForwarding no

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

Дополнительные настройки

Если зайти в свой аккаунт Duo Security и перейти в раздел «Settings», то можно подкрутить под себя некоторые настройки. Первый важный раздел - это «Phone calls». Тут указываются параметры, которые будут действовать, когда для подтверждения аутентификации будет задействован телефонный звонок. Пункт «Voice callback keys» позволяет задать, на какую клавишу телефона надо будет нажать для подтверждения аутентификации. По умолчанию там стоит значение «Press any key to authenticate» - то есть можно жать на любую. Если же установить значение «Press different keys to authenticate or report fraud», то нужно будет задать две клавиши: нажатие на первую подтверждает аутентификацию (Key to authenticate), нажатие на вторую (Key to report fraud) означает, что процесс аутентификации инициировали не мы, то есть кто-то получил наш пароль и пытается с его помощью зайти на сервер. Пункт «SMS passcodes» позволяет задать количество пасскодов, которое будет содержать одна эсэмэска, и время их жизни (валидности). Параметр «Lockout and fraud» позволяет задать адрес электронной почты, на который будет приходить оповещение в случае определенного числа неудачных попыток авторизоваться на сервере.

Используй!

Удивительно, но многие по-прежнему игнорируют двухфакторную авторизацию. Не понимаю почему. Это действительно очень серьезно усиливает безопасность. Реализовать ее можно практически для всего, а достойные решения доступны бесплатно. Так почему? От лени или от беспечности.

Сервисы-аналоги

  • Signify (www.signify.net) Сервис предоставляет три варианта для организации двухфакторной аутентификации. Первый - использование электронных ключей. Второй способ - использование пасскеев, которые посылаются пользователю на телефон посредством СМС или приходят на электронную почту. Третий вариант - мобильное приложение для телефонов Android, iPhone, BlackBerry, которое генерирует одноразовые пароли (по сути, аналог Duo Mobile). Сервис нацелен на крупные компании, поэтому полностью платный.
  • SecurEnvoy (www.securenvoy.com) Также позволяет использовать мобильный телефон в качестве второго защитного слоя. Пасскеи отправляются пользователю по СМС или на электронную почту. Каждое сообщение содержит три пасскея, то есть пользователь может три раза авторизоваться, перед тем как запросит новую порцию. Сервис также является платным, но предоставляет бесплатный 30-дневный период. Существенным плюсом является большое число как родных, так и сторонних интеграций.
  • PhoneFactor (www.phonefactor.com) Данный сервис позволяет бесплатно организовать двухфакторную аутентификацию до 25 пользователей, предоставляя 500 бесплатных аутентификаций в месяц. Для организации защиты необходимо будет скачать и установить специальный клиент. В случае необходимости добавления двухфакторной аутентификации на сайт можно воспользоваться официальным SDK, предоставляющим подробную документацию и примеры для следующих языков программирования: ASP.NET C#, ASP.NET VB, Java, Perl, Ruby, PHP.

Лучшие статьи по теме