- PVSM.RU - https://www.pvsm.ru -

CrowdSec — современная альтернатива Fail2Ban и коллективный иммунитет для Интернета

CrowdSec — современная альтернатива Fail2Ban и коллективный иммунитет для Интернета - 1
CrowdSec

Инструмент Fail2Ban [1] хорошо известен админам. Программа анализирует логи на сервере и подсчитывает количество попыток доступа с конкретных IP-адресов по указанным протоколам. В случае нарушения правила данный IP-адрес блокируется на заданный отрезок времени. Например, джейл для авторизации по SSH включён с дефолтными настройками 5 попыток авторизации за 10 минут, после чего происходит бан IP-адреса на 10 минут. Отличный способ отфильтровать мусорный трафик от разных сканеров и защита от DDoS.

Fail2Ban и SSHGuard [2] — лучшие инструменты в своей области. Однако новый опенсорсный проект CrowdSec [3] представляется интересной альтернативой. Это локальная замена Fail2Ban, а потенциально нечто большее — глобальная база репутации IP-адресов типа иммунной системы интернета.

CrowdSec позиционирует себя как «движок для автоматизации безопасности», использующий локальные правила для детектирования IP, а также общую базу вредоносных IP, которая составляется силами сообщества.

CrowdSec — современная альтернатива Fail2Ban и коллективный иммунитет для Интернета - 2

Разработчики CrowdSec называют следующие ключевые особенности:

  • обнаружение атак и реагирование на всех уровнях (логи могут лежать в любом месте);
  • простота в установке и обслуживании (установка с визардом в консоли);
    git clone https://github.com/crowdsecurity/crowdsec/releases/latest

    sudo ./wizard.sh -i

    CrowdSec — современная альтернатива Fail2Ban и коллективный иммунитет для Интернета - 3 [4]
    Установка CrowdSec. Визард в консоли помогает выбрать и предлагает, какие демоны/логи нужно мониторить, хотя возможна и последующая настройка через обычные конфиги

  • интеграция с другими компонентами (чтение логов и автоматическая блокировка нарушителей на уровне CDN);
  • общий доступ (опционально): метаданные можно отправлять в центральный API, так что данные о вредоносных IP-адресах получат все пользователи. Нужно подчеркнуть, что это опциональная фича, и никто не заставляет передавать метаданные в общий доступ;
  • лёгкий вес: автономная работа, минимум оперативной памяти и CPU;
  • возможность обработки «холодных» логов (из архива) для своеобразной симуляции;
  • предустановленные панели мониторинга.

Важно отметить, что за разработкой стоит французская компания, а не американская, что по нынешним временам является плюсом для приватности. Даже если выбрать вариант «коллективной работы» и делиться собранными данными, отправляются только три параметра: метка времени, IP-адреса нарушителей и политика, которую они нарушили.

Ещё один интересный момент — инструмент написан на языке программирования Go.

С архитектурной точки зрения система состоит из трёх основных компонентов:

  • постоянно работающая служба CrowdSec, которая отслеживает логи, атаки и т. д.;
  • инструмент командной строки, интерфейс для взаимодействия со службой;
  • модули интеграции (bouncers) с другими инструментами типа Cloudflare для реального обеспечения блокировки.

Вот как выглядит архитектура программы из документации [5]:

CrowdSec — современная альтернатива Fail2Ban и коллективный иммунитет для Интернета - 4

На данный момент разработано пять модулей интеграции [6] (bouncers):
cs-cloudflare-blocker [7], cs-custom-blocker [8] (пользовательские сценарии), cs-netfilter-blocker [9], cs-nginx-blocker [10] и cs-wordpress-blocker [11]. Например, модуль для Nginx сверяет каждый неизвестный IP-адрес с базой данных, прежде чем веб-сервер ответит на запрос или выдаст ошибку 403. Модуль Netfilter просто «добавляет» вредоносные IP-адреса в чёрный список nftables/ipset.

Для простоты настройки на сайте собраны коллекции [12] и конфигурации [13].

