CrowdSec 1.2: изменения, дополнения, улучшения

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет, Хабр! Нам приходилось сталкиваться с мнением, что разработка — скучное занятие: cиди себе, копируй строчки кода с «Гитхаба» да компилируй готовое приложение. Но мы работаем по-другому: в каждую новую версию мы добавляем реально интересные и полезные фичи, которые разрабатываем сами. При создании CrowdSec 1.2 мы уделили много внимания плагинам уведомлений, добавили новые баунсеры и полностью переработали механизм консенсуса. Но обо всём по порядку. 

Плагины уведомлений

CrowdSec выявляет множество событий и сообщает о них администратору. Но мы решили, что этого недостаточно. Да и вообще не совсем правильно, когда все алёрты идут к админу, ведь он иногда должен спать и есть. Тем более что есть множество замечательных систем и сервисов, заточенных на сбор и обработку самых разных уведомлений. 

В связи с этим обратите внимание на новую функцию CrowdSec: теперь система может уведомлять сторонние службы о событии или принятом решении. Конкретный вариант поведения настраивается на уровне профиля.

В версии 1.2 появилась встроенная поддержка Splunk, Elasticsearch и Slack, а общий модуль HTTP push позволяет взаимодействовать практически с любым сервисом, который предоставляет HTTP-эндпоинт.

Таким образом, вы можете дополнить существующую экосистему приложений безопасности бесценными функциями обнаружения CrowdSec. Например, оповещения и решения могут отправляться непосредственно в каналы Slack, а в качестве более продвинутого решения можно направить эту информацию в Splunk или даже в базу Elasticsearch. Информация о кибервоздействиях и принятых системой решениях позволит командам SecOps быстро обнаруживать атаки и реагировать на них.

Пример оповещения Crowdsec о принятом решении. Источник здесь и далее: CrowdSec
Пример оповещения Crowdsec о принятом решении. Источник здесь и далее: CrowdSec

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

Добиться этой цели нам позволило использование плагинов Go и высокопроизводительного open-source-протокола запросов-ответов gRPC. 

Благодаря этому выбору пользовательские плагины уведомлений можно подготовить вне экосистемы CrowdSec, причём необязательно писать их на Golang. Наши плагины уведомлений используют шаблоны Go в сочетании со Sprig. Это даёт обширные возможности для преобразования и форматирования событий и оповещений. 

И ещё: мы продолжаем активно работать над развитием этих функций, так что следите за новыми итерациями и не стесняйтесь делиться своими отзывами и сообщать нам о своих потребностях. Для нас важно знать мнение наших пользователей. 

Чтобы начать знакомство с плагинами оповещений, изучите документацию.

Новые баунсеры

В версии CrowdSec 1.2 появились новые баунсеры Cloudflare и Nginx. Они доступны в виде пакетов в нашем репозитории.

Баунсер Cloudflare:— синхронизирует решения, принимаемые CrowdSec, с брандмауэром CloudFlare;— управляет настройками для нескольких пользователей, нескольких учётных записей, нескольких зон;— поддерживает решения по IP, стране и AS. 

Баунсер опрашивает CrowdSec Local API на предмет новых решений, а затем выполняет вызовы Cloudflare API для обновления списков IP-адресов и правил брандмауэра в зависимости от принятого решения. Подробности — в документации.

Баунсер Nginx использует API nginx lua, а именно access_by_lua_file. Новые/неизвестные IP проверяются с помощью crowdsec API, и если запрос должен быть заблокирован, пользователю возвращается HTTP 403.

Внутри баунсера используется crowdsec lua lib. Подробности — опять-таки в документации.

Консенсус v.2

Эффективность работы CrowdSec во многом строится на использовании глобальной базы данных репутации. Но у всех баз репутации IP-адресов есть проблема: они страдают от ложных срабатываний и допускают возможность «отравления», когда из-за злонамеренных действий в базу попадают легитимные адреса. Это делает базы репутации менее надёжными, а то и вовсе бесполезными.

Понимая эту проблему, мы в CrowdSec поставили перед собой задачу создать решение, которое будет полностью надёжным, не допуская ложных срабатываний и возможности отравления. Первым вариантом решения стало добавление в базу репутации только IP-адресов, собранных из наших ханипотов. Только так мы могли быть уверены в надёжности информации.

Вступление в новый консенсус

