fail2ban – зброю до бою!
fail2ban сам по собі непогано справляється. Але виявляється ми можемо налаштувати кастомні правила. Ми можемо його навчити виловлювати рагулів (rouge) з логів апача. А саме, прописавши в /etc/fail2ban/jail.conf наступні незрозумілі слова;)
[apache-spammer]
enabled = true
banaction = apache
port = http,https
filter = apache-spammer
logpath = /srv/*/log/access.log
maxretry = 100
findtime = 30
bantime = 300
Ми кажемо що 100 запитів за пів хвилини, це вже рагуль зовсім наглий і його треба приструнити на 5 хвилин. Далі створюємо /etc/fail2ban/filter.d/apache-spammer.conf і прописуємо там шаблон, за яким fail2ban буде виявляти рагуля:
[Definition]
# Option: failregex
# Notes.: regex to match the request messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
#
failregex = ^<HOST>.*/path/to/content.html
Фантазія тут не обмежена, але краще поглядати в fail2ban.log на предмет загулу fail2ban. Бо як фантазія буде не чітка, то під роздачу можуть попасти пересічні громадяни;).
А ну і головне – нащо це все? Коли на всі запити відповідь давати, то зламається “давати”. Звичайно щоб звільнити процесорний час та інші суміжні ресурси для більш доцільних задач ніж обслуговування рагулів).
За конфіг дякую – є такі павуки, що по 7 запитів в секунду валять. fail2ban тут доречний. Якраз лише він, бо айпі павука може мінятися, а постійно зайве навантаження не вмоніториш.
В мене ніби fail2ban встановлений, але як він сконфігурований, чи ні – не знаю, треба розбиратися як він працює.