помогите заблокировать запрос

12 3
K5
На сайте с 21.07.2010
Offline
209
1944

на сайт напал мини-ддос (или как его еще назвать)

в еррор.лог такие запросы

http://pastebin.com/JrPPTdRy

все начинаются одинаково \xd0\x91\xd0\xb0\xd0\xb7\xd0\xb0, концовка разная, с каждого айпи примерно 25 запросов, целый день долбят

вордпресс, впс, нгикс+апач, нагрузка на проц под 90%

как заблокировать запросы начинающиеся с \xd0\x91\xd0\xb0\xd0\xb7\xd0\xb0 на уровне нгикса?

аська 45два48499два записки на работе (http://memoryhigh.ru) помогу с сайтом, удалю вирусы, настрою впс -> отзывы ТУТ (/ru/forum/836248) и ТАМ (http://www.maultalk.com/topic140187.html) !!!всегда проверяйте данные людей, которые сами пишут вам в аську или скайп!!!
Romka_Kharkov
На сайте с 08.04.2009
Offline
485
#1

В плане nginx не уверен, могу дать почитать вот это:

https://onyx.net.ua/fail2ban_informaciya.php

Есть около 15.000 ipv4 !!! (http://onyx.net.ua/price.php#ipv4) Качественный хостинг с 2005 года - лучшее клиентам! (http://onyx.net.ua/)
Glueon
На сайте с 26.07.2013
Offline
172
#2
kgtu5:
на сайт напал мини-ддос (или как его еще назвать)
в еррор.лог такие запросы
http://pastebin.com/JrPPTdRy
все начинаются одинаково \xd0\x91\xd0\xb0\xd0\xb7\xd0\xb0, концовка разная, с каждого айпи примерно 25 запросов, целый день долбят
вордпресс, впс, нгикс+апач, нагрузка на проц под 90%

как заблокировать запросы начинающиеся с \xd0\x91\xd0\xb0\xd0\xb7\xd0\xb0 на уровне нгикса?

Не совсем по логам понял - это часть URL или POST?

Если URL можно хоть так:


if ($uri ~ "xxd0\x91\xd0\xb0\xd0\xb7\xd0\xb0") {
return 403;
}
Есть много IP-сетей в аренду под прокси, парсинг, рассылки (optin), vpn и хостинг. Телега: @contactroot ⚒ ContactRoot команда опытных сисадминов (/ru/forum/861038), свой LIR: сдаем в аренду сети IPv4/v6 (/ru/forum/1012475).
K5
На сайте с 21.07.2010
Offline
209
#3

Glueon, error.log именно такой, ничего не менял, вот из последнего

http://pastebin.com/saRehP3a

наверно такое условие не совсем корректно,

if ($uri ~ "xxd0\x91\xd0\xb0\xd0\xb7\xd0\xb0 здесь") {

return 403;

}

не должно быть какого либо плюса чтобы запрос мог быть любой с таким началом?

Romka_Kharkov, в jail.conf добавил

[mysite]
enabled = true
filter = mysitef
action = mysitea
sendmail-whois[name=MYSITE, dest=моя_почта@yandex.ru, sender=server]
logpaht = /var/www/httpd-log/error.log
maxretry = 3
findtime = 300
bantime = 43200

в action.d mysitea.conf

[Definition]
actionstart =
actionstop =
actioncheck = iptables -L INPUT -n |grep -i [ip]
actionban = iptables -I INPUT -s [ip] -d 0/0 -j DROP
actionunban = iptables -D INPUT -s [ip] -d 0/0 -j DROP

а вот с filter.d mysitef.conf проблема.

как правильно правило написать?

Glueon
На сайте с 26.07.2013
Offline
172
#4

kgtu5, там не указаны символы начала и конца, поэтому будет поиск подстроки. Подстрока такая там есть, если это URI. Просто в логе не видно $request_method переменной.

Можно заодно какие-нибудь общие фильтры повесить, типа таких:


set $block_sql_injections 0;
if ($query_string ~ "union.*select.*\(") {
set $block_sql_injections 1;
}
if ($query_string ~ "union.*all.*select.*") {
set $block_sql_injections 1;
}
if ($query_string ~ "concat.*\(") {
set $block_sql_injections 1;
}
if ($block_sql_injections = 1) {
return 403;
}

set $block_file_injections 0;
if ($query_string ~ "[a-zA-Z0-9_]=http://") {
set $block_file_injections 1;
}
if ($query_string ~ "[a-zA-Z0-9_]=(\.\.//?)+") {
set $block_file_injections 1;
}
if ($query_string ~ "[a-zA-Z0-9_]=/([a-z0-9_.]//?)+") {
set $block_file_injections 1;
}
if ($block_file_injections = 1) {
return 403;
}

set $block_common_exploits 0;
if ($query_string ~ "(<|%3C).*script.*(>|%3E)") {
set $block_common_exploits 1;
}
if ($query_string ~ "GLOBALS(=|\[|\%[0-9A-Z]{0,2})") {
set $block_common_exploits 1;
}
if ($query_string ~ "_REQUEST(=|\[|\%[0-9A-Z]{0,2})") {
set $block_common_exploits 1;
}
if ($query_string ~ "proc/self/environ") {
set $block_common_exploits 1;
}
if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3D)") {
set $block_common_exploits 1;
}
if ($query_string ~ "base64_(en|de)code\(.*\)") {
set $block_common_exploits 1;
}
if ($block_common_exploits = 1) {
return 403;
}


