Грамотный подход к обеспечению IT безопасности в плане авторизации на своих серверах внутри компании и за ее пределами, подразумевает целый ряд мер, таких как: обеспечение уникальности имени пользователя, требований сложности и плановую замену пароля, неразглашение учетных данных сторонним лицам и т.д. Но зачастую бывает так, что пользователь быстро забывает про все это, и для своего удобства вешает бумажку с логином и паролем на видном месте, например, на своем мониторе. Что может оказаться вполне удобным для злоумышленника, желающего получить доступ к данным.
Конечно, существует целый ряд мер, в том числе административных, чтобы данная ситуация не привела к утечке информации. Мы же рассмотрим другой подход.
Радикальным решением является применение двухфакторной аутентификации, основанной на генерации одноразовых паролей.
Одноразовый пароль (англ. one time password, OTP) это пароль, действительный только для одного сеанса аутентификации.
Преимущество одноразового пароля по сравнению со статическим состоит в том, что пароль невозможно использовать повторно. Таким образом, злоумышленник, перехвативший данные из успешной сессии аутентификации (или прочитал с бумажки), не может использовать скопированный пароль для получения доступа к защищаемой информационной системе.
Используемые продукты
В качестве примера, рассмотрим реализацию внедрения OTP пароля, основанном на проекте multiOTP – опенсорсовом софте PHP, умеющим работать на стандартных алгоритмах, которые хорошо себя зарекомендовали в индустрии обеспечения многофакторной аутентификации (HOTP, TOTP, OCRA).
Для обеспечения дополнительного поля ввода OTP пароля в окне входа в систему Windows будем использовать плагин MultiOneTimePassword-CredentialProvider.
Пользователь будет генерировать одноразовые пароли у себя на мобильном устройстве с помощью Google Authenticator.
Установка multiOTP
Скачиваем продукт multiOTP и размещаем содержимое папки windows (из скачанной директории) в корень системного диска: C:\multiotp.
Вся настройка происходит через командную строку. Запускаем CMD от имени администратора и переходим в нашу директорию:
Далее приводится список команд для настройки и синхронизации сервиса multiOTP с Active Directory:
- C:\multiotp>multiotp -config default-request-prefix-pin=0
Ввод ПИН-кода по умолчанию, при создании новых пользователей (1 | 0)
- C:\multiotp>multiotp -config default-request-ldap-pwd=0
Использование пароля Active Directory вместо ПИН-кода по умолчанию(1 | 0)
- C:\multiotp>multiotp -config ldap-server-type=1
Выбор сервер AD/LDAP (1=Active Directory | 2=standart LDAP )
- C:\multiotp>multiotp -config ldap-cn-identifier=»sAMAccountName»
CN идентификатор пользователя (sAMAccountName, eventually userPrincipalName)
- C:\multiotp>multiotp -config ldap-group-cn-identifier=»sAMAccountName»
CN идентификатор группы (sAMAccountName for Active Directory)
- C:\multiotp>multiotp -config ldap-group-attribute=»memberOf»
Атрибут, определяющий принадлежность к группе
- C:\multiotp>multiotp -config ldap-ssl=0
Использование SSL соединения по умолчанию (0 | 1)
- C:\multiotp>multiotp -config ldap-port=389
Порт подключения (389 = standart | 636 = SSL connection)
- C:\multiotp>multiotp -config ldap-domain-controllers=servilon.com,ldaps://192.168.254.10:389
Указываем сервер(а) Active Directory
- C:\multiotp>multiotp -config ldap-base-dn=»DC=SERVILON,DC=COM»
Указываем суффикс домена
- C:\multiotp>multiotp -config ldap-bind-dn=»CN=Administrator,CN=Users,DC=servilon,DC=com»
Аккаунт, под которым подключаемся к AD DS.
- C:\multiotp>multiotp -config ldap-server-password=»P@$$w0rd»
Пароль, под которым подключаемся к AD DS.
- C:\multiotp>multiotp -config ldap-in-group=»OTP»
Группа, пользователи которой будут использовать OTP для входа на сервер.
- C:\multiotp>multiotp -config ldap-network-timeout=10
Таймаут ожидания синхронизации в секундах.
- C:\multiotp>multiotp -config ldap-time-limit=30
Таймаут смены OTP пароля на новый.
- C:\multiotp>multiotp -config ldap-activated=1
Включение поддержки AD/LDAP сервисом multiotp.
- C:\multiotp>multiotp -debug -display-log -ldap-users-sync
Синхронизация пользователей с AD/LDAP. Последнюю команду необходимо запускать каждый раз при добавлении новых пользователей или настроить в виде запуска скрипта по расписанию.
Если все команды введены корректно и сервер AD/LDAP доступен, то последняя команда должна показать синхронизацию и создание новых пользователей для сервиса multiotp:
Настройка Google Authenticator
Теперь необходимо передать уникальный ключ пользователя на устройство пользователя. Удобней всего это сделать через QR код. Для этого нам необходимо установить web-server который нам поможет в просмотре и регистрации пользователей. Просто заходим в папку multiotp и запускаем webservice_install.cmd, после чего должен открыться браузер с консолью администрирования. После входа, мы можем создать нового локального пользователя или просмотреть список существующих, что весьма полезно:
Но самое главное, вэб-консоль поможет нам зарегистрировать пользователя на мобильном устройстве. Нажимаем “Print” в строке необходимого пользователя и на новой вкладке мы видим QR код, сгенерированный для данного пользователя:
Сканируем полученный QR код с помощью Google Authenticator. Регистрация завершена.
Как видите все просто, можно например, переслать QR код пользователю почтой и он сам справится с регистрацией. Если все прошло успешно, та на экране мобильного устройства будет доступен OTP пароль, который обновляется каждые 30 секунд:
Установка MultiOneTimePassword-CredentialProvider
Теперь необходимо указать нашему серверу Terminal дополнительно использовать OTP пароль при аутентификации пользователя. Для этого запускаем ранее скачанный установщик MultiOneTimePassword-CredentialProvider, где нам требуется лишь указать установку Default Provider и папку с сервисом multiotp:
Важно! После установки CredentialProvider, пользователи, которые не получили настройку OTP не смогут зайти на сервер. Поэтому необходимо позаботится чтобы у учетной записи администратора был также настроен OTP пароль.
Результаты
Теперь наш сервер Terminal получил дополнительный уровень безопасности в виде внедрения OTP пароля на базе бесплатного решения проекта multiOTP и multiOTP-Credential Provider.
Данное решение вполне можно развернуть и на самом ПК пользователя, выставив барьер для злоумышленника при попытке входа на рабочем месте сотрудника.
Если вы хотите настроить двухфакторную аутентификацию или провести аудит ИТ безопасности в компании с нашей помошью – отправьте нам сообщение. Мы свяжемся с вами, чтобы уточнить детали.
При вводе первой же команды в командной строке пишет «Acces is denied», права правил, все равно тоже самое, есть ли решение данной проблемы?
Добрый день, Олег.
А подскажите CMD вы запускали с повышением прав?
Да, с этой проблемой справился путем установке Frameворков на сервере, появилась следующая: время в панели управления 127.0.0.1:8112 неверное, он берет время Europe/Zurich, как его изменить не подскажите?
А что указано в настройках системного времени и региона? (вопрос и о сервере и о клиентской машине)
P.S. Отлично, спасибо за информацию о вашем решении.
Спасибо за гайд! Но появилась одна проблема. При создании пользователей с кириллицей в именах командой «multiotp -debug -display-log -ldap-users-sync» создаются файлы в неправильной кодировке (рљрѕс‚рµр»сњрѕрёрєрѕрірµр°.db). Существует ли возможность это исправить?
2 дня промучался над решением этой проблемы.
в multiOTP есть баг с именами пользователей в unicode (кириллица итп)!
проблема в том, что разработчики используют функцию «strtolower()» вместо «mb_strtolower()», тем самым «портят» multibyte имена пользователей .
решение — установить опцию case_sensitive_user=1 в конфигурации multiotp.ini на сервере и в multiotp.ini в пути установки multiOTPCredentialProvider!
Спасибо за полезную информацию.
вот бы кто видео запилил.
Try the new open source Credential Provider V2 from multiOTP:
https://github.com/multiOTP/multiOTPCredentialProvider
А возможно с помощью multiOTP аутитификацию через MS RDG??
Добрый день!
Коллеги, есть задача развернуть Двухфакторная аутентификация для RDS (10 серверов).
Я так понимаю надо сделать папку multiOTP в сети и дать доступ на нее каждому серверу, и соответственно каждый пользователь вне зависимости от сервера будет нормально проходить авторизацию?
Добрый день.
Настроил все по данной инструкции.
Только после запуска webservice_install, не могу авторизоваться.
admin/1234 стоит, кнопка login не реагирует на нажатие.
Что можно сделать?
Проблему решил, добавил адрес в исключение браузера.
Добрый день.
Не подскажите, есть ли в Multiotp возможность не создавать учетные записи для отключенных уч.записей в АД?
Спасибо.