- Начало работы
- Интеграция
- HTTP API
- OpenID Connect
- RADIUS протокол
- RADIUS адаптер
- LDAP адаптер
- Портал самообслуживания
- Windows Logon
- MacOS logon
- Регистрация пользователей
- .NET Core
- 1с-Bitrix24
- 1с-плагин двухфакторной аутентификации
- ADFS
- ASP.NET
- Ansible AWX
- Atlassian Cloud
- BearPass
- Check Point VPN
- Cisco ASA VPN
- Citrix Gateway
- FortiGate VPN
- HRBOX
- Huawei Cloud
- Huawei VPN
- Ideco UTM
- Keycloak
- Let's Encrypt Windows Server
- Linux logon (GUI)
- Linux SSH
- Linux SUDO
- MikroTik L2TP VPN
- NGate VPN
- Network Policy Server (NPS)
- Nextcloud
- OpenVPN
- OpenVPN + AD
- OpenVPN Access Server
- OpenVPN pfSense
- Outlook Web Access (OWA)
- Passwork
- RD Gateway (RDGW)
- Redmine
- UserGate VPN
- VMware Horizon Cloud
- VMware Horizon View
- VMware vCloud Director
- VMware vSphere
- Vault
- ViPNET
- Windows VPN
- Yandex.Cloud
- Zabbix
- АйТи-Бастион
- Континент 4 VPN
- МТС Линк (бывш. webinar.ru)
- WordPress
- С-Терра VPN
- Точка доступа Wi-Fi
- ФПСУ-IP/Клиент
Настройка двухфакторной аутентификации Outlook Web Access (OWA)
Общая информация
В статье описывается настройка Outlook Web Access (OWA) для удаленного доступа к почте на сервере Exchange c двухфакторной аутентификацией.
Минимальная версия exchange:
Exchange с 2013
Возможные способы аутентификации:
Мобильное приложение MultiFactor
СМС
Биометрия
Аппаратные OTP токены
Приложения OTP: Google Authenticator или Яндекс.Ключ
Telegram
Обратите внимание
Если вы используете ADFS для доступа к OWA, переходите к инструкции по настройке ADFS.
Видео-презентация
Возможности
- Защита доступа вторым фактором проверки подлинности при каждом входе и через настраиваемый промежуток времени.
- Самостоятельная настройка второго фактора пользователем при первом входе.
- Избирательное включение второго фактора на основе принадлежности к группе в Active Directory.
- Журнал доступа.
Схема работы
- Пользователь открывает сайт Outlook Web Access;
- OWA запрашивает первый фактор аутентификации: логин и пароль, проверяет корректность указанных данных и создает пользовательскую сессию;
- Компонент MultiFactor.IIS.Adapter проверяет, что сессия авторизована и переадресовывает пользователя на второй фактор аутентификации;
- После успешного прохождения второго фактора, пользователь возвращается на сайт OWA и продолжает работу.
Для настройки второго фактора аутентификации вам потребуется установить и настроить на сервере Exchange компонент MultiFactor.IIS.Adapter. Компонент разработан и поддерживается компанией Мультифактор, распространяется бесплатно вместе с исходным кодом. Актуальная версия находится на GitHub: код и сборка (архив MultiFactor.IIS.Adapter.zip).
Лицензия
Обратите внимание на лицензию. Она не дает вам право вносить изменения в исходный код Компонента и создавать производные продукты на его основе. Исходный код предоставляется в ознакомительных целях.
Требования для установки
- Компоненту необходим доступ к хосту api.multifactor.ru по TCP порту 443 (TLS) напрямую или через HTTP прокси;
- Outlook Web Access должен работать с валидным SSL сертификатом.
- На сервере должно быть установлено правильное время.
Настройка Мультифактора
- Зайдите в систему управления Мультифактором, далее в раздел "Ресурсы" и создайте новый сайт Outlook Web Access;
Настройка OWA
-
Скопируйте файл
Bin\MultiFactor.IIS.Adapter.dll
в директориюC:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\Owa\Bin
; -
Скопируйте файл
mfa.aspx
в директориюC:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\Owa
; -
Отредактируйте файл
C:\Program Files\Microsoft\Exchange Server\V15\ClientAccess\Owa\web.config
:- сперва сделайте резервную копию
- в раздел
<modules>
первой строкой добавьте компонент
<add type="MultiFactor.IIS.Adapter.Owa.Module, MultiFactor.IIS.Adapter" name="MFA" />
- в раздел
<appSettings>
добавьте параметры компонента
<add key="multifactor:api-url" value="https://api.multifactor.ru" /> <add key="multifactor:api-key" value="API Key из настроек Мультифактора" /> <add key="multifactor:api-secret" value="API Secret из настроек Мультифактора" />
- сохраните и закройте.
Для избирательного запроса второго фактора на основе принадлежности к группе Active Directory, добавьте в конфигурацию параметры
<add key="multifactor:active-directory-2fa-group" value="owa-2fa" /> <add key="multifactor:active-directory-2fa-group-membership-cache-timeout" value="15"/>
- первый параметр — название группы в AD, у которой требуется запрашивать второй фактор. Группа может быть вложенной, то есть содержать в себе другие группы;
- второй параметр — промежуток времени (в минутах), через который обновляется информация о вхождении пользователя в группу. Для оптимизации производительности, значение по-умолчанию составляет 15 минут (но можно поставить 0).
Для работы с API Мультифактора через HTTP Proxy, добавьте в конфигурацию параметр
<add key="multifactor:api-proxy" value="http://proxy:3128" />
Передавать указанный атрибут из Active Directory в качестве логина пользователя
<add key="use-attribute-as-identity" value="mail"/>
reCAPTCHA OWA
Примечание
Подключение Captcha является опциональным и не обязательно для работы компонента.
Если вы не вносили изменения на страницу входа в OWA (настройка цветов, шрифтов, иконок или другая модификация), то следуйте инструкции по замене страницы входа. В противном случае, см. раздел обновление страницы входа.
Замена страницы входа
- Выберите капчу для подключения. Настоящая инструкция предлагает на выбор три варианта: Yandex SmartCaptcha, Google reCAPTCHA v2 и Google reCAPTCHA v3.
- Создайте пару ключей (ключ клиента\сайта и ключ сервера\секретный) в личном кабинете для выбранной капчи, укажите корректный домен, на котором устанавливается капча:
- Отредактируйте файл recaptcha.aspx в соответствующей директории архива, добавив свой секретный ключ:
<% @ Page AspCompat=True Language = "VB" %> <% Dim strPrivateKey As String = "SECRET_KEY" Dim strResponse = Request ("response") Dim ObjWinHTTP As Object objWinHTTP = Server.CreateObject ("WinHTTP.WinHTTPRequest.5.1") objWinHTTP.Open ("POST", "https://www.google.com/recaptcha/api/siteverify", False) objWinHTTP.SetRequestHeader ("Content-type", "application/x-www-form-urlencoded") Dim strData As String = "secret=" & strPrivateKey & "Gresponse=" & strResponse objWinHTTP.Send (strData) Dim strResponseText = objWinHTTP.ResponseText %>
- Скопируйте файл recaptcha.aspx в директорию OWA: C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth
- Сделайте бэкап файла logon.aspx из директории C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth
- Отредактируйте файл logon.aspx в соответствующей директории архива. Для этого найдите фразу «SITE_KEY» и замените все её вхождения на свой ключ.
- Замените файл logon.aspx в директории C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth на файл logon.aspx с вашим ключом. Перезагрузка Microsoft Exchange Server не требуется.
- ВАЖНО. Установка обновлений Microsoft Exchange Server может привести в перезаписи страницы logon.aspx и удалению recaptcha.aspx.
Обновление страницы входа
Выполните пункты 1-5 инструкции выше. ВМЕСТО п.6. выполните следующие действия. Внесите изменения в файл: C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth\logon.aspx
Найдите разметку
<form action="/owa/auth.owa"
и замените её на
<form action=" "
Найдите разметку
<div onclick="clkLgn()"
и замените её на
<div onclick="recaptchaClkLgn()"
Найдите разметку
<div><input id="passwordText"
и на следующей строчке
вставьте код (предварительно заменив все вхождения ключа SITE_KEY): а) для подключения Yandex SmartCaptcha
<script type="text/javascript"> function recaptchaClkLgn() { var oReq = new XMLHttpRequest(); var sResponse = document.getElementsByName("smart-token")[0].value; var sData = "response=" + sResponse; oReq.open("GET", "/owa/auth/recaptcha.aspx?" + sData, false); oReq.send(sData); if (oReq.responseText.indexOf("ok") != -1) { document.forms[0].action = "/owa/auth.owa"; clkLgn(); } else { alert("Invalid CAPTCHA response"); } } </script> <script src="https://smartcaptcha.yandexcloud.net/captcha.js" async defer></script> <div class="smart-captcha" data-sitekey="SITE_KEY"></div>
б) для подключения Google reCAPTCHA v2
<script type="text/javascript"> function recaptchaClkLgn() { var oReq = new XMLHttpRequest(); var sResponse = document.getElementById("g-recaptcha-response").value; var sData = "response=" + sResponse; oReq.open("GET", "/owa/auth/recaptcha.aspx?" + sData, false); oReq.send(sData); if (oReq.responseText.indexOf("true") != -1) { oReq.open("GET", "/owa/auth/mfa.aspx?" + sData, false); document.forms[0].action = "/owa/auth.owa"; clkLgn(); } else { alert("Invalid CAPTCHA response"); } } </script> <script src="https://www.google.com/recaptcha/api.js" async defer></script> <div class="g-recaptcha" data-sitekey="SITE_KEY"></div>
в) для подключения Google reCAPTCHA v3
<script src="https://www.google.com/recaptcha/api.js?render=SITE_KEY"></script> <script type="text/javascript"> function recaptchaClkLgn() { var oReq = new XMLHttpRequest(); grecaptcha.ready(function() { grecaptcha.execute('SITE_KEY', {action: 'submit'}).then(function(token) { console.log("v3 Token: " + token); var sData = "response=" + token; oReq.open("GET", "/owa/auth/recaptcha.aspx?" + sData, false); oReq.send(sData); if (oReq.responseText.indexOf("true") != -1) { oReq.open("GET", "/owa/auth/mfa.aspx?" + sData, false); document.forms[0].action = "/owa/auth.owa"; clkLgn(); } else { alert("Invalid CAPTCHA response"); } }) }); } </script>
После этого замените файл logon.aspx в директории C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth на модифицированный файл logon.aspx с вашим ключом. Перезагрузка Microsoft Exchange Server не требуется.
Важно
Установка обновлений Microsoft Exchange Server может привести в перезаписи страницы logon.aspx и удалению recaptcha.aspx.
Защита от сбоев
В случае недоступности (по любой причине) API MULTIFACTOR, адаптер может работать в одном из двух вариантов:
- Пропускать без второго фактора (по умолчанию)
- Отказывать в доступе
Для настройки используются следующие параметры:
<!-- true: пропускать, false: запрещать --> <add key="multifactor:bypass-second-factor-when-api-unreachable" value="true" /> <!--Адаптер запоминает bypass сессию на 15 минут для одного пользователя. Значения 0 или меньше нуля считаются значением по умолчанию --> <add key="multifactor:api-life-check-interval" value="15" />
Если не работает
Если вы проверяете работу второго фактора OWA на тестовом сервере, ящик пользователя должен быть в базе, смонтированной на том же сервере, где применяются настройки MFA.
Дополнительная информация
- Компонент необходимо установить на все сервера кластера.
- Компонент одинаково хорошо работает с прямым доступом к серверу IIS и через прокси, например, nginx.
- Компонент не влияет на первый фактор аутентификации, а именно проверку логина и пароля пользователя.
- Двухфакторная проверка подключается к OWA. Работа с ECP, MAPI и ActiveSync остается без изменений.
- Компонент повторно запрашивает второй фактор через настраиваемый промежуток времени и закрывает оставленные пользователями сессии. Интервал времени настраивается в групповой политике системы управления Мультифактором.
Дополнительные рекомендации по защите Exchange
- Своевременно устанавливайте все обновления безопасности;
- Закройте внешний доступ к ECP, EWS, MAPI, IMAP — все эти протоколы должны работать только из внутренней сети / VPN. Оставьте только OWA и ActiveSync;
- Защитите доступ к OWA вторым фактором;
- Настройте управление ActiveSync устройствами с помощью портала самообслуживания.
Вопросы и ответы
В: Как в качестве логина пользователя передавать UPN в Мультифактор?
О: По умолчанию, логин пользователя передается в Мультифактор в формате samaccountname.
Можно разрешить ввод логина пользователем в любом формате, но включить преобразование логина в UserPrincipalName (UPN) при отправке запроса доступа в Мультифактор с помощью следующей настройки:
<add key="multifactor:use-attribute-as-identity" value="userprincipalname" />
Смотрите также:
- Настройка двухфакторной аутентификации Windows VPN с Routing and Remote Access Service (RRAS);
- Настройка двухфакторной аутентификации Windows Remote Desktop.