В этой статье я расскажу о том, как обезопасить сайт от подбора пароля.
Защита Joomla. Часть 2. Защита Joomla от подбора пароля.

Одной из основных уязвимостей Joomla является отсутствие защиты панели администратора и формы авторизации от подбора пароля. Злоумышленник может пробовать ввести данные для авторизации сколь угодно много раз. Если автоматизировать этот процесс, то рано или поздно пароль будет подобран. В этой статье я расскажу о том, как обезопасить свой сайт от данной уязвимости.

Защита Joomla от подбора пароля. Несложные расчеты или почему нельзя использовать пароль, который легко запомнить.

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

«Так. Нужно придумать пароль для сайта. Я должен его всегда помнить. Может поставить дату рождения? Нет. Ее знаю не только я, а также все мои друзья Вконтакте. Нужно усложнить. Использую дату рождения тещи. Так точно никто не догадается.»

Вместо тещи может быть и сестра, и друг – любой близкий человек. Вроде удобно и безопасно. Но давайте посчитаем, сколько понадобится времени, чтобы подобрать пароль в виде даты.

Что мы знаем:

  • Предположительно, пароль в виде даты
  • Предположительно, это дата рождения ныне живого человека
  • Год может быть представлен либо двумя последними цифрами, либо четырьмя, полностью
  • В году 365 дней

Теперь посчитаем. Количество вариантов = 365 дней * 2(тип года либо XX, либо 19XX(20XX))* 100(количество лет, которые предположительно может прожить человек) = 73000 вариантов.

«Много» – скажут некоторые. Да, для человека много. Для машины – мгновенье. Несложный дальнейший расчет.

Ставим перебор 73000 вариантов. Чтобы не перегрузить хостинг и не вызвать подозрений владельца, будем отправлять 1 вариант каждые 2 секунды. В сутках 86400 секунд. Значит, на подбор пароля-даты – вне зависимости от того, что это за дата, уйдет менее 2 суток. При этом работать будет только программа, а злоумышленник – попивать кофе.

Это же  относится и к паролям-словам.  

Теперь давайте разберемся, почему пароль, содержащий цифры и буквы (как заглавные, так и строчные) в достаточном количестве, безопасен. Английский алфавит состоит из 26 букв. Каждая может быть как строчной, так и заглавной. Добавим к этому еще 10 цифр (от 0 до 9). Получается, каждый из символов пароля может быть одним из 36 допустимых. При этом в символах нет какой-то закономерности. Если пароль состоит из 8 символов, то количество комбинаций будет 36^8 = 2.821.109.907.456 вариантов! При той же скорости подбора пароля на то, чтобы подобрать комбинацию, уйдет ~179 тысяч лет. Надеюсь, теперь становится понятно, почему все сервисы рекомендуют использовать сложные пароли.

Но проблема в том, что сложный пароль сложно запомнить самому. Есть определенные методики, позволяющие это делать, но на их изучение также требуется время. Потратить уйму времени просто на то, чтобы придумать пароль для сайта, могут себе позволить далеко не все. Какой же остается вариант?

Я советую в данной ситуации придумать закономерность, о которой знаете только вы и никто более. Далее, на основе этой закономерности составить пароль. Получается что-то вроде простого пароля, запароленного простым паролем :-)  . Это уже очень сложный пароль. Приведу пример. Пусть любимое блюдо моей жены «жареная морковка с горошком». Год ее рождения: 1234. Пусть моим паролем будет: «жаренаямарковкасгорошком1234». Уверяю, не догадается и не подберет никто. Мне же нужно только помнить, что пароль = любимое блюдо жены + ее год рождения. Согласитесь, это гораздо проще, чем запомнить 8 случайных букво-цифр.

Защита Joomla от подбора пароля. Изменения адреса админки.

Хорошо, мы придумали пароль, который легко запомнить и который никто никогда не подберет. Но вот проблема – хакер об этом не знает. Это означает, что он все равно будет пытаться подобрать пароль от админки. «Ну и что?» – скажете вы. Проблема в том, что подбор пароля предполагает постоянные запросы к серверу и ответы на них. Т.е. некоторая нагрузка на сервер, являющаяся совершенно бесполезной.  Для того, чтобы избежать этого, нужно пресекать попытки подбора пароля еще на стадии идеи.

Чтобы запустить робота на подбор пароля, для начала нужно найти форму, в которую робот будет вводить варианты. Поскольку Joomla открытая CMS, то адрес этой формы всем известен: site.ru/administrator. Но если изменить этот адрес, то подбор пароля превратится в поиски админки. Дело совершенно неблагодарное. Оно дает хакеру намек, что с простым перебором тут делать нечего, а также защищает админку от продвинутых ботов, которые выискивают сайты на Joomla, переходят по стандартному пути админки и пытаются подобрать пароль.

Чтобы изменить адрес админки можно использовать одно из следующих бесплатных расширений:

  • AdminExile – полезный плагин, позволяющий изменять адрес админки Joomla-сайта.
  • EasyCalcCheck PLUS – плагин, позволяющий защищать не только админку, но и многое другое.

Защита Joomla от подбора пароля. Защита аккаунтов пользователей сайта.

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

