Sanu0074
@Sanu0074

Как заставить fail2ban во время бана выполнять bash-скрипт?

Есть у меня 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
  • Вопрос задан
  • 472 просмотра
Пригласить эксперта
Ответы на вопрос 1
Oxyd
@Oxyd
Linux enthusiast
actionban = /bin/sh -c /etc/fail2ban/scripts/do-req.sh -t ban_detected

Так не срабатывает?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы