5 Июля, 2016

Двухфакторная аутентификация для 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.