Верхнее

Два ключа

Двухфакторная аутентификация для WordPress

В конце прошлого года на мой сайт ZLONOV.ru, реализованный на базе популярного CMS-движка WordPress, была осуществлена атака с перебором паролей и тогда же в качестве одной из защитных был установлен плагин для ограничения попыток авторизации — Limit Login Attempts.

Плагин рекомендую: настраивается просто, работает чётко — блокирует доступ с IP адреса при превышении установленного числа ошибочных попыток. При этом о попытках подбора пароля может уведомлять письмом по почте, чем я и пользовался.

Limit Login Attempts

Limit Login Attempts

Так вот, за последние пару месяцев число таких писем стало неприятно расти — попытки подобрать пароль упорно продолжаются. К слову, основной пик атак вполне ожидаемо приходится на выходные дни и ночное время.

Явно пришло время повысить безопасность ещё раз. Как известно, одним из способов усиления аутентификации является использование двух факторов — т.е. применение ещё чего-то помимо вездесущего пароля. Собственно, внедрением решения для двухфакторной аутентификации в WordPress я и решил озаботиться.

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

Двухфакторная аутентификация в англоязычных источниках чаще всего обозначается как 2FA (two-factor authentication), плагинов с таким тегом ровно 20 штук: https://ru.wordpress.org/plugins/tags/2fa

Более-менее реальных кандидатов на установку обнаружилось три:

  1. Clef Two-Factor Authentication: 800 000+ установок, рейтинг 4,5 из 5 (89 оценок), авторы: Dave Ross, Jesse Pollak, Andrew Russell и Laurence. Обновление: 2 недели назад.
  2. Google Authenticator for WordPress: 4 000+ установок, рейтинг 5 из 5 (16 оценок), автор: Julien Liabeuf. Обновление: 2 года назад.
  3. Google Authenticator — Two Factor Authentication: 3 000+ установок, рейтинг 4,5 из 5 (63 оценки), автор: miniOrange. Обновление: 6 дней назад.

Первый плагин с колоссальным отрывом по популярности и, честно говоря, был уверен, что на нём и остановлюсь. Второй и третий используют утилиту от Google, а значит, по крайней мере в безопасности протокола и самого приложения на телефоне можно быть уверенным — всё же Google вопросам безопасности уделяет много внимания. Конечно, всегда остаётся вопрос реализации в самом плагине, но все остальные 17 доступных вариантов полностью разработаны компаниями, которые мне на текущий момент не особо известны, что всё-таки ещё хуже.

Clef оказался достаточно интересным решением: окно входа по логину-паролю заменяется на движущуюся картинку с эдакими вертикальными волнами. Для входа нужно запустить приложение на смартфоне и с помощью камеры считать этот своеобразный штрих-код.

Вход на ZLONOV.ru через Clef

Вход на ZLONOV.ru через Clef

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

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

Меня не устроило всего два, но принципиальных момента. Во-первых, для корректной работы Clef нужно разрешить в браузере поддержку сторонних cookies. Не то чтобы я был параноиком, но без них как-то спокойней. Повышать безопасность одного за счёт снижения безопасности другого — не всегда лучший вариант.

Во-вторых, никакая это не двухфакторная аутентификация. В лучшем случае — двухканальная: запрос моего аутентификатора происходит по иному каналу, не через браузер, а через мобильное приложение и сервера Clef. Но фактор, по сути один — то, что у меня есть, т.е. телефон. Была бы возможность оставить запрос пароля — пользовался бы Clef с удовольствием.

Из двух оставшихся кандидатов на использование более предпочтителен с моей точки зрения был тот, что регулярно обновляется, поэтому приступил к установке Google Authenticator — Two Factor Authentication.

Для настройки нужно зарегистрироваться и выбрать тарифный план. Бесплатного для моих целей вполне достаточно:

miniOrange2 - тарифные планы

Вариантов аутентификации плагин предлагает достаточно большой выбор:

miniOrange2 - варианты аутентификации

miniOrange2 — варианты аутентификации

После установки и настройки при входе в административную панель сначала нужно ввести логин и пароль, после чего будет запрошен второй фактор — одноразовый код из Google Authenticator:

miniOrange2 - запрос одноразового кода

miniOrange2 — запрос одноразового кода

Что ж, на этом можно решать поставленную задачу успешно решённой.

Уже после настройки решения от miniOrange нашёл в каталоге плагинов ещё один вариант с незамысловатым названием Google Authenticator (у него нет метки 2FA, поэтому сначала пропустил его). У плагина хороший рейтинг и большое число установок:

Google Authenticator

Google Authenticator

Ради интереса поставил его и понял, что это как раз то, что нужно — минимум настроек, ничего лишнего, никакой регистрации и прочей мишуры. При этом запрос одноразового кода происходит на том же экране, где и самого основного пароля — так даже удобнее, чем последовательный вариант в случае с miniOrange.

Google Authenticator Settings

Google Authenticator Settings

Google Authenticator - окно входа на ZLONOV.ru

Google Authenticator — окно входа на ZLONOV.ru

Свой окончательный выбор остановил именно на этом решении, рекомендую.

В завершение поста — краткий список с комментариями TOP-9 плагинов, которые ищутся на сайте WordPress.org по метке authentication. Пока выбирал подходящий для решения задачи организации двухфакторной аутентификации, заодно посмотрел и эти. Вот что нашлось по этой метке:

  1. Limit Login Attempts. Чуть выше уже про него написал, 2FA он не реализует.
  2. Clef Two-Factor Authentication. Да, и по этому тегу он оказался в ТОП самых популярных.
  3. iThemes Security (ранее Better WP Security). Предлагает интересный комплексный подход к обеспечению безопасности, но 2FA доступна только в платной PRO версии.
  4. InfiniteWP Client. Ориентирован на упрощение работы с несколькими сайтами на WordPress одновременно, не совсем то, что нужно. Более того, судя по рекламному ролику, для доступа ко всем сайтам вообще используется один единственный мастер-пароль. Какая-то прямо обратная задача =)
  5. Loginizer. Снова 2FA только в платной Premium версии.
  6. BulletProof Security. Ещё одно комплексное решение, но в описании возможностей 2FA не упоминается ни для платной, ни для бесплатной версии.
  7. Acunetix WP Security. Сканер безопасности. Пытается решить некоторые проблемы безопасности WordPress, но применять лучше с осторожностью, бездумное включение опций может повлиять на работоспособность сайта. Про 2FA ни слова.
  8. Peter’s Login Redirect. Тонкая настройка перенаправления пользователей после логина. Не то.
  9. Acunetix Secure WordPress. Ещё один комбайн от Acunetix.

, , , , , ,