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

Автоматизация блокировки IP-адреса

У меня есть машина Ubuntu 12.04, на которой запущен Apache2, на котором размещено около 10 веб-сайтов WordPress.

Недавно я подвергся атакам со стороны клиентов, которые, похоже, отправляли POST-запросы в файл wordpress с именем xmlrpc.php.

Я блокирую IP-адреса, которые отправляют эти вредоносные запросы, - это утомительный ручной процесс, и я хочу как-то автоматизировать это.

Как только я замечаю, что мой сервер загружен, я выполняю следующие действия:

  1. Я запускаю apachetop для всех файлов доступа к виртуальному хосту. Это показывает все сделанные запросы, поэтому я могу видеть, делаются ли какие-либо запросы к xmlrpc.php

  2. Как только я определю, какие IP-адреса атакуют мой сервер, я запускаю следующую команду для каждого IP-адреса-нарушителя: sudo iptables -A INPUT -s 94.102.52.95 -j DROP

  3. Когда все IP-адреса были добавлены в мой черный список, загрузка моего сервера сразу же упала до нормального уровня.

Есть ли способ автоматизировать этот процесс? Я думал о написании некоторого кода в xmlrpc.php, который добавит любые IP-адреса в мой черный список для любого IP-адреса, отправляющего запросы на него. Кто-нибудь знает, как это сделать?

Заранее спасибо!

Я не думаю, что блокировка каждого IP-адреса является решением этой проблемы. IP-адреса, выполняющие действия POST, скорее всего, являются зараженными / взломанными компьютерами по всему миру. Вы только наводите свои IP-таблицы, занося каждую из них в черный список. Если сайт WP был взломан, я бы предложил отключить его и уведомить клиента, чтобы он очистил беспорядок и обновил все компоненты.

Вы можете установить mod_security, чтобы предотвратить загрузку вредоносного кода. Вы также можете указать модулю mod_security блокировать запросы POST для этой конкретной страницы, он вернет просто 404, это сэкономит вам некоторую нагрузку (и прекратит взлом).

Если приведенное выше по-прежнему не помогает, и вы хотите заблокировать каждый IP-адрес (я бы обязательно удалил их через некоторое время, чтобы предотвратить огромные iptables), вы можете создать сценарий, отслеживающий access.log и блокирующий IP-адреса (например, оболочку скрипт с cronjob / sleep, или лучше: хороший демон на perl / python).