Объявился тут дудосер, который усердно прощупывал сайты на предмет ошибок, и в логах были замечены портянки подобного:
[Tue Apr 26 22:40:57 2016] [error] [client x.x.x.x] Directory index forbidden by Options directive: /home/test/example/public_html/system/, referer: -1 [Tue Apr 26 22:40:57 2016] [error] [client x.x.x.x] Directory index forbidden by Options directive: /home/test/example/public_html/system/, referer: -1 or 1*57=57 [Tue Apr 26 22:40:57 2016] [error] [client x.x.x.x] Directory index forbidden by Options directive: /home/test/example/public_html/system/, referer: -1 or 57=0 [Tue Apr 26 22:40:57 2016] [error] [client x.x.x.x] Directory index forbidden by Options directive: /home/test/example/public_html/system/, referer: -1' or 5=5 or '32'='32 [Tue Apr 26 22:40:57 2016] [error] [client x.x.x.x] Directory index forbidden by Options directive: /home/test/example/public_html/system/, referer: -1' or '32'='0 [Tue Apr 26 22:40:57 2016] [error] [client x.x.x.x] Directory index forbidden by Options directive: /home/test/example/public_html/system/, referer: -1" or 5=5 or "80"="80 [Tue Apr 26 22:40:57 2016] [error] [client x.x.x.x] Directory index forbidden by Options directive: /home/test/example/public_html/system/, referer: -1" or "80"="0 [Tue Apr 26 22:40:57 2016] [error] [client x.x.x.x] Directory index forbidden by Options directive: /home/test/example/public_html/system/, referer: IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2600000 ,SHA1(0xDEADBEEF)),SLEEP(5))/*'XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2600000,SHA1(0xDEADBEEF)),SLEEP(5)))OR'|"XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2600000,SHA1(0xDEADBEEF)),SLEEP(5)))OR"*/ [Tue Apr 26 22:40:57 2016] [error] [client x.x.x.x] Directory index forbidden by Options directive: /home/test/example/public_html/system/, referer: 1 and sleep(4) [Tue Apr 26 22:40:58 2016] [error] [client x.x.x.x] Directory index forbidden by Options directive: /home/test/example/public_html/system/, referer: 1 or (sleep(4)+1) limit 1 --
Очевидно, что прощупывают на предмет sql-инъекций.
Поскольку из коробки fail2ban в панели vesta cp не имеет включенных правил для блокировки подобных запросов, и погуглив рунет на предмет готовых велосипедов (и не найдя подобного), было решено написать следующие правила:
в файл /etc/fail2ban/jail.local дописываем следующий джейл:
[apache-iptables] enabled = true filter = apache-forbidden action = vesta[name=WEB] port = http,https logpath = /var/log/httpd/domains/*error.log maxretry = 10
а в папке /etc/fail2ban/filter.d создаем файл apache-forbidden.conf со следующим содержимым:
# Fail2Ban apache-forbidden filter [INCLUDES] before = apache-common.conf [Definition] failregex = [[]client <HOST>[]] Directory index forbidden by Options directive: /\S*$ ignoreregex =.
После этого рестартим фейл2бан:
service fail2ban restart
и смотрим статус командой fail2ban-client status :
Status |- Number of jail: 6 `- Jail list: apache-iptables, dovecot-iptables, exim-iptables, ssh-iptables, vesta-iptables, vsftpd-iptables
Подробный статус по каждому джейлу:
fail2ban-client status apache-iptables