Уже тогда было понятно, что одних ханипотов недостаточно, особенно с учётом того, что сообщество наших пользователей делится сведениями о тысячах вредоносных IP, с которых производятся атаки. Игнорировать эти ценные сведения мы не могли, поэтому разработали систему репутации источников. С её помощью мы получаем некоторые гарантии надёжности собранных сообществом сигналов. Вот как это работает. 

Каждый пользователь или «наблюдатель» получает рейтинг доверия или репутацию, основанную на различных критериях, например:— регулярность участия наблюдателя в обмене сигналами или IP-адресами с CrowdSec;— последовательность передаваемой информации в сравнении с данными других пользователей и консолидированной статистикой CrowdSec;— корреляция общих данных с нашими ханипотами CrowdSec и другими наблюдателями с высокой репутацией;— перекрёстная проверка с помощью сторонних сервисов: мы считаем дополнение базы консенсуса информацией из других источников хорошей практикой, поскольку это позволяет взглянуть на мир шире.

Наконец, мы также принимаем во внимание номера AS (автономных систем), связанные с IP. Некоторые из диапазонов адресов уже хорошо известны как источник постоянного агрессивного поведения.

Просмотр сведений об IP-адресе в нашей новой веб-консоли
Просмотр сведений об IP-адресе в нашей новой веб-консоли

CrowdSec полагается исключительно на сигналы пользователей с высокой репутацией, чтобы убедиться, что база IP не содержит ложных срабатываний и отравленных IP. Цель состоит в том, чтобы резко повысить стоимость и сложность участия недоброжелательного пользователя в консенсусе и сделать нашу базу данных надёжной.

Мы очень строго относимся к тому, какие IP мы распространяем среди сообщества. Например, из 700 000+ IP-адресов в нашей базе данных только 2% попадут в чёрный список сообщества. Качество данных — наше всё!

Сведения о действиях вредоносного IP-адреса в нашей новой веб-консоли
Сведения о действиях вредоносного IP-адреса в нашей новой веб-консоли

Важное о консенсусе

1. Консенсус — ключ к нашему общему успеху. Это всего лишь вторая итерация, а дальше будет больше. Наша конечная цель — поделиться с сообществом сведениями о большей части IP, о которых нам сообщают, с достаточной степенью надёжности.

2. Алгоритмы консенсуса должны быть открытыми.Мы много обсуждали этот вопрос внутри компании и, если не углубляться в детали, мы, скорее всего, сделаем это. Однако наша цель — двигаться очень быстро и быть чрезвычайно гибкими. Это не всегда соответствует требованиям к качеству открытого кода. Потерпите ещё немного — скоро всё будет. 

Мы постоянно пишем код, тестируем его, исправляем, улучшаем и находим правильный баланс. Когда эта работа пройдёт испытание временем, мы выложим исходники в общий доступ, чтобы вы могли его комментировать, адаптировать, продвигать. 

Если вы обладаете опытом в этой области и хотите принять участие в процессе до того, как мы откроем исходный код, обращайтесь к нам, мы будем рады узнать о вашем опыте и поделиться с вами деталями внутреннего устройства текущей версии консенсуса.  Пишите нам на нашем сайте, GitHub или канале на Gitter.

О чём мы не рассказали

В CrowdSec 1.2 появилась поддержка новой веб-консоли. Красивые скриншоты со сведениями о вредоносном IP-адресе и его поведении сделаны именно в ней. Консоль уже перешла в стадию публичного бета-тестирования, и вы уже можете попробовать её в деле. Сделайте это скорее, чтобы не ограничивать себя командной строкой cscli. 

Источник: https://habr.com/ru/company/crowdsec/blog/585324/


Интересные статьи

Интересные статьи

Это небольшая заметка о моем форке QGit, о сделанных доработках, и о том, почему эти изменения, с высокой степенью вероятности, не попадут в кодовую базу основного репози...
Недавно на проекте интегрировал модуль CRM Битрикса c виртуальной АТС Ростелеком. Делал по стандартной инструкции, где пошагово показано, какие поля заполнять. Оказалось, следование ей не гаран...
Кто бы что ни говорил, но я считаю, что изобретение велосипедов — штука полезная. Использование готовых библиотек и фреймворков, конечно, хорошо, но порой стоит их отложить и создать ...
Cтатья будет полезна тем, кто думает какую выбрать CMS для интернет-магазина, сравнивает различные движки, ищет в них плюсы и минусы важные для себя.
Некоторое время назад мне довелось пройти больше десятка собеседований на позицию php-программиста (битрикс). К удивлению, требования в различных организациях отличаются совсем незначительно и...