http://wm-monitoring.ru/ ')) {alert('Спасибо за то что установили нашу кнопку! =)');} else {alert('Очень жаль! =(');}"> http://wm-monitoring.ru/

Защита CMS Wordpress от атак на /wp-admin.

Опубликовано: 02.09.2018

Как защитить Админ-панель CMS WordPress от участившихся Brute-force-атак ботами.

по материалам xaker.ru, sucuri.net и hostgator.com.

В первой половине Апреля 2013 ведущие ресурсы по безопасности в интернете сообщают — число атак на сайты с CMS WordPress значительно возросло и достигло значений в 770000 тысяч зафиксированных случаев брутфорс-флуда (простой перебор логинов и паролей) за первые 10 дней месяца. Подобные атаки на админку вордпресса продолжаются уже довольно значительное время, например в декабре 2012 года было заблокировано 670 тысяч попыток доступа.

Боты используют в качестве имени пользователя для авторизации такие значения (в порядке убывания популярности):

admin test administrator Admin root

Наибольшее количество атак (порядка 40 тысяч в сутки) идет с

ip-адреса 31.184.238.38 (WhoIs Info) .

Хостинг-провайдеры, специализирующиеся на WP, сетуют на возросшую нагрузку серверов в связи с активностью бот-нета. Всего детектировано порядка 90 тысяч автоматических скриптов(ботов), участвующих в этой кампании.

Даже на этот блог, который был установлен 15 апреля, 17 апреля уже были попытки Логина с ip-адреса 188.190.99.143 (WhoIs Info) . Поэтому первым постом идет информация о самых простых и логичных в данной ситуации способах защиты админки WordPress .

Защита Админки WP.

Простейшие шаги для предотвращения несанкционированного доступа:

Не оставляйте login по умолчанию — admin, никогда не используйте банальные 123, test или qwerty для паролей или логинов, в идеале, пользуйтесь всегда генератором случайных паролей, генерируйте разные пароли для разных сайтов В CMS WP узнать реальный login пользователя не составляет проблемы, поэтому, если вы не хотите прибегать к редактированию CSS-файлов или правке function.php, wp-config.php, .htaccess и .htpasswd (процедуры по сокрытию реального Логина администратора будут подробно описаны во второй части статьи), рекомендуется установить Плагин Stealth Login , это работает лучше, чем ничего, но уровень защиты достаточен только для отражения атаки школьников.

В настройках плагина видим следующее:

Заполнив две графы, опять же генерированным текстом, отметив нужные чекбоксы, жмем «Сохранить настройки» — Строчкой ниже появляется желанная ссыль. Продолжая тему «Готовых Решений» — Безопасности блога нисколько не помешает установка таких популярных Плагинов, как: Login LockDown

Опции: Количество попыток Логина. Время ограничения попыток на повторный вход. Время Бана для IP, с которого была неудачная попытка входа с использованием неверного Логина. Включает предыдущую опцию. Включает Маскировку Ошибок входа. Кнопка — Обновить настройки. Кнопка — Разбанить отмеченные IP.

 

 

 

 

 

 

Secure WordPress

WordPress Firewall

База данных CMS тоже под угрозой — используйте префикс таблиц, отличный от заданного по умолчанию «wp_», имя пользователя БД и его пароль сгенерировать.

Для генерации паролей удобно использовать следующие расширения для популярных браузеров:

PassGen — для Opera

Strong Password Generator — для Google Chrome

PwGen — для Mozilla Firefox

Ищите данные расширения в репозиториях для соответствующих браузеров.

Рассмотрим следующую таблицу (источник — Wikipedia Полный_перебор ):

Кол-во знаков Кол-во вариантов Стойкость Время перебора
1 36 5 бит менее секунды
2 1296 10 бит менее секунды
3 46 656 15 бит менее секунды
4 1 679 616 21 бит 17 секунд
5 60 466 176 26 бит 10 минут
6 2 176 782 336 31 бит 6 часов
7 78 364 164 096 36 бит 9 дней
8 2,821 109 9×1012 41 бит 11 месяцев
9 1,015 599 5×1014 46 бит 32 года
10 3,656 158 4×1015 52 бита 1 162 года
11 1,316 217 0x1017 58 бит 41 823 года
12 4,738 381 3×1018 62 бита 1 505 615 лет

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

Следовательно — пароли длинной до 8 символов, состоящие только из букв и цифр, паролями вообще называть нет смысла, они являются простой формальностью, при условии, что известен реальный Логин администратора. К счастью, сейчас на большинстве сайтов есть возможность использовать в паролях буквы нижнего/верхнего регистра и специальные символы (^%$#&@*) .

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

Пропишите ваши уникальные ключи безопасности в файле wp-config.php

wp-config.php — это файл конфигурации CMS WP, здесь хранятся настройки движка. Находится файл в корне CMS.

Найдите в файле строки:

define('AUTH_KEY', '***'); define('SECURE_AUTH_KEY', '***'); define('LOGGED_IN_KEY', '***'); define('NONCE_KEY', '***'); define('AUTH_SALT', '***'); define('SECURE_AUTH_SALT','***'); define('LOGGED_IN_SALT','***'); define('NONCE_SALT','***');

Вместо *** необходимо вписать свои значения ключей безопасности. Сгенерировать подходящие можно на сайте wordpress_secret-key.

Для новых версий /для версий ниже 2.6.0

С помощью замены этих ключей также можно сделать недействительными cookies посетителей сайта если это необходимо. То есть всем пользователям придётся логиниться заново.

Если сервер для вашего хостинга поддерживает SSL-шифрование , можно включить данный протокол для административной части сайта через тот же wp-config.php (настройки Сертификатов Безопасности будут рассмотрены во второй части статьи):

define(‘FORCE_SSL_ADMIN’, True)

Использование .htaccess и .htpasswd

Следующим шагом в деле защиты админ-панели WordPress будет использование для этой цели служебных файлов вашего web-server. Если ваш unix-хостинг работает с Apache, а это в 90% случаев именно так, рекомендуем обратиться к файлам .htaccess и .htpasswd в корне директории вашего сайта.

Редактировать их можно с помощью обычного блокнота windows (не забывайте создать резервную копию), но вы must_have notepad++ (это мощный, легкий и бесплатный редактор для кода)

Запрещаем доступ к файлу wp-config.php по протоколу http для всех ip-адресов:

<files wp-config.php> Order deny, allow deny from all </files>

Прописать данное правило необходимо в файле .htaccess для директории нахождения файла конфигурации (wp-config.php) — Обычно это корень сайта,

Но! Начиная с версии WP 2.6.0 появилась замечательная возможность!

Вы можете перенести ваш wp-config.php на один уровень выше корня и движок самостоятельно, без каких-либо действий с вашей стороны, обнаружит его там.

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

То есть, если вы перенесли конфигурационный файл — в директории с ним не забудьте отредактировать файл .htaccess с кодом, указанным выше. Если файл отсутствует — создайте его.

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

Переходим к работе с .htpasswd

.htpasswd работает в паре с .htaccess. По умолчанию, никакого файла .htpasswd в корне сайта вы не найдете. Вы должны создать его. Можно создать в каталоге wp-admin (1), а можно поступить ещё более запутанным способом, разместив его, например, в папке httpdocs вашего сервера (2), если у вас есть доступ, и веб-сервером является Apache.

.htpasswd предназначен для хранения паролей и другой служебной информации при ограничении доступа по http и https протоколам с помощью файла .htaccess.

Как это работает:

В директории, куда нам надо ограничить доступ, в данном случае /wp-admin , создаём файл .htaccess, следующего содержания AuthType Basic AuthName "***" AuthUserFile /yourhosting/ваш хостинг.ru/httpdocs/example.com/wp-admin/.htpasswd Require valid-user

Где:

AuthName «***» — это сообщение сервера, в примере на картинке — это «adm»

AuthUserFile /yourhosting/ваш хостинг.ru/httpdocs/example.com/.htpasswd — полный путь к файлу с паролями для случая (1), в случае (2) — путь соответственно корректируем.

Для unix-серверов пароль должен храниться в зашифрованном виде, поэтому проще всего будет воспользоваться сервисом для генерирования .htpasswd по адресу http://www.htaccesstools.com/htpasswd-generator/

Там же вы найдёте другие полезные инструменты:

Аутентификация .htaccess

Мини-скрипт для определения пути к файлу на сервере Генерируем файлы, правим путь, заливаем по FTP на сервер ??? PROFIT!

Дополнительные меры безопасности

Среди других рекомендаций по защите админ-панели WordPress можно выделить удаление Пользователя с id#1, то есть учетной записи администратора Блога, создаваемой при установке CMS, Именно на неё большинство атак. Или же, при необходимости, можно не удалять запись, а понизить роль с администратора до подписчика . Делается это так:

cоздаем новую учетную запись с ролью администратора выходим из панели и логинимся под новой записью удаляем или изменяем роль предыдущей

И не забывайте вовремя устанавливать обновления для WP и плагинов.

О других методах защиты и обнаруженных уязвимостях в WordPress будет рассказано во второй части статьи по данной теме.

Карта
rss