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

Автоматизация блокировки 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, который отправляет запросы на него. Есть ли у кого-нибудь идеи, как это сделать?

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

решение1

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

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

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

Связанный контент