То, что вы хотите, это Fail2ban (предполагая, что это машина Linux, вы не сказали ...)
Что такое Fail2ban?
Fail2ban будет анализировать системные журналы в поисках определенных регулярных выражений для блокировки. Когда он находит совпадение (или несколько совпадений с одного и того же IP-адреса, в зависимости от того, как вы его настроили), он блокируется, как правило, с помощью таблиц IPTable. Обычно это используется для блокировки неудачных попыток аутентификации на SSH или веб-серверах.
Вы настраиваете его для запрета на определенный период времени (может быть минут, может быть дней ... зависит от того, насколько они постоянны), после чего срок действия запрета истечет, если они не попытаются снова.
Как это помогает блокировать сканирование phpmyadmin ботами?
Его также легко можно использовать для сопоставления с общими признаками атаки, например, при попытке доступа к несуществующим папкам phpmyadmin. Вам нужно будет найти правильное регулярное выражение для соответствия таким попыткам и убедиться, что вы не блокируете законных пользователей.
Конфигурация, приведенная в этом сообщении в блоге, может работать дословно или потребовать некоторых настроек для вашей настройки.
Почему я должен их блокировать? 404 ошибки не стоят дорого
Блокировка их в iptables НЕОБХОДИМО использовать: если они проверяют уязвимости phpmyadmin, они могут также использовать другие сервисы для поиска уязвимостей, пока не столкнутся с чем-то, что работает. Запрет на них заставит большинство ботов / скриптов сдаться через некоторое время, и они перейдут к лучшим целям.
Даже сканирование не требует больших затрат (если только они на самом деле не находят уязвимости), они затопляют ваши логи, затрудняя просмотр успешных атак и проблем с вашим веб-сервером.
Как говорится в комментарии ниже, Fail2ban требует некоторых системных ресурсов. Но не много. По крайней мере, я могу сказать, что у меня никогда не было проблем с производительностью, которые я мог бы отнести к Fail2ban. Однако у меня были проблемы с производительностью из-за очень агрессивных сценариев, пытающихся перебором паролей или бросающих тысячи попыток внедрения SQL-кода и других эксплойтов в секунду на моем сервере. Блокировка их на уровне брандмауэра занимает на FAR меньше ресурсов, чем их блокировка на уровне сервера / приложения. Он также может быть расширен для запуска пользовательских сценариев для запрета IP-адресов - поэтому вместо того, чтобы запрещать их в IPtables, вы можете запретить их в аппаратном брандмауэре или по электронной почте, если тот же человек продолжает пытаться атаковать вас, чтобы вы могли жаловаться своему провайдеру или попросите ваш центр обработки данных заблокировать их на своих брандмауэрах.
Любые другие советы?
НАСТОЯТЕЛЬНО РЕКОМЕНДУЕТСЯ вносить в белый список несколько IP-адресов, которые вы контролируете, чтобы случайно не заблокировать себя.