Защита 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 будет рассказано во второй части статьи по данной теме.
Сегодня | Завтра | ||
USD | 32.62 | 32.50 | |
EUR | 39.90 | 39.92 |
Обменник | Переходов |
Wmchanger | 6 |
E-Market | 5 |
WMtoCash.com | 4 |
Str-Money | 3 |
Hot-Change | 3 |
Вы можете получить WMR-бонус в размере 0,01-0,10 WMR на свой кошелек 1 раз в сутки | |
Кошелек
|
|
Код
|
|
Обмен Webmoney |