image

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

Столкнувшись с вопросом подключения Google Authenticator к сайту на Wordpress, я провел небольшое исследование существующих плагинов и сегодня хочу поделиться с вами результатами этой работы.

Прежде всего обозначим начальные условия:

  • сайт на Wordpress версии 5.3.2 (самой актуальной на тот момент);
  • движок развернут в режиме Multisite в связке с nginx;
  • денег платить не хочется (ну это как всегда).

Несмотря на обилие плагинов, подходящих для выполнения поставленной задачи, к рассмотрению были допущены только четыре из них, прошедшие проверку на совместимость с установленной версией Wordpress:


Итоги осмотра и тестирования


Google Authenticator от miniOrange


image

Страница плагина: 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


image

Страница плагина: 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


image

Страница плагина: wordpress.org/plugins/two-factor

Плагин Two-Factor от команды Plugin Contributors явлется OpenSource плагином и предлагает следующие опции:

  • использование email для отправки кодов двухфакторной аутентификации;
  • резервные коды;
  • Dummy метод для целей тестирования.

Результаты тестирования:

  • не нашел настроек для сети или сайта, все найденные настройки располагались только в профиле пользователя — это плохо;
  • существующий тестовый пользователь после установки и активации плагина в систему войти не смог из-за неопознанной ошибки, потребовалось отключение и повторное включение плагина — это тоже как-то не очень;
  • интересная функция — использование email в качестве средства дополнительной аутентификации, однако, ввиду того, что для этого используется тот же самый email, на который регистрировался пользователь, практическая значимость ее довольно сильно снижается;
  • администратор может принудительно включить функцию двухфакторной аутентификации для конкретного пользователя, но не может включить то же самое для групп пользователей.

Wordfence Login Security


image

Страница плагина: 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 рука не поднимается, потому что протестировать функционал конкретно двухфакторной аутентификации и управление этим функционалом в бесплатной версии не получилось, а отношение к подобного рода комбайнам у меня всегда очень осторожное.