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

Как мне защитить свой сайт Wordpress / Apache от атаки ботнета методом грубой силы?

Что-то (ботнет?), Очевидно, атакует мой сайт Wordpress. Я вижу много таких записей в журналах доступа Apache, по несколько в секунду:

46.105.113.8 - - [14/Apr/2013:22:57:18 -0400] "POST /blog//wp-login.php HTTP/1.1" 200 4115 "-" "Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.0.15) Gecko/20091028 15 Ubuntu/9.04 (jaunty) Firefox/3.0.15"
74.207.229.103 - - [14/Apr/2013:22:57:19 -0400] "POST /wp-cron.php?doing_wp_cron=1365994639.0381069183349609375000 HTTP/1.0" 200 222 "-" "WordPress/3.5.1; http://mysite.com"

Я думаю, что что-то пытается угадать пароли перебором.

Одна из моих идей - заблокировать все запросы к wp-login.php, кроме моего домашнего IP-адреса. Как бы я этого добился?

Или есть плагин Wordpress, который автоматически блокирует эти атаки методом перебора?

Или есть идея получше?

Я использую Apache 2.2.22 на Ubuntu 12.04.

Спасибо нервное за указатели.

Вот пара плагинов Wordpress, которые будут блокировать IP-адреса после нескольких неудачных попыток входа в систему:

Поскольку у меня была куча сайтов Wordpress и я хотел быстро остановить атаки, я не хотел устанавливать плагины везде ... Вот что я в итоге сделал:

  1. Установлены Apache mod_security используя инструкции в Как установить mod_security в Ubuntu 12.04 - как сказал нервный, mod_security - это модуль Apache, который помогает предотвращать подобные атаки и выполняет множество других интересных функций безопасности. Я выполнил инструкции из статьи выше, чтобы установить набор правил по умолчанию.
  2. Нашел мой IP-адрес домашней сети, набрав "Какой у меня IP-адрес" в Google.
  3. Я добавил следующие правила в свой файл /etc/modsecurity/modsecurity.conf:
    # site configuration
    # allow all access from home
    SecRule REMOTE_ADDR "^1.2.3.4" phase:1,nolog,allow,ctl:ruleEngine=off
    # deny all access to wp-login to prevent wordpress botnet attacks
    SecRule REQUEST_URI "@rx (.*)wp-login.php(.*)" deny,nolog
  1. Я заменил 1.2.3.4 своим домашним IP-адресом. (У вас может быть несколько таких строк, если вы заходите на свой сайт WordPress с нескольких IP-адресов, но мне это не понадобилось.)
  2. Я перезапустил Apache: $ sudo /etc/init.d/apache2 restart Вот и все - атака ботнета остановлена. Я проверил свои журналы Apache, чтобы увидеть, что вместо кодов успеха (200) для запросов ботнета возвращались коды ошибок 403.

В конце концов ботнет отказался и остановил попытки POST.

Я, вероятно, вернусь и установлю один из этих двух плагинов позже, когда у меня будет время.

В больших масштабах (для нескольких сайтов) я бы порекомендовал правило Mod Security для мониторинга POST-запросов на wp-login.php и блокирование после определенного числа. В меньшем масштабе я бы рекомендовал что-то вроде:

http://wordpress.org/extend/plugins/better-wp-security/

В каждом случае, который я видел, изменение URL-адреса входа (функция плагина) довольно хорошо смягчает это. Вы также можете управлять IP-доступом - хотя вы также можете сделать это через .htaccess в каталоге wp-admin.

Используйте fail2ban для защиты от всех типов атак.