Как защитить форму авторизации от подбора пароля? Вариантов несколько и все они сводятся к следующему алгоритму: «если пользователь ввел неверный пароль N раз подряд, то запретить ему делать это на M минут, либо ограничить его действия дополнительной проверкой». Т.е., например, если пользователь неправильно ввел пароль 10 раз подряд, то на ближайшие 20 минут форма авторизации становится для него недоступной, либо появляется проверочная картинка, код с которой он должен ввести(captcha).

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

Реализовать способ с проверочной картинкой поможет все тот же EasyCalcCheck PLUS, если же нужна блокировка, можете воспользоваться плагином Brute Force Stop.

Кроме того, вы можете приобрести мое решение Wedal Recaptcha Login, которое позволяет защититься от подбора пароля на фронтенде.

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

Об авторе
Об авторе
Wedal (Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.

Добавить комментарий

Для отправки комментария введите код с картинки:
Защитный код
Обновить

Комментарии  

+2 # Miheich 24.04.2013 15:31
Спасибо за статью узнал о новых плагинах
Ответить | Ответить с цитатой | Цитировать
+5 # mistershadow 06.05.2013 10:49
Цитирую Wedal:
– AdminExile – полезный плагин, позволяющий изменять адрес админки Joomla-сайта;
– EasyCalcCheck PLUS – плагин, позволяющий защищать не только админку, но и многое другое.

Есть ещё прекрасная программа, которая позволяет не только изменить доступ к админке, но и банить те IP, которые будут долбиться в админку, - это jSecure.
Она вроде не бесплатная, но ломаную легко найти.
Ответить | Ответить с цитатой | Цитировать
+1 # Наталья 27.08.2013 23:41
Установила AdminExile, теперь ломаю голову - как попасть к себе в панель управления сайтом? Админка исчезла. Неужели все заново переделывать?
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 28.08.2013 02:36
Наталья, так вы бы хоть инструкцию на сайте разработчика прочитали, прежде, чем устанавливать. Там все подробно описано: и как зайти и как всё восстановить в случае чего.
Ответить | Ответить с цитатой | Цитировать
+1 # Александр-Ч 03.01.2015 21:56
С капчей тоже надо быть аккуратнее, поскольку есть сервисы, позволяющие её разгадывать за мизерную плату, например, http://anti-captcha.com. Таким образом процесс взлома остается автоматизированным и капча не представляет серьёзного препятствия для хакера.
Ответить | Ответить с цитатой | Цитировать
0 # filler 08.07.2015 13:17
Получается https://joomla.shneider-host.ru/blog/optimizatsiia-i-bezopasnost-joomla/kak-obezopasit-joomla тут ошибочное мнение? Или эти меры тоже нужны?
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 24.07.2015 09:33
filler, в целом - да, нужны. Я согласен со всем, кроме перемещения configuration.php. Это уже паранойя.
Ответить | Ответить с цитатой | Цитировать
-1 # Dzyanis 04.10.2015 19:57
А прокатит ли вариант на время брут форс атаки (например на месяц, на два) просто менять имя файла index.php в папке адимин панели на нечто несуразное типа 123_index.php и только когда нужно что либо изменить через панель управления, просто временно переименовывать файл назад в index.php. Такой вариант будет работать?
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 05.10.2015 08:32
Dzyanis, нет. Лучше в этом случае защитить админку дополнительным паролем через .htaccess (гуглите, примеров реализации много, это очень просто) и установить сложный длинный пароль. При обращении к админке, вредоносный скрипт будет получать форму авторизации, которая обрабатывается сервером без участия php и базы данных. Нагрузка при этом будет минимальной.
Ответить | Ответить с цитатой | Цитировать
0 # Dzyanis 05.10.2015 13:25
Ok, спасибо, в этом есть смысл.
Ответить | Ответить с цитатой | Цитировать
+2 # VictoryInsideTV 29.01.2016 20:05
Очень информативные статьи! Я прям тут на долго завис :D Спасибо, автор!
Ответить | Ответить с цитатой | Цитировать
0 # Виктор 22.01.2017 20:02
Не могу войти на сайт панели управления. Хоть бы написали, что запишите куда нибудь новый адрес и не пишите такой же адрес, скажем как в моем случае. Теперь все я нечего не могу настроить.
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 23.01.2017 03:18
Виктор, о каком именно расширении идет речь?
Ответить | Ответить с цитатой | Цитировать
+1 # iygv 21.04.2018 09:24
Ошибка: Но вот проблема – хакет об этом не знает
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 23.04.2018 01:47
iygv, спасибо, исправлено.
Ответить | Ответить с цитатой | Цитировать
0 # Михаил 07.09.2019 16:49
Друже, я впервые занимаюсь этим всем и использую пошагово твое руководство, снова благодарю!
Ответить | Ответить с цитатой | Цитировать
0 # Guest 12.01.2020 14:22
Для защиты панели администратора по IP нужно закрыть доступ к скриптам панели администратора всем, кроме тех, у кого IP адрес совпадает с указанным. Для этого нужно: ваш хостинг > public_html > administrator > .htaccess (создаем если нету такого файла) и прописываем в ней следующее:

Order deny,allow
Deny from all
Allow from 1.2.3.4

Где 1.2.3.4 — это разрешенный IP адрес администратора сайта.
Посмотреть свой IP адрес можно на сайте http://myip.ru/
Ответить | Ответить с цитатой | Цитировать