Запрет IP адресов в Ubuntu (Apache + Nginx)

Снова куча ботов атакует сервер с сайтами на wordpress, сайты жутко тормозят, память сервера и кол-во процессов зашкаливает?

Открываем /var/log/nginx/access.log (у кого apache + nginx, держать высоко посещаемый сервер на одном apache — самоубийство)  и ищем такие строки — POST /xmlrpc.php HTTP/ выражение в этом случае выглядит так:

185.93.185.18 — – [20/Nov/2015:19:43:07 +0400] «POST /xmlrpc.php HTTP/1.1″ 200

200 — в этом случае означает что nginx принял запрос в работу и перенаправил на apache, таких запросов может приходить до десятков и сотен в секунду!
Перед выражением POST /xmlrpc.php HTTP/ обычно стоит IP адрес атакующего бота, которому можно запретить доступ и отправить ответ сервера 403

Запрет IP адресов в Nginx с ответом 403

Открываем /etc/nginx/nginx.conf, добавляем в конец файла такие строки (обязательно внутри секции http {     } где то между фигурных скобок)

##
# Blocking by IP address
##

include /etc/nginx/blockips.conf;

Далее создаем файл blockips.conf в папке /etc/nginx/ и вносим туда выявленные IP адреса (не забывайте соблюдать синтаксис — в начале каждой строки ставим оператор deny, а в конец — точка с запятой), получаем такое:

deny 5.8.60.56;
deny 5.9.119.22;
deny 5.79.65.198;
deny 5.45.73.17;
deny 31.187.64.26;
deny 37.187.59.18;
deny 37.115.184.26;
deny 46.148.16.114;
deny 46.148.17.90;
deny 46.22.136.68;
deny 70.32.88.224;
deny 71.89.158.150;
deny 93.170.253.130;
deny 93.170.253.124;
deny 93.170.253.122;
deny 103.23.244.8;
deny 113.212.106.182;
deny 136.243.22.153;
deny 173.54.117.136;
deny 185.93.185.100;
deny 185.93.185.18;
deny 185.93.185.20;
deny 185.93.185.48;
deny 185.93.185.120;
deny 188.226.141.52;
deny 195.62.52.238;
deny 198.58.84.42;
deny 200.124.22.218;
deny 208.116.35.82;
deny 212.166.74.42;
deny 212.71.238.240;

Перезагружаем nginx и спустя какое то время опять смотрим логи. Для запрещенного IP должно получиться такое выражение:

185.93.185.18 — – [20/Nov/2015:19:43:07 +0400] «POST /xmlrpc.php HTTP/1.1″ 403

403 в этом случае означает что данному IP доступ запрещен, его завернул назад быстрый nginx, не нагружая при этом apache.