Назад | Перейти на главную страницу

Предотвращение невозможности использования сервера при атаках брутфорсом WordPress

Я администрирую сервер, на котором установлено множество WordPress. Поиск решения для предотвращения перегрузки ЦП при атаках методом перебора делает сервер непригодным для использования по несколько часов в день.

Это цели:

Я написал плагин для WordPress, который, вероятно, будет вам полезен.

Плохое поведение имеет хороший послужной список чтобы остановить подобные атаки методом перебора. Это своего рода минималистичный брандмауэр веб-приложений, который блокирует ссылочный спам и некоторый другой вредоносный трафик на очень раннем этапе, еще до загрузки всего WordPress, экономя ЦП и другие ресурсы. (Я говорю минималист, потому что то, что можно сделать только на этом уровне минимален по сравнению с тем, что вы можете делать на веб-сервере или даже с отдельным устройством, хотя он был разработан для людей, у которых нет другого выбора.)

Вы найдете это в Репозиторий плагинов WordPress.


Поскольку вы запускаете сервер, вы также можете использовать ModSecurity с Основной набор правил. Многие правила плохого поведения здесь повторно реализованы (поищите в них мое имя и / или имя плохого поведения), и набор правил также содержит множество других правил, которые могут быть вам полезны.

Я могу придумать несколько возможностей прямо в голове; в порядке увеличения агрессивности для законных пользователей:

  • Переименовать wp-login.php к чему-то другому? (Необходимо поддерживать при обновлении, полагается на безопасность за счет неясности, но должно остановить большинство нецелевых сценариев атак с минимальными проблемами для законных пользователей.)
  • ЦП ограничивает процесс веб-сервера? (Приводит к тому, что веб-сервер становится несколько более вялым во время лавинной рассылки запросов, но должен обеспечивать возможность обслуживания сервера даже перед лицом сильного натиска; даже 5% оставшегося ЦП должно быть достаточно. Также может потребоваться координация с процессом сервера базы данных.)
  • Запросы на ограничение скорости wp-login.php во внешнем балансировщике нагрузки или межсетевом экране? (Будет создавать проблемы для законных пользователей во время наводнения запросов, но, по крайней мере, остальная часть сервера, включая публичный доступ к содержимому блога, должна продолжать успешно работать.)

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

(повторно) рассмотреть возможность использования защиты паролем для административных областей

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

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

ограничить вход администратора в белый список IP-адресов (веб-сервер)

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

В nginx это может выглядеть примерно так:

location /wp-admin {
  # block one workstation
  deny    192.168.1.1;
  # allow anyone in 192.168.1.0/24
  allow   192.168.1.0/24;
  # drop rest of the world
  deny    all;
}

сделать труднее найти

Атаки методом грубой силы делают ряд предположений. Если вы можете переименовать папку wp-admin, переименовать wp-login.php или запустить wp-admin на нестандартном порте, вам не придется тратить драгоценные ресурсы на проверку этих логинов грубой силы.

попробуйте fail2ban

http://wordpress.org/plugins/wp-fail2ban/

fail2ban - одна из простейших и наиболее эффективных мер безопасности, которые вы можете реализовать для предотвращения атак методом подбора пароля.

В fail2ban есть несколько интересных функций:

Блокировать попытки входа с неправильным именем пользователя

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

WPf2b теперь позволяет вам указать регулярное выражение, которое будет сокращать процесс входа в систему, если запрошенное имя пользователя совпадает.

определить ('WP_FAIL2BAN_BLOCKED_USERS', '^ admin $');

белый список IP-адресов (fail2ban)

Идея здесь состоит в том, чтобы перечислить IP-адреса доверенных прокси, которые будут отображаться как удаленный IP-адрес для запроса.

define('WP_FAIL2BAN_PROXIES','192.168.0.42,192.168.0.43');