Двухфакторная аутентификация значительно повышает уровень безопасности сайта при соблюдении остальных условий (таких как своевременное обновление движка-тем-плагинов, применение практик безопасного программирования и т.п.).
Столкнувшись с вопросом подключения Google Authenticator к сайту на Wordpress, я провел небольшое исследование существующих плагинов и сегодня хочу поделиться с вами результатами этой работы.
Прежде всего обозначим начальные условия:
- сайт на Wordpress версии 5.3.2 (самой актуальной на тот момент);
- движок развернут в режиме Multisite в связке с nginx;
- денег платить не хочется (ну это как всегда).
Несмотря на обилие плагинов, подходящих для выполнения поставленной задачи, к рассмотрению были допущены только четыре из них, прошедшие проверку на совместимость с установленной версией Wordpress:
- Google Authenticator от miniOrange;
- Two Factor Authentication от David Nutbourne и David Anderson;
- Two-Factor от Plugin Contributors;
- Wordfence Login Security от Wordfence.
Итоги осмотра и тестирования
Google Authenticator от miniOrange
Страница плагина: wordpress.org/plugins/miniorange-2-factor-authentication
Заявленные возможности бесплатной версии плагина для Google Authenticator от miniOrange:
- двухфакторная аутентификация одного пользователя;
- поддержка Google Authenticator, Authy, LastPass Authenticator, QR-кодов, PUSH-уведомлений, Soft Token и вопросов;
- предотвращение брутфорс атак и блокирование IP-адресов;
- мониторинг событий входа в систему;
- мультиязычность.
Ключевые особенности платных версий плагина для Google Authenticator от miniOrange:
- двухфакторная аутентификация нескольких пользователей (оплата по количеству пользователей);
- поддержка дополнительных каналов OTP, например, OTP over email, OTP over SMS (услуги SMS закупаются отдельно), подтверждение email;
- кастомизация способов входа для различных учетных записей;
- использование security-вопросов для восстановления доступа;
- поддержка multisite;
- переадресация пользователей после логина на основе роли пользователя;
- управление доверенными устройствами.
После установки и активации плагина в глаза бросается неимоверное количество настроек и функций, предлагаемых администратору сайта. Здесь можно найти все от WAF до автоматического бэкапа базы данных по расписанию. Честно говоря, меня всегда пугают комбайны подобного рода, а практика показывает, что из-за обилия функций глубина их реализации часто оставляет желать лучшего.
Результаты тестирования:
- настройки задаются сразу для всей сети в режиме multisite — только в платных версиях;
- возможность использования двухфакторной аутентификации можно предоставить одной или нескольким ролям — только в платных версиях;
- для группы «Администраторы» можно принудительно включить двухфакторную аутентификацию — неизвестно;
- при принудительном включении можно задать graceful период и отправить уведомления — неизвестно;
- принудительное включение для определенного пользователя — неизвестно;
- присутствует опция включения доверия к устройству на X дней — только в платных версии;
- можно задать белый список IP-адресов, для которых не будет применяться двухфакторная аутентификация — только в платных версиях;
- двухфакторная аутентификация для XMLRPC включается отдельно — неизвестно;
- в окне настройки можно включить ReCaptcha и настроить порог её срабатывания — это хорошо;
- ReCaptcha можно запустить в тестовом режиме (без блокирования пользователей) — неизвестно;
- при подключении Google Authenticator предлагается скачать коды восстановления — только в платных версиях.
Two Factor Authentication
Страница плагина: wordpress.org/plugins/two-factor-authentication
Заявленные особенности бесплатной версии плагина Two Factor Authentication:
- применение двухфакторной аутентификации к определенной роли сайта (можно включить для администраторов, но не включать для подписчиков);
- возможность отключения пользователем;
- поддержка мультисайтов.
Ключевые особенности платной версии плагина Two Factor Authentication:
- возможность принудительного включения двухфакторной аутентификации через некоторое время после создания учетной записи (например, для всех администраторских учетных записей старше недели);
- владельцы сайта могут указывать доверенные устройста, для которых запрос дополнительной аутентификации будет выполняться один раз в несколько дней, а не при каждом входе в систему;
- поддержка сторонних форм входа в систему;
- применение аварийных кодов при утере устройства.
Результаты тестирования:
- настройки задаются сразу для всей сети в режиме multisite — это очень хорошо;
- возможность использования двухфакторной аутентификации можно предоставить одной или нескольким ролям — это очень хорошо;
- для группы «Администраторы» можно принудительно включить двухфакторную аутентификацию — только в Premium версии;
- при принудительном включении можно задать graceful период и отправить уведомления — это очень хорошо;
- принудительное включение для определенного пользователя — неизвестно;
- присутствует опция включения доверия к устройству на 30 дней — только в Premium версии;
- можно задать белый список IP-адресов, для которых не будет применяться двухфакторная аутентификация — возможность отсутствует;
- двухфакторная аутентификация для XMLRPC включается отдельно — это хорошо;
- в окне настройки можно включить Captcha и настроить порог ее срабатывания — возможность отсутствует;
- Captcha можно запустить в тестовом режиме (без блокирования пользователей) — возможность отсутствует;
- при подключении Google Authenticator предлагается скачать коды восстановления — только в Premium версии.
Two-Factor
Страница плагина: wordpress.org/plugins/two-factor
Плагин Two-Factor от команды Plugin Contributors явлется OpenSource плагином и предлагает следующие опции:
- использование email для отправки кодов двухфакторной аутентификации;
- резервные коды;
- Dummy метод для целей тестирования.
Результаты тестирования:
- не нашел настроек для сети или сайта, все найденные настройки располагались только в профиле пользователя — это плохо;
- существующий тестовый пользователь после установки и активации плагина в систему войти не смог из-за неопознанной ошибки, потребовалось отключение и повторное включение плагина — это тоже как-то не очень;
- интересная функция — использование email в качестве средства дополнительной аутентификации, однако, ввиду того, что для этого используется тот же самый email, на который регистрировался пользователь, практическая значимость ее довольно сильно снижается;
- администратор может принудительно включить функцию двухфакторной аутентификации для конкретного пользователя, но не может включить то же самое для групп пользователей.
Wordfence Login Security
Страница плагина: wordpress.org/plugins/wordfence-login-security
Wordfence Login Security является обособленной частью комплексного плагина Wordfence Security.
Wordfence Login Security бесплатно предоставляет следующий функционал:
- двухфакторная аутентификация с использованием Google Authenticator, Authy, 1Password, FreeOTP;
- включение OTP для любой роли сайта;
- отсутствие ограничений любого рода;
- добавление Google Recaptha v3 для страниц входа и регистрации;
- защита от ботов;
- защита от перебора паролей и перехвата учетных данных путем блокирования по большим IP пулам;
- защита XMLRPC двухфакторной аутентификацией или отключение этого функционала вовсе.
Учитывая, что данный плагин является упрощенной версией сложного коммерческого продукта, вполне возможно, что он удовлетворит и не самые простые потребности.
Результаты тестирования:
- настройки задаются сразу для всей сети в режиме multisite — это очень хорошо;
- возможность использования двухфакторной аутентификации можно предоставить одной или нескольким ролям — это очень хорошо;
- для группы «Администраторы» можно принудительно включить двухфакторную аутентификацию — это хорошо (если бы разрешили так делать для каждой группы пользователей, было бы очень хорошо);
- при принудительном включении можно задать graceful период и отправить уведомления — это очень хорошо;
- принудительное включение для определенного пользователя — отсутствует (по крайней мере, в бесплатной версии);
- присутствует опция включения доверия к устройству на 30 дней — это хорошо;
- можно задать белый список IP-адресов, для которых не будет применяться двухфакторная аутентификация — это очень хорошо (облегчит нам проведение автоматизированного тестирования безопасности);
- двухфакторная аутентификация для XMLRPC включается отдельно — это хорошо;
- в окне настройки можно включить ReCaptcha и настроить её порог — это хорошо;
- ReCaptcha можно запустить в тестовом режиме (без блокирования пользователей) — это хорошо;
- при подключении Google Authenticator предлагается скачать коды восстановления — это хорошо.
В режиме мультисайта плагин корректно отработал со всеми подключенными сайтами и со всеми пользователями (зарегистрированными на всех сайтах/на одном из сайтов сети).
Выводы
Для личного блога или небольшого single-сайта, в котором будет один или несколько пользователей, вполне может подойти плагин Two-Factor от Plugin Contributors. Это минималистичное решение, которое позволит получить главный функционал без рекламы и назойливых просьб заплатить за ту или иную плюшку.
Для режима multisite и удовлетворения желаний потюнить аутентификацию, а также не платить за это денег, лучшим выбором, по моему мнению, будет плагин Wordfence Login Security.
Для того же режима multisite при желании потюнить аутентификацию и готовности оплатить требуемый функционал, вполне может подойти плагин Two Factor Authentication.
Давать же какие-либо рекомендации относительно Google Authenticator от miniOrange рука не поднимается, потому что протестировать функционал конкретно двухфакторной аутентификации и управление этим функционалом в бесплатной версии не получилось, а отношение к подобного рода комбайнам у меня всегда очень осторожное.
real_asylum
На мой взгляд намного проще закрыть админку апачевой авторизацией, либо «повесить» рекапчу на форму авторизации. Либо и то, и то другое
AlexanderTyutin Автор
Basic Auth имеете ввиду?
real_asylum
С помощью .htpasswd.
По опыту, ломают обычно через уязвимости, а не через брутофорс.