Get Started
Install the Agent
Debian/Ubuntu
RHEL/CentOS/Amazon Linux
Debian (Official)
Docker
FreeBSD
Tarball
-
Debian/Ubuntu
$ curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash$
sudo apt-get install crowdsec
Copy code
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bashsudo apt-get install crowdsec
-
RHEL/CentOS/Amazon Linux
$ curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.rpm.sh | sudo bash$
sudo yum install crowdsec
Copy code
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.rpm.sh | sudo bashsudo yum install crowdsec
-
Debian (Official)
$ sudo apt-get install crowdsec
Copy code
sudo apt-get install crowdsec -
Docker
$ docker run -d -v acquis.yaml:/etc/crowdsec/acquis.yaml -e COLLECTIONS=»crowdsecurity/sshd» -v /var/log/auth.log:/var/log/auth.log -v /path/mycustom.log:/var/log/mycustom.log —name crowdsec crowdsecurity/crowdsec
Copy code
docker run -d -v acquis.yaml:/etc/crowdsec/acquis.yaml -e COLLECTIONS=»crowdsecurity/sshd» -v /var/log/auth.log:/var/log/auth.log -v /path/mycustom.log:/var/log/mycustom.log —name crowdsec crowdsecurity/crowdsec -
FreeBSD
$ pkg install crowdsec
Copy code
pkg install crowdsec -
Tarball
$ wget -qO — https://github.com/crowdsecurity/crowdsec/releases/latest/download/crowdsec-release.tgz | tar zxvf -$
cd crowdsec-v* && sudo ./wizard.sh -i
Copy code
wget -qO — https://github.com/crowdsecurity/crowdsec/releases/latest/download/crowdsec-release.tgz | tar zxvf —cd crowdsec-v* && sudo ./wizard.sh -i
Install a Bouncer
Firewall: Debian/Ubuntu
Firewall: RHEL/CentOS/Amazon Linux
Custom: Debian/Ubuntu
Custom: RHEL/CentOS/Amazon Linux
AWS/GCP
Nginx
Wordpress
-
Firewall: Debian/Ubuntu
$ curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash$
sudo apt install crowdsec-firewall-bouncer crowdsec-firewall-bouncer-iptables
Copy code
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bashsudo apt install crowdsec-firewall-bouncer crowdsec-firewall-bouncer-iptables
-
Firewall: RHEL/CentOS/Amazon Linux
$ curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.rpm.sh | sudo bash$
sudo yum install crowdsec-firewall-bouncer-iptables
Copy code
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.rpm.sh | sudo bashsudo yum install crowdsec-firewall-bouncer-iptables
-
Custom: Debian/Ubuntu
$ curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash$
sudo apt install crowdsec-custom-bouncer
Copy code
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bashsudo apt install crowdsec-custom-bouncer
-
Custom: RHEL/CentOS/Amazon Linux
$ curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.rpm.sh | sudo bash$
sudo yum install crowdsec-custom-bouncer
Copy code
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.rpm.sh | sudo bashsudo yum install crowdsec-custom-bouncer
-
AWS/GCP
https://hub.crowdsec.net/author/fallard84/bouncers/cs-cloud-firewall-bouncer
Copy code
https://hub.crowdsec.net/author/fallard84/bouncers/cs-cloud-firewall-bouncer -
Nginx
$ wget -qO — https://github.com/crowdsecurity/cs-nginx-bouncer/releases/latest/download/cs-nginx-bouncer.tgz | tar xvzf -$
cd cs-nginx-bouncer-v*/$
sudo ./upgrade.sh && sudo systemctl restart nginx
Copy code
wget -qO — https://github.com/crowdsecurity/cs-nginx-bouncer/releases/latest/download/cs-nginx-bouncer.tgz | tar xvzf —cd cs-nginx-bouncer-v*/
sudo ./upgrade.sh && sudo systemctl restart nginx
-
Wordpress
Click here to download the official plugin
Copy code
Click here to download the official plugin
<?xml version=»1.0″ encoding=»UTF-8″?>AFEB9F8A-65D8-49C4-BF47-4958C484D8C8
Download v1.1.1
Generic *nix & containers :¶
- Some users download the tarball directly and
- Some users use the docker hub image
- And the most adventurous might want to
- And some might even want to
- Or use it with docker-compose
Required resources
Crowdsec agent itself is rather light, and in a small to medium setup should use less than 100Mb of memory.
During intensive logs processing, CPU is going to be the most used resource, and memory usage shouldn’t really grow.
However, running metabase (the dashboard deployed by ) requires 1-2Gb of RAM.
Install on debian using crowdsec repository
On debian and ubuntu, packages are hosted on packagecloud.io.
Crowdsec distributes their own pragmatic debian packages that closely follow the development stream (packages are automatically published on release), and are suitable for those that want to keep up with the latest changes of crowdsec.
Баланс защиты и производительности
У нашего плагина есть два режима поддержания связи с серверной частью CrowdSec.
Первый режим по умолчанию — «Live mode». Это режим, в котором баунсер при обращении к сайту нового пользователя в режиме реального времени обращается к API сервера для получения информации. В том числе, в этом режиме, IP посетителя сайта проверяется и по общему бан-листу CrowdSec, который генерируется с нашей стороны как разработчиков. После этого сервер передает информацию обратно баунсеру в плагине и он уже банит/не банит пользователя, или показывает ему капчу.
Этот мод обеспечивает наибольшую защиту вашего сайта, но, как можно понять, влияет на производительность сайта и, при большом трафике, создает нагрузку на серверную часть CrowdSec, генерируя поток трафика.
Если подобные постоянные запросы к серверу для вас неприемлемы, то вам подойдет второй вариант работы плагина, на который его можно переключить.
Он называется «Stream Mode» — и работает по обратному принципу, нежели «Live Mode». При включении режима поточной работы, главным инициатором выгрузки бан-листа становится серверная часть, которая с определенной периодичностью просто обновляет списки на стороне баунсера, позволяя тому работать с большей автономией.
Режим стриминга не только снижает нагрузку на все участки описываемой нами системы, но и исключает серьезное влияние на производительность сайта со стороны баунсера, а также почти не создает интернет-трафика. Такой мод подойдет для администраторов и веб-мастеров крупных ресурсов, либо же ресурсов, размещенных на не слишком мощном хостинге.
Если вы используете CDN, обратный прокси или балансировщик нагрузки, вы сможете указать в настройках баунсера диапазоны IP-адресов этих устройств. Это позволит вам проверять IP-адреса ваших пользователей. Для других IP-адресов баунсер не будет доверять заголовку X-Forwarded-For.
Установка CrowdSec
С установкой CrowdSec все просто. Есть несколько вариантов:
- Для deb дистрибутивов есть репозиторий.
- Для всех остальных бинарники с инсталлятором. Rpm пакета, к сожалению, нет.
- Сборка и установка из исходников.
- Установка в docker.
Я буду ставить на Centos 8, так что скачаю бинарники и установлю инсталлятором. Быстрее было бы запустить в докере, но мне не нравится, что туда надо мапить логи. Да и в целом не вижу смысла в установке подобного софта через докер. Это же не разработка, когда надо по 5 релизов в день с автотестами выкатывать. Один раз поставил и пользуешься, иногда обновляешь. Что бинарники, что контейнер обновить одно и то же время надо.
Для Debian / Ubuntu устанавливаем CrowdSec так:
# wget -qO — https://s3-eu-west-1.amazonaws.com/crowdsec.debian.pragmatic/crowdsec.asc |sudo apt-key add — && sudo apt-add-repository «https://s3-eu-west-1.amazonaws.com/crowdsec.debian.pragmatic/$(lsb_release -cs) $(lsb_release -cs) main»
# apt update
# apt install crowdsec
В Centos установка выглядит следующим образом. Идем в репозиторий https://github.com/crowdsecurity/crowdsec/releases и качаем последнюю версию.
# wget https://github.com/crowdsecurity/crowdsec/releases/download/v1.0.9/crowdsec-release.tgz
# tar xvzf crowdsec-release.tgz
# cd crowdsec-v1.0.9/
!!!!!!ВАЖНО ПОРТ 8080 ДОЛЖЕН БЫТЬ СВОБОДЕН
Запускаем инсталлятор:
# ./wizard.sh -i
Он сразу же определил основные сервисы, за логами которых будет следить. В моем случае это системные логи linux, лог авторизаций ssh и логи nginx. Далее он уточнит, какие именно лог файлы будет парсить. По умолчанию он проверяет дефолтные директории. Если что-то не нашел, то потом в конфигурационных файлах сможете вручную добавить нужные файлы с логами.
Далее нужно будет выбрать преднастроенные конфиги для различных служб. Они есть для наиболее популярных сервисов. Тут все по аналогии с Fail2ban сделано. В моем случае конфиги для веб сервера nginx, сайтов на wordpress, системных логов linux и sshd:
- crowdsecurity/nginx
- crowdsecurity/sshd
- crowdsecurity/wordpress
- crowdsecurity/linux
Далее установщик сообщит, что создал конфиг с белым списком адресов, включающим все серые подсети.
Дальше вам будет сказано, что ни одного bouncer не установлено, так что ничего реально заблокировано не будет.
для выполнения каких-то действий, требуются отдельные компоненты системы в виде bouncers. Далее я расскажу, как их ставить и настраивать.
На этом установка CrowdSec закончена. В конце вы увидите список основных cli команд для взаимодействия с локальной службой.
Можете их позапускать и посмотреть, как все это работает. Сама установка CrowdSec выполнена. Переходим к настройке.
Баланс защиты и производительности
У нашего плагина есть два режима поддержания связи с серверной частью CrowdSec.
Первый режим по умолчанию — «Live mode». Это режим, в котором баунсер при обращении к сайту нового пользователя в режиме реального времени обращается к API сервера для получения информации. В том числе, в этом режиме, IP посетителя сайта проверяется и по общему бан-листу CrowdSec, который генерируется с нашей стороны как разработчиков. После этого сервер передает информацию обратно баунсеру в плагине и он уже банит/не банит пользователя, или показывает ему капчу.
Этот мод обеспечивает наибольшую защиту вашего сайта, но, как можно понять, влияет на производительность сайта и, при большом трафике, создает нагрузку на серверную часть CrowdSec, генерируя поток трафика.
Если подобные постоянные запросы к серверу для вас неприемлемы, то вам подойдет второй вариант работы плагина, на который его можно переключить.
Он называется «Stream Mode» — и работает по обратному принципу, нежели «Live Mode». При включении режима поточной работы, главным инициатором выгрузки бан-листа становится серверная часть, которая с определенной периодичностью просто обновляет списки на стороне баунсера, позволяя тому работать с большей автономией.
Режим стриминга не только снижает нагрузку на все участки описываемой нами системы, но и исключает серьезное влияние на производительность сайта со стороны баунсера, а также почти не создает интернет-трафика. Такой мод подойдет для администраторов и веб-мастеров крупных ресурсов, либо же ресурсов, размещенных на не слишком мощном хостинге.
Если вы используете CDN, обратный прокси или балансировщик нагрузки, вы сможете указать в настройках баунсера диапазоны IP-адресов этих устройств. Это позволит вам проверять IP-адреса ваших пользователей. Для других IP-адресов баунсер не будет доверять заголовку X-Forwarded-For.
CrowdSec vs Fail2ban
Для начала рассмотрим основные отличия CrowdSec от Fail2ban:
- Crowdsec более производительный, так как написан на Go, в отличие от Fail2ban, который на Python.
- У crowdsec современный yaml формат конфигов.
- В качестве парсера лог файлов crowdsec использует фильтры grok, хорошо известные тем, кто активно использует elk stack. Мне лично этот фильтр нравится. Я научился на нем писать правила парсинга.
- У crowdsec есть готовая web панель, с помощью которой можно управлять защитой и просматривать статистику.
- Есть готовые контейнеры docker, которые призваны упростить установку и запуск. На практике особого упрощения нет, так как надо прокидывать в контейнеры все лог файлы для анализа. Тем не менее, кому актуален докер, не надо будет самому делать контейнеры.
- CrowdSec собирает глобальную статистику по заблокированным ip адресам и предоставляет возможность настроить у себя списки блокировки на основе этой статистики. Как по мне, инициатива сомнительная, так как получится то же самое, что и с подобными списками в почте. Потом употеешь себя из этих списков убирать или разбираться, почему кто-то из клиентов не может получить доступ к твоему сервису. Более того, через ботнет доверенных хостов crowdsec можно умышленно банить какие-то ip адреса.
- С локальной службой защиты можно взаимодействовать через встроенное API, что открывает безграничные возможности для интеграции.
- Из коробки работает экспорт всех основных метрик в формате Prometheus. То есть мониторинг вообще настраивать не надо, он сразу готов.
По сравнению видно, что авторы CrowdSec взяли тот же принцип анализа лог файлов, что и Fail2ban, но развили его и адаптировали под современные реалии.
Мониторинг
Мониторинг — это всегда ключевой момент в построении периметра безопасности и обеспечении работы систем. И кроме классического «tail the logfile» мы предлагаем использовать еще два инструмента — metabase dashboard и метрики prometheus.
Панель мониторинга
Вездесущий cscli позволяет задеплоить нашу панель на основе metabase и docker.
Для начала рекомендуем ознакомиться с официальной документацией по установке docker.
cscli dashboard setup разворачивает новую панель мониторинга metabase на докере, генерируя попутно случайный пароль. Ну а дальше все относительно понятно и красиво:
Мониторинг: Prometheus
Если вам не по душе все эти графики, кнопки и веб-интерфейсы, и вы вообще предпочитаете работать через консоль, то для вас подойдет Prometheus вместо metabase.
Один из способов получить данные, это вызвать cscli metrics:
Важно понимать, что cscli metrics раскрывают только часть потенциала Prometheus. Более подробное описание, что же можно извлечь из показателей, вы получите (внезапно!) в официальной документации по Prometheus в CrowdSec
Если провести быстрый экскурс, то с помощью Prometheus вы можете получить информацию о следующих участках системы и метриках:
— Buckets: как много было создано и какого типа, заполнились/были переполнены с момента запуска демона;
— Acquisition: сколько строк/событий было прочитано из каждого из указанных источников, были ли они проанализированы и/или перемещены позже в корзины;
— Parser: сколько строк/событий было доставлено к каждому парсеру и удалось ли ему обработать упомянутые события;
— Local API: сколько раз был использован каждый маршрут и т. д.
Но как бы не было удобно работать в консоли через cscli, этого недостаточно. Так что рекомендуем использовать Prometheus в связке с Grafana. Вот как это выглядит на практике:
В инструкции указано, что можно создать кластер мониторинга. Как это сделать?
- Создаём хост в ADCM, на который будут установлены сервисы мониторинга (см. выше в примере с SSH-бандлом).
- Далее переходим на вкладку Clusters и кликаем на Create Cluster. В появившемся окне, в поле Bundle нужно выбрать Monitoring, в поле Cluster name указать Monitoring и нажать Save:
- Далее — кликнуть на созданный кластер мониторинга, перейти на вкладку Services. Нажать кнопку Add service, выбрать сервисы Grafana и Graphite и нажать Add:
- Кликнуть на сервис Grafana, перейти на вкладку Configuration, заполнить поле Password и нажать Save.
- Перейти на вкладку Hosts и добавить хост в состав кластера мониторинга:
- Перейти на вкладку Host — Components и связать две роли Grafana и Graphite с сервером мониторинга. Для этого поочерёдно для каждой роли кликнуть сначала на роль, потом на сервер. Сохранить, нажав на Save:
- Поле Configuration, Status и Import оставить без изменений.
- Для запуска установки системы мониторинга нажать кнопку Run Action в правом верхнем углу и кликнуть Install. После того как установка завершится, консоль Grafana будет доступна по адресу http://<mon-server>:3000.
Что будет дальше™
Мы не остановили работу над плагином после релиза и в ближайшем будущем он получил визуальную панель управления, через которую можно будет визуализировать активность баунсера. Это даст больше информации и понимания того, что происходит с вашим сайтом и насколько эффективен плагин CrowdSec. Также вскоре мы позволим напрямую подключаться к репутационной базе, которую мы собираем сами, так что вам не понадобится агент для проверки публичного бан-листа.
Новый плагин мы протестировали на большинстве версий WordPress, которые сейчас актуальны в мире. В общей сложности, тестами мы покрыли 90%, если верить статистике использования WP по миру. Также мы проводили тестирование на PHP версий 7.2, 7.3, 7.4 и 8, чтобы исключить конфликты на уровне языка, на котором написан WordPress. Само собой, с выходом новых версий как движка, так и языка программирование, мы продолжим работу в этом направлении.
Повторимся, что плагин выпущен под лицензией MIT — самой свободной и широкой бесплатной лицензией в мире. Исходный код плагина полностью доступен на GitHub, как и исходный код CrowdSec.
Устанавливаем haproxy на worknodes
Теперь мы имеем рабочий кластер с тремя master нодами и тремя worker нодами.
Проблема в том, что сейчас наши worker ноды не имеют HA режима.
Если посмотреть на конфиг файл kubelet, то мы увидим, что наши worker ноды обращаются только к одной master ноде из трех.
После того, как HAproxy, установлен нам нужно создать для него конфиг.
Если на worker нодах нет каталога с конфиг файлами, то клонируем его
И запускаем скрипт конфига с флагом haproxy
Скрипт сконфигурирует и перезапустит haproxy.
Проверим, что haproxy стал слушать порт 6443.
Теперь нам нужно сказать kubelet, чтобы он обращался на localhost вместо master ноды. Для этого нужно отредактировать значение server в файлах /etc/kubernetes/kubelet.conf и /etc/kubernetes/bootstrap-kubelet.conf на всех worker нодах.
Значение server должно принять вот такой вид:
После внесения изменений нужно перезапустить службы kubelet и docker
Проверим, что все ноды работают исправно
Пока что у нас нет приложений в кластере, чтобы проверить работу HA. Но мы можем остановить работу kubelet на первой master ноде и убедится, что наш кластер остался дееспособным.
Проверяем со второй master ноды
Все ноды функционируют нормально, кроме той, на которой мы остановили службы.
Не забываем включить обратно службы kubernetes на первой master ноде
Установка CrowdSec
Для начала давайте установим последнюю версию CrowdSec (ну или можете забрать ее из нашего репозитория на GitHub):
В первую очередь, укажем, на какой машине мы работаем и что будем мониторить
Наш мастер установки позволяет выбрать сервисы для мониторинга обычными чекбоксами. Мы будем наблюдать за стандартным набором из nginx, sshd и самой Linux-системой.
Мастер установки еще и сканирует систему на ассоциированные лог-файлы и предлагает пользователю указать их для мониторинга:
Корректно подцепить логи к системе мониторинга крайне важно, потому что именно из логов CrowdSec будет черпать основную массу информации о происходящем. Если вы все сделали правильно, то мастер установки предложит вам выбрать коллекцию. . Коллекция — это специальный набор конфигураций, который разрабатывался для различных кейсов и сценариев защиты системы и всего вашего стека
Например, коллекция Crowdsecurity/sshd используется для анализа журнала sshd и обнаружения брутфорса ssh или перебора пользователей.
Коллекция — это специальный набор конфигураций, который разрабатывался для различных кейсов и сценариев защиты системы и всего вашего стека. Например, коллекция Crowdsecurity/sshd используется для анализа журнала sshd и обнаружения брутфорса ssh или перебора пользователей.
После того, как службы и связанные файлы журналов будут правильно идентифицированы (что очень важно, поскольку именно отсюда CrowdSec будет получать информацию), мастер предложит коллекции. Все коллекции основываются на нашем видении того, как и по каким направлениям стоит защищать систему (то есть никто не запрещает вам заняться ручной конфигурацией периметра, это просто костыль быстрой настройки).
Все коллекции основываются на нашем видении того, как и по каким направлениям стоит защищать систему (то есть никто не запрещает вам заняться ручной конфигурацией периметра, это просто костыль быстрой настройки).
Последний шаг мастера установки — развертывание общих белых списков, которые не дают банить частные IP-адреса
Это важно, потому что решение о блокировки принимает администратор системы, а не CrowdSec. Мы в этом случае просто предоставляем рекомендации
После завершения установки CrowdSec готов к работе.
CrowdSec vs Fail2ban
Для начала рассмотрим основные отличия CrowdSec от Fail2ban:
- Crowdsec более производительный, так как написан на Go, в отличие от Fail2ban, который на Python.
- У crowdsec современный yaml формат конфигов.
- В качестве парсера лог файлов crowdsec использует фильтры grok, хорошо известные тем, кто активно использует elk stack. Мне лично этот фильтр нравится. Я научился на нем писать правила парсинга.
- У crowdsec есть готовая web панель, с помощью которой можно управлять защитой и просматривать статистику.
- Есть готовые контейнеры docker, которые призваны упростить установку и запуск. На практике особого упрощения нет, так как надо прокидывать в контейнеры все лог файлы для анализа. Тем не менее, кому актуален докер, не надо будет самому делать контейнеры.
- CrowdSec собирает глобальную статистику по заблокированным ip адресам и предоставляет возможность настроить у себя списки блокировки на основе этой статистики. Как по мне, инициатива сомнительная, так как получится то же самое, что и с подобными списками в почте. Потом употеешь себя из этих списков убирать или разбираться, почему кто-то из клиентов не может получить доступ к твоему сервису. Более того, через ботнет доверенных хостов crowdsec можно умышленно банить какие-то ip адреса.
- С локальной службой защиты можно взаимодействовать через встроенное API, что открывает безграничные возможности для интеграции.
- Из коробки работает экспорт всех основных метрик в формате Prometheus. То есть мониторинг вообще настраивать не надо, он сразу готов.
По сравнению видно, что авторы CrowdSec взяли тот же принцип анализа лог файлов, что и Fail2ban, но развили его и адаптировали под современные реалии. Я читал, что они работают над интеграцией своего продукта с Kubernetes и его Ingress Controller.
Баланс™ защиты™ и производительности
У нашего плагина есть два режима поддержания связи с серверной частью CrowdSec.
Первый режим по умолчанию — «Live mode». Это режим, в котором баунсер при обращении к сайту нового пользователя в режиме реального времени обращается к API сервера для получения информации. В том числе, в этом режиме, IP посетителя сайта проверяется и по общему бан-листу CrowdSec, который генерируется с нашей стороны как разработчиков. После этого сервер передает информацию обратно баунсеру в плагине и он уже банит/не банит пользователя, или показывает ему капчу.
Этот мод обеспечивает наибольшую защиту вашего сайта, но, как можно понять, влияет на производительность сайта и, при большом трафике, создает нагрузку на серверную часть CrowdSec, генерируя поток трафика.
Если подобные постоянные запросы к серверу для вас неприемлемы, то вам подойдет второй вариант работы плагина, на который его можно переключить.
Он называется «Stream Mode» — и работает по обратному принципу, нежели «Live Mode». При включении режима поточной работы, главным инициатором выгрузки бан-листа становится серверная часть, которая с определенной периодичностью просто обновляет списки на стороне баунсера, позволяя тому работать с большей автономией.
Режим стриминга не только снижает нагрузку на все участки описываемой нами системы, но и исключает серьезное влияние на производительность сайта со стороны баунсера, а также почти не создает интернет-трафика. Такой мод подойдет для администраторов и веб-мастеров крупных ресурсов, либо же ресурсов, размещенных на не слишком мощном хостинге.
Если вы используете CDN, обратный прокси или балансировщик нагрузки, вы сможете указать в настройках баунсера диапазоны IP-адресов этих устройств. Это позволит вам проверять IP-адреса ваших пользователей. Для других IP-адресов баунсер не будет доверять заголовку X-Forwarded-For.
Мониторинг
Мониторинг — это всегда ключевой момент в построении периметра безопасности и обеспечении работы систем. И кроме классического «tail the logfile» мы предлагаем использовать еще два инструмента — metabase dashboard и метрики prometheus.
Панель мониторинга
Вездесущий cscli позволяет задеплоить нашу панель на основе metabase и docker.
Для начала рекомендуем ознакомиться с официальной документацией по установке docker.
cscli dashboard setup разворачивает новую панель мониторинга metabase на докере, генерируя попутно случайный пароль. Ну, а дальше все относительно понятно и красиво:
Мониторинг: Prometheus
Если вам не по душе все эти графики, кнопки и веб-интерфейсы, и вы вообще предпочитаете работать через консоль, то для вас подойдет Prometheus вместо metabase.
Один из способов получить данные, это вызвать cscli metrics:
Важно понимать, что cscli metrics раскрывают только часть потенциала Prometheus. Более подробное описание, что же можно извлечь из показателей, вы получите (внезапно!) в официальной документации по Prometheus в CrowdSec
Если провести быстрый экскурс, то с помощью Prometheus вы можете получить информацию о следующих участках системы и метриках:
— Buckets: как много было создано и какого типа, заполнились/были переполнены с момента запуска демона;
— Acquisition: сколько строк/событий было прочитано из каждого из указанных источников, были ли они проанализированы и/или перемещены позже в корзины;
— Parser: сколько строк/событий было доставлено к каждому парсеру и удалось ли ему обработать упомянутые события;
— Local API: сколько раз был использован каждый маршрут и т. д.
Но как бы не было удобно работать в консоли через cscli, этого недостаточно. Так что рекомендуем использовать Prometheus в связке с Grafana. Вот как это выглядит на практике:
Архитектура решения
CrowdSec состоит из следующих компонентов:
- Локальная служба, которая занимается парсингом логов и имеет свой API.
- CLI интерфейс для взаимодействия со службой через консоль.
- Различные модули интеграции (Bouncers) для выполнения каких-то действий на основе парсинга. Например, блокировка ip адресов с помощью firewall.
- База данных для хранения своей информации. В самом простом случае используется sqlite, которая устанавливается автоматически и не требует отдельной настройки.
- Публичная база данных с ip адресами и репутацией. С ней можно взаимодействовать через API.
Исходя из архитектуры, у вас есть как минимум 2 разных способа использования CrowdSec у себя. Возможна полностью локальная установка, анализ локальных логов и выполнение определенных действий на основе анализа. Взаимодействия с публичной базой данных может не быть.
Второй, противоположный вариант, когда вы вообще не анализируете свои логи, а используете публичную репутационную базу данных адресов и выполняете какие-то действия с ними с помощью Bouncers. Например, всем ip адресам из базы показываете каптчу.
Возможна комбинация этих режимов. Например, анализировать и свои логи, и брать информацию об ip из репутационной базы. Как я уже сказал, мне подобная база видится сомнительной инициативой, так что я ее использовать не буду. Настрою локальную службу и анализ своих лог файлов. То есть полный аналог Fail2ban.