Рассмотрим как обрабатывать HTTP 404 в логах веб-сервера Nginx и блокировать злоумышленников которые пытаются найти уязвимости на опубликованных сайтах с помощью Fail2Ban.
Пример подобной атаки злоумышленников на веб-сайт размещенный на Nginx:
130.255.15.40 - - [08/Aug/2023:17:27:53 +0300] "GET /aslogo.jpeg HTTP/1.1" 404 41318 "-" "gobuster/3.1.0" 130.255.15.40 - - [08/Aug/2023:17:27:53 +0300] "GET /dexter.txt HTTP/1.1" 404 41318 "-" "gobuster/3.1.0" 130.255.15.40 - - [08/Aug/2023:17:27:53 +0300] "GET /dexter.html HTTP/1.1" 404 235 "-" "gobuster/3.1.0" 130.255.15.40 - - [08/Aug/2023:17:27:53 +0300] "GET /5553.md HTTP/1.1" 404 41318 "-" "gobuster/3.1.0" 130.255.15.40 - - [30/Aug/2023:17:00:13 +0300] "GET /admin HTTP/1.1" 429 162 "-" "Mozilla/5.0 (pc-x86_64-linux-gnu) Siege/4.0.7" 130.255.15.40 - - [30/Aug/2023:17:00:13 +0300] "GET /admins HTTP/1.1" 429 162 "-" "Mozilla/5.0 (pc-x86_64-linux-gnu) Siege/4.0.7"
# Устанавливаем пакет fail2ban, если он не установлен:
apt-get install fail2ban
# Создаем фильтр Fail2Ban для поиска запросов 404:
cat << EOF > /etc/fail2ban/filter.d/nginx-4xx.conf [Definition] failregex = ^<HOST> - - \[.*\] "(GET|POST).*HTTP.* (404|429) ignoreregex = EOF
# Настраиваем Fail2ban для блокировки 404 запросов. В конфигурационный файл -/etc/fail2ban/jail.local добавляем:
[nginx-4xx] enabled = true port = http,https logpath = /var/log/nginx/*access.log maxretry = 20 findtime = 10 bantime = 10m ignoreip =