SCROLL
Среднее время на прочтение: 2 мин.

Защита Nginx от атак HTTP 404 | 429 с помощью Fail2Ban на Debian.

Рассмотрим как обрабатывать HTTP 404 в логах веб-сервера Nginx и блокировать злоумышленников которые пытаются найти уязвимости на опубликованных сайтах с помощью Fail2Ban.

JUQwJTlGJUQxJTgwJUQwJUI4JUQwJUJDJUQwJUI1JUQxJTgwJTIwJUQwJUJGJUQwJUJFJUQwJUI0JUQwJUJFJUQwJUIxJUQwJUJEJUQwJUJFJUQwJUI5JTIwJUQwJUIwJUQxJTgyJUQwJUIwJUQwJUJBJUQwJUI4JTIwJUQwJUI3JUQwJUJCJUQwJUJFJUQxJTgzJUQwJUJDJUQxJThCJUQxJTg4JUQwJUJCJUQwJUI1JUQwJUJEJUQwJUJEJUQwJUI4JUQwJUJBJUQwJUJFJUQwJUIyJTIwJUQwJUJEJUQwJUIwJTIwJUQwJUIyJUQwJUI1JUQwJUIxLSVEMSU4MSVEMCVCMCVEMCVCOSVEMSU4MiUyMCVEMSU4MCVEMCVCMCVEMCVCNyVEMCVCQyVEMCVCNSVEMSU4OSVEMCVCNSVEMCVCRCVEMCVCRCVEMSU4QiVEMCVCOSUyMCVEMCVCRCVEMCVCMCUyME5naW54JTNB

MTMwLjI1NS4xNS40MCUyMC0lMjAtJTIwJTVCMDglMkZBdWclMkYyMDIzJTNBMTclM0EyNyUzQTUzJTIwJTJCMDMwMCU1RCUyMCUyMkdFVCUyMCUyRmFzbG9nby5qcGVnJTIwSFRUUCUyRjEuMSUyMiUyMDQwNCUyMDQxMzE4JTIwJTIyLSUyMiUyMCUyMmdvYnVzdGVyJTJGMy4xLjAlMjI=
MTMwLjI1NS4xNS40MCUyMC0lMjAtJTIwJTVCMDglMkZBdWclMkYyMDIzJTNBMTclM0EyNyUzQTUzJTIwJTJCMDMwMCU1RCUyMCUyMkdFVCUyMCUyRmRleHRlci50eHQlMjBIVFRQJTJGMS4xJTIyJTIwNDA0JTIwNDEzMTglMjAlMjItJTIyJTIwJTIyZ29idXN0ZXIlMkYzLjEuMCUyMg==
MTMwLjI1NS4xNS40MCUyMC0lMjAtJTIwJTVCMDglMkZBdWclMkYyMDIzJTNBMTclM0EyNyUzQTUzJTIwJTJCMDMwMCU1RCUyMCUyMkdFVCUyMCUyRmRleHRlci5odG1sJTIwSFRUUCUyRjEuMSUyMiUyMDQwNCUyMDIzNSUyMCUyMi0lMjIlMjAlMjJnb2J1c3RlciUyRjMuMS4wJTIy
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"

JUQwJUEzJUQxJTgxJUQxJTgyJUQwJUIwJUQwJUJEJUQwJUIwJUQwJUIyJUQwJUJCJUQwJUI4JUQwJUIyJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQwJUJGJUQwJUIwJUQwJUJBJUQwJUI1JUQxJTgyJTIwZmFpbDJiYW4lMkMlMjAlRDAlQjUlRDElODElRDAlQkIlRDAlQjglMjAlRDAlQkUlRDAlQkQlMjAlRDAlQkQlRDAlQjUlMjAlRDElODMlRDElODElRDElODIlRDAlQjAlRDAlQkQlRDAlQkUlRDAlQjIlRDAlQkIlRDAlQjUlRDAlQkQlM0E=

c3VkbyUyMGFwdC1nZXQlMjBpbnN0YWxsJTIwZmFpbDJiYW4lMjAteQ==

JUQwJUExJUQwJUJFJUQwJUI3JUQwJUI0JUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTg0JUQwJUI4JUQwJUJCJUQxJThDJUQxJTgyJUQxJTgwJTIwZmFpbDJiYW4lMjAlRDAlQjQlRDAlQkIlRDElOEYlMjAlRDAlQkYlRDAlQkUlRDAlQjglRDElODElRDAlQkElRDAlQjAlMjAlRDAlQjclRDAlQjAlRDAlQkYlRDElODAlRDAlQkUlRDElODElRDAlQkUlRDAlQjIlMjA0MDQlM0E=

Y2F0JTIwJTNDJTNDJTIwRU9GJTIwJTNFJTIwJTJGZXRjJTJGZmFpbDJiYW4lMkZmaWx0ZXIuZCUyRm5naW54LTR4eC5jb25m
[Definition]
ZmFpbHJlZ2V4JTIwJTNEJTIwJTVFJTNDSE9TVCUzRSUyMC0lMjAtJTIwJTVDJTVCLiolNUMlNUQlMjAlMjIoR0VUJTdDUE9TVCkuKkhUVFAuKiUyMCg0MDQlN0M0Mjkp
ignoreregex =
RU9G

Настраиваем fail2ban для блокировки 404 запросов. В конфигурационный файл /etc/fail2ban/jail.local добавляем:

/etc/fail2ban/jail.local
[nginx-4xx]
enabled  = true
port     = http,https
bG9ncGF0aCUyMCUyMCUzRCUyMCUyRnZhciUyRmxvZyUyRm5naW54JTJGKmFjY2Vzcy5sb2c=
bWF4cmV0cnklMjAlM0QlMjAyMA==
ZmluZHRpbWUlMjAlM0QlMjAxMA==
bantime  = 10m
ignoreip =

JUQwJTk0JUQwJUJCJUQxJThGJTIwJUQwJUJGJUQxJTgwJUQwJUI4JUQwJUJDJUQwJUI1JUQwJUJEJUQwJUI1JUQwJUJEJUQwJUI4JUQxJThGJTIwJUQwJUJGJUQxJTgwJUQwJUIwJUQwJUIyJUQwJUI4JUQwJUJCJUQwJUIwJTJDJTIwJUQwJUJGJUQwJUI1JUQxJTgwJUQwJUI1JUQwJUI3JUQwJUIwJUQwJUJGJUQxJTgzJUQxJTgxJUQwJUJBJUQwJUIwJUQwJUI1JUQwJUJDJTIwJUQxJTgxJUQwJUI1JUQxJTgwJUQwJUIyJUQwJUI4JUQxJTgxJTIwZmFpbDJiYW4=

JTJGZXRjJTJGaW5pdC5kJTJGZmFpbDJiYW4lMjByZWxvYWQ=

Для проверки что правило работает, можно запустить проверку работы правила, командой:

ZmFpbDJiYW4tcmVnZXglMjAtLXByaW50LWFsbC1tYXRjaCUyMCUyRnZhciUyRmxvZyUyRm5naW54JTJGYWNjZXNzLmxvZyUyMCUyRmV0YyUyRmZhaWwyYmFuJTJGZmlsdGVyLmQlMkZuZ2lueC00eHguY29uZg==

Вывод будет вида:

Running tests
JTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNEJTNE

Use   failregex filter file : nginx-404, basedir: /etc/fail2ban
Use         log file : /var/log/nginx/access.log
VXNlJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZW5jb2RpbmclMjAlM0ElMjBVVEYtOA==


UmVzdWx0cw==
=======

RmFpbHJlZ2V4JTNBJTIwMzElMjB0b3RhbA==
JTdDLSUyMCUyMCUyMyklMjAlNUIlMjMlMjBvZiUyMGhpdHMlNUQlMjByZWd1bGFyJTIwZXhwcmVzc2lvbg==
|   1) [31] ^<HOST> - - \[.*\] "(GET|POST).*HTTP.* 404
`-

SWdub3JlcmVnZXglM0ElMjAwJTIwdG90YWw=

RGF0ZSUyMHRlbXBsYXRlJTIwaGl0cyUzQQ==
|- [# of hits] date format
|  [923] Day(?P<_sep>[-/])MON(?P=_sep)ExYear[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?
`-

Lines: 923 lines, 0 ignored, 31 matched, 892 missed
JTVCcHJvY2Vzc2VkJTIwaW4lMjAwLjA4JTIwc2VjJTVE

|- Matched line(s):
JTdDJTIwJTIwMTMwLjI1NS4xNS40MCUyMC0lMjAtJTIwJTVCMDglMkZBdWclMkYyMDIzJTNBMTclM0EyNyUzQTUzJTIwJTJCMDMwMCU1RCUyMCUyMkdFVCUyMCUyRjU1NTMubWQlMjBIVFRQJTJGMS4xJTIyJTIwNDA0JTIwNDEzMTglMjAlMjItJTIyJTIwJTIyZ29idXN0ZXIlMkYzLjEuMCUyMg==
JTdDJTIwJTIwMTMwLjI1NS4xNS40MCUyMC0lMjAtJTIwJTVCMDglMkZBdWclMkYyMDIzJTNBMTclM0EyNyUzQTUzJTIwJTJCMDMwMCU1RCUyMCUyMkdFVCUyMCUyRmRleHRlciUyMEhUVFAlMkYxLjElMjIlMjA0MDQlMjAwJTIwJTIyLSUyMiUyMCUyMmdvYnVzdGVyJTJGMy4xLjAlMjI=
|  130.255.15.40 - - [08/Aug/2023:17:27:53 +0300] "GET /fid.png HTTP/1.1" 404 0 "-" "gobuster/3.1.0"
JTdDJTIwJTIwMTMwLjI1NS4xNS40MCUyMC0lMjAtJTIwJTVCMDglMkZBdWclMkYyMDIzJTNBMTclM0EyNyUzQTUzJTIwJTJCMDMwMCU1RCUyMCUyMkdFVCUyMCUyRmFzbG9nby5wbmclMjBIVFRQJTJGMS4xJTIyJTIwNDA0JTIwMCUyMCUyMi0lMjIlMjAlMjJnb2J1c3RlciUyRjMuMS4wJTIy
JTdDJTIwJTIwMTMwLjI1NS4xNS40MCUyMC0lMjAtJTIwJTVCMDglMkZBdWclMkYyMDIzJTNBMTclM0EyNyUzQTUzJTIwJTJCMDMwMCU1RCUyMCUyMkdFVCUyMCUyRnRydXN0Ym94JTIwSFRUUCUyRjEuMSUyMiUyMDQwNCUyMDAlMjAlMjItJTIyJTIwJTIyZ29idXN0ZXIlMkYzLjEuMCUyMg==
|  130.255.15.40 - - [08/Aug/2023:17:27:53 +0300] "GET /4169.docx HTTP/1.1" 404 0 "-" "gobuster/3.1.0"
`-
Missed line(s): too many to print.  Use --print-all-missed to print all 892 lines
 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

0 комментариев

Нет комментариев.