Время от времени я вижу коллекции подозрительных ошибок «Файл не найден» в моих журналах Apache, в основном с использованием шаблона
File does not exist: /var/www/file, referer: http://my.server.com/file
Говоря человеческим языком: файл не был найден, хотя он сам ссылался здесь. Явная попытка взлома, так как это вряд ли возможно (и REQUEST_URI
s достаточно часто предлагают то же самое). В моих глазах ясный довод в пользу fail2ban
- если бы я мог получить здесь обратные ссылки:
failregex = ^%(_apache_error_client)s File does not exist: /var/www(.+), referer: http://.+\1$
(Джастин Кейс: приведенные выше примеры предполагают DIRECTORY_ROOT
этого веб-сервера /var/www
)
Я гуглил часами, искал fail2ban вики вверх и вниз - но нигде я не смог найти утверждения относительно обратных ссылок в его фильтрах. Они не поддерживаются, или я неправильно сделал? Любые подсказки, как заставить его работать (кроме «грязных хаков», таких как первая отправка запроса на другой поддельный URL-адрес с использованием мод-перезапись, а затем уловить это (если кому-то интересно, я могу уточнить этот подход в ответе) или сделать что-то подобное, используя мод-безопасность)?
поскольку была запрошена вся строка журнала:
[Fri Nov 08 14:57:28 2013] [error] [client 50.67.234.213] File does not exist: /var/www/text/files.htm++++++++++++++++++++++++++Result:+using+proxy+27.34.142.47:9090;+no+post+sending+forms+are+found;, referer: http://www.myserver.com/text/files.htm++++++++++++++++++++++++++Result:+using+proxy+27.34.142.47:9090;+no+post+sending+forms+are+found;
(извините, журналы были только что переключены, поэтому этот длинный кандидат остался единственным В настоящее время; незначительные изменения были внесены из соображений конфиденциальности)
Похоже, нумерация обратных ссылок немного дурацкая. Попробуйте использовать Именованная группа ... что-то вроде этого:
failregex = ^%(_apache_error_client)s File does not exist: /var/www(?P<snoop_file>.+), referer: http://.+(?P=snoop_file)$