Я администрирую сервер, на котором установлено множество WordPress. Поиск решения для предотвращения перегрузки ЦП при атаках методом перебора делает сервер непригодным для использования по несколько часов в день.
Это цели:
Я написал плагин для WordPress, который, вероятно, будет вам полезен.
Плохое поведение имеет хороший послужной список чтобы остановить подобные атаки методом перебора. Это своего рода минималистичный брандмауэр веб-приложений, который блокирует ссылочный спам и некоторый другой вредоносный трафик на очень раннем этапе, еще до загрузки всего WordPress, экономя ЦП и другие ресурсы. (Я говорю минималист, потому что то, что можно сделать только на этом уровне минимален по сравнению с тем, что вы можете делать на веб-сервере или даже с отдельным устройством, хотя он был разработан для людей, у которых нет другого выбора.)
Вы найдете это в Репозиторий плагинов WordPress.
Поскольку вы запускаете сервер, вы также можете использовать ModSecurity с Основной набор правил. Многие правила плохого поведения здесь повторно реализованы (поищите в них мое имя и / или имя плохого поведения), и набор правил также содержит множество других правил, которые могут быть вам полезны.
Я могу придумать несколько возможностей прямо в голове; в порядке увеличения агрессивности для законных пользователей:
wp-login.php
к чему-то другому? (Необходимо поддерживать при обновлении, полагается на безопасность за счет неясности, но должно остановить большинство нецелевых сценариев атак с минимальными проблемами для законных пользователей.)wp-login.php
во внешнем балансировщике нагрузки или межсетевом экране? (Будет создавать проблемы для законных пользователей во время наводнения запросов, но, по крайней мере, остальная часть сервера, включая публичный доступ к содержимому блога, должна продолжать успешно работать.)Есть много вещей, которые вы можете сделать, чтобы злоумышленники не пожирали ваши ресурсы.
У вас могут быть веские причины не использовать это на всех или некоторых сайтах, но, пожалуйста, не стоит недооценивать полезность этого метода. Используйте везде, где возможно.
Требуя от пользователей входа в систему на уровне веб-сервера, вы минимизируете ущерб, который могут нанести злоумышленники, ограничиваете ресурсы, необходимые для борьбы с этими атаками, и дополнительно защищаете свои веб-сайты, которые могут иметь уязвимости.
Вы можете запретить доступ к частям вашего сайта. Даже если вам нужно открыть довольно большую подсеть 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 на нестандартном порте, вам не придется тратить драгоценные ресурсы на проверку этих логинов грубой силы.
http://wordpress.org/plugins/wp-fail2ban/
fail2ban - одна из простейших и наиболее эффективных мер безопасности, которые вы можете реализовать для предотвращения атак методом подбора пароля.
В fail2ban есть несколько интересных функций:
Многие злоумышленники пытаются войти в систему с обычными именами пользователей, такими как admin. Рекомендуется не использовать эти имена пользователей, и в этом случае вы можете заблокировать любого, кто пытается войти с ними.
WPf2b теперь позволяет вам указать регулярное выражение, которое будет сокращать процесс входа в систему, если запрошенное имя пользователя совпадает.
определить ('WP_FAIL2BAN_BLOCKED_USERS', '^ admin $');
Идея здесь состоит в том, чтобы перечислить IP-адреса доверенных прокси, которые будут отображаться как удаленный IP-адрес для запроса.
define('WP_FAIL2BAN_PROXIES','192.168.0.42,192.168.0.43');