Bash скрипт для анализа логов nginx
Написать bash скрипт для анализа логов nginx и создания списка блокировки IP
ОС Debian 9
Пример лог-файлов прикреплен к заданию
Функции:
Поиск лог файлов по путям /var/www/*/log/access.log
· IP адреса, совершившие запросы «GET /wp-login.php» и «POST /wp-login.php»
· IP адреса, получившие более 5 ответов 404 на свои запросы в течении 30 секунд
· IP адреса, получившие более 5 ответов 400 на свои запросы в течении 30 секунд
· IP адреса, User agent которых включал в себя:
o X11; Ubuntu;
o DotBot/1.1
o AhrefsBot
o SeznamBot
o Список useragent будет дополняться – его необходимо вынести в отдельный файл, который будет загружаться при каждом запуске скрипта
Не менее 3 вхождений wp-login.php
Для файлов /var/www/*/log/error.log
· Собирать IP с вхождением подстроки «access forbidden by rule
· Собирать IP с вхождением подстроки «GET /wp-login.php»
· Собирать IP с вхождением подстроки «POST /wp-login.php»
· Собирать IP с вхождением подстроки «POST /xmlrpc.php»
· Собирать IP с 10 и более последовательными обращениями к разным страницам сайта с интервалом менее 1-3 секунды между каждым запросом
Результатом работы скрипта должны быть следующие действия:
1. Лог файл в csv формате с колонками ip;количество запросов, совершенных к моему серверу
2. Внесение в список блокировки ip tables IP адресов из п.1
3. Архивация проанализированных файлов access.log, error.log,
4. удаление исходных файлов access.log, error.log
5. перезапуск сервера nginx
Скрипт будет работать из директории /var/www, запускаться с правами пользователя script:www-data.
Все логи принадлежат пользователям из группы www-data