/
/
Интеграция CrowdSec с ispmanager 6

Интеграция CrowdSec с ispmanager 6

CrowdSec - это современная open-source система безопасности с принципами, схожими с «коллективным фаерволом». Она анализирует логи, выявляет подозрительную активность (например, bruteforce, сканирование портов, DDoS) и автоматически применяет решения для блокировки или ограничения доступа IP-адресов злоумышленников.

Установите CrowdSec на сервер с панелью ispmanager:

curl -s https://install.crowdsec.net | sudo sh
apt install crowdsec

По умолчанию, CrowdSec использует порт 8080, поэтому необходимо изменить его в файлах конфигурации /etc/crowdsec/config.yaml и /etc/crowdsec/local_api_credentials.yaml на любой свободный, например 8070.

В /etc/crowdsec/config.yamlизмените следующую строку:

api:
 server:
   listen_uri: 127.0.0.1:8070

В/etc/crowdsec/local_api_credentials.yamlизмените следующую строку:

url: http://127.0.0.1:8070

Также в файле /etc/crowdsec/parsers/s02-enrich/whitelists.yaml можно сразу указать IP-адреса, которые являются исключениями.

Добавьте службу в автозапуск и запустите её:

systemctl enable --now crowdsec
systemctl status crowdsec

Проверьте версию Iptables на сервере:

iptables -V

Установите движок блокировок Bouncer:

  • Если в версии iptables был упомянут nf_tables - apt install crowdsec-firewall-bouncer-nftables
  • Если в версии iptables не был упомянут nf_tables - apt install crowdsec-firewall-bouncer-iptables

Проверьте статус службы после установки:

systemctl status crowdsec-firewall-bouncer

Теперь создайте коллекцию журналов панели по пути /etc/crowdsec/acquis.d/setup.ispmanager.yaml и укажите следующее содержимое для файла:

filenames:
  - /usr/local/mgr5/var/ispmgr.auth.log
  - /usr/local/mgr5/var/core.auth.log
  - /var/www/httpd-logs/*.log  
labels:
  type: syslog
  service: ispmanager

Перезапустите службу CrowdSec:

systemctl status crowdsec

Зарегистрируйтесь в Crowdsec, перейдите в раздел Security Engines - Engines, нажмите Enroll command, скопируйте команду для подключения сервера к SaaS CrowdSec Console и перезапустите службу:

cscli console enroll %ТОКЕН%
systemctl restart crowdsec

После подключения сервера, в личном кабинете CrowdSec подтвердите запрос на подключение.

Затем в CrowdSec подпишитесь на три бесплатных черных списка в разделе Blocklists - Featured:

  • Firehol BotScout
  • Firehol greensnow.co
  • OTX Georgs Honeypot

Уведомления по серверу будут доступны по адресу https://app.crowdsec.net/alerts.

Настройка уведомлений в Telegram

Для включения уведомлений в Telegram, предварительно потребуется настроить Telegram-бота.

После этого в файле /etc/crowdsec/profiles.yaml раскомментируйте строки с параметрами notifications и http_default, а содержимое файла /etc/crowdsec/notifications/http.yaml замените следующим:

type: http         # Don't change
name: http_default # Must match the registered plugin in the profile

# One of "trace", "debug", "info", "warn", "error", "off"
log_level: info

# group_wait:         # Time to wait collecting alerts before relaying a message to this plugin, eg "30s"
# group_threshold:    # Amount of alerts that triggers a message before <group_wait> has expired, eg "10"
# max_retry:          # Number of attempts to relay messages to plugins in case of error
# timeout:            # Time to wait for response from the plugin before considering the attempt a failure, eg "10s"

#-------------------------
# plugin-specific options

# The following template receives a list of models.Alert objects
# The output goes in the http request body

format: |
  {
   "chat_id": "-%ID_ЧАТА_TELEGRAM%", 
   "text": "
     {{range . -}}  
     {{$alert := . -}}  
     {{range .Decisions -}}
     {{.Value}} will get {{.Type}} for next {{.Duration}} for triggering {{.Scenario}}.
     {{end -}}
     {{end -}}
   ",
   "reply_markup": {
      "inline_keyboard": [
          {{ $arrLength := len . -}}
          {{ range $i, $value := . -}}
          {{ $V := $value.Source.Value -}}
          [
              {
                  "text": "See {{ $V }} on shodan.io",
                  "url": "https://www.shodan.io/host/{{ $V -}}"
              },
              {
                  "text": "See {{ $V }} on crowdsec.net",
                  "url": "https://app.crowdsec.net/cti/{{ $V -}}"
              }
          ]{{if lt $i ( sub $arrLength 1) }},{{end }}
      {{end -}}
      ]
  }

url: https://api.telegram.org/bot%ID_БОТА_TELEGRAM%/sendMessage

method: POST
headers:
  Content-Type: "application/json"

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

systemctl status crowdsec

Проверить статус плагинов для уведомлений можно с помощью команды:

cscli notifications list

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

cscli decisions add --ip 4.3.2.1 --duration 1h
cscli decisions delete --ip 4.3.2.1

Полезные команды

Список полезных команд для работы с CrowdSec:

  • Список заблокированных IP-адресов - cscli decisions list
  • Заблокировать IP-адрес на определенное время - cscli decisions add --ip %IP-АДРЕС% --duration %ВРЕМЯ%
  • Удалить IP-адрес из списка заблокированных - cscli decisions delete --ip %IP-АДРЕС%
  • Список журналов, обрабатываемых CrowdSec - cscli metrics show acquisition
  • Подробная информация о работе CrowdSec - cscli metrics