Коллекции — это, по сути, просто наборы парсеров и сценариев для разных ситуаций. Например, в коллекцию Nginx входит парсер логов nginx-logs [14] и базовые http-сценарии для определения типичных вредоносных ботов (агрессивный краулинг, сканирование/пробирование портов, чёрный список user-agent'ов [15], а также определение попыток проведения атаки path traversal [16]).

Полный список коллекций:

Один из вариантов работы с CrowdSec — через консольную программу cscli:

cscli metrics

Эта команда выдаёт основные метрики о работе парсеров, объёме обработанных логов, количестве обнаруженных и заблокированных угроз по каждой коллекции (перечень коллекций см. выше).

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

cscli ban list

CrowdSec — современная альтернатива Fail2Ban и коллективный иммунитет для Интернета - 5

Консольная утилита cscli поддерживает большой список [27] команд и параметров для подключения/удаления конфигураций, добавления новых правил блокировки и др.

Но кроме cscli, конфигурацию можно изменить и традиционным способом, путём редактирования текстового файла в формате YAML:

vi /etc/crowdsec/config/profiles.yaml

Естественно, кастомные сценарии тоже поддерживаются.

Что делает этот инструмент больше похожим на платформу, чем на утилиту, так это его многочисленные интеграции с другими инструментами. По крайней мере, разработчики программы ставят ставку именно на это и хотят построить бизнес на этой платформе. Они говорят [28] о «глобальной платформе IP-репутаций» и «поведенческом движке безопасности».

Сейчас компания пытается предложить пользователям платный доступ к «облачному API» и базе данных с репутацией IP-адресов, которая составляется совместными усилиями. При этом поставщики информации в эту базу освобождаются от оплаты, а платят только чистые потребители, которые не хотят делиться информацией из своих логов. Планируется два тарифных плана: premium и enterprise с услугами по поддержке, специальными служебными инструментами (типа развёртывания системы на несколько локаций из одного центрального места), применением дата-майнинга и машинного обучения (обнаружение тенденций в глобальных данных), более продвинутом анализе холодных логов (форензика, криминалистика, расследования — хотя данное направление бизнеса в Европе затруднено из-за закона GDPR).

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

CrowdSec — современная альтернатива Fail2Ban и коллективный иммунитет для Интернета - 6

Разработчики обращают внимание, что программа пока в бета-версии, но никаких проблем на продакшне ни у кого не возникало. Они также говорят, что программа на Go элементарно портируется на другие платформы вроде Windows и Mac.

По итогу сейчас это добротный опенсорсный инструмент, который можно использовать в качестве альтернативы старому доброму Fail2Ban. А со временем он может превратиться в нечто большее. Разработчики ставят цель в создании своеобразного «коллективного иммунитета», когда клетки организма (серверы) коллективно защищаются от атак, словно иммунная система.


На правах рекламы

Виртуальные серверы [29] с защитой от DDoS-атак и новейшим железом, серверы размещены в одном из лучших российских дата-центров — DataPro. Всё это про наши эпичные серверы. Максимальная конфигурация — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe! Поспешите заказать.

Автор: Александр

Источник [30]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/open-source/358892

Ссылки в тексте:

[1] Fail2Ban: https://www.fail2ban.org/wiki/index.php/Main_Page

[2] SSHGuard: https://www.sshguard.net/

[3] CrowdSec: https://github.com/crowdsecurity/crowdsec

[4] Image: https://habrastorage.org/webt/8l/xi/z5/8lxiz5r2rggzli6ttum9gi2onxa.gif

[5] документации: https://doc.crowdsec.net/

[6] пять модулей интеграции: https://hub.crowdsec.net/browse/#bouncers

[7] cs-cloudflare-blocker: https://hub.crowdsec.net/author/crowdsecurity/bouncers/cs-cloudflare-blocker

[8] cs-custom-blocker: https://hub.crowdsec.net/author/crowdsecurity/bouncers/cs-custom-blocker

[9] cs-netfilter-blocker: https://hub.crowdsec.net/author/crowdsecurity/bouncers/cs-netfilter-blocker

[10] cs-nginx-blocker: https://hub.crowdsec.net/author/crowdsecurity/bouncers/cs-nginx-blocker

[11] cs-wordpress-blocker: https://hub.crowdsec.net/author/crowdsecurity/bouncers/cs-wordpress-blocker

[12] коллекции: https://hub.crowdsec.net/browse/#collections

[13] конфигурации: https://hub.crowdsec.net/browse/#configurations

[14] nginx-logs: https://hub.crowdsec.net/author/crowdsecurity/configurations/nginx-logs

[15] чёрный список user-agent'ов: https://hub.crowdsec.net/author/crowdsecurity/configurations/http-bad-user-agent

[16] определение попыток проведения атаки path traversal: https://hub.crowdsec.net/author/crowdsecurity/configurations/http-path-traversal-probing

[17] apache2: https://hub.crowdsec.net/author/crowdsecurity/collections/apache2

[18] base-http-scenarios: https://hub.crowdsec.net/author/crowdsecurity/collections/base-http-scenarios

[19] iptables: https://hub.crowdsec.net/author/crowdsecurity/collections/iptables

[20] linux: https://hub.crowdsec.net/author/crowdsecurity/collections/linux

[21] modsecurity: https://hub.crowdsec.net/author/crowdsecurity/collections/modsecurity

[22] mysql: https://hub.crowdsec.net/author/crowdsecurity/collections/mysql

[23] naxsi: https://hub.crowdsec.net/author/crowdsecurity/collections/naxsi

[24] nginx: https://hub.crowdsec.net/author/crowdsecurity/collections/nginx

[25] postfix: https://hub.crowdsec.net/author/crowdsecurity/collections/postfix

[26] sshd: https://hub.crowdsec.net/author/crowdsecurity/collections/sshd

[27] большой список: https://doc.crowdsec.net/cscli/cscli_ban/

[28] говорят: https://crowdsec.net/2020/09/10/crowdsec-the-community-powered-firewall/

[29] Виртуальные серверы: https://vdsina.ru/cloud-servers?partner=habr171

[30] Источник: https://habr.com/ru/post/521518/?utm_source=habrahabr&utm_medium=rss&utm_campaign=521518