Есть у меня jail.local, после трех неудачных попыток войти в веб-интерфес phpmyadmin блокируется доступ к серверу:
[phpmyadmin]
enabled = true
maxretry = 3
port = http,https
filter = phpmyadmin
logpath = /var/log/apache2/phpmyadmin/access.log
action = iptables-multiport[name=phpmyadmin, port="http,https", protocol=tcp]
Все исправно работает. Решил я что нужно уведомить меня когда ктото попадет в бан-лист, для этого написал скрипт который сделает http-запрос do-req.sh:
#!/bin/bash
while getopts t: option
do
case $option in
;;
t)
TEXT=${OPTARG}
;;
esac
done
POST_DATA="{\""text"\":"\"$TEXT"\"}";
URL="http://localhost/fail";
wget -O- --header="Content-Type: application/json" --post-data $POST_DATA --no-check-certificate $URL;
Проверил, скрипт работает.
Далее в папке action.d я создал конфиг iptables-multiport-exec.conf:
[INCLUDES]
before = iptables-multiport.conf
[Definition]
actionban = /etc/fail2ban/scripts/do-req.sh -t ban_detected
[Init]
В jail.local изменил action:
action = iptables-multiport-exec[name=phpmyadmin, port="http,https", protocol=tcp]
Но, все это не работает, fail2ban запускается, записывает в бан лист ip-адреса, но доступ для них остается открыт.
Как правильно решить такую задачу? Как будто бы, не выполняется сценарий который описан здесь: before = iptables-multiport.conf