< meta name="referrer" content="origin">
Home » Linux » Спам запросов к al_profileEdit.php на веб сервере

Спам запросов к al_profileEdit.php на веб сервере

Заметил, что в error.log web сервера массово сыпятся сообщения с ошибками. Смысл сообщений был в том, что кто-то очень настойчиво ломится по адресу http://site.ru/al_profileEdit.php?__query=edit&al=-1&al_id=vk. Этого файла на сайте нет, поэтому сообщение попадает в лог ошибок. До кучи все эти запросы присутствуют в access.log. Все это создает лишнюю нагрузку на сервер, поэтому решил разобраться, как заблокировать этот спам.

Первым делом решил, что сайт взломали и понаоткрывали дырок. Но более внимательное изучение вопроса не показало никаких признаков взлома. Все запросы идут снаружи и обращаются к файлу, которого на сервере нет. Мониторинг не показывал никакой подозрительной активности. В логах ничего подозрительного тоже не обнаружил.

Бегло посмотрел в поиске. Нашел пару упоминаний о такой же проблеме, но простого и надежного решения не увидел. Предлагают сделать редирект куда-нибудь по этому адресу, либо закрыть файл через .htaccees. Но все это полумеры, которые не блокируют полностью запросы, а просто на них каким-то образом реагируют с наименьшими потерями.

На ум пришел простой и надежный fail2ban. Ранее я уже рассказывал о настройке fail2ban для защиты админки wordpress. В статье подробно все рассказано, как установить и настроить фильтры. Не буду подробно на этом останавливаться сейчас. Я просто добавлю новый фильтр, который будет навечно блокировать тех, кто будет обращаться к файлу al_profileEdit.php на веб сервере. Я сначала оставил дефолтные настройки блокировки на 10 минут вроде бы. Но долбили так часто, что с момента выхода из бана и до новой блокировки боты все равно успевали прилично наспамить в логи. Решил их блокировать навечно.

Создаем новый фильтр fail2ban:

# mcedit /etc/fail2ban/filter.d/wp-al-profileEdit.conf
[Definition]
failregex = ^<HOST> .* "GET /al_profileEdit.php

Этот фильтр вычленяет ip адреса всех, кто будет обращаться к файлу al_profileEdit.php на веб сервере. Данные будет брать из лог файла access.log.

Добавляем новый jail в /etc/fail2ban/jail.conf

[wp-al-profileEdit]
enabled = true
port = http,https
action = iptables[name=WP, port=http, protocol=tcp]
filter = wp-al-profileEdit
logpath = /web/sites/site.ru/log/access.log
maxretry = 1
bantime = -1

Перезапускаем fail2ban:

# systemctl restart fail2ban

и проверяем в логе как отработал. Он должен сразу забанить тех, кто успел отметиться в лог файле. Посмотреть список этих ip можно в правилах iptables:

# iptables -L -v -n

В логе самой программы тоже можно увидеть эту информацию. Теперь тот, кто обратиться к указанному файлу, тут же получит вечный бан в iptables и не будет нагружать web сервер бесполезными запросами.


Помогла статья? Есть возможность отблагодарить автора

4 комментария

  1. Кстати да! Меня не было на сайте несколько месяцев. За это время забыл пароль. Пытался восстановить его и при отправке запроса с сайта, последний просто переставал отвечать. Типа вис. Возможно из-за этого.

  2. А что если будет перемещен файл? Или удалена картинка? Ну разные могут быть причины ссылания на несуществующий объект, польщователь получит вечный бан. Как то это не хорошо, не кажется ли Вам?

    • Я баню за запрос к конкретному файлу, которого не существует и никогда не было на моем сайте. Пострадают только те, кто к этому файлу обращаются.

      • Теперь понял, сперва подумал что в блок лист будут добавляться все IP которые обращаются на несуществующие файлы. Мои извинения за невнимательность

Добавить комментарий

Ваш e-mail не будет опубликован.