Нужен ли firewalld для fail2ban?

Вопрос или проблема

Когда я устанавливаю fail2ban, он также устанавливает firewalld. После перезагрузки firewalld также запускается, применяя настройки на iptables (блокируя большинство соединений, кроме ssh). Это расстраивает, так как я хочу разрешить https и http. Должен ли я удалить firewalld, отключить его или изменить секцию service/init.d? Откуда firewalld получает команды, такие как приведенные ниже.

REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
#####  гораздо позже в конфигурации #########
Chain IN_public_allow (1 reference)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW

Каков лучший подход к этому?

Кстати, где fail2ban хранит заблокированные IP и как он применяет ограничения?

Нет, вы также можете использовать ufw, если вы на debian или Ubuntu, или iptables.

В документации fail2ban вы увидите, что можете просмотреть заблокированные ip с помощью `fail2ban-client status “jailname”
Вы, вероятно, на redhat или распределении, основанном на redhat, например, centos.

Вы можете изменить конфигурацию fail2ban, чтобы использовать iptables напрямую.

В /etc/fail2ban/jail.local

[DEFAULT]

ignoreip = 127.0.0.1/8
bantime = 10m
findtime = 10m
maxretry = 3
backend = auto
usedns = warn
destemail = root@localhost
sendername = Fail2Ban
banaction = iptables-multiport
mta = sendmail
protocol = tcp
chain = INPUT
action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
action_mw = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
            %(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s", sendername="%(sendername)s"]
action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
            %(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s", sendername="%(sendername)s"]
action = %(action_)s

А затем перезапустите fail2ban с помощью systemctl restart fail2ban.
Не удаляйте firewalld, это может сломать что-то, просто остановите и отключите службу с помощью systemctl.

Затем сбросьте все цепочки iptables с помощью iptables -F, чтобы избавиться от цепочек firewalld, и снова перезапустите fail2ban.

Fail2ban использует так называемые тюрьмы для применения ограничений, он проверяет логи конкретной службы (например, ssh) и затем блокирует ip, которые делают много неудачных попыток аутентификации. Тюрьмы используют фильтры, которые являются регулярными выражениями для поиска злонамеренного поведения в логах.
Смотрите здесь для получения дополнительной информации об этом
https://github.com/fail2ban/fail2ban/wiki/How-fail2ban-works


Вы также можете легко разрешить http и https с помощью firewalld

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Последний вариант — удалить fail2ban и firewalld с помощью пакета дистрибутива, который вы использовали, и установить его вручную
https://github.com/fail2ban/fail2ban/wiki/How-to-test-newer-fail2ban-version-resp.-use-fail2ban-standalone-instance

Мое решение на Amazon Linux 2023 (AL2023) заключалось в том, чтобы

  dnf install -y fail2ban
  ...выполнить некоторую ручную настройку касательно тюрем, в частности установить backend = systemd в /etc/fail2ban/jail.conf и добавить определения тюрем под /etc/fail2ban/jail.d
  systemctl disable firewalld
  systemctl enable fail2ban
  systemctl start fail2ban

Это обходит стандартное включение firewalld, что приводит к ограничениям, упомянутым автором вопроса. Зависимость fail2ban от firewalld кажется ненужной, когда служба fail2ban работает вполне нормально с отключенным firewalld.

Ответ или решение

Нужен ли Fail2Ban firewalld?

Введение

При установке Fail2Ban, возможно автоматическое добавление firewalld, которая начинает блокировать неподходящие соединения на вашем сервере. Данный процесс может вызвать определенные неудобства, особенно если вы ожидаете, что заодно будут разрешены такие протоколы, как HTTP и HTTPS. В данной статье будет рассмотрено, как правильно управлять этими службами и оптимально настраивать безопасность вашего сервера.

Необходимость Firewalld для Fail2Ban

Ответ на вопрос: Fail2Ban не требует firewalld для своего функционирования. Вы можете использовать Fail2Ban с другими средствами управления сетевыми фильтрами, такими как iptables или ufw, в зависимости от выбранного дистрибутива Linux. В Red Hat и его производных, таких как CentOS, firewalld является дефолтным инструментом, и его установка происходит автоматически вместе с Fail2Ban, что может вызвать некоторые путаницы.

Управление Firewalld

Если вам необходимо , чтобы Fail2Ban работал без firewalld, рекомендуется предпринять следующие шаги:

  1. Отключение Firewalld:
    Используйте команду:

    systemctl stop firewalld
    systemctl disable firewalld

    Это позволит избежать конфликтов между правилами firewalld и правилами, создаваемыми Fail2Ban.

  2. Конфигурация Fail2Ban:
    Вы можете изменить конфигурацию Fail2Ban, чтобы он использовал iptables напрямую. Для этого нужно внести изменения в файл /etc/fail2ban/jail.local:

    [DEFAULT]
    banaction = iptables-multiport
    chain = INPUT

    После внесения изменений перезапустите Fail2Ban:

    systemctl restart fail2ban
  3. Настройка разрешений:
    Если вы все же хотите использовать firewalld, можно легко настроить необходимые разрешения через команды:

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload

    Это откроет порты для HTTP и HTTPS, что позволит вам обходить проблемы.

Управление баном IP-адресов

Fail2Ban хранит заблокированные IP-адреса в своей внутренней базе данных и использует так называемые "тюрьмы" (jails) для управления ими. Каждая "тюрьма" соответствует определенному сервису и использует фильтры для поиска злоумышленников путем анализа логов.

Для управления заблокированными IP-адресами используйте команду:

fail2ban-client status "jailname"

Фильтры работают на основе регулярных выражений, которые определяют, что считать подозрительным поведением. Fail2Ban также предоставляет возможность отправлять уведомления при блокировке.

Заключение

Таким образом, можно утверждать, что firewalld не является обязательным для нормального функционирования Fail2Ban. Вы имеете возможность выбрать между различными средствами управления системой фильтрации на своем сервере. Если вы сталкиваетесь с ограничениями со стороны firewalld, удалите его или настройте соответствующие правила. Это позволит вам эффективно защищать свой сервер от злоумышленников, не ограничивая функционал.

Следуя данным рекомендациям, вы сможете оптимизировать настройки защиты вашего сервера, сохраняя удобство работы и функциональность всех необходимых сервисов.

Оцените материал
Добавить комментарий

Капча загружается...