wordpress атакуют адреса /edit методом POST

Несколько человек обращались с вопросом что делать когда атакуют блог на Wordpress POST-запросами на адрес статьи с добавлением /edit:

Т.е. в логе очень много примерно таких строчек:

ip.ip.ip.ip - - [17/Aug/2012:12:31:17 +0400] "POST /2012/03/{название статьи в блоге}/edit HTTP/1.0"
404 10211 "http://sayt.ru/2012/03/{тут опять название статьи}/" "Opera/8.80 (Windows NT 5.1;..."

Такие обращения приводят к повышенной нагрузке на хостинг, иногда вплоть до подвисаний (502 ошибка) и даже до отключения хостером за превышение нагрузки (с просьбой переехать на VPS :)

Предположительно HTTP-Flood атака, более подробно про механизм атаки на отказ в обслуживании с названием Slow HTTP POST можно почитать на хабре habrahabr.ru/post/116056

Если дело происходит на VPS - можно забанить IP-адреса на уровне файрвола.

iptables -A INPUT -s АДРЕС -j DROP

Для хостинга с apache можно использовать запрет через .htaccess


## USER IP BANNING
<LIMIT POST>
order allow,deny
deny from *.*.*.*
allow from all
</limit>

Или наоборот, разрешаем только со своего IP (или подсети, если адрес динамический)

<LIMIT POST>
order deny,allow
deny from all
# разрешенная подсеть или IP-адрес
allow from 1.2
allow from 1.2.3.4
</LIMIT>

Также можно установить запрет, используя директиву RewriteRule модуля mod_rewrite

RewriteCond %{REQUEST_METHOD} =POST
RewriteRule .*/edit$ - [L,F]

Однако, не стоит забывать об обновлениях - это всего лишь одна из возможных защит от атаки на Wordpress блоги.

UPD столкнулся с аналогичной “атакой ” по адресу /edit без названия статьи (т.е. http://domain/edit)

[IP_ADDRESS] - - [08/Jan/2013:13:44:58 +0400] "POST /edit HTTP/1.0"
404 491 "http://site/inner-page" "Opera/9.80 (Windows NT 5.1)
Presto…

Запрет POST-запросов для WORDPRESS с разрешением комментариев


RewriteEngine On
RewriteBase /
# запрет POST-запросов с других IP-адресов
# ко всем страницам кроме wp-comments-post.php
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} !1.2.
RewriteCond %{REMOTE_ADDR} !1.2.3.4
RewriteCond %{REQUEST_URI} !.wp-comments-post\.php*
RewriteRule ^ - [F,L]
# стандартные правила для Wordpress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Метки:

Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)

html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)

ссылка (для отправки по почте)

Добавить комментарий