Fail2ban перенаправление

Я только что завершил настройку fail2ban на моем обратном прокси-сервере Centos. Я смог заставить его блокировать все запросы, если были выполнены определенные критерии (довольно просто).

Однако теперь я хотел бы перенаправлять оскорбительных пользователей, а не блокировать их. Я знаю, что это возможно, используя файл пользовательских действий, но я просто не могу заставить его работать правильно. Я хотел бы перенаправить либо на другой порт на сервере (может быть, запуск Apache с пользовательской веб-страницей, указывающей, почему они были перенаправлены), либо на другой веб-сайт полностью.

Какие-нибудь мысли? Вот моя попытка перенаправления на другой порт (намерение состояло в том, чтобы перенаправить нарушающих пользователей на порт 8080 на том же сервере). Действие называется firewall-redirect, и оно было получено из firewallcmd-ipset.

# Fail2Ban action file for firewall-cmd/ipset
#
# This requires:
# ipset (package: ipset)
# firewall-cmd (package: firewalld)
#
# This is for ipset protocol 6 (and hopefully later) (ipset v6.14).
# Use ipset -V to see the protocol and version.
#
# IPset was a feature introduced in the linux kernel 2.6.39 and 3.0.0 kernels.
#
# If you are running on an older kernel you make need to patch in external
# modules.

[INCLUDES]

before = iptables-common.conf

[Definition]

actionstart = ipset create fail2ban-<name> hash:ip timeout <bantime>
              firewall-cmd --add-forward-port=port=443:proto=tcp:toport=8080 -m set --match-set fail2ban-<name> src

actionstop = firewall-cmd --remove-forward-port=port=443:proto=tcp:toport=8080 -m set --match-set fail2ban-<name> src
             ipset flush fail2ban-<name>
             ipset destroy fail2ban-<name>

actionban = ipset add fail2ban-<name> <ip> timeout <bantime> -exist

actionunban = ipset del fail2ban-<name> <ip> -exist

[Init]

# Option:  chain
# Notes    specifies the iptables chain to which the fail2ban rules should be
#          added
# Values:  [ STRING ]
#
chain = INPUT_direct

# Option: bantime
# Notes:  specifies the bantime in seconds (handled internally rather than by fail2ban)
# Values:  [ NUM ]  Default: 600

bantime = 600

# DEV NOTES:
#
# Author: Edgar Hoch and Daniel Black
# firewallcmd-new / iptables-ipset-proto6 combined for maximium goodness

Кроме того, вот фрагмент ошибки, которую я вижу в файле fail2ban.log. Я понимаю, что это ошибка, я просто не знаю, как это исправить.:-)

2015-06-01 09:49:05,548 fail2ban.action         [11334]: ERROR   ipset create fail2ban-apache-gpd_flood hash:ip timeout 3600
firewall-cmd --add-forward-port=port=443:proto=tcp:toport=8080 -m set --match-set fail2ban-apache-gpd_flood src -- stdout: ''
2015-06-01 09:49:05,548 fail2ban.action         [11334]: ERROR   ipset create fail2ban-apache-gpd_flood hash:ip timeout 3600
firewall-cmd --add-forward-port=port=443:proto=tcp:toport=8080 -m set --match-set fail2ban-apache-gpd_flood src -- stderr: 'usage: see firewall-cmd man page\nfirewall-cmd: error: unrecognized arguments: -m set --match-set fail2ban-apache-gpd_flood src\n'
2015-06-01 09:49:05,549 fail2ban.action         [11334]: ERROR   ipset create fail2ban-apache-gpd_flood hash:ip timeout 3600
firewall-cmd --add-forward-port=port=443:proto=tcp:toport=8080 -m set --match-set fail2ban-apache-gpd_flood src -- returned 2
2015-06-01 09:49:05,549 fail2ban.actions        [11334]: ERROR   Failed to start jail 'apache-gpd_flood' action 'firewallcmd-redirect': Error starting action

Заранее спасибо!

1 ответ

Решение

Я не уверен, но вот мои предложения:

  1. Здесь остается, что ipset не всегда устанавливается вместе с fail2ban. Не могли бы вы проверить, установлен ли у вас ipset?

  2. Ответ на /questions/622078/konfiguratsiya-fail2ban-dlya-nginx-s-ispolzovaniem-firewallcmd-v-centos-7/622084#622084 предлагает использовать iptables вместо firewalld. Если вы сделаете это, вы можете переписать actionban как:

    iptables -t nat -A PREROUTING -i eth0 -p tcp -s bannedip --dport 443 -j REDIRECT --to-port 8080 
    

    а также actionunban как:

    iptables -t nat -D PREROUTING -i eth0 -p tcp -s bannedip --dport 443 -j REDIRECT --to-port 8080 
    

    (см. здесь).

  3. Ваше bantime (3600) в настоящее время не совпадает с bantime в разделе Init вашей конфигурации. Смотрите дуэли fail2ban и ipset таймауты.

Другие вопросы по тегам