Two Factor Authentication

Двухфакторная аутентификация для терминальных серверов

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

Конечно, существует целый ряд мер, в том числе административных, чтобы данная ситуация не привела к утечке информации. Мы же рассмотрим другой подход.

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

Одноразовый пароль (англ. one time password, OTP) это пароль, действительный только для одного сеанса аутентификации.

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

Используемые продукты

В качестве примера, рассмотрим реализацию внедрения OTP пароля, основанном на проекте multiOTP – опенсорсовом софте PHP, умеющим работать на стандартных алгоритмах, которые хорошо себя зарекомендовали в индустрии обеспечения многофакторной аутентификации (HOTP, TOTP, OCRA).

Для обеспечения дополнительного поля ввода OTP пароля в окне входа в систему Windows будем использовать плагин MultiOneTimePassword-CredentialProvider.

Пользователь будет генерировать одноразовые пароли у себя на мобильном устройстве с помощью  Google Authenticator.

Установка multiOTP

Скачиваем продукт multiOTP и размещаем содержимое папки windows (из скачанной директории) в корень системного диска: C:\multiotp.

Вся настройка происходит через командную строку. Запускаем CMD от имени администратора и переходим в нашу директорию:

cmd help

Далее приводится список команд для настройки и синхронизации сервиса multiOTP с Active Directory:

  1. C:\multiotp>multiotp -config default-request-prefix-pin=0

Ввод ПИН-кода по умолчанию, при создании новых пользователей (1 | 0)

  1. C:\multiotp>multiotp -config default-request-ldap-pwd=0

Использование пароля Active Directory вместо ПИН-кода по умолчанию(1 | 0)

  1. C:\multiotp>multiotp -config ldap-server-type=1

Выбор сервер AD/LDAP (1=Active Directory | 2=standart LDAP )

  1. C:\multiotp>multiotp -config ldap-cn-identifier=»sAMAccountName»

CN идентификатор пользователя (sAMAccountName, eventually userPrincipalName)

  1. C:\multiotp>multiotp -config ldap-group-cn-identifier=»sAMAccountName»

CN идентификатор группы (sAMAccountName for Active Directory)

  1. C:\multiotp>multiotp -config ldap-group-attribute=»memberOf»

Атрибут, определяющий принадлежность к группе

  1. C:\multiotp>multiotp -config ldap-ssl=0

Использование SSL соединения по умолчанию (0 | 1)

  1. C:\multiotp>multiotp -config ldap-port=389

Порт подключения (389 = standart | 636 = SSL connection)

  1. C:\multiotp>multiotp -config ldap-domain-controllers=servilon.com,ldaps://192.168.254.10:389

Указываем сервер(а) Active Directory

  1. C:\multiotp>multiotp -config ldap-base-dn=»DC=SERVILON,DC=COM»

Указываем суффикс домена

  1. C:\multiotp>multiotp -config ldap-bind-dn=»CN=Administrator,CN=Users,DC=servilon,DC=com»

Аккаунт, под которым подключаемся к AD DS.

  1. C:\multiotp>multiotp -config ldap-server-password=»P@$$w0rd»

Пароль, под которым подключаемся к AD DS.

  1. C:\multiotp>multiotp -config ldap-in-group=»OTP»

Группа, пользователи которой будут использовать OTP для входа на сервер.

  1. C:\multiotp>multiotp -config ldap-network-timeout=10

Таймаут ожидания синхронизации в секундах.

  1. C:\multiotp>multiotp -config ldap-time-limit=30

Таймаут смены OTP пароля на новый.

  1. C:\multiotp>multiotp -config ldap-activated=1

Включение поддержки AD/LDAP сервисом multiotp.

  1. C:\multiotp>multiotp -debug -display-log -ldap-users-sync

Синхронизация пользователей с AD/LDAP. Последнюю команду необходимо запускать каждый раз при добавлении новых пользователей или настроить в виде запуска скрипта по расписанию.

Если все команды введены корректно и сервер AD/LDAP доступен, то последняя команда должна показать синхронизацию и создание новых пользователей для сервиса multiotp:

cmd sync

Настройка Google Authenticator

Теперь необходимо передать уникальный ключ пользователя на устройство пользователя. Удобней всего это сделать через QR код. Для этого нам необходимо установить web-server который нам поможет в просмотре и регистрации пользователей. Просто заходим в папку multiotp и запускаем webservice_install.cmd, после чего должен открыться браузер с консолью администрирования. После входа, мы можем создать нового локального пользователя или просмотреть список существующих, что весьма полезно:

multiOTP web console

Но самое главное, вэб-консоль поможет нам зарегистрировать пользователя на мобильном устройстве. Нажимаем “Print” в строке необходимого пользователя и на новой вкладке мы видим QR код, сгенерированный для данного пользователя:

multiotp web console user

Сканируем полученный QR код с помощью Google Authenticator. Регистрация завершена.

Как видите все просто, можно например, переслать QR код пользователю почтой и он сам справится с регистрацией. Если все прошло успешно, та на экране мобильного устройства будет доступен OTP пароль, который обновляется каждые 30 секунд:

Google authenticator

Установка MultiOneTimePassword-CredentialProvider

Теперь необходимо указать нашему серверу Terminal дополнительно использовать OTP пароль при аутентификации пользователя. Для этого запускаем ранее скачанный установщик MultiOneTimePassword-CredentialProvider, где нам требуется лишь указать установку Default Provider и папку с сервисом multiotp:

MultiOneTimePassword provider

MultiOneTimePassword provider conf

Важно! После установки CredentialProvider, пользователи, которые не получили настройку OTP не смогут зайти на сервер. Поэтому необходимо позаботится чтобы у учетной записи администратора был также настроен OTP пароль.

Результаты

login

Теперь наш сервер Terminal получил дополнительный уровень безопасности в виде внедрения OTP пароля на базе бесплатного решения проекта multiOTP и multiOTP-Credential Provider.

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

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

Двухфакторная аутентификация для терминальных серверов: 15 комментариев

  1. При вводе первой же команды в командной строке пишет «Acces is denied», права правил, все равно тоже самое, есть ли решение данной проблемы?

      1. Да, с этой проблемой справился путем установке Frameворков на сервере, появилась следующая: время в панели управления 127.0.0.1:8112 неверное, он берет время Europe/Zurich, как его изменить не подскажите?

        1. А что указано в настройках системного времени и региона? (вопрос и о сервере и о клиентской машине)

  2. Спасибо за гайд! Но появилась одна проблема. При создании пользователей с кириллицей в именах командой «multiotp -debug -display-log -ldap-users-sync» создаются файлы в неправильной кодировке (рљрѕс‚рµр»сњрѕрёрєрѕрірµр°.db). Существует ли возможность это исправить?

    1. 2 дня промучался над решением этой проблемы.
      в multiOTP есть баг с именами пользователей в unicode (кириллица итп)!
      проблема в том, что разработчики используют функцию «strtolower()» вместо «mb_strtolower()», тем самым «портят» multibyte имена пользователей .

      решение — установить опцию case_sensitive_user=1 в конфигурации multiotp.ini на сервере и в multiotp.ini в пути установки multiOTPCredentialProvider!

  3. Добрый день!
    Коллеги, есть задача развернуть Двухфакторная аутентификация для RDS (10 серверов).
    Я так понимаю надо сделать папку multiOTP в сети и дать доступ на нее каждому серверу, и соответственно каждый пользователь вне зависимости от сервера будет нормально проходить авторизацию?

  4. Добрый день.
    Настроил все по данной инструкции.
    Только после запуска webservice_install, не могу авторизоваться.
    admin/1234 стоит, кнопка login не реагирует на нажатие.
    Что можно сделать?

  5. Добрый день.
    Не подскажите, есть ли в Multiotp возможность не создавать учетные записи для отключенных уч.записей в АД?
    Спасибо.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.