Romka_Kharkov
На сайте с 08.04.2009
Offline
485
#5

kgtu5, Ну во первых:


sendmail-whois[name=MYSITE, dest=моя_почта@yandex.ru, sender=server]

Это не отдельная строка а должно быть в Action, но надо ли это в вашем случае..... Я бы убрал.

Во вторых IP в екшонах должен заключаться в воот такие "<>" скобки, в моей ссылке там сноска есть.

Что касается фильтра... я так понимаю надо фильтровать "\xd0\x91\xd0\xb0\xd0\xb7\xd0\xb0" ?? Скиньте мне в приват или сюда, несколько строк лога (штук 5 вполне хватит) только КАК Есть.... можете конечно какие-то стратегические части замаскировать но не удаляйте их, мне четко понять надо как ваш лог выглядит что бы Regexp вам правильный собрать под него...

Если лог файл стандартный то попробуйте вот так:


failregex = <HOST> - - \[.*\] "POST \xd0\x91\xd0\xb0\xd0\xb7\xd0\xb0 .*

Но это я про апач.... у вас nginx ... нужны логи .....

Glueon
На сайте с 26.07.2013
Offline
172
#6
Romka_Kharkov:
kgtu5, Ну во первых:

Это не отдельная строка а должно быть в Action, но надо ли это в вашем случае..... Я бы убрал.

Во вторых IP в екшонах должен заключаться в воот такие "<>" скобки, в моей ссылке там сноска есть.

Что касается фильтра... я так понимаю надо фильтровать "\xd0\x91\xd0\xb0\xd0\xb7\xd0\xb0" ?? Скиньте мне в приват или сюда, несколько строк лога (штук 5 вполне хватит) только КАК Есть.... можете конечно какие-то стратегические части замаскировать но не удаляйте их, мне четко понять надо как ваш лог выглядит что бы Regexp вам правильный собрать под него...

Если лог файл стандартный то попробуйте вот так:

Но это я про апач.... у вас nginx ... нужны логи .....

Так там человек pastebin'овские ссылки поскидывал с кусками-логами. Там в наглую SQL-инъекции понапиханы, можно наверное по ключевым словам SQL делать фильтрацию.

K5
На сайте с 21.07.2010
Offline
209
#7

Romka_Kharkov, отправку сообщений делал по аналогии с настройками для ssh

[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath = /var/log/secure
maxretry = 3

и сообщения о старте и останове fail2ban нормально приходят, вопрос только в фильтре

кстати в твоей статье поправь в "Разыграем ситуацию":

logpaht = /var/www/log/mysite.access.log => logpath = /var/www/log/mysite.access.log

Romka_Kharkov
На сайте с 08.04.2009
Offline
485
#8
Glueon:
Так там человек pastebin'овские ссылки поскидывал с кусками-логами. Там в наглую SQL-инъекции понапиханы, можно наверное по ключевым словам SQL делать фильтрацию.

Можно и так , тоже дельно, редко в [error] встречаются (SELECT|INSERT|UPDATE) :)

---------- Добавлено 11.09.2013 в 07:44 ----------

kgtu5:
Romka_Kharkov, отправку сообщений делал по аналогии с настройками для ssh
[ssh-iptables]

enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath = /var/log/secure
maxretry = 3

и сообщения о старте и останове fail2ban нормально приходят, вопрос только в фильтре

кстати в твоей статье поправь в "Разыграем ситуацию":
logpaht = /var/www/log/mysite.access.log => logpath = /var/www/log/mysite.access.log

Статью поправил, за это отдельное спасибо, вам выслал информацию в ответ на лог. Все должно быть хорошо ;)

iHead
На сайте с 25.04.2008
Offline
137
#9

Glueon, вместо $query_string в вашем случае лучше использовать $args

Рекомендуемый хостинг партнер 1С-Битрикс (https://www.ihead.ru/bitrix/), PHP-хостинг (https://www.ihead.ru/php/), доверенный партнер RU-CENTER (https://www.ihead.ru/news/573.html), официальный представитель REG.RU в Кирове (https://www.ihead.ru/news/851.html)
K5
На сайте с 21.07.2010
Offline
209
#10

Romka_Kharkov, помог с настройками fail2ban

фильтр сделали

[Definition]
failregex = \[.*\] \[error\] \[client <HOST>\].*xd0.*xb7.*
\[.*\] \[error\] \[client <HOST>\].*xd0.*x91.*
ignoreregex =

и решил маленькую старую проблему /ru/forum/804135

ispmanager коряво конфиг делает для почты

СПАСИБО

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий