Настройка двухфакторной аутентификации Outlook Web Access (OWA)
Общая информация
В статье описывается настройка Outlook Web Access (OWA) для удаленного доступа к почте на сервере Exchange c двухфакторной аутентификацией.
Возможные способы аутентификации:
Мобильное приложение MultiFactor
СМС
Биометрия
Аппаратные OTP токены
Приложения OTP: Google Authenticator или Яндекс.Ключ
Telegram
Если вы используете ADFS для доступа к OWA, переходите к инструкции по настройке ADFS.
Видео-презентация
Возможности
- Защита доступа вторым фактором проверки подлинности при каждом входе и через настраиваемый промежуток времени.
- Самостоятельная настройка второго фактора пользователем при первом входе.
- Избирательное включение второго фактора на основе принадлежности к группе в Active Directory.
- Журнал доступа.
Схема работы
- Пользователь открывает сайт Outlook Web Access;
- OWA запрашивает первый фактор аутентификации: логин и пароль, проверяет корректность указанных данных и создает пользовательскую сессию;
- Компонент MultiFactor.IIS.Adapter проверяет, что сессия авторизована и переадресовывает пользователя на второй фактор аутентификации;
- После успешного прохождения второго фактора, пользователь возвращается на сайт OWA и продолжает работу.
Для настройки второго фактора аутентификации вам потребуется установить и настроить на сервере Exchange компонент MultiFactor.IIS.Adapter. Компонент разработан и поддерживается компанией Мультифактор, распространяется бесплатно вместе с исходным кодом. Актуальная версия находится на GitHub: код и сборка.
Обратите внимание на лицензию. Она не дает вам право вносить изменения в исходный код Компонента и создавать производные продукты на его основе. Исходный код предоставляется в ознакомительных целях.
Требования для установки
- Компоненту необходим доступ к хосту 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" />
reCAPTCHA OWA
Если вы не вносили изменения на страницу входа в OWA (настройка цветов, шрифтов, иконок или другая модификация), то следуйте инструкции по замене страницы входа. В противном случае, см. раздел обновление страницы входа.
Замена страницы входа
- Выберите капчу для подключения. Настоящая инструкция предлагает на выбор три варианта: Yandex SmartCaptcha, Google reCAPTCHA v2 и Google reCAPTCHA v3.
- Создайте пару ключей (ключ клиента\сайта и ключ сервера\секретный) в личном кабинете для выбранной капчи, укажите корректный домен, на котором устанавливается капча:
- Отредактируйте файл recaptcha.aspx в соответствующей директории архива, добавив свой секретный ключ:
- Скопируйте файл 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.
Если не работает
Если вы проверяете работу второго фактора OWA на тестовом сервере, ящик пользователя должен быть в базе, смонтированной на том же сервере, где применяются настройки MFA.
Дополнительная информация
- Компонент необходимо установить на все сервера кластера.
- Компонент одинаково хорошо работает с прямым доступом к серверу IIS и через прокси, например, nginx.
- Компонент не влияет на первый фактор аутентификации, а именно проверку логина и пароля пользователя.
- Двухфакторная проверка подключается к OWA. Работа с ECP, MAPI и ActiveSync остается без изменений.
- Компонент повторно запрашивает второй фактор через настраиваемый промежуток времени и закрывает оставленные пользователями сессии. Интервал времени настраивается в групповой политике системы управления Мультифактором.
Дополнительные рекомендации по защите Exchange
- Своевременно устанавливайте все обновления безопасности;
- Закройте внешний доступ к ECP, EWS, MAPI, IMAP — все эти протоколы должны работать только из внутренней сети / VPN. Оставьте только OWA и ActiveSync;
- Защитите доступ к OWA вторым фактором;
- Настройте управление ActiveSync устройствами с помощью портала самообслуживания.
Вопросы и ответы
В: Как в качестве логина пользователя передавать UPN в Мультифактор?
О: По умолчанию, логин пользователя передается в Мультифактор в формате, в котором его вводит пользователь на странице логина.
Можно разрешить ввод логина пользователем в любом формате, но включить преобразование логина в UserPrincipalName (UPN) при отправке запроса доступа в Мультифактор с помощью следующей настройки:
<add key="multifactor:use-upn-as-identity" value="true"/>
Смотрите также: