Автоматизация блокировки 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, скорее всего заражены / взломаны ПК по всему миру. Вы только затопите свои IPtables, помещая в черный список каждого из них. Если сайт WP был взломан, я бы предложил отключить его и уведомить клиента, чтобы он убрал беспорядок и обновил все компоненты.

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

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

Другие вопросы по тегам