Fail2Ban установлен в HOST для ограничение DOCKER

Здравствуйте дорогие друзья! Как уже писал в заголовке есть хост на котором установлен Fail2Ban, есть настройки jail.local:

[nginx-noscript] 
 
enabled = true 
chain = DOCKER-USER 
filter = nginx-noscript 
port = http, https 
logpath = /log/nginx/access.log 
bantime = 365 
maxretry = 3 
action = iptables-allports[]

В логах пишет что работает в поте лица и успешно банит:

fail2ban.jail           [11559]: INFO    Jail 'nginx-noscript' started
fail2ban.filter         [11559]: INFO    [nginx-noscript] Found 192.168.1.47
fail2ban.actions        [11559]: NOTICE  [nginx-noscript] Ban 192.168.1.47

А вот при повторной попытке зайти на деле бан не останавливает:

fail2ban.filter         [11559]: INFO    [nginx-noscript] Found 192.168.1.47
fail2ban.filter         [11559]: INFO    [nginx-noscript] Found 192.168.1.47
fail2ban.filter         [11559]: INFO    [nginx-noscript] Found 192.168.1.47
fail2ban.filter         [11559]: INFO    [nginx-noscript] Found 192.168.1.47
fail2ban.actions        [11559]: NOTICE  [nginx-noscript] 192.168.1.47 already banned

Соответственно уведомляет об уже забаненом IP и пропускает. Дело в том что сам NGINX находится на хосте и в DOCKER контейнере. В таблице появляется запись но вероятно не в той цепочке:

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    f2b-nginx-noscript  tcp  --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy DROP)
num  target     prot opt source               destination         
1    DOCKER-USER  all  --  0.0.0.0/0            0.0.0.0/0           
2    DOCKER-ISOLATION-STAGE-1  all  --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
4    DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
5    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
6    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
7    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
8    DOCKER     all  --  0.0.0.0/0            0.0.0.0/0           
9    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
10   ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain DOCKER (2 references)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  0.0.0.0/0            172.19.0.4           tcp dpt:80

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
num  target     prot opt source               destination         
1    DOCKER-ISOLATION-STAGE-2  all  --  0.0.0.0/0            0.0.0.0/0           
2    DOCKER-ISOLATION-STAGE-2  all  --  0.0.0.0/0            0.0.0.0/0           
3    RETURN     all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-ISOLATION-STAGE-2 (2 references)
num  target     prot opt source               destination         
1    DROP       all  --  0.0.0.0/0            0.0.0.0/0           
2    DROP       all  --  0.0.0.0/0            0.0.0.0/0           
3    RETURN     all  --  0.0.0.0/0            0.0.0.0/0           

Chain DOCKER-USER (1 references)
num  target     prot opt source               destination         
1    RETURN     all  --  0.0.0.0/0            0.0.0.0/0           

Chain f2b-nginx-noscript (1 references)
num  target     prot opt source               destination         
1    REJECT     all  --  192.168.1.47         0.0.0.0/0            reject-with icmp-port-unreachable
2    RETURN     all  --  0.0.0.0/0            0.0.0.0/0           

Были испробованы такие методы как:

chain = INPUT
chain = FORWARD

Результат получается, вернее результата нет. Будте любезны, подскажите как еще можно решить эту проблему.


Ответы (2 шт):

Автор решения: sebres

Установить chain для banning action таким способом невозможно - параметры из jail больше не передаются если action тоже переопределена в jail.local.
См. jail.conf#L174 (action_) и jail.conf#L216 (action).
Переписывая action (или action_) интерполяция параметра %(chain)s отсутвует и передача параметра более не происходит, т.е. установка chain = DOCKER-USER и д.р. не работают в итоговой конфигурации (action использует собственные настройки по умолчанию, т.е. INPUT для chain).

Т.е. либо:

chain = DOCKER-USER 
# need to set banaction (not action):
banaction = iptables-allports

либо:

# need to supply all parameters directly:
action = iptables-allports[chain=DOCKER-USER, ...другие-параметры-необходимые-для-action...]

Проверить что получилось, можно с помощью:
fail2ban-client -d | grep 'nginx-noscript.*action'
или
fail2ban-client --dp

→ Ссылка
Автор решения: Mr.Mox

Для тех кто столкнулся с данной проблемой вопрос решается путем добавления в /etc/fail2ban/action.d/iptables-allports.conf

[Init] 
port = http, https 
protocol = tcp 
chain = DOCKER-USER

Соответственно в jail.conf

action = iptables-allports[]
→ Ссылка