Fail2ban: logpath поддерживает регулярные выражения
Здравствуйте, я бездарь.
Когда настройки ротации логов отличаются для каждой *nix-системы, /var/log/auth.log быстро архивируется, и это совсем не помогает банить, поэтому, похоже, можно использовать регулярные выражения, как показано ниже.
Как! Использовать!
:/etc/fail2ban# cat jail.local
[sshd]
ignoreip = 127.0.0.1/8 ::1
enabled = true
port = all
logpath = /var/log/auth.log*
bantime = 10w
findtime = 10d
maxretry = 2
И если посмотреть с помощью fail2ban-client status sshd,
:/usr/local/etc/fail2ban # fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/auth.log /var/log/auth.log.2.bz2 /var/log/auth.log.1.bz2 /var/log/auth.log.6.bz2 /var/log/auth.log.3.bz2 /var/log/auth.log.4.bz2 /var/log/auth.log.5.bz2 /var/log/auth.log.0.bz2
`- Actions
|- Currently banned: 158
|- Total banned: 158
Похоже, файлы .bz тоже включены... Я подумал, смотрит ли он их...? но, если подумать, это, наверное, невозможно (´・ω・`)
Я еще не смотрел подробно, но было бы здорово, если бы он был достаточно умным, чтобы просматривать сжатые бинарные файлы, как zgrep.
И вот, я разархивировал их с помощью ls auth.log.*.bz2 | xargs bunzip2, и даже после перезапуска fail2ban и проверки, забаненные IP не изменились, так что, похоже, он просматривает и сжатые бинарные логи.
В таком программном обеспечении, если неосторожно использовать регулярные выражения, особенно .* и т.п., это часто приводит к ненужному потреблению ресурсов, поэтому рекомендуется использовать явные регулярные выражения.
Невероятная машина HeznerVPS
Ужасно.
:/etc/fail2ban# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 814
| |- Total failed: 132602
| `- File list: /var/log/auth.log.1 /var/log/auth.log
`- Actions
|- Currently banned: 2503
|- Total banned: 2503
2503 IP-адреса...?
Я рад, что получил такой "вкусный" источник данных, Dos.